diff --git a/.env b/.env index 01e1746..49b1f01 100644 --- a/.env +++ b/.env @@ -1,2 +1,2 @@ # spa-title -VITE_GLOB_APP_TITLE = Plus Admin +VITE_GLOB_APP_TITLE = '国研数字化运维管理平台' diff --git a/src/locales/lang/zh-CN/sys.json b/src/locales/lang/zh-CN/sys.json index 591eb7b..a5d0aa2 100644 --- a/src/locales/lang/zh-CN/sys.json +++ b/src/locales/lang/zh-CN/sys.json @@ -65,8 +65,8 @@ "qrSignInFormTitle": "二维码登录", "signUpFormTitle": "注册", "forgetFormTitle": "重置密码", - "signInTitle": "开箱即用的中后台管理系统", - "signInDesc": "输入您的个人详细信息开始使用!", + "signInTitle": "国研数字化运维管理平台", + "signInDesc": "", "policy": "我同意xxx隐私政策", "scanSign": "扫码后点击\"确认\",即可完成登录", "loginButton": "登录", diff --git a/src/views/IO/delayPatrol/waitAudit/api.ts b/src/views/IO/delayPatrol/waitAudit/api.ts index 90a5083..fcb40c1 100644 --- a/src/views/IO/delayPatrol/waitAudit/api.ts +++ b/src/views/IO/delayPatrol/waitAudit/api.ts @@ -1,58 +1,40 @@ -import { ID, IDS, PageQuery, commonExport } from '@/api/base'; import { defHttp } from '@/utils/http/axios'; -import { Dayjs } from 'dayjs'; enum Api { - root = '/workflow/leave', - list = '/workflow/leave/list', - export = '/workflow/leave/export', + root = '/platform/routineInspectionInfo', + list = '/platform/routineInspectionInfo/specialList', + getSubcategoryType = '/platform/subcategoryType/list', + workOrderAdd = '/platform/workOrder/add', + getProjectInfo = '/platform/projectInfo/getNames', } -export interface Leave { - id: string; - leaveType: string; - startDate: string; - endDate: string; - leaveDays: number; - remark: string; - processInstanceVo?: any; - dateTime?: [string, string] | [Dayjs, Dayjs]; +export function list(params:any) { + return defHttp.get({ url: Api.list, params }); } -export interface Resp { - createDept: number; - createBy: number; - createTime: string; - updateBy: number; - updateTime: string; - id: string; - leaveType: string; - startDate: string; - endDate: string; - leaveDays: number; - remark?: any; -} -export function list(params?: PageQuery) { - return defHttp.get({ url: Api.list, params }); +export function getInfo(id: any) { + return defHttp.get({ url: `${Api.root}/${id}` }); } -export function exportExcel(data: any) { - return commonExport(Api.export, data); +export function add(data: any) { + return defHttp.post({ url: Api.root, data }); } -export function getInfo(id: ID) { - return defHttp.get({ url: `${Api.root}/${id}` }); +export function update(data: any) { + return defHttp.put({ url: Api.root, data }); } -export function add(data: any) { - return defHttp.post({ url: Api.root, data }); +export function removeByIds(ids: any) { + return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` }); } -export function update(data: any) { - return defHttp.put({ url: Api.root, data }); +export function getSubcategoryType() { + return defHttp.get({ url: Api.getSubcategoryType }); } - -export function removeByIds(ids: IDS) { - return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` }); +export function workOrderAdd(data: any) { + return defHttp.post({ url: Api.workOrderAdd, data }); } +export function getProjectInfo() { + return defHttp.get({ url: Api.getProjectInfo }); +} \ No newline at end of file diff --git a/src/views/IO/delayPatrol/waitAudit/data.ts b/src/views/IO/delayPatrol/waitAudit/data.ts index 444d829..874af60 100644 --- a/src/views/IO/delayPatrol/waitAudit/data.ts +++ b/src/views/IO/delayPatrol/waitAudit/data.ts @@ -3,58 +3,29 @@ import { FormSchema } from '@/components/Form'; export const formSchemas: FormSchema[] = [ { - field: 'projectName', - label: '项目名称', - component: 'Select', - componentProps: { - options: [ - { - value: '1', - label: '2323', - }, - { - value: '2', - label: '2323', - }, - { - value: '3', - label: '2323', - }, - ], - }, + field: 'plaDate', + label: '计划日期', + component: 'RangePicker', }, { - field: 'ioCompany', - label: '运维单位', + field: 'deliverContent', + label: '交付内容', component: 'Select', componentProps: { - options: [ + options:[ { - value: '1', - label: '2323', + value: '例行操作', }, { - value: '2', - label: '2323', + value: '调研评估', }, { - value: '3', - label: '2323', + value: '响应支持服务', }, - ], - }, - }, - { - field: 'plaDate', - label: '计划日期', - component: 'RangePicker', - }, - { - field: 'deliverContent', - label: '交付内容', - component: 'Input', - componentProps: { - placeholder: '请输入', + { + value: '优化改善', + }, + ] }, }, { @@ -106,11 +77,11 @@ export const columns: BasicColumn[] = [ }, { title: '开始日期', - dataIndex: 'startDate', + dataIndex: 'scheduleStartDate', }, { title: '结束日期', - dataIndex: 'endDate', + dataIndex: 'scheduleEndDate', }, { title: '状态', diff --git a/src/views/IO/delayPatrol/waitAudit/detailDrawer.vue b/src/views/IO/delayPatrol/waitAudit/detailDrawer.vue index 87da5a9..e773ef4 100644 --- a/src/views/IO/delayPatrol/waitAudit/detailDrawer.vue +++ b/src/views/IO/delayPatrol/waitAudit/detailDrawer.vue @@ -11,24 +11,6 @@ > - - -
所属项目:{{ detail.projectName }}
-
-
- - -
所属合同:{{ detail.contractName }}
-
-
- - -
开始日期:{{ detail.startDate }}
-
- -
结束日期:{{ detail.endDate }}
-
-
巡检部位:{{ detail.inspectionPart }}
@@ -55,33 +37,6 @@
- - - -
是否异常:{{ detail.isUnusual }}
-
-
- - -
处理结果:{{ detail.handleResult }}
-
-
- - -
描述:{{ detail.description }}
-
-
- - -
处理前图片:{{ detail.beforeHandleImg }}
-
-
- - -
处理后图片:{{ detail.AfterHandleImg }}
-
-
-
@@ -94,20 +49,11 @@ setup() { //抽屉详情 let detail = reactive({ - projectName: '', - contractName: '', - startDate: '', - endDate: '', inspectionPart: '', serviceContent: '', code: '', deliverContent: '', serviceProject: '', - isUnusual: '', - handleResult: '', - description: '', - beforeHandleImg: '', - AfterHandleImg: '', }); // 打开抽屉的方法 diff --git a/src/views/IO/delayPatrol/waitAudit/faultModal.vue b/src/views/IO/delayPatrol/waitAudit/faultModal.vue new file mode 100644 index 0000000..cfe38a1 --- /dev/null +++ b/src/views/IO/delayPatrol/waitAudit/faultModal.vue @@ -0,0 +1,291 @@ + + + + + diff --git a/src/views/IO/delayPatrol/waitAudit/index.vue b/src/views/IO/delayPatrol/waitAudit/index.vue index 20caa39..725a95d 100644 --- a/src/views/IO/delayPatrol/waitAudit/index.vue +++ b/src/views/IO/delayPatrol/waitAudit/index.vue @@ -1,42 +1,17 @@ @@ -47,14 +22,14 @@ import { formSchemas, columns } from './data'; import detailDrawer from './detailDrawer.vue'; import { ref } from 'vue'; + import faultModal from './faultModal.vue' + defineOptions({ name: 'waitAudit' }); - defineOptions({ name: 'WaitAudit' }); - - const [registerTable, { reload }] = useTable({ + const [registerTable] = useTable({ rowSelection: { type: 'checkbox', }, - title: '待审核列表', + title: '专项工作列表', api: list, showIndexColumn: true, rowKey: 'id', @@ -78,85 +53,15 @@ }, }); - //tree - const treeData = ref([ - { - title: 'parent 1', - key: '0-0', - children: [ - { - title: 'parent 1-0', - key: '0-0-0', - children: [ - { - title: 'leaf', - key: '0-0-0-0', - }, - { - key: '0-0-0-1', - }, - { - title: 'leaf', - key: '0-0-0-2', - }, - ], - }, - { - title: 'parent 1-1', - key: '0-0-1', - children: [ - { - title: 'leaf', - key: '0-0-1-0', - }, - ], - }, - { - title: 'parent 1-2', - key: '0-0-2', - children: [ - { - title: 'leaf 1', - key: '0-0-2-0', - }, - { - title: 'leaf 2', - key: '0-0-2-1', - }, - ], - }, - ], - }, - { - title: 'parent 2', - key: '0-1', - children: [ - { - title: 'parent 2-0', - key: '0-1-0', - children: [ - { - title: 'leaf', - key: '0-1-0-0', - }, - { - title: 'leaf', - key: '0-1-0-1', - }, - ], - }, - ], - }, - ]); - const onSelect = (selectedKeys: any, info: any) => { - console.log('selected', selectedKeys, info); - reload(); - }; //抽屉 const detailDrawerRef = ref(); const handleDetail = () => { detailDrawerRef.value.showDrawer(); }; + const faultModalRef = ref(); + const handleReport = () =>{ + faultModalRef.value.showModal() + } diff --git a/src/views/IO/delayPatrol/waitPatrol/api.ts b/src/views/IO/delayPatrol/waitPatrol/api.ts index 90a5083..280bd6f 100644 --- a/src/views/IO/delayPatrol/waitPatrol/api.ts +++ b/src/views/IO/delayPatrol/waitPatrol/api.ts @@ -1,58 +1,39 @@ -import { ID, IDS, PageQuery, commonExport } from '@/api/base'; import { defHttp } from '@/utils/http/axios'; -import { Dayjs } from 'dayjs'; enum Api { - root = '/workflow/leave', - list = '/workflow/leave/list', - export = '/workflow/leave/export', + root = '/platform/routineInspectionInfo', + list = '/platform/routineInspectionInfo/list', + getSubcategoryType = '/platform/subcategoryType/list', + workOrderAdd = '/platform/workOrder/add', + getProjectInfo = '/platform/projectInfo/getNames', } -export interface Leave { - id: string; - leaveType: string; - startDate: string; - endDate: string; - leaveDays: number; - remark: string; - processInstanceVo?: any; - dateTime?: [string, string] | [Dayjs, Dayjs]; +export function list(params:any) { + return defHttp.get({ url: Api.list, params }); } -export interface Resp { - createDept: number; - createBy: number; - createTime: string; - updateBy: number; - updateTime: string; - id: string; - leaveType: string; - startDate: string; - endDate: string; - leaveDays: number; - remark?: any; -} - -export function list(params?: PageQuery) { - return defHttp.get({ url: Api.list, params }); -} -export function exportExcel(data: any) { - return commonExport(Api.export, data); -} - -export function getInfo(id: ID) { - return defHttp.get({ url: `${Api.root}/${id}` }); +export function getInfo(id: any) { + return defHttp.get({ url: `${Api.root}/${id}` }); } export function add(data: any) { - return defHttp.post({ url: Api.root, data }); + return defHttp.post({ url: Api.root, data }); } export function update(data: any) { - return defHttp.put({ url: Api.root, data }); + return defHttp.put({ url: Api.root, data }); } -export function removeByIds(ids: IDS) { - return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` }); +export function removeByIds(ids: any) { + return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` }); +} +export function getSubcategoryType() { + return defHttp.get({ url: Api.getSubcategoryType }); +} +export function workOrderAdd(data: any) { + return defHttp.post({ url: Api.workOrderAdd, data }); } +export function getProjectInfo() { + return defHttp.get({ url: Api.getProjectInfo }); +} \ No newline at end of file diff --git a/src/views/IO/delayPatrol/waitPatrol/data.ts b/src/views/IO/delayPatrol/waitPatrol/data.ts index 444d829..751ed57 100644 --- a/src/views/IO/delayPatrol/waitPatrol/data.ts +++ b/src/views/IO/delayPatrol/waitPatrol/data.ts @@ -2,60 +2,73 @@ import { BasicColumn } from '@/components/Table'; import { FormSchema } from '@/components/Form'; export const formSchemas: FormSchema[] = [ + // { + // field: 'projectName', + // label: '项目名称', + // component: 'Select', + // componentProps: { + // options: [ + // { + // value: '1', + // label: '2323', + // }, + // { + // value: '2', + // label: '2323', + // }, + // { + // value: '3', + // label: '2323', + // }, + // ], + // }, + // }, + // { + // field: 'ioCompany', + // label: '运维单位', + // component: 'Select', + // componentProps: { + // options: [ + // { + // value: '1', + // label: '2323', + // }, + // { + // value: '2', + // label: '2323', + // }, + // { + // value: '3', + // label: '2323', + // }, + // ], + // }, + // }, { - field: 'projectName', - label: '项目名称', - component: 'Select', - componentProps: { - options: [ - { - value: '1', - label: '2323', - }, - { - value: '2', - label: '2323', - }, - { - value: '3', - label: '2323', - }, - ], - }, + field: 'plaDate', + label: '计划日期', + component: 'RangePicker', }, { - field: 'ioCompany', - label: '运维单位', + field: 'deliverContent', + label: '交付内容', component: 'Select', componentProps: { - options: [ + options:[ { - value: '1', - label: '2323', + value: '例行操作', }, { - value: '2', - label: '2323', + value: '调研评估', }, { - value: '3', - label: '2323', + value: '响应支持服务', }, - ], - }, - }, - { - field: 'plaDate', - label: '计划日期', - component: 'RangePicker', - }, - { - field: 'deliverContent', - label: '交付内容', - component: 'Input', - componentProps: { - placeholder: '请输入', - }, + { + value: '优化改善', + }, + ] + } }, { field: 'serviceProject', @@ -106,14 +119,17 @@ export const columns: BasicColumn[] = [ }, { title: '开始日期', - dataIndex: 'startDate', + dataIndex: 'scheduleStartDate', }, { title: '结束日期', - dataIndex: 'endDate', + dataIndex: 'scheduleEndDate', }, { title: '状态', dataIndex: 'status', + customRender: ({ value }) => { + return value == 0 ? '启用' : '禁用'; + }, }, ]; diff --git a/src/views/IO/delayPatrol/waitPatrol/detailDrawer.vue b/src/views/IO/delayPatrol/waitPatrol/detailDrawer.vue index 6ff9bbd..e773ef4 100644 --- a/src/views/IO/delayPatrol/waitPatrol/detailDrawer.vue +++ b/src/views/IO/delayPatrol/waitPatrol/detailDrawer.vue @@ -11,24 +11,6 @@ > - - -
所属项目:{{ detail.projectName }}
-
-
- - -
所属合同:{{ detail.contractName }}
-
-
- - -
开始日期:{{ detail.startDate }}
-
- -
结束日期:{{ detail.endDate }}
-
-
巡检部位:{{ detail.inspectionPart }}
@@ -55,33 +37,6 @@
- - - -
是否异常:{{ detail.isUnusual }}
-
-
- - -
处理结果:{{ detail.handleResult }}
-
-
- - -
描述:{{ detail.description }}
-
-
- - -
处理前图片:{{ detail.beforeHandleImg }}
-
-
- - -
处理后图片:{{ detail.AfterHandleImg }}
-
-
-
@@ -89,25 +44,16 @@ + + diff --git a/src/views/IO/delayPatrol/waitPatrol/index.vue b/src/views/IO/delayPatrol/waitPatrol/index.vue index 821fd25..191d302 100644 --- a/src/views/IO/delayPatrol/waitPatrol/index.vue +++ b/src/views/IO/delayPatrol/waitPatrol/index.vue @@ -2,7 +2,7 @@ @@ -21,14 +22,14 @@ import { formSchemas, columns } from './data'; import detailDrawer from './detailDrawer.vue'; import { ref } from 'vue'; - + import faultModal from './faultModal.vue' defineOptions({ name: 'WaitPatrol' }); const [registerTable] = useTable({ rowSelection: { type: 'checkbox', }, - title: '待巡检列表', + title: '例行工作列表', api: list, showIndexColumn: true, rowKey: 'id', @@ -57,6 +58,10 @@ const handleDetail = () => { detailDrawerRef.value.showDrawer(); }; + const faultModalRef = ref(); + const handleReport = () =>{ + faultModalRef.value.showModal() + } diff --git a/src/views/IO/patrol/allPatrol/index.vue b/src/views/IO/patrol/allPatrol/index.vue index b7dbe93..5a8ff4a 100644 --- a/src/views/IO/patrol/allPatrol/index.vue +++ b/src/views/IO/patrol/allPatrol/index.vue @@ -31,7 +31,7 @@ rowSelection: { type: 'checkbox', }, - title: '巡检进行', + title: '全部工作', api: list, showIndexColumn: true, rowKey: 'id', diff --git a/src/views/IO/patrol/patroling/addModal.vue b/src/views/IO/patrol/patroling/addModal.vue index 9d250ea..8ca13d7 100644 --- a/src/views/IO/patrol/patroling/addModal.vue +++ b/src/views/IO/patrol/patroling/addModal.vue @@ -2,7 +2,7 @@ - + @@ -24,7 +24,7 @@ - + @@ -34,11 +34,12 @@ - 生成 @@ -63,14 +64,24 @@ + + +
+
+
- + import { reactive, ref } from 'vue'; - import { getInfo } from './api'; + import { getInfo, createRoutineInspection, createSpecialInspection } from './api'; + import { message } from 'ant-design-vue'; import dayjs from 'dayjs'; - + import AMapLoader from '@amap/amap-jsapi-loader'; export default { setup() { const title = ref('生成计划'); + const deliverContent = ref(''); const visible = ref(false); const form = reactive({ contractName: '', @@ -107,36 +120,66 @@ isWeekend: false, description: '', pointName: '', + serviceProject: '', finishStatus: [], }); //下拉框 - const projectNameOptions = [ + const pointNameOptions = [ { value: '1', label: 'a', + latitude: '29.8537459', + longitude: '121.5591519', }, { value: '2', label: 'b', + latitude: '29.8572957 ', + longitude: '121.5611743', }, { value: '3', label: 'c', + latitude: '29.8537459', + longitude: '121.5591519', }, ]; - const showModal = async (id) => { + const showModal = async (id, type) => { visible.value = true; const data = await getInfo(id); for (let i in form) { form[i] = data[i]; } + deliverContent.value = type; + console.log(deliverContent.value); }; const handleOk = () => { - console.log('Form Data:', form); - // 在此处可以添加表单验证逻辑 - visible.value = false; + let params = {}; + for (let i in form) { + params[i] = form[i]; + } + params.scheduleStartDate = params.dateRange[0] + params.scheduleEndDate = params.dateRange[1] + if (deliverContent.value != '例行操作') { + delete params['finishStatus'] + delete params['frequency'] + createRoutineInspection(params).then((_) => { + message.success('操作成功'); + visible.value = false; + }); + visible.value = false; + } else { + if (form.finishStatus && form.finishStatus.length > 0) { + createSpecialInspection(params).then((_) => { + message.success('操作成功'); + visible.value = false; + }); + } else { + message.warning('工作日标不能为空'); + } + } }; //列表 const finishColumns = [ @@ -213,16 +256,53 @@ const deletePlan = (index) => { form.finishStatus.splice(index, 1); }; + + //地图 + const map = ref(null); + const initMap = async (longitude, latitude, organizationName) => { + try { + // 加载高德地图 JavaScript API + await AMapLoader.load({ + key: '786a2e7cc6d4be5ba1d6174a0aa10f2b', + version: '2.0', + plugins: [], + }); + + // 初始化地图 + map.value = new AMap.Map('amapContainer', { + zoom: 17, + center: [longitude, latitude], + }); + + // 添加标记(可选) + const marker = new AMap.Marker({ + position: new AMap.LngLat(longitude, latitude), + title: organizationName, + }); + const markerList = [marker]; + map.value.add(markerList); + } catch (error) { + console.error('加载高德地图失败:', error); + } + }; + const pointNameChange = (val) => { + const obj = pointNameOptions.find((i) => { + return (i.value = val); + }); + initMap(obj.longitude, obj.latitude, obj.organizationName); + }; return { visible, title, form, showModal, handleOk, - projectNameOptions, + pointNameOptions, finishColumns, createPlan, deletePlan, + pointNameChange, + deliverContent, }; }, }; diff --git a/src/views/IO/patrol/patroling/api.ts b/src/views/IO/patrol/patroling/api.ts index 8def30b..545e354 100644 --- a/src/views/IO/patrol/patroling/api.ts +++ b/src/views/IO/patrol/patroling/api.ts @@ -5,6 +5,8 @@ enum Api { list = '/platform/inspectPlanInfo/list', // export = '/workflow/leave/export', getProjectInfo = '/platform/projectInfo/getNames', + createRoutineInspection = '/platform/routineInspectionInfo/createRoutineInspection', + createSpecialInspection = '/platform/routineInspectionInfo/createSpecialInspection', } export function list(params?: any) { @@ -32,3 +34,11 @@ export function update(data: any) { export function removeByIds(ids: any) { return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` }); } + +export function createRoutineInspection(data: any) { + return defHttp.post({ url: Api.createRoutineInspection, data }); +} + +export function createSpecialInspection(data: any) { + return defHttp.post({ url: Api.createSpecialInspection, data }); +} diff --git a/src/views/IO/patrol/patroling/data.ts b/src/views/IO/patrol/patroling/data.ts index 0023ad8..aafd452 100644 --- a/src/views/IO/patrol/patroling/data.ts +++ b/src/views/IO/patrol/patroling/data.ts @@ -19,6 +19,27 @@ export const formSchemas: FormSchema[] = [ label: '计划日期', component: 'RangePicker', }, + { + field: 'progress', + label: '完成情况', + component: 'Select', + componentProps: { + options:[ + { + value:0, + label:'未完成' + }, + { + value:1, + label:'进行中' + }, + { + value:2, + label:'已完成' + }, + ] + }, + }, ]; export const columns: BasicColumn[] = [ @@ -42,6 +63,10 @@ export const columns: BasicColumn[] = [ title: '结束日期', dataIndex: 'endDate', }, + { + title: '交付内容', + dataIndex: 'deliverContent', + }, { title: '频次', dataIndex: 'frequency', diff --git a/src/views/IO/patrol/patroling/detailDrawer.vue b/src/views/IO/patrol/patroling/detailDrawer.vue index ab3427d..b4e02f5 100644 --- a/src/views/IO/patrol/patroling/detailDrawer.vue +++ b/src/views/IO/patrol/patroling/detailDrawer.vue @@ -47,6 +47,15 @@
计划描述:{{ detail.description }}
+ + +
+
+
@@ -59,7 +68,7 @@