|
@@ -120,14 +120,14 @@
|
|
>提交</t-button
|
|
>提交</t-button
|
|
>
|
|
>
|
|
<t-button
|
|
<t-button
|
|
- v-if="IS_FILL_MODE"
|
|
|
|
|
|
+ v-if="!IS_EDIT_MODE"
|
|
theme="primary"
|
|
theme="primary"
|
|
@click="submitHandle('START')"
|
|
@click="submitHandle('START')"
|
|
>提交</t-button
|
|
>提交</t-button
|
|
>
|
|
>
|
|
|
|
|
|
<t-button
|
|
<t-button
|
|
- v-if="IS_FILL_MODE"
|
|
|
|
|
|
+ v-if="!IS_EDIT_MODE"
|
|
theme="default"
|
|
theme="default"
|
|
@click="submitHandle('DRAFT')"
|
|
@click="submitHandle('DRAFT')"
|
|
>保存草稿</t-button
|
|
>保存草稿</t-button
|
|
@@ -150,8 +150,10 @@ import {
|
|
sopEditApi,
|
|
sopEditApi,
|
|
sopSaveApi,
|
|
sopSaveApi,
|
|
sopApproveApi,
|
|
sopApproveApi,
|
|
|
|
+ sopApplyApi,
|
|
|
|
+ flowFormPropertiesApi,
|
|
} from '@/api/sop';
|
|
} from '@/api/sop';
|
|
-import { deepCopy } from '@/utils/tool';
|
|
|
|
|
|
+import { objCopy } from '@/utils/tool';
|
|
// import bus from '@/utils/bus';
|
|
// import bus from '@/utils/bus';
|
|
|
|
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
@@ -168,6 +170,9 @@ const props = defineProps({
|
|
});
|
|
});
|
|
const emit = defineEmits(['confirm']);
|
|
const emit = defineEmits(['confirm']);
|
|
|
|
|
|
|
|
+const IS_NEW_MODE = computed(() => {
|
|
|
|
+ return props.type === 'new';
|
|
|
|
+});
|
|
const IS_FILL_MODE = computed(() => {
|
|
const IS_FILL_MODE = computed(() => {
|
|
return props.type === 'fill';
|
|
return props.type === 'fill';
|
|
});
|
|
});
|
|
@@ -215,6 +220,23 @@ const tabs = ref([]);
|
|
const curStep = ref('');
|
|
const curStep = ref('');
|
|
const flowId = props.sop.flowId;
|
|
const flowId = props.sop.flowId;
|
|
|
|
|
|
|
|
+const initNew = async () => {
|
|
|
|
+ loading.value = true;
|
|
|
|
+ const res = await flowFormPropertiesApi({
|
|
|
|
+ flowDeploymentId: props.sop.flowDeploymentId,
|
|
|
|
+ });
|
|
|
|
+ loading.value = false;
|
|
|
|
+
|
|
|
|
+ allSteps.value = [res.formProperties];
|
|
|
|
+ tabs.value = allSteps.value.map((item) => {
|
|
|
|
+ return {
|
|
|
|
+ value: item.taskName,
|
|
|
|
+ label: item.taskName,
|
|
|
|
+ disabled: false,
|
|
|
|
+ };
|
|
|
|
+ });
|
|
|
|
+ curStep.value = tabs.value.slice(-1)[0].value;
|
|
|
|
+};
|
|
const initFill = async () => {
|
|
const initFill = async () => {
|
|
loading.value = true;
|
|
loading.value = true;
|
|
const res = await sopFlowViewApi({ flowId });
|
|
const res = await sopFlowViewApi({ flowId });
|
|
@@ -278,7 +300,8 @@ const init = () => {
|
|
// 编辑
|
|
// 编辑
|
|
initEdit();
|
|
initEdit();
|
|
} else {
|
|
} else {
|
|
- //还有可能是点击“新增SOP”进来的
|
|
|
|
|
|
+ // 还有可能是点击“新增SOP”进来的
|
|
|
|
+ initNew();
|
|
}
|
|
}
|
|
};
|
|
};
|
|
init();
|
|
init();
|
|
@@ -335,21 +358,9 @@ const itemValueChange = ({ prop, value }) => {
|
|
|
|
|
|
const getFormData = () => {
|
|
const getFormData = () => {
|
|
let data = {};
|
|
let data = {};
|
|
- if (IS_FILL_MODE.value) {
|
|
|
|
- const curStepData = allSteps.value.find(
|
|
|
|
- (item) => item.taskName === curStep.value
|
|
|
|
- );
|
|
|
|
- data = { ...curStepData };
|
|
|
|
- data.formProperty = data.formProperty.map((item) => {
|
|
|
|
- return {
|
|
|
|
- ...item,
|
|
|
|
- value: JSON.stringify({ value: formData.value[item.formName] || null }),
|
|
|
|
- };
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
|
|
|
|
if (IS_EDIT_MODE.value) {
|
|
if (IS_EDIT_MODE.value) {
|
|
- data = deepCopy(sopEditDetail.value);
|
|
|
|
|
|
+ data = objCopy(sopEditDetail.value);
|
|
for (const k in data.setupMap) {
|
|
for (const k in data.setupMap) {
|
|
if (Object.hasOwnProperty.call(data.setupMap, k)) {
|
|
if (Object.hasOwnProperty.call(data.setupMap, k)) {
|
|
const element = data.setupMap[k];
|
|
const element = data.setupMap[k];
|
|
@@ -360,6 +371,18 @@ const getFormData = () => {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ // 新增 or 填报
|
|
|
|
+ const curStepData = allSteps.value.find(
|
|
|
|
+ (item) => item.taskName === curStep.value
|
|
|
|
+ );
|
|
|
|
+ data = { ...curStepData };
|
|
|
|
+ data.formProperty = data.formProperty.map((item) => {
|
|
|
|
+ return {
|
|
|
|
+ ...item,
|
|
|
|
+ value: JSON.stringify({ value: formData.value[item.formName] || null }),
|
|
|
|
+ };
|
|
|
|
+ });
|
|
}
|
|
}
|
|
|
|
|
|
return JSON.stringify(data);
|
|
return JSON.stringify(data);
|
|
@@ -381,12 +404,22 @@ const submitHandle = async (approve = 'START') => {
|
|
if (valid !== true) return;
|
|
if (valid !== true) return;
|
|
}
|
|
}
|
|
|
|
|
|
- const res = await sopApproveApi({
|
|
|
|
- taskId: props.sop.taskId,
|
|
|
|
- formProperties: getFormData(),
|
|
|
|
- approve,
|
|
|
|
- }).catch(() => {});
|
|
|
|
- if (!res) return;
|
|
|
|
|
|
+ if (IS_FILL_MODE.value) {
|
|
|
|
+ const res = await sopApproveApi({
|
|
|
|
+ taskId: props.sop.taskId,
|
|
|
|
+ formProperties: getFormData(),
|
|
|
|
+ approve,
|
|
|
|
+ }).catch(() => {});
|
|
|
|
+ if (!res) return;
|
|
|
|
+ } else if (IS_NEW_MODE.value) {
|
|
|
|
+ const res = await sopApplyApi({
|
|
|
|
+ crmNo: props.sop.crmNo,
|
|
|
|
+ flowDeploymentId: props.sop.flowDeploymentId,
|
|
|
|
+ formProperties: getFormData(),
|
|
|
|
+ approve,
|
|
|
|
+ }).catch(() => {});
|
|
|
|
+ if (!res) return;
|
|
|
|
+ }
|
|
|
|
|
|
MessagePlugin.success('保存成功');
|
|
MessagePlugin.success('保存成功');
|
|
emit('confirm');
|
|
emit('confirm');
|