|
@@ -4,47 +4,55 @@
|
|
<t-collapse-panel disabled>
|
|
<t-collapse-panel disabled>
|
|
<template #expandIcon></template>
|
|
<template #expandIcon></template>
|
|
<template #header>
|
|
<template #header>
|
|
- 项目派单信息(SOP流水单号:{{ sop.sopNo }})
|
|
|
|
|
|
+ 项目派单信息(SOP流水单号:{{ sopInfo.sopNo }})
|
|
</template>
|
|
</template>
|
|
<t-form colon label-width="72px">
|
|
<t-form colon label-width="72px">
|
|
<t-row :gutter="[0, 4]">
|
|
<t-row :gutter="[0, 4]">
|
|
<t-col :span="3">
|
|
<t-col :span="3">
|
|
- <t-form-item label="项目单号">{{ sop.crmNo }}</t-form-item>
|
|
|
|
|
|
+ <t-form-item label="项目单号">{{ sopInfo.crmNo }}</t-form-item>
|
|
</t-col>
|
|
</t-col>
|
|
<t-col :span="3">
|
|
<t-col :span="3">
|
|
- <t-form-item label="项目名称">{{ sop.crmName }}</t-form-item>
|
|
|
|
|
|
+ <t-form-item label="项目名称">{{ sopInfo.crmName }}</t-form-item>
|
|
</t-col>
|
|
</t-col>
|
|
<t-col :span="3">
|
|
<t-col :span="3">
|
|
- <t-form-item label="派单时间">{{ sop.beginTime }}</t-form-item>
|
|
|
|
|
|
+ <t-form-item label="派单时间">{{
|
|
|
|
+ sopInfo.beginTime
|
|
|
|
+ }}</t-form-item>
|
|
</t-col>
|
|
</t-col>
|
|
<t-col :span="3">
|
|
<t-col :span="3">
|
|
<t-form-item label="客户经理">{{
|
|
<t-form-item label="客户经理">{{
|
|
- sop.customManagerName
|
|
|
|
|
|
+ sopInfo.customManagerName
|
|
}}</t-form-item>
|
|
}}</t-form-item>
|
|
</t-col>
|
|
</t-col>
|
|
<t-col :span="3">
|
|
<t-col :span="3">
|
|
<t-form-item label="客户类型">{{
|
|
<t-form-item label="客户类型">{{
|
|
- sop.customManagerTypeStr
|
|
|
|
|
|
+ sopInfo.customManagerTypeStr
|
|
}}</t-form-item>
|
|
}}</t-form-item>
|
|
</t-col>
|
|
</t-col>
|
|
<t-col :span="3">
|
|
<t-col :span="3">
|
|
- <t-form-item label="客户名称">{{ sop.customName }}</t-form-item>
|
|
|
|
|
|
+ <t-form-item label="客户名称">{{
|
|
|
|
+ sopInfo.customName
|
|
|
|
+ }}</t-form-item>
|
|
</t-col>
|
|
</t-col>
|
|
<t-col :span="3">
|
|
<t-col :span="3">
|
|
<t-form-item label="考试开始时间" label-width="100px">{{
|
|
<t-form-item label="考试开始时间" label-width="100px">{{
|
|
- sop.examStartTime
|
|
|
|
|
|
+ sopInfo.examStartTime
|
|
}}</t-form-item>
|
|
}}</t-form-item>
|
|
</t-col>
|
|
</t-col>
|
|
<t-col :span="3">
|
|
<t-col :span="3">
|
|
<t-form-item label="考试结束时间" label-width="100px">{{
|
|
<t-form-item label="考试结束时间" label-width="100px">{{
|
|
- sop.examEndTime
|
|
|
|
|
|
+ sopInfo.examEndTime
|
|
}}</t-form-item>
|
|
}}</t-form-item>
|
|
</t-col>
|
|
</t-col>
|
|
<t-col :span="3">
|
|
<t-col :span="3">
|
|
- <t-form-item label="实施产品">{{ sop.productName }}</t-form-item>
|
|
|
|
|
|
+ <t-form-item label="实施产品">{{
|
|
|
|
+ sopInfo.productName
|
|
|
|
+ }}</t-form-item>
|
|
</t-col>
|
|
</t-col>
|
|
<t-col :span="3">
|
|
<t-col :span="3">
|
|
- <t-form-item label="服务单元">{{ sop.serviceName }}</t-form-item>
|
|
|
|
|
|
+ <t-form-item label="服务单元">{{
|
|
|
|
+ sopInfo.serviceName
|
|
|
|
+ }}</t-form-item>
|
|
</t-col>
|
|
</t-col>
|
|
</t-row>
|
|
</t-row>
|
|
</t-form>
|
|
</t-form>
|
|
@@ -55,7 +63,7 @@
|
|
<template #expandIcon></template>
|
|
<template #expandIcon></template>
|
|
<template #header> SOP项目计划变更说明 </template>
|
|
<template #header> SOP项目计划变更说明 </template>
|
|
<p class="red">
|
|
<p class="red">
|
|
- SOP项目计划需要变更时,可手动发起一个或多个申请,质控专员审核后,在SOP流程中进行计划变更调整,完成变更后,申请流程结束并通知到发起申请人
|
|
|
|
|
|
+ SOP项目计划需要变更时,可手动发起一个或多个申请,质控专员审核后,在SOP流程中进行计划变更调整,完成变更后,申请流程结束并通知到发起申请人。
|
|
</p>
|
|
</p>
|
|
</t-collapse-panel>
|
|
</t-collapse-panel>
|
|
</t-collapse>
|
|
</t-collapse>
|
|
@@ -72,16 +80,20 @@
|
|
<t-row :gutter="[0, 20]">
|
|
<t-row :gutter="[0, 20]">
|
|
<template v-if="!IS_NEW_MODE">
|
|
<template v-if="!IS_NEW_MODE">
|
|
<t-col :span="4">
|
|
<t-col :span="4">
|
|
- <t-form-item label="报备申请人"> 1111 </t-form-item>
|
|
|
|
|
|
+ <t-form-item label="报备申请人">
|
|
|
|
+ {{ sopInfo.createRealName }}
|
|
|
|
+ </t-form-item>
|
|
</t-col>
|
|
</t-col>
|
|
- <t-col :span="4">
|
|
|
|
- <t-form-item label="报备申请时间"> 1111 </t-form-item>
|
|
|
|
|
|
+ <t-col :span="4" :offset="1">
|
|
|
|
+ <t-form-item label="报备申请时间">
|
|
|
|
+ {{ timestampFilter(sopInfo.createTime) }}
|
|
|
|
+ </t-form-item>
|
|
</t-col>
|
|
</t-col>
|
|
</template>
|
|
</template>
|
|
<t-col :span="12">
|
|
<t-col :span="12">
|
|
<t-form-item label="变更类型" requiredMark>
|
|
<t-form-item label="变更类型" requiredMark>
|
|
<div style="padding-top: 3px">
|
|
<div style="padding-top: 3px">
|
|
- <t-radio-group v-model="formData.type">
|
|
|
|
|
|
+ <t-radio-group v-model="formData.type" :disabled="readonly">
|
|
<t-radio
|
|
<t-radio
|
|
:value="item.value"
|
|
:value="item.value"
|
|
:key="item.value"
|
|
:key="item.value"
|
|
@@ -124,7 +136,7 @@
|
|
</t-col>
|
|
</t-col>
|
|
<template v-if="!IS_NEW_MODE">
|
|
<template v-if="!IS_NEW_MODE">
|
|
<t-col :span="12">
|
|
<t-col :span="12">
|
|
- <div class="form-group-title next"> 变更处理结果 </div>
|
|
|
|
|
|
+ <div class="form-group-title"> 变更处理结果 </div>
|
|
</t-col>
|
|
</t-col>
|
|
<t-col :span="12">
|
|
<t-col :span="12">
|
|
<t-form-item label="处理结果">
|
|
<t-form-item label="处理结果">
|
|
@@ -157,15 +169,16 @@
|
|
<script setup name="PlanChange">
|
|
<script setup name="PlanChange">
|
|
import { ref, computed, reactive } from 'vue';
|
|
import { ref, computed, reactive } from 'vue';
|
|
import { MessagePlugin } from 'tdesign-vue-next';
|
|
import { MessagePlugin } from 'tdesign-vue-next';
|
|
-import { useRoute } from 'vue-router';
|
|
|
|
import dynamicTable from '@/components/common/dynamic-table';
|
|
import dynamicTable from '@/components/common/dynamic-table';
|
|
import { dictToOptionList } from '@/utils/tool';
|
|
import { dictToOptionList } from '@/utils/tool';
|
|
import { PLAN_CHANGE_TYPE } from '@/config/constants';
|
|
import { PLAN_CHANGE_TYPE } from '@/config/constants';
|
|
-import { createPlanChange, approvePlanChange } from '@/api/sop';
|
|
|
|
|
|
+import {
|
|
|
|
+ createPlanChange,
|
|
|
|
+ approvePlanChange,
|
|
|
|
+ planChangeDetail,
|
|
|
|
+} from '@/api/sop';
|
|
import { omit } from 'lodash';
|
|
import { omit } from 'lodash';
|
|
-
|
|
|
|
-const dTable = ref();
|
|
|
|
-const route = useRoute();
|
|
|
|
|
|
+import { timestampFilter } from '@/utils/filter';
|
|
|
|
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
sop: {
|
|
sop: {
|
|
@@ -181,6 +194,8 @@ const props = defineProps({
|
|
});
|
|
});
|
|
const emit = defineEmits(['confirm', 'cancel']);
|
|
const emit = defineEmits(['confirm', 'cancel']);
|
|
|
|
|
|
|
|
+const sopInfo = ref({ ...props.sop });
|
|
|
|
+
|
|
const IS_NEW_MODE = computed(() => {
|
|
const IS_NEW_MODE = computed(() => {
|
|
return props.type === 'new';
|
|
return props.type === 'new';
|
|
});
|
|
});
|
|
@@ -231,6 +246,7 @@ const columns = computed(() => [
|
|
},
|
|
},
|
|
},
|
|
},
|
|
]);
|
|
]);
|
|
|
|
+
|
|
const formRef = ref(null);
|
|
const formRef = ref(null);
|
|
const formData = reactive({
|
|
const formData = reactive({
|
|
serviceId: '',
|
|
serviceId: '',
|
|
@@ -244,13 +260,26 @@ const formData = reactive({
|
|
remark: '',
|
|
remark: '',
|
|
});
|
|
});
|
|
|
|
|
|
-const initData = () => {
|
|
|
|
- if (IS_NEW_MODE) {
|
|
|
|
|
|
+const initData = async () => {
|
|
|
|
+ if (IS_NEW_MODE.value) {
|
|
formData.serviceId = props.sop.serviceId;
|
|
formData.serviceId = props.sop.serviceId;
|
|
formData.sopNo = props.sop.sopNo;
|
|
formData.sopNo = props.sop.sopNo;
|
|
formData.crmNo = props.sop.crmNo;
|
|
formData.crmNo = props.sop.crmNo;
|
|
formData.flowDeploymentId = props.sop.flowDeploymentId;
|
|
formData.flowDeploymentId = props.sop.flowDeploymentId;
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // audit
|
|
|
|
+ const res = await planChangeDetail(props.sop.id);
|
|
|
|
+ sopInfo.value.beginTime = res.crmInfo.crmBeginTime;
|
|
|
|
+ sopInfo.value.customManagerName = res.crmInfo.customManagerName;
|
|
|
|
+ sopInfo.value.customManagerTypeStr = props.sop.customTypeStr;
|
|
|
|
+ sopInfo.value.examStartTime = '';
|
|
|
|
+ sopInfo.value.examEndTime = '';
|
|
|
|
+ sopInfo.value.productName = res.crmInfo.productName;
|
|
|
|
+
|
|
|
|
+ formData = objAssign(formData, res.tbProjectExchange);
|
|
|
|
+ formData.contentJson = JSON.parse(formData.contentJson);
|
|
};
|
|
};
|
|
initData();
|
|
initData();
|
|
|
|
|
|
@@ -310,12 +339,12 @@ const submitHandle = async () => {
|
|
flowApprove: 'PASS',
|
|
flowApprove: 'PASS',
|
|
projectExchangeApprove: formData.projectExchangeApprove,
|
|
projectExchangeApprove: formData.projectExchangeApprove,
|
|
remark: formData.remark,
|
|
remark: formData.remark,
|
|
- taskId: route.query.taskId,
|
|
|
|
|
|
+ taskId: props.sop.taskId,
|
|
}).catch(() => {});
|
|
}).catch(() => {});
|
|
if (!res) return;
|
|
if (!res) return;
|
|
}
|
|
}
|
|
|
|
|
|
- MessagePlugin.success('保存成功');
|
|
|
|
|
|
+ MessagePlugin.success('提交成功');
|
|
emit('confirm');
|
|
emit('confirm');
|
|
};
|
|
};
|
|
|
|
|