423e0317 by lihua

质量评估,价值评估支持不走流程配置

1 parent 013e2f9d
......@@ -444,6 +444,41 @@ export const getRegisterExchangeList = () => request({
method: 'get'
})
/** 获取合同列表 */
export const getContractList = (params) => request({
url: `${import.meta.env.VITE_API_NEW_PORTAL}/dam-contract/page-list`,
method: 'post',
data: params
})
/** 新增合同 */
export const saveDamContract = (params) => request({
url: `${import.meta.env.VITE_API_NEW_PORTAL}/dam-contract/save`,
method: 'post',
data: params
})
/** 更新合同 */
export const updateDamContract = (params) => request({
url: `${import.meta.env.VITE_API_NEW_PORTAL}/dam-contract/update`,
method: 'put',
data: params
})
/** 删除合同 */
export const delDamContract = (params) => request({
url: `${import.meta.env.VITE_API_NEW_PORTAL}/dam-contract/delete`,
method: 'delete',
data: params
})
/** 获取会员列表 */
export const getTenantList = (params) => request({
url: `${import.meta.env.VITE_APP_PERSONAL_URL}/tenant/singlePage`,
method: 'post',
data: params
})
// API详情
/** 查询域名和文根 */
/** api类型,有表单类型,自定义sql. */
......
......@@ -78,3 +78,8 @@ export const crossPlatformApprove = (params) => request({
method: 'post',
data: {}
})
/** 功能流程配置-获取是否需要审批 */
export const isNeedApprove = (params) => request({
url: `${import.meta.env.VITE_APP_WORK_FLOW_URL}/func-flow-config/is-need-approve?funcCode=${params.funcCode}`,
method: 'get',
})
......
......@@ -106,7 +106,7 @@ const getDrawerConRef = (refName) => {
}
// const drawerForm = drawerFormRef.value[0] || drawerFormRef.value;
if (refName == 'drawerFormRef') {
const drawerForm = drawerFormRef.value[0] || drawerFormRef.value;
const drawerForm = drawerFormRef.value?.[0] || drawerFormRef.value;
return drawerForm
}
}
......@@ -153,11 +153,13 @@ const tableBtnClick = (scope, btn) => {
const submitForm = async (formEl: FormInstance | undefined, btn) => {
if (!formEl) return;
await formEl.validate((valid, fields) => {
if (valid) {
const drawerForm = drawerFormRef.value[0] || drawerFormRef.value;
if (valid) {
const formInfo = drawerForm.formInline;
emits("drawerBtnClick", btn, formInfo);
} else {
var obj = fields && Object.keys(fields);
obj?.[0] && formEl?.scrollToField(obj?.[0])
console.log("error submit!", fields);
}
});
......
......@@ -1452,7 +1452,8 @@ const panelChange = (scope, row) => {
:disabled="item.disabled || readonly" @change="(val) => cascaderChange(val, item)" />
<template v-else-if="item.type && item.type.indexOf('date') > -1">
<el-date-picker :class="[item.col, { is_block: item.block }]" v-if="item.type == 'date-picker'"
v-model="formInline[item.field]" type="daterange" range-separator="至" start-placeholder="开始日期"
v-model="formInline[item.field]" type="daterange" range-separator="至" start-placeholder="开始日期" :format="item.format ?? null"
:value-format="item.valueFormat ?? null"
end-placeholder="结束日期" :unlink-panels="item.unlink ?? false" :shortcuts="item.shortcuts ?? []"
:default-value="item.defaultDate" :disabled="item.disabled ?? false" />
<el-date-picker :class="[item.col, { is_block: item.block }]" v-else-if="item.type == 'date-year'"
......
......@@ -182,6 +182,10 @@ onMounted(() => {
<el-date-picker v-model="formInline[item.field]" type="datetimerange" start-placeholder="开始时间"
end-placeholder="结束时间" />
</template>
<template v-else-if="item.type == 'date-range'">
<el-date-picker v-model="formInline[item.field]" type="daterange" :start-placeholder="item.startPlaceholder ?? '开始日期'" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
:end-placeholder="item.endPlaceholder ?? '结束日期'" />
</template>
<template v-else-if="item.type == 'radio-button'">
<el-radio-group v-model="formInline[item.field]" @change="radioGroupChange">
<el-radio-button v-for="opts in item.options" :label="opts.label" />
......
......@@ -217,6 +217,27 @@ const routes: RouteRecordRaw[] = [
},
},
]
},
{
path: '/data-asset-register/contract-progress',
component: Layout,
meta: {
title: '合同进度一览',
icon: 'ep:grid',
},
children: [
{
path: '',
name: 'contractProgress',
component: () => import('@/views/data_asset/contractProgress.vue'),
meta: {
title: '合同进度一览',
sidebar: false,
cache: true,
breadcrumb: false,
},
},
]
}
]
export default routes
......
<route lang="yaml">
name: contractProgress
</route>
<script lang="ts" setup name="contractProgress">
import { ref } from 'vue';
import { TableColumnWidth, commonPageConfig } from '@/utils/enum';
import {
saveDamContract,
updateDamContract,
delDamContract,
getContractList,
getParamsList,
getTenantList
} from "@/api/modules/dataAsset";
import { Plus } from "@element-plus/icons-vue";
import TableTools from "@/components/Tools/table_tools.vue";
import { useValidator } from '@/hooks/useValidator';
import useUserStore from "@/store/modules/user";
import { cloneDeep } from 'lodash-es';
import { onUploadFileDownload } from '@/api/modules/common';
const { proxy } = getCurrentInstance() as any;
const userStore = useUserStore();
const userData = JSON.parse(userStore.userData)
const { required } = useValidator();
const contractTypes: any = ref([]);
/** 交易合同节点 */
const tradeContractNodesList: any = ref([]);
/** 资产合同节点 */
const registerContractNodesList: any = ref([]);
/** 甲方乙方的下拉会员列表 */
const partyAList: any = ref([]);
const searchItemList = ref([
{
type: "input",
label: "",
field: "contractName",
default: "",
maxlength: 50,
placeholder: "合同名称",
clearable: true,
},
{
label: "",
type: "select",
placeholder: "合同类型",
field: "contractTypeCode",
options: contractTypes.value,
default: '',
filterable: true,
clearable: true,
},
{
type: 'select',
label: '',
field: 'contractNodeCode',
default: '',
placeholder: '进展阶段',
options: [],
clearable: true
},
{
type: "date-range",
field: "dateRange",
default: null,
startPlaceholder: '签约开始日期',
endPlaceholder: '签约结束日期',
clearable: true,
required: true
}
]);
const page = ref({
...commonPageConfig,
contractName: '',
contractTypeCode: '',
contractNodeCode: '',
dateRange: []
});
const toSearch = (val: any, clear: boolean = false) => {
page.value.curr = 1;
if (clear) {
searchItemList.value.map((item) => (item.default = ""));
page.value.contractName = '';
page.value.contractTypeCode = "";
page.value.contractNodeCode = "";
page.value.dateRange = [];
searchItemList.value[2].options = [];
} else {
page.value.contractName = val.contractName;
page.value.contractTypeCode = val.contractTypeCode;
page.value.contractNodeCode = val.contractNodeCode;
page.value.dateRange = val.dateRange;
}
getTableData();
};
const tableTools = ref();
const handleSearchChange = (val, row, info) => {
if (row.field == 'contractTypeCode') {
tableTools.value.toolSearch.formInline.contractNodeCode = '';
searchItemList.value[2].options = val == '1' ? registerContractNodesList.value : (!val ? [] : tradeContractNodesList.value);
}
}
const getTableData = () => {
tableInfo.value.loading = true;
getContractList({
pageSize: page.value.limit,
pageIndex: page.value.curr,
contractName: page.value.contractName,
contractTypeCode: page.value.contractTypeCode,
contractNodeCode: page.value.contractNodeCode,
startDate: page.value.dateRange?.[0] || '',
endDate: page.value.dateRange?.[1] || '',
}).then((res: any) => {
tableInfo.value.loading = false
if (res.code == proxy.$passCode) {
const data = res.data || {}
tableInfo.value.data = data.records || [];
tableInfo.value.page.curr = data.pageIndex;
tableInfo.value.page.rows = data.totalRows || 0;
} else {
proxy.$ElMessage.error(res.msg);
}
})
}
const currTableData: any = ref({});
const tableInfo = ref({
id: 'contract-data-table',
rowKey: 'guid',
loading: false,
fields: [
{ label: "合同名称", field: "contractName", width: 160, align: "left" },
{ label: "合同类型", field: "contractTypeName", width: 110 },
{ label: "甲方名称", field: "partyAName", width: 180 },
{ label: "乙方名称", field: "partyBName", width: 180 },
{ label: "签约日期", field: "signContractDate", width: 110 },
],
childFields: [
{ label: "进展节点", field: "contractNodeName", width: 140, align: "left" },
{ label: "开始日期", field: "startDate", width: TableColumnWidth.DATE },
{ label: "结束日期", field: "endDate", width: TableColumnWidth.DATE },
{ label: "工作内容描述", field: "contentDescribe", width: 280 },
],
data: [],
page: {
type: "normal",
rows: 0,
...page.value,
}
});
const getNodeSteps = (scope) => {
let contractNodeCodes = scope.row.contractNodeCodes || [];
return {
list: contractNodeCodes.map((n, index) => {
return {
// tooltip: {
// placement: 'top',
// content: n.name,
// className: 'step_title_tooltip',
// effect: 'light',
// },
title: n.name,
value: index + 1
}
}),
step: !scope.row.contractNodes?.length ? null : (scope.row.contractNodes.length - 1)
}
}
const contractEditFormItems = ref([
{
label: "合同类型",
type: "select",
placeholder: "请选择",
field: "contractTypeCode",
options: contractTypes.value,
default: '',
filterable: true,
clearable: true,
required: true,
},
{
type: "input",
label: "合同名称",
field: "contractName",
default: "",
maxlength: 50,
placeholder: "请输入",
clearable: true,
required: true,
},
{
label: "甲方名称",
type: "select",
placeholder: "请选择",
field: "partyAGuid",
options: partyAList.value,
props: {
value: 'guid',
label: 'tenantName'
},
default: '',
filterable: true,
clearable: true,
required: true,
},
{
label: "乙方名称",
type: "select",
placeholder: "请选择",
field: "partyBGuid",
options: partyAList.value,
props: {
value: 'guid',
label: 'tenantName'
},
default: '',
filterable: true,
clearable: true,
required: true,
},
{
label: "跟进节点",
type: "select",
placeholder: "请选择",
field: "contractNodeCodes",
options: [],
multiple: true,
default: [],
filterable: true,
collapse: true,
tagsTooltip: true,
clearable: true,
required: true,
},
{
label: '签约日期',
type: 'date',
placeholder: '请输入',
field: 'signContractDate',
default: "",
unlink: true,
disabled: false,
clearable: true,
required: true
},
]);
const contractEditFormRules = ref({
contractTypeCode: [required('请选择合同类型')],
contractName: [required('请填写合同名称')],
partyAGuid: [required('请选择甲方名称')],
partyBGuid: [required('请选择乙方名称')],
contractNodeCodes: [required('请选择跟进节点')],
signContractDate: [required('请选择签约日期')],
});
/** 新增分类的form */
const contractEditFormInfo = ref({
type: "form",
title: "",
col: "span",
formInfo: {
id: "add-class-form",
readonly: false,
items: contractEditFormItems.value,
rules: contractEditFormRules.value,
},
});
const drawerRef = ref();
/** 新增编辑分类。 */
const drawerInfo = ref({
visible: false,
direction: 'rtl',
size: 550,
header: {
title: '新增合同',
},
type: '',
container: {
contents: [contractEditFormInfo.value],
},
footer: {
visible: true,
btns: [
{ type: 'default', label: '取消', value: 'cancel' },
{ type: 'primary', label: '确定', value: 'save', loading: false },
]
}
})
const validate = async () => {
if (!nodesInfo.value?.length) {
return true;
}
let taskIndex = 0;
for (const task of nodesInfo.value) {
let res = await depFormRef.value['ref-' + task.contractNodeCode]?.ruleFormRef?.validate((valid, errorItem) => {
if (!valid) {
var obj = Object.keys(errorItem);
depFormRef.value['ref-' + task.contractNodeCode]?.ruleFormRef?.scrollToField(obj[0]);
return false;
}
})
if (!res) {
return res;
}
taskIndex++;
}
return true;
}
const drawerBtnClick = async (btn, info) => {
if (btn.value == 'cancel') {
drawerInfo.value.visible = false;
} else {
if (info.partyAGuid == info.partyBGuid) {
proxy.$ElMessage.error(`甲方名称跟乙方名称不能选择同一个`);
drawerRef.value?.getDrawerConRef('drawerFormRef')?.ruleFormRef?.scrollToField('partyAGuid');
return;
}
let res = await validate();
if (!res) {
return
}
info.contractNodes = [];
let index = 0;
for (const n of nodesInfo.value) {
let formInline = depFormRef.value['ref-' + n.contractNodeCode].formInline;
if (index != 0) {
if (formInline.dateRange[0] < info.contractNodes[index - 1].endDate) {
proxy.$ElMessage.error(`【${n.contractNodeName}】的开始日期应大于等于上一个节点的结束日期`);
depFormRef.value['ref-' + n.contractNodeCode]?.ruleFormRef?.scrollToField('dateRange');
return;
}
}
info.contractNodes.push(Object.assign({}, formInline, {
contractNodeCode: n.contractNodeCode,
contractGuid: currTableData.value.guid,
contractTypeCode: info.contractTypeCode,
startDate: formInline.dateRange[0],
endDate: formInline.dateRange[1],
nodeAchievement: formInline.nodeAchievement?.map(n => {
return {
name: n.name,
url: n.url
}
}) || []
}))
index++;
}
drawerInfo.value.footer.btns[1].loading = true;
if (drawerInfo.value.type == 'add') {
saveDamContract(info).then((res: any) => {
drawerInfo.value.footer.btns[1].loading = false;
if (res.code == proxy.$passCode) {
page.value.curr = 1;
getTableData();
proxy.$ElMessage.success('新增合同成功');
drawerInfo.value.visible = false;
} else {
proxy.$ElMessage.error(res.msg);
}
})
} else {
const params = { ...info };
params.guid = currTableData.value.guid;
updateDamContract(params).then((res: any) => {
drawerInfo.value.footer.btns[1].loading = false;
if (res.code == proxy.$passCode) {
getTableData();
proxy.$ElMessage.success('修改合同成功');
drawerInfo.value.visible = false;
} else {
proxy.$ElMessage.error(res.msg);
}
})
}
}
}
const drawerSelectChange = (val, row, info) => {
if (row.field == 'contractTypeCode') {
contractEditFormItems.value.forEach(item => {
item.default = info[item.field];
if (item.field == 'contractNodeCodes') {
item.default = '';
nodesInfo.value = [];
item.options = val == '1' ? registerContractNodesList.value : (!val ? [] : tradeContractNodesList.value);
}
});
} else if (row.field == 'contractNodeCodes') {
info.contractNodeCodes = val?.sort((a, b) => parseInt(a) - parseInt(b));
let oldNodesInfo = nodesInfo.value;
let nodeInfo: any[] = [];
info.contractNodeCodes?.forEach(code => {
let node = oldNodesInfo.find(on => on.contractNodeCode == code);
if (node) {
let formInline = depFormRef.value['ref-' + node.contractNodeCode]?.formInline || {};
node.nodeFormItems.forEach(item => {
item.default = formInline[item.field];
})
nodeInfo.push(node);
} else {
if (oldNodesInfo.length > 0 && parseInt(code) < parseInt(oldNodesInfo[oldNodesInfo.length - 1].contractNodeCode)) {
nodeInfo.push({
contractNodeCode: code,
contractNodeName: registerContractNodesList.value.find(r => r.value == code)?.label || tradeContractNodesList.value.find(r => r.value == code)?.label,
nodeFormItems: cloneDeep(nodeFormItems.value),
nodeFormRules: nodeFormRules.value
});
}
}
}) || [];
nodesInfo.value = nodeInfo;
}
}
const contractNodeCodes = computed(() => {
return drawerRef.value?.getDrawerConRef('drawerFormRef')?.formInline?.contractNodeCodes;
})
const handleNodeFileView = (scope) => {
let file = scope.row?.nodeAchievement?.[0];
onUploadFileDownload(file);
}
const handleTableEdit = (scope) => {
drawerInfo.value.visible = true;
drawerInfo.value.type = 'edit';
drawerInfo.value.header.title = '编辑合同';
currTableData.value = scope.row;
contractEditFormItems.value.forEach(item => {
item.default = scope.row[item.field];
if (item.field == 'contractNodeCodes') {
item.default = scope.row.contractNodeCodes?.map(c => c.code) || [];
item.options = scope.row.contractTypeCode == '1' ? registerContractNodesList.value : (!scope.row.contractTypeCode ? [] : tradeContractNodesList.value);
}
})
nodesInfo.value = scope.row.contractNodes?.map(node => {
let items = cloneDeep(nodeFormItems.value);
items.forEach(item => {
item.default = node[item.field];
if (item.field == 'dateRange') {
item.default = [node.startDate, node.endDate];
}
})
return Object.assign({}, node, {
nodeFormItems: items,
nodeFormRules: nodeFormRules.value
})
}) || [];
}
const handleTableDel = (scope) => {
proxy.$openMessageBox("确定要删除该登记合同吗?", () => {
delDamContract([scope.row.guid]).then((res: any) => {
if (res.code == proxy.$passCode) {
page.value.curr = 1;
getTableData();
proxy.$ElMessage.success('删除登记合同成功');
} else {
proxy.$ElMessage.error(res.msg);
}
});
}, () => {
proxy.$ElMessage.info("已取消删除");
})
}
const handleCreate = () => {
drawerInfo.value.visible = true;
drawerInfo.value.type = 'add';
drawerInfo.value.header.title = '新增合同';
contractEditFormItems.value.forEach(item => {
item.default = '';
if (item.field == 'partyBGuid') {
item.default = userData.tenantGuid;
}
})
}
const nodesInfo: any = ref([]);
const depFormRef = ref({});
const setDepItemRef = (el: any, index: string) => {
if (el) {
depFormRef.value['ref-' + index] = el;
}
}
const nodeFormItems = ref([{
label: "开始日期~结束日期",
type: "date-picker",
field: "dateRange",
default: [],
placeholder: "开始日期~结束日期",
clearable: true,
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
block: true,
required: true,
},
// {
// label: '开始日期',
// type: 'date',
// placeholder: '请选择',
// field: 'startDate',
// default: "",
// unlink: true,
// disabled: false,
// clearable: true,
// required: true
// }, {
// label: '结束日期',
// type: 'date',
// placeholder: '请选择',
// field: 'endDate',
// default: "",
// unlink: true,
// disabled: false,
// clearable: true,
// required: true
// },
{
label: '节点成果上传',
tip: '支持格式:xls .xlsx .doc .docx .rar .zip',
type: 'upload-file',
accept: '.xls, .xlsx, .doc, .docx, .rar, .zip',
required: true,
block: true,
visible: true,
default: [],
field: 'nodeAchievement',
limit: 1,
}, {
label: '工作内容描述',
type: 'textarea',
placeholder: '请输入',
field: 'contentDescribe',
default: '',
maxlength: 200,
block: true,
clearable: true,
},]);
const nodeFormRules = ref({
dateRange: [{
type: 'array', required: true, message: '请填写开始日期~结束日期', trigger: 'change',
}],
// startDate: [required('请填写开始日期')],
// endDate: [required('请填写结束日期')],
nodeAchievement: [{
validator: (rule: any, value: any, callback: any) => {
if (!value?.length) {
callback(new Error('请上传节点成果附件'))
} else {
callback();
}
}, trigger: 'change'
}],
});
const addNode = () => {
let len = nodesInfo.value.length;
let code = contractNodeCodes.value[len];
let nodeList = drawerRef.value?.getDrawerConRef('drawerFormRef')?.formInline?.contractTypeCode == '2' ? tradeContractNodesList.value : registerContractNodesList.value;
nodesInfo.value.push({
contractNodeCode: code,
contractNodeName: nodeList.find(r => r.value == code)?.label,
nodeFormItems: cloneDeep(nodeFormItems.value),
nodeFormRules: nodeFormRules.value
})
}
const handleDelNode = (index) => {
proxy.$openMessageBox("确定要删除该进展阶段节点信息录入吗?", () => {
nodesInfo.value.splice(index, 1);
}, () => {
proxy.$ElMessage.info("已取消删除");
})
}
onBeforeMount(() => {
getParamsList({
dictType: "资产合同类型"
}).then((res: any) => {
contractTypes.value = [];
if (res.code == proxy.$passCode) {
contractTypes.value = res.data || [];
searchItemList.value[1].options = contractTypes.value;
contractEditFormItems.value[0].options = contractTypes.value;
} else {
proxy.$ElMessage.error(res.msg);
}
})
getParamsList({
dictType: "交易合同节点"
}).then((res: any) => {
tradeContractNodesList.value = [];
if (res.code == proxy.$passCode) {
tradeContractNodesList.value = res.data || [];
} else {
proxy.$ElMessage.error(res.msg);
}
})
getParamsList({
dictType: "登记合同节点"
}).then((res: any) => {
registerContractNodesList.value = [];
if (res.code == proxy.$passCode) {
registerContractNodesList.value = res.data || [];
} else {
proxy.$ElMessage.error(res.msg);
}
})
getTenantList({
bizState: 'Y',
pageSize: -1
}).then((res: any) => {
partyAList.value = [];
if (res.code == proxy.$passCode) {
partyAList.value = res.data?.records || [];
contractEditFormItems.value[2].options = partyAList.value;
contractEditFormItems.value[3].options = partyAList.value;
} else {
proxy.$ElMessage.error(res.msg);
}
})
})
</script>
<template>
<div class="container_wrap">
<div class="table_tool_wrap">
<TableTools ref="tableTools" :searchItems="searchItemList" :searchId="'contract-data-search'" @search="toSearch"
:init="true" @select-change="handleSearchChange" />
</div>
<div class="tools_btns">
<el-button type="primary" @click="handleCreate">新增</el-button>
</div>
<div class="table_panel_wrap">
<el-table v-loading="tableInfo.loading" ref="tableRef" :data="tableInfo.data" :highlight-current-row="true" stripe
border height="100%" tooltip-effect="light" row-key="guid" class="expand-table"
:style="{ width: '100%', height: 'calc(100% - 8px)', margin: '8px 0px', display: 'inline-block', }">
<el-table-column type="expand">
<template #default="scope">
<el-table ref="fieldsTableRef" :data="scope.row.contractNodes" :highlight-current-row="true" stripe border
height="100%" tooltip-effect="light" :style="{
width: '100%',
'max-height': '100%',
display: 'inline-block',
}">
<el-table-column label="序号" type="index" width="56px" align="center" show-overflow-tooltip>
</el-table-column>
<el-table-column v-for="field in tableInfo.childFields" :prop="field.field" :label="field.label"
:width="field.width" :align="field.align" show-overflow-tooltip>
<template #default="scope">
<span>{{ scope.row[field.field || ''] || '--' }}</span>
</template>
</el-table-column>
<el-table-column label="附件信息" width="120px" align="left" fixed="right" show-overflow-tooltip>
<template #default="scope">
<span class="text_btn" @click="handleNodeFileView(scope)">查看</span>
</template>
</el-table-column>
</el-table>
</template>
</el-table-column>
<el-table-column label="序号" type="index" width="56px" align="center" show-overflow-tooltip>
</el-table-column>
<el-table-column v-for="field in tableInfo.fields" :prop="field.field" :label="field.label" :width="field.width"
:align="field.align" show-overflow-tooltip>
<template #default="scope">
<span>{{ scope.row[field.field || ''] || '--' }}</span>
</template>
</el-table-column>
<el-table-column label="进展阶段" width="450px" align="center">
<template #default="scope">
<div class="custom-steps" v-if="scope.row.contractNodeCodes?.length">
<StepBar :steps-info="getNodeSteps(scope)" />
</div>
<span v-else>--</span>
</template>
</el-table-column>
<el-table-column label="操作" width="100px" align="left" fixed="right" show-overflow-tooltip>
<template #default="scope">
<span class="text_btn" @click="handleTableEdit(scope)">编辑</span>
<span class="text_btn ml4" @click="handleTableDel(scope)">删除</span>
</template>
</el-table-column>
</el-table>
</div>
<Drawer :drawerInfo="drawerInfo" @drawerBtnClick="drawerBtnClick" ref="drawerRef"
@drawerSelectChange='drawerSelectChange'>
<!-- 传递到 Form 组件中的默认插槽 -->
<template v-slot:default>
<template v-if="contractNodeCodes?.length > 0">
<div class="title-label">进展阶段录入</div>
<!-- 渲染行 -->
<div v-for="(row, index) in nodesInfo" :key="index" class="match-content-wrapper">
<div class="title-row"><span class="title">{{ row.contractNodeName }}</span><span class="btns"
v-show="index == nodesInfo.length - 1" @click="handleDelNode(index)">删除</span></div>
<Form :ref="(el: any) => { setDepItemRef(el, row.contractNodeCode) }" :itemList="row.nodeFormItems"
:formId="'node-form' + index" :rules="row.nodeFormRules" col="col2" />
</div>
<!-- 新增按钮 -->
<div class="bottm_tools" v-show="nodesInfo.length < contractNodeCodes?.length" @click="addNode">
<el-icon>
<Plus />
</el-icon>
<span>新增进展</span>
</div>
</template>
</template>
</Drawer>
</div>
</template>
<style lang="scss" scoped>
.container_wrap {
padding: 0 16px;
}
.table_panel_wrap {
height: calc(100% - 94px);
}
.ml4 {
margin-left: 4px;
}
:deep(.custom-steps) {
width: 100%;
height: 64px;
display: flex;
.el-steps {
width: 100%;
}
}
.title-label {
margin-bottom: 4px;
font-size: 18px;
color: #212121;
}
.title-row {
height: 48px;
display: flex;
justify-content: space-between;
align-items: center;
.title {
color: #212121;
font-size: 16px;
font-weight: 600;
}
.btns {
cursor: pointer;
color: var(--el-color-primary);
font-size: 14px;
}
}
.bottm_tools {
width: 100%;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
background: #fafafa;
color: #999;
font-size: 14px;
border: 1px dashed var(--el-border-color-regular);
margin-bottom: 12px;
>span {
margin-left: 8px;
}
&:hover {
background: #EBF6F7;
border: 1px dashed var(--el-color-primary);
}
}
:deep(.el-table.expand-table) {
.el-table__expanded-cell.el-table__cell {
background: #fff !important;
padding-left: 48px;
padding-right: 8px;
}
}
:deep(.el-steps) {
.el-step__head.is-finish .el-step__icon.is-icon {
background-color: transparent;
}
}
</style>
\ No newline at end of file
......@@ -15,13 +15,14 @@ import {
qualityAllow,
deleteQuality,
updatQuality,
getTenantList
} from "@/api/modules/dataAsset";
import useUserStore from "@/store/modules/user";
import useDataAssetStore from "@/store/modules/dataAsset";
import {
getStaffDetailInfo
} from "@/api/modules/queryService";
import { rejectFlowData, revokeFlowData, getCamundaDeploymentId, getProcessNodesPromise, isMyFirstNode, passFlowData } from "@/api/modules/workFlowService";
import { isNeedApprove, rejectFlowData, revokeFlowData, getCamundaDeploymentId, getProcessNodesPromise, isMyFirstNode, passFlowData } from "@/api/modules/workFlowService";
const assetStore = useDataAssetStore();
......@@ -51,7 +52,7 @@ const tableFields = ref([
{ label: "登记时间", field: "registerTime", width: 120 },
// { label: "企业名称", field: "tenantName", width: 240, align: "left" },
{ label: "评估机构", field: "evaluationAgencyName", width: 250, align: "left" },
{ label: "审批状态", field: "approveVO", type: "approveTag", width: 96, align: 'center' },
{ label: "审批状态", field: "approveVO", type: "approveTag", enableNoApprove: true, width: 96, align: 'center' },
{
label: "主平台审批状态", field: "crossPlatformApproveState", type: "approveTagBtn", width: 150, align: 'center', btn: {
label: '查看', visible: (scope) => {
......@@ -66,7 +67,21 @@ const tableFields = ref([
const deploymentId = ref('');
onMounted(() => {
const tenantList: any = ref([]);
onBeforeMount(() => {
getTenantList({
bizState: 'Y',
pageSize: -1
}).then((res: any) => {
tenantList.value = [];
if (res.code == proxy.$passCode) {
tenantList.value = res.data?.records || [];
formItems.value[1].options = tenantList.value;
} else {
proxy.$ElMessage.error(res.msg);
}
})
});
onActivated(() => {
......@@ -144,17 +159,31 @@ const getTableData = () => {
})
}
let needApprovePromise = ref();
const needApprove = ref(true);
const handleCreate = () => {
if (!assetListData.value.length) {
ElMessage.warning('当前没有可发起质量评价的资产!');
return;
}
if (needApprovePromise.value) {
return;
}
needApprovePromise.value = isNeedApprove({ funcCode: 'ZCZLPJ' }).then((res1: any) => {
needApprovePromise.value = null;
if (res1.code == proxy.$passCode) {
needApprove.value = res1.data;
formItems.value[0].visible = true;
formItems.value[0].default = '';
formItems.value[1].visible = true;
formItems.value[1].default = [];
formItems.value[1].visible = !needApprove.value;
formItems.value[1].default = '';
formItems.value[2].visible = true;
formItems.value[2].default = [];
dialogInfo.value.visible = true;
dialogInfo.value.type = '';
if (needApprove.value) {
getCamundaDeploymentId('10018', userData.tenantGuid, userData.staffGuid).then((res: any) => {
if (res.code == proxy.$passCode) {
deploymentId.value = res.data;
......@@ -163,6 +192,11 @@ const handleCreate = () => {
proxy.$ElMessage.error(res.msg);
}
})
}
} else {
proxy.$ElMessage.error(res1.msg);
}
})
}
const page = ref({
......@@ -203,7 +237,13 @@ const tableInfo = ref({
const getTableBtns = (row) => {
let btnsArr: any[] = [];
const approveVO = row.approveVO || {};
const approveVO = row.approveVO;
if (!approveVO && row.isApprove == 'N') {
btnsArr.push({ label: "编辑", value: "redit" });
btnsArr.push({ label: "删除", value: "del" });
btnsArr.push({ label: "详情", value: "detail" });
return btnsArr;
}
const approveState = row.approveVO.approveState || null;
const approveStaffGuids = approveVO.approveStaffGuids || [];
const staffGuid = approveVO.staffGuid || '';
......@@ -254,11 +294,21 @@ const tableBtnClick = (scope, btn) => {
currTableData.value = row;
console.log(row, '-------');
if (type == "redit") {
isNeedApprove({ funcCode: 'ZCZLPJ' }).then((res1: any) => {
if (res1.code == proxy.$passCode) {
needApprove.value = res1.data;
formItems.value[0].visible = false;
formItems.value[0].default = row.damGuid;
formItems.value[1].visible = !needApprove.value;
formItems.value[1].default = row.evaluationAgencyGuid;
formItems.value[2].default = row.qualityEvaluationFile || [];
dialogInfo.value.contents[0].formInfo.items = formItems.value;
dialogInfo.value.visible = true;
dialogInfo.value.type = 'reSubmit';
formItems.value[0].visible = false;
formItems.value[0].default = row.registerGuid;
formItems.value[1].default = row.qualityEvaluationFile || [];
} else {
proxy.$ElMessage.error(res1.msg);
}
})
} else if (type == "del") {
delTableOpen("此操作将永久删除该资产质量评价,是否继续?", "warning");
} else if (type === 'reject') {
......@@ -390,6 +440,20 @@ const formItems = ref([{
visible: true,
required: true
}, {
label: '评估机构',
type: 'select',
placeholder: '请选择',
field: 'evaluationAgencyGuid',
default: '',
block: true,
options: tenantList.value,
props: {
value: 'guid',
label: 'tenantName'
},
visible: false,
required: true
}, {
label: '附件上传',
tip: '支持格式:xls .xlsx .doc .docx .rar .zip',
type: 'upload-file',
......@@ -456,6 +520,62 @@ const dialogInfo = ref({
/** 编辑质量评价发起资产申请按钮处理。 */
const dialogBtnClick = (btn, info) => {
if (btn.value == 'submit') {
if (!needApprove.value) {
// 不需要走流程审批的提交
dialogInfo.value.footer.btns[1].loading = true;
if (dialogInfo.value.type == 'reSubmit') {
updatQuality({
guid: currTableData.value.guid,
tenantGuid: userData.tenantGuid,
damGuid: currTableData.value.damGuid,
daName: currTableData.value.daName,
immediateApprove: true,
evaluationAgencyGuid: info.evaluationAgencyGuid,
qualityEvaluationFile: info.qualityEvaluationFile?.map(file => {
return {
name: file.name,
url: file.url
}
}) || []
}).then((res: any) => {
dialogInfo.value.footer.btns[1].loading = false;
if (res?.code == proxy.$passCode) {
ElMessage.success('该资产质量评价重新提交成功');
dialogInfo.value.visible = false;
page.value.curr = 1;
getTableData();
} else {
ElMessage.error(res.msg);
}
})
} else {
let daInfo = assetListData.value.find(a => a.guid == info.damGuid);
saveQuality({
tenantGuid: userData.tenantGuid,
damGuid: info.damGuid,
daName: daInfo.damName,
immediateApprove: true,
evaluationAgencyGuid: info.evaluationAgencyGuid,
qualityEvaluationFile: info.qualityEvaluationFile?.map(file => {
return {
name: file.name,
url: file.url
}
}) || []
}).then((res: any) => {
dialogInfo.value.footer.btns[1].loading = false;
if (res?.code == proxy.$passCode) {
ElMessage.success('质量评价发起成功');
dialogInfo.value.visible = false;
page.value.curr = 1;
getTableData();
} else {
ElMessage.error(res.msg);
}
})
}
} else {
// 需要走流程的审批功能。
dialogInfo.value.footer.btns[1].loading = true;
let submitFunc = () => {
getProcessNodesPromise({
......@@ -540,6 +660,7 @@ const dialogBtnClick = (btn, info) => {
}
})
}
}
} else if (btn.value == 'cancel') {
dialogInfo.value.visible = false;
}
......
......@@ -114,7 +114,7 @@ const getDetailInfo = () => {
if (res.code == proxy.$passCode) {
const data = res.data || {};
evaDetailInfo.value = data;
deploymentId.value = data.approveVO.camundaDeploymentId;
deploymentId.value = data.approveVO?.camundaDeploymentId;
processInstanceId.value = data.approveVO?.camundaInstanceId;
} else {
proxy.$ElMessage.error(res.msg);
......@@ -127,7 +127,7 @@ const getDetailInfo = () => {
const data = res.data || {};
costAssessDetail.value = data;
evaDetailInfo.value = data;
deploymentId.value = data.approveVO.camundaDeploymentId;
deploymentId.value = data.approveVO?.camundaDeploymentId;
processInstanceId.value = data.approveVO?.camundaInstanceId;
} else {
proxy.$ElMessage.error(res.msg);
......@@ -209,6 +209,9 @@ const toolBtns: any = computed(() => {
label: "关闭", value: "cancel", plain: true
}];
let approveVO = evaDetailInfo.value.approveVO || costAssessDetail.value.approveVO;
if (!approveVO) {
return btnsArr;
}
let staffGuid = userData.staffGuid;
if (approveVO && approveVO.approveState == 'A' && approveVO.approveStaffGuids && approveVO.approveStaffGuids.indexOf(staffGuid) > -1) {
btnsArr.push(...[{ label: "通过", value: "pass", type: 'primary' }, { label: "驳回", value: "reject", type: 'danger', plain: true }]);
......@@ -1171,7 +1174,7 @@ const handleClick = () => {
</div>
</ContentWrap>
<ContentWrap v-if="route.query.type == 'qualityEvaluate' || route.query.type == 'costAssess'" id="id-approveInfo"
<ContentWrap v-if="(route.query.type == 'qualityEvaluate' && evaDetailInfo.approveVO && evaDetailInfo.isApprove !='N') || (route.query.type == 'costAssess' && costAssessDetail.approveVO && costAssessDetail.isApprove !='N')" id="id-approveInfo"
title="审批信息" description="" style="margin: 16px 16px 16px">
<ApprovalProcess ref="approvalProcessRef" v-if="deploymentId" :deploymentId="deploymentId" :processInstanceId="processInstanceId">
</ApprovalProcess>
......
......@@ -78,7 +78,7 @@ const getDetailInfo = () => {
const data = res.data || {};
evaDetailInfo.value = data;
detailInfo.value = data;
deploymentId.value = data.approveVO.camundaDeploymentId;
deploymentId.value = data.approveVO?.camundaDeploymentId;
processInstanceId.value = data.approveVO?.camundaInstanceId;
//需要显示质量评价信息
if (data.qualityScore != null) {
......@@ -90,6 +90,9 @@ const getDetailInfo = () => {
tabsInfo.value.tabs.splice(3, 1);
}
}
if (evaDetailInfo.value.isApprove == 'N') {
tabsInfo.value.tabs.pop();
}
if (fullPath === route.fullPath) {
document.title = `详情-${data.daName}`;
}
......@@ -124,7 +127,7 @@ const getDetailInfo = () => {
const data = res.data || {};
costAssessDetailInfo.value = data;
detailInfo.value = data;
deploymentId.value = data.approveVO.camundaDeploymentId;
deploymentId.value = data.approveVO?.camundaDeploymentId;
processInstanceId.value = data.approveVO?.camundaInstanceId;
// 需要显示价值评估信息
if (data.assessmentMoney != null) {
......@@ -136,7 +139,9 @@ const getDetailInfo = () => {
tabsInfo.value.tabs.splice(3, 1);
}
}
if (costAssessDetailInfo.value.isApprove == 'N') {
tabsInfo.value.tabs.pop();
}
if (data.qualityScore) {
// 确保"质量评价"标签存在于tabs中,并插入到"价值评估"前面
const qualityTabIndex = tabsInfo.value.tabs.findIndex(tab => tab.name === "qualityEvaluate");
......@@ -285,8 +290,8 @@ const getDetailInfo = () => {
let { approveVO } = data;
detailInfo.value = data;
assetDetailInfo.value = data;
deploymentId.value = approveVO.camundaDeploymentId;
processInstanceId.value = approveVO.camundaInstanceId;
deploymentId.value = approveVO?.camundaDeploymentId;
processInstanceId.value = approveVO?.camundaInstanceId;
isTextTruncated();
} else {
ElMessage.error(res.msg);
......@@ -446,6 +451,9 @@ const toolBtns: any = computed(() => {
return btnsArr;
}
let approveVO = detailInfo.value.approveVO;
if (!approveVO) {
return btnsArr;
}
let staffGuid = userData.staffGuid;
if (approveVO && approveVO.approveState == 'A' && approveVO.approveStaffGuids && approveVO.approveStaffGuids.indexOf(staffGuid) > -1) {
btnsArr.push(...[{ label: "通过", value: "pass", type: 'primary' }, { label: "驳回", value: "reject", type: 'danger', plain: true }]);
......@@ -1749,7 +1757,7 @@ const passCommonDialogBtnClick = (btn, info) => {
</div>
</ContentWrap>
<ContentWrap id="id-approveInfo" title="审批信息" expandSwicth style="margin-top: 15px"
:isExpand="approveInfoExpand" @expand="(v) => approveInfoExpand = v" v-if="route.query.type != 'certificate'">
:isExpand="approveInfoExpand" @expand="(v) => approveInfoExpand = v" v-if="tabsInfo.tabs.find(t => t.name == 'approveInfo') && route.query.type != 'certificate'">
<!-- <Table :tableInfo="approveTableInfo" /> -->
<ApprovalProcess ref="approvalProcessRef" v-if="deploymentId" :deploymentId="deploymentId"
:processInstanceId="processInstanceId">
......
......@@ -12,14 +12,15 @@ import {
saveCostAssess,
updateCostAssess,
deleteCostAssess,
costAssessAllow
costAssessAllow,
getTenantList
} from "@/api/modules/dataAsset";
import {
getStaffDetailInfo
} from "@/api/modules/queryService";
import useUserStore from "@/store/modules/user";
import useDataAssetStore from "@/store/modules/dataAsset";
import { getCamundaDeploymentId, getProcessNodesPromise, passFlowData, rejectFlowData, revokeFlowData, isMyFirstNode } from '@/api/modules/workFlowService';
import { isNeedApprove, getCamundaDeploymentId, getProcessNodesPromise, passFlowData, rejectFlowData, revokeFlowData, isMyFirstNode } from '@/api/modules/workFlowService';
import { changeNum } from '@/utils/common';
const assetStore = useDataAssetStore();
......@@ -43,11 +44,14 @@ const tableFields = ref([
// { label: "企业名称", field: "tenantName", width: 240, align: "left" },
{ label: "评估机构", field: "evaluationAgencyName", width: 250, align: "left" },
{
label: "审批状态", field: "approveVO", type: "approveTag", width: 96, align: 'center'
label: "审批状态", field: "approveVO", type: "approveTag", enableNoApprove: true, width: 96, align: 'center'
},
]);
const deploymentId = ref('');
const tenantList: any = ref([]);
onBeforeMount(() => {
if (isCompanyPlatform.value) {
tableInfo.value.fields = tableFields.value;
......@@ -55,14 +59,18 @@ onBeforeMount(() => {
tableFields.value.splice(3, 0, { label: "企业名称", field: "tenantName", width: 250, align: "left" })
tableInfo.value.fields = tableFields.value;
}
// getTenantAttach(userData.tenantGuid).then((res: any) => {
// if (res?.code == proxy.$passCode) {
// attachDataInfo.value = res.data || {};
// formItems.value[1].templateUrl = attachDataInfo.value.quality_evaluation_file;
// } else {
// ElMessage.error(res.msg);
// }
// })
getTenantList({
bizState: 'Y',
pageSize: -1
}).then((res: any) => {
tenantList.value = [];
if (res.code == proxy.$passCode) {
tenantList.value = res.data?.records || [];
formItems.value[1].options = tenantList.value;
} else {
proxy.$ElMessage.error(res.msg);
}
})
});
onActivated(() => {
......@@ -140,27 +148,40 @@ const getTableData = () => {
})
}
let needApprovePromise = ref();
const needApprove = ref(true);
const handleCreate = () => {
if (!assetListData.value.length) {
ElMessage.warning('当前没有可发起价值评估的资产!');
return;
}
formItems.value[4].placeholder = `本次评估数据资产总体质量得分为**分\n准确性:\n一致性:\n可访问性:\n规范性:\n完整性:`;
if (needApprovePromise.value) {
return;
}
needApprovePromise.value = isNeedApprove({ funcCode: 'ZCJZPG' }).then((res1: any) => {
needApprovePromise.value = null;
if (res1.code == proxy.$passCode) {
needApprove.value = res1.data;
formItems.value[5].placeholder = `本次评估数据资产总体质量得分为**分\n准确性:\n一致性:\n可访问性:\n规范性:\n完整性:`;
formItems.value[0].visible = true;
formItems.value[0].default = '';
formItems.value[1].visible = true;
formItems.value[1].default = [];
formItems.value[2].visible = false;
formItems.value[2].default = '';
formItems.value[1].visible = !needApprove.value;
formItems.value[1].default = '';
formItems.value[2].visible = true;
formItems.value[2].default = [];
formItems.value[3].visible = false;
formItems.value[3].default = '';
formItems.value[4].visible = false;
formItems.value[4].default = '';
formItems.value[5].visible = false;
formItems.value[5].default = [];
formItems.value[5].default = '';
formItems.value[6].visible = false;
formItems.value[6].default = [];
dialogInfo.value.visible = true;
dialogInfo.value.type = '';
if (!deploymentId.value) {
if (needApprove.value) {
getCamundaDeploymentId('10019', userData.tenantGuid, userData.staffGuid).then((res: any) => {
if (res.code == proxy.$passCode) {
deploymentId.value = res.data;
......@@ -170,6 +191,10 @@ const handleCreate = () => {
}
})
}
} else {
proxy.$ElMessage.error(res1.msg);
}
});
}
const page = ref({
......@@ -210,7 +235,13 @@ const tableInfo = ref({
const getTableBtns = (row) => {
let btnsArr: any[] = [];
const approveVO = row.approveVO || {};
const approveVO = row.approveVO;
if (!approveVO && row.isApprove == 'N') {
btnsArr.push({ label: "编辑", value: "redit" });
btnsArr.push({ label: "删除", value: "del" });
btnsArr.push({ label: "详情", value: "detail" });
return btnsArr;
}
const approveState = row.approveVO.approveState || null;
const approveStaffGuids = approveVO.approveStaffGuids || [];
const staffGuid = approveVO.staffGuid || '';
......@@ -262,62 +293,47 @@ const tableBtnClick = (scope, btn) => {
console.log('row', row);
currTableData.value = row;
if (type == "redit") {
// if (!row.registerGuid) {
// formItems.value[2].visible = true;
// formItems.value[3].visible = true;
// formItems.value[4].visible = true;
// formItems.value[5].visible = true;
// formItems.value[0].visible = false;
// formItems.value[0].default = row.damGuid;
// formItems.value[1].default = row.costAssessmentFile || [];
// dialogInfo.value.type = 'reSubmit';
// dialogInfo.value.visible = true;
// } else {
// formItems.value[2].visible = false;
// formItems.value[3].visible = false;
// formItems.value[4].visible = false;
// formItems.value[5].visible = false;
// formItems.value[0].visible = false;
// formItems.value[0].default = row.damGuid;
// formItems.value[1].default = row.costAssessmentFile || [];
// formItems.value[2].default = row.qualityScore;
// formItems.value[3].default = row.evaluationRangeStart && row.evaluationRangeEnd ? [row.evaluationRangeStart, row.evaluationRangeEnd] : '';
// formItems.value[4].default = row.evaluationNote;
// formItems.value[5].default = row.evaluationFile || [];
// dialogInfo.value.type = 'reSubmit';
// dialogInfo.value.visible = true;
// }
isNeedApprove({ funcCode: 'ZCJZPG' }).then((res1: any) => {
if (res1.code == proxy.$passCode) {
needApprove.value = res1.data;
if (row.qualityEvaluationGuid) {
formItems.value[2].visible = false;
formItems.value[3].visible = false;
formItems.value[4].visible = false;
formItems.value[5].visible = false;
formItems.value[6].visible = false;
formItems.value[0].visible = false;
formItems.value[0].default = row.damGuid;
formItems.value[1].default = row.costAssessmentFile || [];
formItems.value[1].visible = !needApprove.value;
formItems.value[1].default = row.evaluationAgencyGuid;
formItems.value[2].default = row.costAssessmentFile || [];
// formItems.value[2].default = row.qualityScore;
formItems.value[3].default = row.evaluationRangeStart && row.evaluationRangeEnd ? [row.evaluationRangeStart, row.evaluationRangeEnd] : '';
formItems.value[5].default = row.evaluationRangeStart && row.evaluationRangeEnd ? [row.evaluationRangeStart, row.evaluationRangeEnd] : '';
// formItems.value[4].default = row.evaluationNote;
// formItems.value[5].default = row.evaluationFile || [];
dialogInfo.value.type = 'reSubmit';
dialogInfo.value.visible = true;
}
if (!row.qualityEvaluationGuid) {
formItems.value[2].visible = true;
formItems.value[3].visible = true;
formItems.value[4].visible = true;
formItems.value[5].visible = true;
formItems.value[6].visible = true;
formItems.value[0].visible = false;
formItems.value[0].default = row.damGuid;
formItems.value[1].default = row.costAssessmentFile || [];
formItems.value[2].default = changeNum(row.qualityScore || 0, 2);
formItems.value[3].default = row.evaluationRangeStart && row.evaluationRangeEnd ? [row.evaluationRangeStart, row.evaluationRangeEnd] : '';
formItems.value[4].default = row.evaluationNote;
formItems.value[5].default = row.evaluationFile || [];
formItems.value[1].visible = !needApprove.value;
formItems.value[1].default = row.evaluationAgencyGuid;
formItems.value[2].default = row.costAssessmentFile || [];
formItems.value[3].default = changeNum(row.qualityScore || 0, 2);
formItems.value[4].default = row.evaluationRangeStart && row.evaluationRangeEnd ? [row.evaluationRangeStart, row.evaluationRangeEnd] : '';
formItems.value[5].default = row.evaluationNote;
formItems.value[6].default = row.evaluationFile || [];
dialogInfo.value.type = 'reSubmit';
dialogInfo.value.visible = true;
}
} else {
proxy.$ElMessage.error(res1.msg);
}
});
} else if (type == "delete") {
delTableOpen("此操作将永久删除该资产价值评估,是否继续?", "warning");
} else if (type === 'backup') {
......@@ -392,71 +408,6 @@ const tableBtnClick = (scope, btn) => {
}
};
// const tableBtnClick = (scope, btn) => {
// const type = btn.value;
// const row = scope.row;
// currTableData.value = row;
// if (type === "edit") { //草稿中\已驳回\已撤销\已通过 状态,才可以编辑。
// localStorage.setItem('isRestart', btn.label == '重新提交' ? 'true' : '');
// // router.push({
// // name: 'registerStart',
// // query: { guid: row.guid, exchangeGuid: row.exchangeGuid, name: row.daName, type }
// // });
// router.push({
// name: 'registerValueDetail',
// query: { guid: row.registerGuid, costAssessGuid: row.guid, type: 'costAssess', daTenantGuid: row.tenantGuid, exchangeGuid: row.exchangeGuid }
// });
// } else if (type == "delete") {
// delTableOpen("此操作将永久删除该资产登记,是否继续?", "warning");
// } else if (type === 'revoke') { // 撤销,状态为审批中时可以撤销。
// ElMessageBox.confirm('确定撤销该资产登记审批流程吗?', "提示", {
// confirmButtonText: "确定",
// cancelButtonText: "取消",
// type: 'warning',
// }).then(() => {
// tableInfo.value.loading = true;
// let params = {
// guid: row.approveVO.approveGuid,
// flowType: row.approveVO.flowType,
// approveStaffGuid: userData.staffGuid,
// }
// revokeFlowData(params).then((res: any) => {
// tableInfo.value.loading = false;
// if (res?.code == proxy.$passCode) {
// if (res.data) {
// ElMessage.success('该审批流程撤销成功!');
// getTableData();
// } else {
// ElMessage.error('该审批流程撤销失败!');
// }
// } else {
// ElMessage.error(res.msg);
// }
// }).catch(() => {
// tableInfo.value.loading = false;
// });
// }).catch(() => {
// ElMessage({
// type: 'info',
// message: '已取消撤销'
// });
// });
// } else if (type === 'detail') { // 详情, 若是草稿中,详情就是编辑,
// // router.push({
// // name: 'registerInfoDetail',
// // query: { guid: row.guid, name: row.daName, type: 'asset' }
// // });
// router.push({
// name: 'registerValueDetail',
// query: { guid: row.registerGuid, costAssessGuid: row.guid, type: 'costAssess', daTenantGuid: row.tenantGuid }
// });
// } else if (type === 'pass') {
// passDialogInfo.value.visible = true;
// } else if (type == 'reject') {
// rejectDialogInfo.value.visible = true;
// }
// };
const delTableOpen = (msg, type, isBatch: boolean = false) => {
ElMessageBox.confirm(msg, "提示", {
confirmButtonText: "确定",
......@@ -509,6 +460,20 @@ const formItems = ref<any>([
},
visible: true,
required: true
}, {
label: '评估机构',
type: 'select',
placeholder: '请选择',
field: 'evaluationAgencyGuid',
default: '',
block: true,
options: tenantList.value,
props: {
value: 'guid',
label: 'tenantName'
},
visible: false,
required: true
},
{
label: '附件上传',
......@@ -658,24 +623,26 @@ const dialogInfo = ref({
const handleSelectChange = (val, row, info) => {
let qualityEvaluationGuid = '';
assetListData.value.forEach((item) => {
if (item.guid == val) {
qualityEvaluationGuid = item.qualityEvaluationGuid;
if (row.field != 'registerGuid') {
return;
}
});
let qualityEvaluationGuid = assetListData.value.find(item => item.guid == val)?.qualityEvaluationGuid;
if (!qualityEvaluationGuid) {
formItems.value[0].default = val;
formItems.value[2].visible = true;
formItems.value[1].default = info.evaluationAgencyGuid;
formItems.value[2].default = info[formItems.value[2].field];
formItems.value[3].visible = true;
formItems.value[4].visible = true;
formItems.value[5].visible = true;
formItems.value[6].visible = true;
} else {
formItems.value[0].default = val;
formItems.value[2].visible = false;
formItems.value[1].default = info.evaluationAgencyGuid;
formItems.value[2].default = info[formItems.value[2].field];
formItems.value[3].visible = false;
formItems.value[4].visible = false;
formItems.value[5].visible = false;
formItems.value[6].visible = false;
}
}
......@@ -709,6 +676,101 @@ const reSubmitPromise: any = ref(null);
const dialogBtnClick = (btn, info) => {
console.log('btn', btn, info);
if (btn.value == 'submit') {
if (!needApprove.value) {
dialogInfo.value.footer.btns[1].loading = true;
if (dialogInfo.value.type == 'reSubmit') {
updateCostAssess({
guid: currTableData.value.guid,
immediateApprove: true,
tenantGuid: userData.tenantGuid,
daName: currTableData.value.daName,
damGuid: currTableData.value.damGuid,
costAssessmentFile: info.costAssessmentFile?.map(file => {
return {
name: file.name,
url: file.url
}
}) || [],
evaluationFile: info.evaluationFile?.map(file => {
return {
name: file.name,
url: file.url
}
}) || [],
qualityScore: info.qualityScore || null,
evaluationRangeStart: info.evaluationRange ? info.evaluationRange[0] : null,
evaluationRangeEnd: info.evaluationRange ? info.evaluationRange[1] : null,
evaluationNote: info.evaluationNote || null,
evaluationAgencyGuid: info.evaluationAgencyGuid,
}).then((res: any) => {
dialogInfo.value.footer.btns[1].loading = false;
if (res?.code == proxy.$passCode) {
ElMessage.success('该资产价值评估重新提交成功');
dialogInfo.value.visible = false;
page.value.curr = 1;
getTableData();
formItems.value[4].placeholder = `本次评估数据资产总体质量得分为**分\n准确性:\n一致性:\n可访问性:\n规范性:\n完整性:`;
} else {
ElMessage.error(res.msg);
}
})
} else {
let params: any = {};
let daInfo = assetListData.value.find(a => a.guid == info.registerGuid);
if (daInfo.qualityEvaluationGuid) {
//通过质量评估发起资产申请
params = {
immediateApprove: true,
tenantGuid: userData.tenantGuid,
daName: daInfo.damName,
damGuid: daInfo.guid,
costAssessmentFile: info.costAssessmentFile?.map(file => {
return {
name: file.name,
url: file.url
}
}) || [],
evaluationAgencyGuid: info.evaluationAgencyGuid,
}
} else {
//未通过质量评估发起资产申请
params = {
immediateApprove: true,
tenantGuid: userData.tenantGuid,
daName: daInfo.damName,
damGuid: daInfo.guid,
costAssessmentFile: info.costAssessmentFile?.map(file => {
return {
name: file.name,
url: file.url
}
}) || [],
evaluationFile: info.evaluationFile?.map(file => {
return {
name: file.name,
url: file.url
}
}) || [],
qualityScore: info.qualityScore,
evaluationRangeStart: info.evaluationRange ? info.evaluationRange[0] : null,
evaluationRangeEnd: info.evaluationRange ? info.evaluationRange[1] : null,
evaluationNote: info.evaluationNote,
evaluationAgencyGuid: info.evaluationAgencyGuid,
}
}
saveCostAssess(params).then((res: any) => {
dialogInfo.value.footer.btns[1].loading = false;
if (res?.code == proxy.$passCode) {
ElMessage.success('价值评估发起成功');
dialogInfo.value.visible = false;
page.value.curr = 1;
getTableData();
} else {
ElMessage.error(res.msg);
}
})
}
} else {
let submitFunc = () => {
getProcessNodesPromise({
deploymentId: deploymentId.value,
......@@ -833,6 +895,7 @@ const dialogBtnClick = (btn, info) => {
}
})
}
}
} else if (btn.value == 'cancel') {
dialogInfo.value.visible = false;
}
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!