3ad84ff1 by lihua

fix: 修复新增定价切换模型问题

1 parent 2623ab08
......@@ -199,7 +199,7 @@ const getDiseaseData = () => {
item.options = typeMap.value['diseaseGuid'];
if (guid) {
const diseaseData = typeMap.value.diseaseGuid.find(m => m.guid == flowDetail.value.diseaseGuid);
if (!diseaseData) {
if (!diseaseData && flowDetail.value.diseaseGuid) {
item.options.unshift({
guid: flowDetail.value.diseaseGuid,
diseaseName: flowDetail.value.diseaseName
......@@ -501,7 +501,7 @@ const setTableData = (dataArr) => {
}, 0);
setTimeout(() => {
tableData.value.map(t => {
expendTableRef.value.toggleRowExpansion(t);
expendTableRef.value?.toggleRowExpansion(t);
})
}, 200)
}
......
<route lang="yaml">
name: calculateConfig
name: calculateConfigNew
</route>
<script lang="ts" setup name="calculateConfig">
<script lang="ts" setup name="calculateConfigNew">
import { ref, onMounted } from "vue";
import { useRouter, useRoute } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
......@@ -24,6 +24,7 @@ import {
} from '@/api/modules/dataPricing';
import { changeNum } from "@/utils/common";
import { useValidator } from '@/hooks/useValidator';
import { cloneDeep } from "lodash-es";
const { required } = useValidator();
const { proxy } = getCurrentInstance() as any;
......@@ -119,7 +120,7 @@ const productConfigFormRules = ref({
// 基础设置
const baseConfigFormRef = ref();
const baseConfigFormItems: any = ref([
const baseConfigInitFormItems: any = ref([
{
label: '模型名称',
type: 'select',
......@@ -189,6 +190,8 @@ const baseConfigFormItems: any = ref([
// disabled: true
// },
])
const baseConfigFormItems = ref(cloneDeep(baseConfigInitFormItems.value));
const baseConfigFormRules: any = ref({
modelGuid: [
{ required: true, trigger: 'change', message: "请选择模型名称" }
......@@ -420,7 +423,7 @@ const setDiseaseFormItems = () => {
if (item) {
item.options = typeMap.value['diseaseGuid'];
const diseaseData = typeMap.value.diseaseGuid.find(m => m.guid == flowDetail.value.diseaseGuid);
if (!diseaseData) {
if (!diseaseData && flowDetail.value.diseaseGuid) {
item.options.unshift({
guid: flowDetail.value.diseaseGuid,
diseaseName: flowDetail.value.diseaseName
......@@ -558,7 +561,7 @@ const setTableData = (dataArr) => {
const rGuid = item.demandTableGuid || item.guid;
const rIndex = i;
(() => {
getDemandField(rGuid, rIndex);
// getDemandField(rGuid, rIndex);
})()
}
})
......@@ -567,7 +570,7 @@ const setTableData = (dataArr) => {
}, 0);
setTimeout(() => {
tableData.value.map(t => {
expendTableRef.value.toggleRowExpansion(t);
expendTableRef.value?.toggleRowExpansion(t);
})
}, 200)
}
......@@ -612,7 +615,7 @@ const getQuilityModelScore = (sGuid) => {
})
}
// 獲取模型相关信息
const getModelInfo = (mGuid) => {
const getModelInfo = (mGuid, valueInfo = null) => {
const promises: any = [
getModelConfig(mGuid),
getModelDetail(mGuid)
......@@ -626,7 +629,7 @@ const getModelInfo = (mGuid) => {
dataTransactionPrice.value = flowDetail.value.dataTransactionPrice;
setTimeout(() => {
// getResourceDetail(flowDetail.value.dataResourceGuid, false);
setFormItems();
setFormItems(valueInfo);
setdemandTableData(mGuid);
}, 200);
} else {
......@@ -747,11 +750,18 @@ const selectChange = async (val, row, info) => {
demandTableFieldAllNum.value = 0;
resourceTableAllNum.value = 0;
resourceTableFieldAllNum.value = 0;
await setFormItems(info);
val && getModelInfo(val);
baseConfigFormItems.value[0].default = val;
baseConfigFormItems.value = [baseConfigFormItems.value[0]];
if (val) {
getModelInfo(val, info);
} else {
setFormItems(info);
}
// await setFormItems(info);
// val && getModelInfo(val, info);
currModelGuid.value = val || '';
qualityScoreData.value = {};
// baseConfigFormItems.value[1].default = '';
// baseConfigFormItems.value[1].default = '';
// changeDatasource();
}
// else if (row.field == 'dataResourceGuid') {
......@@ -789,38 +799,38 @@ const selectChange = async (val, row, info) => {
}
}
// 获取需求表字段
const getDemandField = (rGuid, rIndex) => {
getDemandList({
pageSize: -1,
pageIndex: 1,
relationMenuGuid: rGuid,
bizState: 'Y'
}).then((res: any) => {
tableLoading.value = false;
if (res.code == proxy.$passCode) {
const data = res.data || {};
const fData = data.records || [];
const tFields = tableData.value[rIndex].dataFields;
const tData = fData.map(item => {
const iData = tFields.find(t => t.demandFieldGuid == item.guid) || {};
return {
...item,
fieldName: item.fieldName,
isRequired: item.isRequired,
chName: item.chName || '',
enName: item.enName || '',
...iData
}
});
tableData.value[rIndex].dataFields = tData;
// const getDemandField = (rGuid, rIndex) => {
// getDemandList({
// pageSize: -1,
// pageIndex: 1,
// relationMenuGuid: rGuid,
// bizState: 'Y'
// }).then((res: any) => {
// tableLoading.value = false;
// if (res.code == proxy.$passCode) {
// const data = res.data || {};
// const fData = data.records || [];
// const tFields = tableData.value[rIndex].dataFields;
// const tData = fData.map(item => {
// const iData = tFields.find(t => t.demandFieldGuid == item.guid) || {};
// return {
// ...item,
// fieldName: item.fieldName,
// isRequired: item.isRequired,
// chName: item.chName || '',
// enName: item.enName || '',
// ...iData
// }
// });
// tableData.value[rIndex].dataFields = tData;
} else {
proxy.$ElMessage.error(res.msg);
}
}).catch(() => {
tableLoading.value = false;
})
}
// } else {
// proxy.$ElMessage.error(res.msg);
// }
// }).catch(() => {
// tableLoading.value = false;
// })
// }
const toPath = () => {
userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath));
assetStore.set(true);
......@@ -849,7 +859,7 @@ const getTargetNum = (params) => {
const getCalculateParams = (baseConfigFormObj, baseConfigFormInfo) => {
let companyInfo = productConfigFormRef.value.formInline;
const modelName = typeMap.value.modelGuid.find(d => d.guid == baseConfigFormInfo.modelGuid)?.modelName || '';
// const dataResourceName = typeMap.value.dataResourceGuid.find(d => d.damGuid == baseConfigFormInfo.dataResourceGuid)?.damName || '';
// const dataResourceName = typeMap.value.dataResourceGuid.find(d => d.damGuid == baseConfigFormInfo.dataResourceGuid)?.damName || '';
const diseaseGuid = baseConfigFormInfo.diseaseGuid || '';
let params: any = {
tenantGuid: userData.tenantGuid,
......@@ -890,27 +900,27 @@ const getCalculateParams = (baseConfigFormObj, baseConfigFormInfo) => {
})
params.dictionaryJson = Object.keys(dictionaryJson).length ? JSON.stringify(dictionaryJson) : '';
params.builtIndicators = builtInTarget;
let demandMatchingData: any = [];
tableData.value.map(item => {
demandMatchingData.push({
demandTableName: item.demandTableName,
demandTableGuid: item.demandTableGuid || item.guid, // 需求表guid
dataTableGuid: item.dataTableGuid || '', // 数据资源表guid
weightDemandTable: item.weightDemandTable,
dataFieldsNum: item.dataFieldsNum,
pricingDemandFieldRQVOS: item.dataFields.map(d => {
return {
demandFieldGuid: d.demandFieldGuid || d.guid, // 资源表字段guid
fieldName: d.fieldName,
enName: d.enName,
chName: d.chName,
isRequired: d.isRequired,
orderNum: d.orderNum
}
})
})
});
params.dataPricingDemandmatchingRQVOS = demandMatchingData;
// let demandMatchingData: any = [];
// tableData.value.map(item => {
// demandMatchingData.push({
// demandTableName: item.demandTableName,
// demandTableGuid: item.demandTableGuid || item.guid, // 需求表guid
// dataTableGuid: item.dataTableGuid || '', // 数据资源表guid
// weightDemandTable: item.weightDemandTable,
// dataFieldsNum: item.dataFieldsNum,
// pricingDemandFieldRQVOS: item.dataFields.map(d => {
// return {
// demandFieldGuid: d.demandFieldGuid || d.guid, // 资源表字段guid
// fieldName: d.fieldName,
// enName: d.enName,
// chName: d.chName,
// isRequired: d.isRequired,
// orderNum: d.orderNum
// }
// })
// })
// });
params.dataPricingDemandmatchingRQVOS = [];
guid && (params.guid = guid);
return params;
}
......@@ -939,79 +949,86 @@ const checkForm = (type) => {
const baseConfigFormObj = baseConfigFormRef.value;
const baseConfigFormEl = baseConfigFormObj.ruleFormRef;
const baseConfigFormInfo = baseConfigFormObj.formInline;
productConfigFormRef.value.ruleFormRef.validate((valid1, errorItem) => {
if (valid1) {
baseConfigFormEl.validate(async (valid, errorItem) => {
if (valid) {
const paramsInfo = getCalculateParams(baseConfigFormObj, baseConfigFormInfo);
const validateModelConfig = () => {
baseConfigFormEl.validate(async (valid, errorItem) => {
if (valid) {
const paramsInfo = getCalculateParams(baseConfigFormObj, baseConfigFormInfo);
loading.value = true;
// 先获取计算结果
const priceData = await getCalculatPrice(paramsInfo);
// 显示结果
dataTransactionPrice.value = priceData.transactionPrice.toFixed(2);
if (type == 'export') {
loading.value = true;
// 先获取计算结果
const priceData = await getCalculatPrice(paramsInfo);
// 显示结果
dataTransactionPrice.value = priceData.transactionPrice.toFixed(2);
if (type == 'export') {
loading.value = true;
const exportOut = {
one: priceData.one,
two: priceData.two,
three: priceData.three,
}
exportModelScore(exportOut).then((res: any) => {
loading.value = false;
if (res && !res.msg) {
ElMessage({
type: "success",
message: '下载报告成功',
});
download(res, `数据定价报告.doc`, 'word');
} else {
res?.msg && ElMessage.error(res?.msg);
}
}).catch(() => {
loading.value = false;
const exportOut = {
one: priceData.one,
two: priceData.two,
three: priceData.three,
}
exportModelScore(exportOut).then((res: any) => {
loading.value = false;
if (res && !res.msg) {
ElMessage({
type: "error",
message: '下载报告请求失败',
type: "success",
message: '下载报告成功',
});
})
} else if (type == 'submit') {
let params = {
...paramsInfo,
dataTransactionPrice: dataTransactionPrice.value,
download(res, `数据定价报告.doc`, 'word');
} else {
res?.msg && ElMessage.error(res?.msg);
}
loading.value = true;
savePrice(params).then((res: any) => {
loading.value = false;
if (res.code == proxy.$passCode) {
ElMessage({
type: "success",
message: guid ? '编辑数据定价成功' : '新增数据定价成功',
});
toPath()
} else {
proxy.$ElMessage.error(res.msg);
}
}).catch(() => {
loading.value = false;
}).catch(() => {
loading.value = false;
ElMessage({
type: "error",
message: '下载报告请求失败',
});
})
} else if (type == 'submit') {
let params = {
...paramsInfo,
dataTransactionPrice: dataTransactionPrice.value,
}
} else {
expand1.value = true;
var obj = Object.keys(errorItem);
baseConfigFormEl.scrollToField(obj[0]);
}
})
} else {
expandProduct.value = true;
var obj = Object.keys(errorItem);
productConfigFormRef.value.scrollToField(obj[0]);
baseConfigFormEl.validate((valid, errorItem1) => {
if (!valid) {
expand1.value = true;
loading.value = true;
savePrice(params).then((res: any) => {
loading.value = false;
if (res.code == proxy.$passCode) {
ElMessage({
type: "success",
message: guid ? '编辑数据定价成功' : '新增数据定价成功',
});
toPath()
} else {
proxy.$ElMessage.error(res.msg);
}
}).catch(() => {
loading.value = false;
});
}
})
}
})
} else {
expand1.value = true;
var obj = Object.keys(errorItem);
baseConfigFormEl.scrollToField(obj[0]);
}
})
}
if (type == 'calculate') {
validateModelConfig();
} else {
productConfigFormRef.value.ruleFormRef.validate((valid1, errorItem) => {
if (valid1) {
validateModelConfig();
} else {
expandProduct.value = true;
var obj = Object.keys(errorItem);
productConfigFormRef.value.scrollToField(obj[0]);
baseConfigFormEl.validate((valid, errorItem1) => {
if (!valid) {
expand1.value = true;
}
})
}
})
}
}
const btnClick = async (btn, row: any = null) => {
const type = btn.value;
......@@ -1107,8 +1124,8 @@ onMounted(() => {
</ContentWrap>
<ContentWrap id="contract-content-wrap" title="输入参数" expandSwicth style="margin-top: 15px" :isExpand="expand1"
@expand="(v) => expand1 = v">
<Form ref="baseConfigFormRef" formId="contract-content-form" :itemList="baseConfigForm.items"
:rules="baseConfigForm.rules" col="col3" @selectChange="selectChange" @cascaderChange="cascaderChange" />
<Form ref="baseConfigFormRef" formId="contract-content-form" :itemList="baseConfigFormItems"
:rules="baseConfigFormRules" col="col3" @selectChange="selectChange" @cascaderChange="cascaderChange" />
</ContentWrap>
<!-- <ContentWrap id="contract-signatory-wrap" title="需求匹配" expandSwicth style="margin-top: 15px" :isExpand="expand2"
@expand="(v) => expand2 = v">
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!