feat: 新增缺失前端页面并接入路由
改动内容:补齐 Sys_Tenant、taskHty、scheduler 三个页面,新增对应 extension 文件并在 viewGird.js 注册路由入口。
改动原因:后端已存在 tenant/task_hty/scheduler 接口,但前端缺少页面与入口,导致功能不可达。
影响范围:WIDESEAWCS_Client/src/views、WIDESEAWCS_Client/src/extension、WIDESEAWCS_Client/src/router/viewGird.js。
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // 该æ©å±æä»¶ç¨äºç§æ·é¡µé¢çå端æ©å±ã |
| | | // æ¹æ³ç®çï¼å¨ä¸ä¿®æ¹éç¨ view-grid ç»ä»¶çåæä¸ï¼é¢çæ¥è¯¢ååãä¿åååçä¸å¡æ©å±å
¥å£ã |
| | | // åæ°è¯´æï¼åæ¹æ³åæ°ç±æ¡æ¶åè°ä¼ å
¥ï¼å¦æç´¢åæ°ãè¡¨åæ°æ®ãè¡æ°æ®ï¼ã |
| | | // è¿åå¼è¯´æï¼è¿å true è¡¨ç¤ºç»§ç»æ§è¡æ¡æ¶é»è®¤æµç¨ï¼è¿å false è¡¨ç¤ºä¸æé»è®¤æµç¨ã |
| | | // å¼å¸¸å¤ç说æï¼å½åæ©å±ä¸æåºå¼å¸¸ï¼è¥åç»å¢å ç½ç»è°ç¨ï¼è¯·å¨å¯¹åºæ¹æ³å
ä½¿ç¨ try-catch å¹¶è®°å½å
³é®ä¸ä¸æã |
| | | |
| | | let extension = { |
| | | components: { |
| | | gridHeader: "", |
| | | gridBody: "", |
| | | gridFooter: "", |
| | | modelHeader: "", |
| | | modelBody: "", |
| | | modelFooter: "", |
| | | }, |
| | | tableAction: "", |
| | | buttons: { view: [], box: [], detail: [] }, |
| | | methods: { |
| | | // æ¹æ³ç®çï¼é¡µé¢åå§ååæ§è¡ï¼å¯ç¨äºè°æ´æé®ãåé
ç½®ã |
| | | // åæ°å«ä¹ï¼æ ã |
| | | // è¿åå¼ï¼æ ã |
| | | onInit() {}, |
| | | |
| | | // æ¹æ³ç®çï¼é¡µé¢åå§å宿忧è¡ï¼å¯ç¨äºå è½½éå æ°æ®ã |
| | | // åæ°å«ä¹ï¼æ ã |
| | | // è¿åå¼ï¼æ ã |
| | | onInited() {}, |
| | | |
| | | // æ¹æ³ç®çï¼æ¥è¯¢ååæ°é¢å¤çã |
| | | // åæ°å«ä¹ï¼param 为å½åæ¥è¯¢æ¡ä»¶å¯¹è±¡ã |
| | | // è¿åå¼ï¼true ç»§ç»æ¥è¯¢ï¼false ç»æ¢æ¥è¯¢ã |
| | | searchBefore(param) { |
| | | return true; |
| | | }, |
| | | |
| | | // æ¹æ³ç®çï¼æ¥è¯¢ç»æåå¤çã |
| | | // åæ°å«ä¹ï¼result 为å端è¿åç»æã |
| | | // è¿åå¼ï¼true ç»§ç»æ¸²æï¼false å¯ç¨äºé»æåç»å¤çã |
| | | searchAfter(result) { |
| | | return true; |
| | | }, |
| | | |
| | | // æ¹æ³ç®çï¼æ°å¢ä¿ååæ ¡éªæè¡¥å
åæ®µã |
| | | // åæ°å«ä¹ï¼formData 为å¾
æäº¤è¡¨å对象ã |
| | | // è¿åå¼ï¼true ç»§ç»ä¿åï¼false ç»æ¢ä¿åã |
| | | addBefore(formData) { |
| | | return true; |
| | | }, |
| | | |
| | | // æ¹æ³ç®çï¼ç¼è¾ä¿ååæ ¡éªæè¡¥å
åæ®µã |
| | | // åæ°å«ä¹ï¼formData 为å¾
æäº¤è¡¨å对象ã |
| | | // è¿åå¼ï¼true ç»§ç»ä¿åï¼false ç»æ¢ä¿åã |
| | | updateBefore(formData) { |
| | | return true; |
| | | }, |
| | | |
| | | // æ¹æ³ç®çï¼è¡¨æ ¼è¡ç¹å»äºä»¶æ©å±ã |
| | | // åæ°å«ä¹ï¼row ä¸ºè¡æ°æ®ï¼column 为åé
ç½®ï¼event 为åå§äºä»¶å¯¹è±¡ã |
| | | // è¿åå¼ï¼æ ã |
| | | rowClick({ row, column, event }) {}, |
| | | |
| | | // æ¹æ³ç®çï¼æ°å¢/ç¼è¾å¼¹çªæå¼åæ©å±å¤çã |
| | | // åæ°å«ä¹ï¼row 为å½åè¡æ°æ®ï¼æ°å¢æ¶å¯è½ä¸ºç©ºå¯¹è±¡ã |
| | | // è¿åå¼ï¼æ ã |
| | | modelOpenAfter(row) {}, |
| | | }, |
| | | }; |
| | | |
| | | export default extension; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // 该æ©å±æä»¶ç¨äºä»»å¡åå²é¡µé¢çä¸å¡æ©å±ã |
| | | // æ¹æ³ç®çï¼ç»ä¸é¢çå表æ¥è¯¢ãä¿ååååå¼¹çªæå¼æ¶çæ©å±å
¥å£ï¼ä¿æä¸é¡¹ç®å
task 页é¢ä¸è´çæ©å±ç¹ã |
| | | // åæ°å«ä¹ï¼ç±æ¡æ¶æçå½å¨æä¼ å
¥ï¼å
嫿¥è¯¢åæ°ãè¡¨åæ°æ®ãè¡æ°æ®çä¸ä¸æã |
| | | // è¿åå¼è¯´æï¼è¿å true 代表继ç»é»è®¤è¡ä¸ºï¼è¿å false ä»£è¡¨ä¸æé»è®¤è¡ä¸ºã |
| | | // å¼å¸¸å¤ç说æï¼å½åæªå¼å
¥å¤é¨è°ç¨ï¼è¥åç»æ°å¢æ¥å£è°ç¨ï¼é卿¹æ³å
è¡¥å
try-catch å¹¶è®°å½å
³é®ä¸å¡åæ°ã |
| | | |
| | | let extension = { |
| | | components: { |
| | | gridHeader: "", |
| | | gridBody: "", |
| | | gridFooter: "", |
| | | modelHeader: "", |
| | | modelBody: "", |
| | | modelFooter: "", |
| | | }, |
| | | tableAction: "", |
| | | buttons: { view: [], box: [], detail: [] }, |
| | | methods: { |
| | | // æ¹æ³ç®çï¼é¡µé¢åå§åæ¶æ§è¡èªå®ä¹é»è¾ã |
| | | // åæ°ï¼æ ã |
| | | // è¿åå¼ï¼æ ã |
| | | onInit() {}, |
| | | |
| | | // æ¹æ³ç®çï¼é¡µé¢åå§å宿忧è¡èªå®ä¹é»è¾ã |
| | | // åæ°ï¼æ ã |
| | | // è¿åå¼ï¼æ ã |
| | | onInited() {}, |
| | | |
| | | // æ¹æ³ç®çï¼æ¥è¯¢åå¤çæ¥è¯¢æ¡ä»¶ã |
| | | // åæ°ï¼param æ¥è¯¢åæ°å¯¹è±¡ã |
| | | // è¿åå¼ï¼true ç»§ç»æ¥è¯¢ï¼false ç»æ¢æ¥è¯¢ã |
| | | searchBefore(param) { |
| | | return true; |
| | | }, |
| | | |
| | | // æ¹æ³ç®çï¼æ¥è¯¢åå¤çè¿åç»æã |
| | | // åæ°ï¼result å端è¿åæ°æ®ã |
| | | // è¿åå¼ï¼true ç»§ç»æ¸²æï¼false ç»æ¢åç»å¤çã |
| | | searchAfter(result) { |
| | | return true; |
| | | }, |
| | | |
| | | // æ¹æ³ç®çï¼æ°å¢åæ ¡éªæè¡¥å
æäº¤å段ã |
| | | // åæ°ï¼formData 表åæäº¤å¯¹è±¡ã |
| | | // è¿åå¼ï¼true ç»§ç»æäº¤ï¼false ç»æ¢æäº¤ã |
| | | addBefore(formData) { |
| | | return true; |
| | | }, |
| | | |
| | | // æ¹æ³ç®çï¼ç¼è¾åæ ¡éªæè¡¥å
æäº¤å段ã |
| | | // åæ°ï¼formData 表åæäº¤å¯¹è±¡ã |
| | | // è¿åå¼ï¼true ç»§ç»æäº¤ï¼false ç»æ¢æäº¤ã |
| | | updateBefore(formData) { |
| | | return true; |
| | | }, |
| | | |
| | | // æ¹æ³ç®çï¼ç¹å»è¡æ¶æ©å±å¤çã |
| | | // åæ°ï¼row è¡æ°æ®ï¼column åé
ç½®ï¼event åå§äºä»¶ã |
| | | // è¿åå¼ï¼æ ã |
| | | rowClick({ row, column, event }) {}, |
| | | |
| | | // æ¹æ³ç®çï¼ç¼è¾å¼¹çªæå¼åæ§è¡æ©å±é»è¾ã |
| | | // åæ°ï¼row å½åè¡æ°æ®ã |
| | | // è¿åå¼ï¼æ ã |
| | | modelOpenAfter(row) {}, |
| | | }, |
| | | }; |
| | | |
| | | export default extension; |
| | |
| | | |
| | | let viewgird = [ |
| | | { |
| | | path: '/Sys_Log', |
| | |
| | | name: 'permission', |
| | | component: () => import('@/views/system/Permission.vue') |
| | | }, |
| | | |
| | | { |
| | | path: '/Sys_Dictionary', |
| | | name: 'Sys_Dictionary', |
| | |
| | | path: '/Sys_Role', |
| | | name: 'Sys_Role', |
| | | component: () => import('@/views/system/Sys_Role.vue') |
| | | }, { |
| | | }, |
| | | { |
| | | path: '/Sys_Role1', |
| | | name: 'Sys_Role1', |
| | | component: () => import('@/views/system/Sys_Role1.vue') |
| | | }, { |
| | | }, |
| | | { |
| | | path: '/Sys_DictionaryList', |
| | | name: 'Sys_DictionaryList', |
| | | component: () => import('@/views/system/Sys_DictionaryList.vue') |
| | | }, { |
| | | }, |
| | | { |
| | | path: '/Sys_Tenant', |
| | | name: 'Sys_Tenant', |
| | | component: () => import('@/views/system/Sys_Tenant.vue') |
| | | }, |
| | | { |
| | | path: '/deviceInfo', |
| | | name: 'deviceInfo', |
| | | component: () => import('@/views/quartzJob/deviceInfo.vue') |
| | | }, { |
| | | }, |
| | | { |
| | | path: '/deviceProtocol', |
| | | name: 'deviceProtocol', |
| | | component: () => import('@/views/quartzJob/deviceProtocol.vue') |
| | | }, { |
| | | }, |
| | | { |
| | | path: '/deviceProtocolDetail', |
| | | name: 'deviceProtocolDetail', |
| | | component: () => import('@/views/quartzJob/deviceProtocolDetail.vue') |
| | | }, { |
| | | }, |
| | | { |
| | | path: '/dispatchInfo', |
| | | name: 'dispatchInfo', |
| | | component: () => import('@/views/quartzJob/dispatchInfo.vue') |
| | | }, { |
| | | }, |
| | | { |
| | | path: '/scheduler', |
| | | name: 'scheduler', |
| | | component: () => import('@/views/quartzJob/scheduler.vue') |
| | | }, |
| | | { |
| | | path: '/task', |
| | | name: 'task', |
| | | component: () => import('@/views/taskinfo/task.vue') |
| | | }, { |
| | | }, |
| | | { |
| | | path: '/taskHty', |
| | | name: 'taskHty', |
| | | component: () => import('@/views/taskinfo/taskHty.vue') |
| | | }, |
| | | { |
| | | path: '/router', |
| | | name: 'router', |
| | | component: () => import('@/views/basicinfo/router.vue') |
| | | }] |
| | | } |
| | | ]; |
| | | |
| | | export default viewgird |
| | | export default viewgird; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="scheduler-page"> |
| | | <el-card shadow="never" class="card-item"> |
| | | <template #header> |
| | | <span>è°åº¦æå¡æ§å¶</span> |
| | | </template> |
| | | <div class="button-row"> |
| | | <el-button type="success" @click="handleSchedulerAction('StartSchedule')">å¯å¨è°åº¦æå¡</el-button> |
| | | <el-button type="warning" @click="handleSchedulerAction('StopSchedule')">忢è°åº¦æå¡</el-button> |
| | | </div> |
| | | </el-card> |
| | | |
| | | <el-card shadow="never" class="card-item"> |
| | | <template #header> |
| | | <span>ä»»å¡è°åº¦æä½</span> |
| | | </template> |
| | | <el-form :model="jobForm" label-width="110px" class="form-wrap"> |
| | | <el-row :gutter="16"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="ä»»å¡åç§°"> |
| | | <el-input v-model="jobForm.name" placeholder="请è¾å
¥ä»»å¡åç§°" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="ä»»å¡åç»"> |
| | | <el-input v-model="jobForm.jobGroup" placeholder="请è¾å
¥ä»»å¡åç»" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="æ§è¡ç±»å"> |
| | | <el-input v-model="jobForm.className" placeholder="请è¾å
¥æ§è¡ç±»å" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <div class="button-row"> |
| | | <el-button type="primary" @click="handleSchedulerAction('PauseJob')">æåä»»å¡</el-button> |
| | | <el-button type="primary" @click="handleSchedulerAction('ResumeJob')">æ¢å¤ä»»å¡</el-button> |
| | | <el-button type="primary" @click="handleSchedulerAction('ExecuteJob')">ç«å³æ§è¡</el-button> |
| | | <el-button type="danger" @click="handleSchedulerAction('DeleteScheduleJob')">å é¤ä»»å¡</el-button> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { defineComponent, ref } from "vue"; |
| | | import { ElMessage } from "element-plus"; |
| | | import http from "@/api/http"; |
| | | |
| | | export default defineComponent({ |
| | | setup() { |
| | | const jobForm = ref({ |
| | | name: "", |
| | | jobGroup: "", |
| | | className: "", |
| | | assemblyName: "", |
| | | intervalSecond: 0, |
| | | beginTime: "", |
| | | endTime: "", |
| | | remark: "", |
| | | }); |
| | | |
| | | /** |
| | | * æ¹æ³ç®çï¼æ ¡éªä»»å¡çº§è°åº¦æä½æéåæ°ï¼é¿å
æäº¤æ æè¯·æ±ã |
| | | * åæ°å«ä¹ï¼æ ï¼ç´æ¥è¯»åå½å jobFormï¼ã |
| | | * è¿åå¼ï¼true è¡¨ç¤ºæ ¡éªéè¿ï¼false è¡¨ç¤ºæ ¡éªå¤±è´¥å¹¶å¼¹åºæç¤ºã |
| | | * å¼å¸¸å¤çï¼æ¬å°æ ¡éªä¸æå¼å¸¸ï¼éè¿æ¶æ¯æç¤ºå¼å¯¼ç¨æ·è¡¥å
¨å
³é®å段ã |
| | | */ |
| | | const validateJobPayload = () => { |
| | | if (!jobForm.value.name || !jobForm.value.jobGroup || !jobForm.value.className) { |
| | | ElMessage.error("请å
å¡«åä»»å¡åç§°ãä»»å¡åç»ãæ§è¡ç±»å"); |
| | | return false; |
| | | } |
| | | return true; |
| | | }; |
| | | |
| | | /** |
| | | * æ¹æ³ç®çï¼ç»ä¸å¤çè°åº¦æ§å¶è¯·æ±ï¼å
¼å®¹ GET ä¸ POST 两类æ¥å£ã |
| | | * åæ°å«ä¹ï¼action 为è°åº¦å¨ä½åç§°ï¼å¯¹åºå端 api/Scheduler/{action}ã |
| | | * è¿åå¼ï¼Promise<void>ï¼æ§è¡å®æåéè¿æ¶æ¯æç¤ºç»æã |
| | | * å
³é®é»è¾ï¼ |
| | | * 1. å
¨å±å¨ä½ï¼å¯å¨/忢ï¼èµ° GETã |
| | | * 2. ä»»å¡å¨ä½ï¼æå/æ¢å¤/æ§è¡/å é¤ï¼èµ° POSTï¼å¹¶æäº¤ jobFormã |
| | | * 3. æ¥å£è¿å status=false æ¶æç¤ºå端 messageã |
| | | * å¼å¸¸å¤çï¼ä½¿ç¨ try-catch æè·è¯·æ±å¼å¸¸å¹¶ä¿çé误ä¸ä¸æè¾åºã |
| | | */ |
| | | const handleSchedulerAction = async (action) => { |
| | | try { |
| | | const isGlobalAction = action === "StartSchedule" || action === "StopSchedule"; |
| | | if (!isGlobalAction && !validateJobPayload()) { |
| | | return; |
| | | } |
| | | |
| | | let result; |
| | | if (isGlobalAction) { |
| | | result = await http.get(`/api/Scheduler/${action}`, {}, true); |
| | | } else { |
| | | result = await http.post(`/api/Scheduler/${action}`, jobForm.value, true); |
| | | } |
| | | |
| | | if (result && result.status) { |
| | | ElMessage.success(result.message || "æä½æå"); |
| | | return; |
| | | } |
| | | |
| | | ElMessage.error((result && result.message) || "æä½å¤±è´¥"); |
| | | } catch (error) { |
| | | console.error("è°åº¦è¯·æ±å¼å¸¸", { action, jobForm: jobForm.value, error }); |
| | | ElMessage.error("è°åº¦è¯·æ±å¤±è´¥ï¼è¯·ç¨åéè¯"); |
| | | } |
| | | }; |
| | | |
| | | return { |
| | | jobForm, |
| | | handleSchedulerAction, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .scheduler-page { |
| | | padding: 12px; |
| | | } |
| | | |
| | | .card-item { |
| | | margin-bottom: 12px; |
| | | } |
| | | |
| | | .button-row { |
| | | display: flex; |
| | | gap: 10px; |
| | | flex-wrap: wrap; |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view-grid |
| | | ref="grid" |
| | | :columns="columns" |
| | | :detail="detail" |
| | | :editFormFields="editFormFields" |
| | | :editFormOptions="editFormOptions" |
| | | :searchFormFields="searchFormFields" |
| | | :searchFormOptions="searchFormOptions" |
| | | :table="table" |
| | | :extend="extend" |
| | | > |
| | | </view-grid> |
| | | </template> |
| | | <script> |
| | | import extend from "@/extension/system/Sys_Tenant.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | |
| | | export default defineComponent({ |
| | | setup() { |
| | | const tenantTypeOptions = [ |
| | | { key: 0, value: "é»è®¤ç§æ·" }, |
| | | { key: 1, value: "ä¼ä¸ç§æ·" }, |
| | | { key: 2, value: "å¹³å°ç§æ·" }, |
| | | ]; |
| | | |
| | | const dbTypeOptions = [ |
| | | { key: 0, value: "SqlServer" }, |
| | | { key: 1, value: "MySql" }, |
| | | { key: 2, value: "PostgreSQL" }, |
| | | { key: 3, value: "Oracle" }, |
| | | { key: 4, value: "Sqlite" }, |
| | | ]; |
| | | |
| | | const statusOptions = [ |
| | | { key: 1, value: "å¯ç¨" }, |
| | | { key: 0, value: "ç¦ç¨" }, |
| | | ]; |
| | | |
| | | const table = ref({ |
| | | key: "tenantId", |
| | | footer: "Foots", |
| | | cnName: "ç§æ·ç®¡ç", |
| | | name: "Sys_Tenant", |
| | | url: "/tenant/", |
| | | sortName: "tenantId", |
| | | }); |
| | | |
| | | const editFormFields = ref({ |
| | | tenantName: "", |
| | | tenantType: 0, |
| | | dbType: 0, |
| | | connectionString: "", |
| | | status: 1, |
| | | remark: "", |
| | | }); |
| | | |
| | | const editFormOptions = ref([ |
| | | [ |
| | | { title: "ç§æ·åç§°", required: true, field: "tenantName", type: "string" }, |
| | | { |
| | | title: "ç§æ·ç±»å", |
| | | required: true, |
| | | field: "tenantType", |
| | | type: "select", |
| | | data: tenantTypeOptions, |
| | | }, |
| | | ], |
| | | [ |
| | | { |
| | | title: "æ°æ®åºç±»å", |
| | | required: true, |
| | | field: "dbType", |
| | | type: "select", |
| | | data: dbTypeOptions, |
| | | }, |
| | | { |
| | | title: "ç¶æ", |
| | | required: true, |
| | | field: "status", |
| | | type: "select", |
| | | data: statusOptions, |
| | | }, |
| | | ], |
| | | [ |
| | | { |
| | | title: "è¿æ¥å符串", |
| | | required: true, |
| | | field: "connectionString", |
| | | colSize: 12, |
| | | type: "textarea", |
| | | }, |
| | | ], |
| | | [{ title: "夿³¨", field: "remark", colSize: 12, type: "textarea" }], |
| | | ]); |
| | | |
| | | const searchFormFields = ref({ |
| | | tenantName: "", |
| | | tenantType: "", |
| | | dbType: "", |
| | | status: "", |
| | | }); |
| | | |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { title: "ç§æ·åç§°", field: "tenantName", type: "like" }, |
| | | { |
| | | title: "ç§æ·ç±»å", |
| | | field: "tenantType", |
| | | type: "select", |
| | | data: tenantTypeOptions, |
| | | }, |
| | | ], |
| | | [ |
| | | { |
| | | title: "æ°æ®åºç±»å", |
| | | field: "dbType", |
| | | type: "select", |
| | | data: dbTypeOptions, |
| | | }, |
| | | { |
| | | title: "ç¶æ", |
| | | field: "status", |
| | | type: "select", |
| | | data: statusOptions, |
| | | }, |
| | | ], |
| | | ]); |
| | | |
| | | const columns = ref([ |
| | | { |
| | | field: "tenantId", |
| | | title: "ç§æ·ID", |
| | | type: "int", |
| | | width: 110, |
| | | readonly: true, |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "tenantName", |
| | | title: "ç§æ·åç§°", |
| | | type: "string", |
| | | width: 180, |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "tenantType", |
| | | title: "ç§æ·ç±»å", |
| | | type: "int", |
| | | width: 120, |
| | | align: "left", |
| | | bind: { key: "tenantTypeLocal", data: tenantTypeOptions }, |
| | | }, |
| | | { |
| | | field: "dbType", |
| | | title: "æ°æ®åºç±»å", |
| | | type: "int", |
| | | width: 140, |
| | | align: "left", |
| | | bind: { key: "dbTypeLocal", data: dbTypeOptions }, |
| | | }, |
| | | { |
| | | field: "status", |
| | | title: "ç¶æ", |
| | | type: "int", |
| | | width: 100, |
| | | align: "left", |
| | | bind: { key: "tenantStatusLocal", data: statusOptions }, |
| | | }, |
| | | { |
| | | field: "connectionString", |
| | | title: "è¿æ¥å符串", |
| | | type: "string", |
| | | width: 320, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "creater", |
| | | title: "å建人", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "createDate", |
| | | title: "å建æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | sort: true, |
| | | }, |
| | | { |
| | | field: "modifier", |
| | | title: "ä¿®æ¹äºº", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "modifyDate", |
| | | title: "ä¿®æ¹æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | sort: true, |
| | | }, |
| | | { |
| | | field: "remark", |
| | | title: "夿³¨", |
| | | type: "string", |
| | | width: 180, |
| | | align: "left", |
| | | }, |
| | | ]); |
| | | |
| | | const detail = ref({ |
| | | cnName: "", |
| | | table: "", |
| | | columns: [], |
| | | sortName: "", |
| | | key: "", |
| | | }); |
| | | |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view-grid |
| | | ref="grid" |
| | | :columns="columns" |
| | | :detail="detail" |
| | | :editFormFields="editFormFields" |
| | | :editFormOptions="editFormOptions" |
| | | :searchFormFields="searchFormFields" |
| | | :searchFormOptions="searchFormOptions" |
| | | :table="table" |
| | | :extend="extend" |
| | | > |
| | | </view-grid> |
| | | </template> |
| | | <script> |
| | | import extend from "@/extension/taskinfo/taskHty.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: "taskId", |
| | | footer: "Foots", |
| | | cnName: "ä»»å¡åå²", |
| | | name: "taskHty", |
| | | url: "/Task_Hty/", |
| | | sortName: "insertTime", |
| | | }); |
| | | |
| | | const editFormFields = ref({}); |
| | | const editFormOptions = ref([]); |
| | | |
| | | const searchFormFields = ref({ |
| | | taskNum: "", |
| | | palletCode: "", |
| | | roadway: "", |
| | | sourceAddress: "", |
| | | targetAddress: "", |
| | | currentAddress: "", |
| | | nextAddress: "", |
| | | creater: "", |
| | | createDate: "", |
| | | operateType: "", |
| | | insertTime: "", |
| | | }); |
| | | |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { title: "ä»»å¡å·", field: "taskNum", type: "int" }, |
| | | { title: "æçç¼ç ", field: "palletCode", type: "like" }, |
| | | { |
| | | title: "ä»»å¡ç±»å", |
| | | field: "taskType", |
| | | type: "selectList", |
| | | dataKey: "taskType", |
| | | data: [], |
| | | }, |
| | | { |
| | | title: "ä»»å¡ç¶æ", |
| | | field: "taskStatus", |
| | | type: "selectList", |
| | | dataKey: "taskState", |
| | | data: [], |
| | | }, |
| | | ], |
| | | [ |
| | | { title: "èµ·å§å°å", field: "sourceAddress", type: "like" }, |
| | | { title: "ç®æ å°å", field: "targetAddress", type: "like" }, |
| | | { title: "å½åä½ç½®", field: "currentAddress", type: "like" }, |
| | | { title: "ä¸ä¸ä½ç½®", field: "nextAddress", type: "like" }, |
| | | ], |
| | | [ |
| | | { title: "å··éå·", field: "roadway", type: "like" }, |
| | | { title: "å建人", field: "creater", type: "like" }, |
| | | { title: "æä½ç±»å", field: "operateType", type: "like" }, |
| | | { title: "ç§»å
¥å岿¶é´", field: "insertTime", type: "datetime" }, |
| | | ], |
| | | ]); |
| | | |
| | | const columns = ref([ |
| | | { |
| | | field: "taskId", |
| | | title: "TaskId", |
| | | type: "int", |
| | | width: 90, |
| | | hidden: true, |
| | | readonly: true, |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "taskNum", |
| | | title: "ä»»å¡å·", |
| | | type: "int", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "palletCode", |
| | | title: "æçç¼ç ", |
| | | type: "string", |
| | | width: 150, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "roadway", |
| | | title: "å··éå·", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "taskType", |
| | | title: "ä»»å¡ç±»å", |
| | | type: "int", |
| | | width: 90, |
| | | align: "left", |
| | | bind: { key: "taskType", data: [] }, |
| | | }, |
| | | { |
| | | field: "taskStatus", |
| | | title: "ä»»å¡ç¶æ", |
| | | type: "int", |
| | | width: 120, |
| | | align: "left", |
| | | bind: { key: "taskState", data: [] }, |
| | | }, |
| | | { |
| | | field: "sourceAddress", |
| | | title: "èµ·å§å°å", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "targetAddress", |
| | | title: "ç®æ å°å", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "currentAddress", |
| | | title: "å½åä½ç½®", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "nextAddress", |
| | | title: "ä¸ä¸ä½ç½®", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "grade", |
| | | title: "ä¼å
级", |
| | | type: "int", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "sourceId", |
| | | title: "å表主é®", |
| | | type: "int", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "operateType", |
| | | title: "æä½ç±»å", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "insertTime", |
| | | title: "ç§»å
¥å岿¶é´", |
| | | type: "datetime", |
| | | width: 170, |
| | | align: "left", |
| | | sort: true, |
| | | }, |
| | | { |
| | | field: "creater", |
| | | title: "å建人", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "createDate", |
| | | title: "å建æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "modifier", |
| | | title: "ä¿®æ¹äºº", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "modifyDate", |
| | | title: "ä¿®æ¹æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "remark", |
| | | title: "夿³¨", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | ]); |
| | | |
| | | const detail = ref({ |
| | | cnName: "", |
| | | table: "", |
| | | columns: [], |
| | | sortName: "", |
| | | key: "", |
| | | }); |
| | | |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |