Browse Source

延期审核弹窗改造

ops-management-platform-frontend-dev
wbc 2 months ago
parent
commit
9d78bdf7bc
  1. 4
      src/views/IO/workOrder/delayAudit/api.ts
  2. 105
      src/views/IO/workOrder/delayAudit/auditModal.vue
  3. 84
      src/views/IO/workOrder/delayAudit/data.ts
  4. 49
      src/views/IO/workOrder/delayAudit/detailDrawer.vue
  5. 4
      src/views/IO/workOrder/delayAudit/index.vue
  6. 4
      src/views/IO/workOrder/orderAudit/data.ts
  7. 4
      src/views/IO/workOrder/orderAudit/detailDrawer.vue
  8. 4
      src/views/IO/workOrder/orderHandle/data.ts
  9. 4
      src/views/IO/workOrder/orderHandle/detailDrawer.vue
  10. 4
      src/views/IO/workOrder/orderSearch/data.ts
  11. 4
      src/views/IO/workOrder/orderSearch/detailDrawer.vue
  12. 4
      src/views/IO/workOrder/orderSend/data.ts
  13. 4
      src/views/IO/workOrder/orderSend/detailDrawer.vue

4
src/views/IO/workOrder/delayAudit/api.ts

@ -11,6 +11,7 @@ enum Api {
getOrganizationType = '/platform/organizationType/list', getOrganizationType = '/platform/organizationType/list',
getContractNamesByProjectName = '/platform/contractInfo/getContractNamesByProjectName', getContractNamesByProjectName = '/platform/contractInfo/getContractNamesByProjectName',
queryProcess = '/platform/orderProcess/queryProcess', queryProcess = '/platform/orderProcess/queryProcess',
delaySumbmit = '/platform/workOrder/delaySumbmit',
} }
export function list(params?: PageQuery) { export function list(params?: PageQuery) {
@ -55,3 +56,6 @@ export function getContractNamesByProjectName(data:any) {
export function queryProcess(id: any) { export function queryProcess(id: any) {
return defHttp.get({ url: `${Api.queryProcess}?workOrderId=${id}` }); return defHttp.get({ url: `${Api.queryProcess}?workOrderId=${id}` });
} }
export function delaySumbmit(data:any) {
return defHttp.post({ url: Api.delaySumbmit,data });
}

105
src/views/IO/workOrder/delayAudit/auditModal.vue

@ -1,5 +1,5 @@
<template> <template>
<a-modal v-model:open="visible" :title="title" @ok="handleOk" width="50%" @cancel="closeModal"> <a-modal v-model:open="visible" :title="title" @ok="handleOk" width="50%" @cancel="closeModal">
<a-form :model="form" layout="vertical" ref="formRef" :rules="rules"> <a-form :model="form" layout="vertical" ref="formRef" :rules="rules">
<a-row :gutter="[16, 16]"> <a-row :gutter="[16, 16]">
<a-col :span="24"> <a-col :span="24">
@ -17,52 +17,43 @@
</a-row> </a-row>
<a-row :gutter="[16, 16]"> <a-row :gutter="[16, 16]">
<a-col :span="24"> <a-col :span="24">
<a-form-item label="处理结果" name="handleResult"> <a-form-item label="延期前时间" name="beforeDelayTime">
<a-select v-model:value="form.handleResult" :options="handleResultOptions" placeholder="请选择" /> <a-date-picker
:show-time="{ format: 'HH:mm:ss' }"
valueFormat="YYYY-MM-DD HH:mm:ss"
v-model:value="form.beforeDelayTime"
placeholder="请选择"
disabled
/>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="[16, 16]"> <a-row :gutter="[16, 16]">
<a-col :span="12"> <a-col :span="24">
<a-form-item label="接单超期" name="isOrderTakingOverTime"> <a-form-item label="延期后时间" name="afterDelayTime">
<a-radio-group v-model:value="form.isOrderTakingOverTime"> <a-date-picker
<a-radio value="是"></a-radio> :show-time="{ format: 'HH:mm:ss' }"
<a-radio value="否"></a-radio> valueFormat="YYYY-MM-DD HH:mm:ss"
</a-radio-group> v-model:value="form.afterDelayTime"
</a-form-item> placeholder="请选择"
</a-col> disabled
<a-col :span="12"> />
<a-form-item label="接单超期扣款" name="orderTakingCost">
<a-input v-model:value="form.orderTakingCost" placeholder="接单超期扣款(元/小时)" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="12">
<a-form-item label="处理超期" name="isHandleOverTime">
<a-radio-group v-model:value="form.isHandleOverTime">
<a-radio value="是"></a-radio>
<a-radio value="否"></a-radio>
</a-radio-group>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="处理超期扣款" name="handleCost">
<a-input v-model:value="form.handleCost" placeholder="处理超期扣款(元/小时)" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="[16, 16]"> <a-row :gutter="[16, 16]">
<a-col :span="24"> <a-col :span="24">
<a-form-item label="其他扣款费用" name="otherCost"> <a-form-item label="延期原因" name="delayReason">
<a-input v-model:value="form.otherCost" placeholder="请输入" /> <a-textarea v-model:value="form.delayReason" :rows="4" placeholder="请输入" disabled />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="[16, 16]"> <a-row :gutter="[16, 16]">
<a-col :span="24"> <a-col :span="24">
<a-form-item label="其他扣款原因" name="otherCostReason"> <a-form-item label="延期图片" name="attachments">
<a-input v-model:value="form.otherCostReason" placeholder="请输入" /> <div v-for="(item, index) in form.attachments" :key="index">
<img alt="" :src="item.url" />
</div>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@ -75,11 +66,12 @@
</a-row> </a-row>
<a-row :gutter="[16, 16]"> <a-row :gutter="[16, 16]">
<a-col :span="24"> <a-col :span="24">
<a-form-item label="是否结案" name="isCloseCase"> <a-form-item label="处理结果" name="handleResult">
<a-radio-group v-model:value="form.isCloseCase"> <a-select
<a-radio value="是"></a-radio> v-model:value="form.handleResult"
<a-radio value="否"></a-radio> :options="handleResultOptions"
</a-radio-group> placeholder="请选择"
/>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@ -90,7 +82,7 @@
<script> <script>
import { reactive, ref } from 'vue'; import { reactive, ref } from 'vue';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import { getInfo } from './api'; import { getInfo, delaySumbmit } from './api';
export default { export default {
setup() { setup() {
const title = ref('审核'); const title = ref('审核');
@ -98,24 +90,21 @@
const form = reactive({ const form = reactive({
projectName: '', projectName: '',
contractName: '', contractName: '',
beforeDelayTime: '',
afterDelayTime: '',
attachments: null,
delayReason: '',
auditOpinion: '',
handleResult: null, handleResult: null,
isOrderTakingOverTime: null,
orderTakingCost: '',
isHandleOverTime: '',
handleCost: null,
otherCost: '',
otherCostReason: '',
auditOpinion:'',
isCloseCase:null,
id: null, id: null,
}); });
// //
const handleResultOptions = [ const handleResultOptions = [
{ {
value: '通过', value: '审核通过',
}, },
{ {
value: '退回', value: '审核拒绝',
}, },
]; ];
const showModal = async (id) => { const showModal = async (id) => {
@ -124,12 +113,21 @@
for (let i in form) { for (let i in form) {
form[i] = data[i]; form[i] = data[i];
} }
form.handleResult = null
}; };
const handleOk = () => { const handleOk = () => {
formRef.value.validate().then((valid) => { formRef.value.validate().then((valid) => {
if (valid) { if (valid) {
console.log(form) const params = {};
for (let i in form) {
params[i] = form[i];
}
delaySumbmit(params).then((_) => {
message.success('操作成功');
emit('success');
closeModal();
});
} }
}); });
}; };
@ -140,14 +138,7 @@
const formRef = ref(); const formRef = ref();
const rules = { const rules = {
handleResult: [{ required: true, message: '请选择' }], handleResult: [{ required: true, message: '请选择' }],
isOrderTakingOverTime: [{ required: true, message: '请选择' }],
orderTakingCost: [{ required: true, message: '请输入' }],
isHandleOverTime: [{ required: true, message: '请选择' }],
handleCost: [{ required: true, message: '请输入' }],
otherCost: [{ required: true, message: '请输入' }],
otherCostReason: [{ required: true, message: '请输入' }],
auditOpinion: [{ required: true, message: '请输入' }], auditOpinion: [{ required: true, message: '请输入' }],
isCloseCase: [{ required: true, message: '请选择' }],
}; };
return { return {
visible, visible,

84
src/views/IO/workOrder/delayAudit/data.ts

@ -1,35 +1,39 @@
import { BasicColumn } from '@/components/Table'; import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Form'; import { FormSchema } from '@/components/Form';
const statusOptions = [ // const statusOptions = [
{ // {
label:'待派遣', // label:'待派遣',
value:0, // value:0,
}, // },
{ // {
label:'待接单', // label:'待接单',
value:1, // value:1,
}, // },
{ // {
label:'处理中', // label:'处理中',
value:2, // value:2,
}, // },
{ // {
label:'运维单位处理时回退至派遣', // label:'处理中(已延期)',
value:3, // value:2.1,
}, // },
{ // {
label:'初审', // label:'运维单位处理时回退至派遣',
value:4, // value:3,
}, // },
{ // {
label:'终审', // label:'初审',
value:5, // value:4,
}, // },
{ // {
label:'结案', // label:'终审',
value:6, // value:5,
}, // },
]; // {
// label:'结案',
// value:6,
// },
// ];
export const formSchemas: FormSchema[] = [ export const formSchemas: FormSchema[] = [
{ {
field: 'projectName', field: 'projectName',
@ -61,19 +65,19 @@ export const columns: BasicColumn[] = [
}, },
{ {
title: '延期后时间', title: '延期后时间',
dataIndex: 'AfterDelayTime', dataIndex: 'afterDelayTime',
}, },
{ {
title: '处理结果', title: '处理结果',
dataIndex: 'handleResult', dataIndex: 'handleResult',
}, },
{ // {
title: '当前状态', // title: '当前状态',
dataIndex: 'status', // dataIndex: 'status',
customRender: ({ value }) => { // customRender: ({ value }) => {
return statusOptions.find((i) => { // return statusOptions.find((i) => {
return i.value == value; // return i.value == value;
})?.label; // })?.label;
}, // },
}, // },
]; ];

49
src/views/IO/workOrder/delayAudit/detailDrawer.vue

@ -78,17 +78,19 @@
</a-row> </a-row>
<a-row :gutter="[16, 16]"> <a-row :gutter="[16, 16]">
<a-col :span="24"> <a-col :span="24">
<div><span class="titleLabel">故障图片</span> <div
<div v-for="(item,index) in detail.attachments" :key="index"> ><span class="titleLabel">故障图片</span>
<img alt="" :src="item.url" /> <div v-for="(item, index) in detail.attachments" :key="index">
</div> <img alt="" :src="item.url" />
</div>
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="[16, 16]"> <a-row :gutter="[16, 16]">
<a-col :span="24"> <a-col :span="24">
<div><span class="titleLabel">地图信息</span> <div
<div id="delayAuditDetailMap" style="width: 100%; height: 500px"></div> ><span class="titleLabel">地图信息</span>
<div id="delayAuditDetailMap" style="width: 100%; height: 500px"></div>
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
@ -96,18 +98,21 @@
<a-tab-pane key="3" tab="流程信息"> <a-tab-pane key="3" tab="流程信息">
<div style="margin-left: 20px"> <div style="margin-left: 20px">
<a-timeline> <a-timeline>
<a-timeline-item v-for="(item, index) in progress" :key="index" > <a-timeline-item v-for="(item, index) in progress" :key="index">
<template #dot><span class="stage">{{ item.stage }}</span></template> <template #dot
><span class="stage">{{ item.stage }}</span></template
>
<div class="timeText" <div class="timeText"
><span class="person">{{ item.operator }}</span ><span class="person">{{ item.operator }}</span
>{{item.description}}</div >{{ item.description }}</div
> >
<div class="timeText">{{ item.feedback }}</div> <div class="timeText">{{ item.feedback }}</div>
<div class="operationTime">{{ item.operationTime }}</div> <div class="operationTime">{{ item.operationTime }}</div>
<div class="duration" v-if="item.duration"> <Icon icon="ant-design:dashboard-outlined" />用时{{item.duration}}</div> <div class="duration" v-if="item.duration">
<Icon icon="ant-design:dashboard-outlined" />用时{{ item.duration }}</div
>
<a-divider></a-divider> <a-divider></a-divider>
</a-timeline-item> </a-timeline-item>
</a-timeline> </a-timeline>
</div> </div>
</a-tab-pane> </a-tab-pane>
@ -117,12 +122,12 @@
</template> </template>
<script> <script>
import { reactive, ref,defineComponent } from 'vue'; import { reactive, ref, defineComponent } from 'vue';
import { getInfo,queryProcess } from './api'; import { getInfo, queryProcess } from './api';
import AMapLoader from '@amap/amap-jsapi-loader'; import AMapLoader from '@amap/amap-jsapi-loader';
import Icon from '@/components/Icon/Icon.vue'; import Icon from '@/components/Icon/Icon.vue';
export default defineComponent({ export default defineComponent({
components:{Icon}, components: { Icon },
setup(props, { emit }) { setup(props, { emit }) {
// //
let detail = reactive({ let detail = reactive({
@ -159,6 +164,10 @@
label: '处理中', label: '处理中',
value: 2, value: 2,
}, },
{
label: '处理中(已延期)',
value: 2.1,
},
{ {
label: '运维单位处理时回退至派遣', label: '运维单位处理时回退至派遣',
value: 3, value: 3,
@ -176,7 +185,7 @@
value: 6, value: 6,
}, },
]; ];
const progress = ref([]) const progress = ref([]);
const statusText = (val) => { const statusText = (val) => {
return statusOptions.find((i) => { return statusOptions.find((i) => {
return i.value == val; return i.value == val;
@ -193,7 +202,7 @@
const progressLine = await queryProcess(id); const progressLine = await queryProcess(id);
progress.value = progressLine; progress.value = progressLine;
console.log(progress.value); console.log(progress.value);
if(detail.longitude){ if (detail.longitude) {
initMap(detail.longitude, detail.latitude, detail.faultLocation); initMap(detail.longitude, detail.latitude, detail.faultLocation);
} }
}; };
@ -240,7 +249,7 @@
activeKey, activeKey,
detail, detail,
statusText, statusText,
progress progress,
}; };
}, },
}); });
@ -258,7 +267,7 @@
div { div {
margin-bottom: 10px; margin-bottom: 10px;
} }
.stage{ .stage {
font-weight: 600; font-weight: 600;
} }
.timeText { .timeText {
@ -271,13 +280,13 @@
.operationTime { .operationTime {
color: gray; color: gray;
font-weight: 550; font-weight: 550;
margin-left:80% margin-left: 80%;
} }
.duration { .duration {
color: #00bbff; color: #00bbff;
position: absolute; position: absolute;
font-weight: 550; font-weight: 550;
margin-left:80%; margin-left: 80%;
top: 0.1%; top: 0.1%;
} }

4
src/views/IO/workOrder/delayAudit/index.vue

@ -9,7 +9,7 @@
</template> </template>
</template> </template>
</BasicTable> </BasicTable>
<auditModal ref="auditModalRef" /> <auditModal ref="auditModalRef" @success="reload()"/>
<detailDrawer ref="detailDrawerRef" /> <detailDrawer ref="detailDrawerRef" />
</PageWrapper> </PageWrapper>
</template> </template>
@ -23,7 +23,7 @@
import detailDrawer from './detailDrawer.vue'; import detailDrawer from './detailDrawer.vue';
import { ref } from 'vue'; import { ref } from 'vue';
const [registerTable] = useTable({ const [registerTable,{reload}] = useTable({
title: '延期审核', title: '延期审核',
api: list, api: list,
showIndexColumn: true, showIndexColumn: true,

4
src/views/IO/workOrder/orderAudit/data.ts

@ -13,6 +13,10 @@ const statusOptions = [
label:'处理中', label:'处理中',
value:2, value:2,
}, },
{
label: '处理中(已延期)',
value: 2.1,
},
{ {
label:'运维单位处理时回退至派遣', label:'运维单位处理时回退至派遣',
value:3, value:3,

4
src/views/IO/workOrder/orderAudit/detailDrawer.vue

@ -213,6 +213,10 @@
label: '处理中', label: '处理中',
value: 2, value: 2,
}, },
{
label: '处理中(已延期)',
value: 2.1,
},
{ {
label: '运维单位处理时回退至派遣', label: '运维单位处理时回退至派遣',
value: 3, value: 3,

4
src/views/IO/workOrder/orderHandle/data.ts

@ -14,6 +14,10 @@ const statusOptions = [
label: '处理中', label: '处理中',
value: 2, value: 2,
}, },
{
label: '处理中(已延期)',
value: 2.1,
},
{ {
label: '运维单位处理时回退至派遣', label: '运维单位处理时回退至派遣',
value: 3, value: 3,

4
src/views/IO/workOrder/orderHandle/detailDrawer.vue

@ -215,6 +215,10 @@
label: '处理中', label: '处理中',
value: 2, value: 2,
}, },
{
label: '处理中(已延期)',
value: 2.1,
},
{ {
label: '运维单位处理时回退至派遣', label: '运维单位处理时回退至派遣',
value: 3, value: 3,

4
src/views/IO/workOrder/orderSearch/data.ts

@ -25,6 +25,10 @@ const statusOptions = [
label: '处理中', label: '处理中',
value: 2, value: 2,
}, },
{
label: '处理中(已延期)',
value: 2.1,
},
{ {
label: '运维单位处理时回退至派遣', label: '运维单位处理时回退至派遣',
value: 3, value: 3,

4
src/views/IO/workOrder/orderSearch/detailDrawer.vue

@ -213,6 +213,10 @@
label: '处理中', label: '处理中',
value: 2, value: 2,
}, },
{
label: '处理中(已延期)',
value: 2.1,
},
{ {
label: '运维单位处理时回退至派遣', label: '运维单位处理时回退至派遣',
value: 3, value: 3,

4
src/views/IO/workOrder/orderSend/data.ts

@ -13,6 +13,10 @@ const statusOptions = [
label: '处理中', label: '处理中',
value: 2, value: 2,
}, },
{
label: '处理中(已延期)',
value: 2.1,
},
{ {
label: '运维单位处理时回退至派遣', label: '运维单位处理时回退至派遣',
value: 3, value: 3,

4
src/views/IO/workOrder/orderSend/detailDrawer.vue

@ -213,6 +213,10 @@
label: '处理中', label: '处理中',
value: 2, value: 2,
}, },
{
label: '处理中(已延期)',
value: 2.1,
},
{ {
label: '运维单位处理时回退至派遣', label: '运维单位处理时回退至派遣',
value: 3, value: 3,

Loading…
Cancel
Save