7d41b35c by lxs Committed by lihua

数据定价更新

1 parent 9eb1c020
......@@ -52,8 +52,13 @@ const dictionaryData: any = ref([]);
const diseaseData: any = ref([]);
const qualityScoreData: any = ref({});
const disScore: any = ref([]);
const exportData: any = ref([]);
const dataUsage = ref('');
const buildInData: any = ref([]);
const dataUsage = ref({
field: '',
dictValue: ''
});
const currModelGuid = ref('');
// 基础设置
const baseConfigFormRef = ref();
const baseConfigFormItems: any = ref([
......@@ -93,7 +98,6 @@ const baseConfigFormItems: any = ref([
placeholder: '',
field: 'belongingEntityGuid',
default: '',
options: [],
clearable: true,
disabled: true
},
......@@ -141,10 +145,16 @@ const tableLoading = ref(false);
const dataTransactionPrice: any = ref('');
const setFormItems = (info = null) => {
let datas: any = info || flowDetail.value || {};
const dData = datas.dictionaryJson ? JSON.parse(datas.dictionaryJson) : {};
datas = { ...datas, ...dData };
const dictData = datas.dictionaryJson ? JSON.parse(datas.dictionaryJson) : {};
const builtIndicators = datas.builtIndicators || buildInData.value || [];
let buildData = {};
builtIndicators.map(item => {
buildData[`build_${item.guid}`] = item.isInputParameter != 'Y' ? changeNum(item.targetValue, 2) : item.targetValue != '' && item.targetValue != null ? parseFloat(item.targetValue).toFixed(2) : '';
});
datas = { ...datas, ...dictData, ...buildData };
baseConfigFormItems.value.map(item => {
item.default = datas[item.field] || '';
item.label == '数据用途' && (dataUsage.value.dictValue = datas[item.field] || '');
})
nextTick(() => {
baseConfigFormRef.value.ruleFormRef?.clearValidate();
......@@ -256,7 +266,8 @@ const getDetail = () => {
const data = res.data || {};
flowDetail.value = data;
dataTransactionPrice.value = flowDetail.value.dataTransactionPrice;
dataUsage.value = data.dataUsage || '';
dataUsage.value.dictValue = data.dataUsage || '';
currModelGuid.value = flowDetail.value.modelGuid;
const mItem = typeMap.value.modelGuid.find(m => m.guid == flowDetail.value.modelGuid);
if (!mItem) {
const mtem = { guid: flowDetail.value.modelGuid, modelName: flowDetail.value.modelName };
......@@ -284,8 +295,127 @@ const getDataTypeList = () => {
)
}
}
const setFormItemData = () => {
let dictionaryList: any = [], diseaseList: any = [];
// 设置数据字典选项
const setDictFormItems = (dictList) => {
dictList.map(d => {
const dictName = d.dictionaryName;
const dictField = `dict_${d.guid}`;
baseConfigFormItems.value.push({
label: dictName,
type: 'select',
placeholder: '请输入',
field: dictField,
default: '',
options: [],
clearable: true,
filterable: true,
required: true,
});
baseConfigFormRules.value[dictField] = [{ required: true, trigger: 'change', message: `请选择${dictName}` }];
dictName == '数据用途' && (dataUsage.value.field = dictField);
(() => {
if (typeMap.value[dictField] == undefined) {
getDataType(dictName, dictField)
} else {
let item = baseConfigFormItems.value.find(item => item.field == dictField);
item && (item.options = typeMap.value[dictField]);
}
})()
})
}
// 设置疾病选项
const setDiseaseFormItems = () => {
baseConfigFormItems.value.push({
label: '所属疾病',
type: 'cascader',
placeholder: '请选择',
field: 'diseaseGuid',
default: '',
options: [],
showAllLevels: false,
props: {
checkStrictly: true,
label: "diseaseName",
value: "guid",
children: 'childList',
emitPath: false
},
filterable: true,
clearable: true,
required: true,
});
baseConfigFormRules.value.diseaseGuid = [{ required: true, trigger: 'change', message: "请选择所属疾病" }];
if (typeMap.value['diseaseGuid'] == undefined) {
getDiseaseData();
} else {
let item = baseConfigFormItems.value.find(item => item.field == 'diseaseGuid');
if (item) {
item.options = typeMap.value['diseaseGuid'];
const diseaseData = typeMap.value.diseaseGuid.find(m => m.guid == flowDetail.value.diseaseGuid);
if (!diseaseData) {
item.options.unshift({
guid: flowDetail.value.diseaseGuid,
diseaseName: flowDetail.value.diseaseName
});
}
}
}
}
// 设置内置指标选项
const setBuildInFormItems = (buildList) => {
buildList.map(b => {
const buildName = b.targetName;
const buildField = `build_${b.guid}`;
buildInData.value.push({
guid: b.guid,
targetName: buildName,
targetValue: b.defaultValue || '',
isInputParameter: b.isInputParameter,
})
baseConfigFormItems.value.push({
label: buildName,
type: 'input',
placeholder: '',
field: buildField,
default: b.isInputParameter != 'Y' ? changeNum(b.defaultValue, 2) : b.defaultValue != '' && b.defaultValue != null ? parseFloat(b.defaultValue).toFixed(2) : '',
inputType: 'moneyNumber',
maxlength: 18,
clearable: true,
disabled: b.isInputParameter != 'Y',
required: true
});
baseConfigFormRules.value[buildField] = [
{ required: true, message: `请填写${buildName}`, trigger: 'blur' },
{
validator: (rule, value, callback) => {
if (value === '') {
callback(new Error(`请填写${buildName}`));
return;
}
const num = parseFloat(value);
if (isNaN(num)) {
callback(new Error('请输入有效的数字'));
return;
}
// 已自动保留两位小数,不需再验证小数位数
if (num < 0 || num > b.defaultValue) {
callback(new Error(`输入值必须在0到${b.defaultValue}之间`));
} else {
callback();
}
}, trigger: "blur",
},
]
})
};
// 添加表单选项数据
const setFormItemData = async () => {
let dictionaryList: any = [], diseaseList: any = [], buildInList: any = [];
pricingTargetList.value.map(item => {
switch (item.targetType) {
case '2':
......@@ -294,6 +424,9 @@ const setFormItemData = () => {
case '3':
dictionaryList.push(item);
break;
case '1':
buildInList.push(item);
break;
default:
break;
}
......@@ -315,68 +448,12 @@ const setFormItemData = () => {
}
}
// 添加所属疾病
if (diseaseList.length > 0) {
baseConfigFormItems.value.push({
label: '所属疾病',
type: 'cascader',
placeholder: '请选择',
field: 'diseaseGuid',
default: '',
options: [],
showAllLevels: false,
props: {
checkStrictly: true,
label: "diseaseName",
value: "guid",
children: 'childList',
emitPath: false
},
filterable: true,
clearable: true,
required: true,
});
baseConfigFormRules.value.diseaseGuid = { required: true, trigger: 'change', message: "请选择所属疾病" };
if (typeMap.value['diseaseGuid'] == undefined) {
getDiseaseData();
} else {
let item = baseConfigFormItems.value.find(item => item.field == 'diseaseGuid');
if (item) {
item.options = typeMap.value['diseaseGuid'];
const diseaseData = typeMap.value.diseaseGuid.find(m => m.guid == flowDetail.value.diseaseGuid);
if (!diseaseData) {
item.options.unshift({
guid: flowDetail.value.diseaseGuid,
diseaseName: flowDetail.value.diseaseName
});
}
}
}
}
diseaseList.length > 0 && await setDiseaseFormItems();
// 添加数据字典
dictionaryList.map(d => {
const dictName = d.dictionaryName;
const dictField = `dict_${d.guid}`;
baseConfigFormItems.value.push({
label: dictName,
type: 'select',
placeholder: '请输入',
field: dictField,
default: '',
options: [],
clearable: true,
filterable: true,
required: true,
});
baseConfigFormRules.value[dictField] = { required: true, trigger: 'change', message: `请选择${dictName}` };
(() => {
if (typeMap.value[dictField] == undefined) {
getDataType(dictName, dictField)
} else {
let item = baseConfigFormItems.value.find(item => item.field == dictField);
item && (item.options = typeMap.value[dictField]);
}
})()
})
dictionaryList.length > 0 && await setDictFormItems(dictionaryList);
// 添加内置指标
buildInList.length > 0 && await setBuildInFormItems(buildInList);
setTimeout(() => {
baseConfigFormRef.value.ruleFormRef?.clearValidate();
}, 100)
......@@ -414,11 +491,9 @@ const setTableData = (dataArr) => {
if ((item.demandTableGuid || item.guid)) {
const rGuid = item.demandTableGuid || item.guid;
const rIndex = i;
if (!guid || (guid && rGuid != (demInfo?.demandTableGuid || ''))) {
(() => {
getDemandField(rGuid, rIndex);
})()
}
(() => {
getDemandField(rGuid, rIndex);
})()
}
})
resourceTableFieldAllNum.value = tableData.value.reduce((accumulator, currentValue) => {
......@@ -438,6 +513,7 @@ const getModelConfig = (mGuid) => {
demandTableList.value = data.pricingDemandMenuRSVOS || [];
pricingTargetList.value = data.pricingTargetRSVOS || [];
demandTableFieldAllNum.value = data.fieldCount || 0;
buildInData.value = [];
}
})
}
......@@ -505,7 +581,7 @@ const getResourceDetail = (sGuid, toPromise = true) => {
const dGuid = item.dataTableGuid;
const rIndex = i;
(() => {
!toPromise && dGuid && setTableRowData(dGuid, rIndex)
!toPromise && dGuid && setTableRowData(dGuid, rIndex, false)
})()
})
resourceTableAllNum.value = tableData.value.filter(item => item.dataTableGuid != '' && item.dataTableGuid != null).length;
......@@ -566,11 +642,25 @@ const getResourceInfo = (sGuid) => {
loading.value = false;
}
}
const setTableRowData = (dGuid, rIndex) => {
let rowData = tableData.value[rIndex];
// 需求表字段匹配
const matchTableFields = (rData, tData) => {
rData.dataFields.map(t => {
const match = tData.find(d => d.chName == t.fieldName);
if (match) {
t.chName = match.chName;
t.enName = match.enName;
}
})
rData.dataFieldsNum = rData.dataFields.filter(item => item.chName != '' && item.chName != null).length;
resourceTableFieldAllNum.value = tableData.value.reduce((accumulator, currentValue) => {
return accumulator + Number(currentValue.dataFieldsNum);
}, 0);
}
const setRowData = (rowData, dGuid, detailDataTable) => {
if (guid && dGuid == rowData.dataTableGuid) {
const sourceTableField = flowDetail.value.dataPricingDemandmatchingRQVOS?.find(s => dGuid == s.dataTableGuid);
const pricingDemandField = sourceTableField?.pricingDemandFieldRQVOS || [];
const pricingDemandField = detailDataTable?.pricingDemandFieldRQVOS || [];
rowData.dataFields.map(f => {
f.chName = pricingDemandField.find(s => f.guid == s.guid)?.chName || ''
})
......@@ -584,6 +674,13 @@ const setTableRowData = (dGuid, rIndex) => {
return accumulator + Number(currentValue.dataFieldsNum);
}, 0);
resourceTableAllNum.value = tableData.value.filter(item => item.dataTableGuid != '' && item.dataTableGuid != null).length;
}
const setTableRowData = (dGuid, rIndex, setRow = true) => {
let rowData = tableData.value[rIndex];
const detailDataTable = (flowDetail.value.dataPricingDemandmatchingRQVOS || []).find(f => f.dataTableGuid == dGuid && f.demandTableGuid == rowData.demandTableGuid);
setRow && setRowData(rowData, dGuid, detailDataTable);
const currDataTableGuid = detailDataTable?.dataTableGuid || '';
if (dGuid) {
tableLoading.value = true;
getRegisterCatalogTableDetail(dGuid).then((res: any) => {
......@@ -600,17 +697,11 @@ const setTableRowData = (dGuid, rIndex) => {
})
rowData.dataFields.map(t => {
t.damFieldTable = JSON.parse(JSON.stringify(damFieldOptions));
const match = damFieldOptions.find(d => d.chName == t.fieldName);
if (match) {
t.chName = match.chName;
t.enName = match.enName;
}
})
rowData.dataFieldsNum = rowData.dataFields.filter(item => item.chName != '' && item.chName != null).length;
resourceTableFieldAllNum.value = tableData.value.reduce((accumulator, currentValue) => {
return accumulator + Number(currentValue.dataFieldsNum);
}, 0);
// console.log('rowData', rowData)
// 匹配
if (!guid || (guid && (dGuid != currDataTableGuid || currModelGuid.value != flowDetail.value.modelGuid))) {
matchTableFields(rowData, damTableField);
}
} else {
proxy.$ElMessage.error(res.msg);
}
......@@ -629,6 +720,7 @@ const changeDatasource = () => {
}
})
}
const cascaderChange = (val) => {
disScore.value = [];
if (val) {
......@@ -650,6 +742,7 @@ const selectChange = async (val, row, info) => {
resourceTableFieldAllNum.value = 0;
await setFormItems(info);
val && getModelInfo(val);
currModelGuid.value = val || '';
qualityScoreData.value = {};
baseConfigFormItems.value[1].default = '';
changeDatasource();
......@@ -663,6 +756,9 @@ const selectChange = async (val, row, info) => {
} else {
changeDatasource();
}
} else if (row.field == dataUsage.value.field) {
dataUsage.value.dictValue = val || '';
setFormItems(info);
} else if (row.field == 'dataTableGuid') {
setTableRowData(val, info.$index)
} else if (row.field == 'chName') {
......@@ -721,34 +817,8 @@ const toPath = () => {
name: 'priceCalculate',
})
}
// 获取维度公式计算结果
const getSignatory = (row) => {
let formulaVal = 0;
const pricingTargetData = row.pricingTargetRSVOS || [];
if (!row.computationalFormula || row.computationalFormula == 'custom') {
let formula = row.customize;
// 遍历数组,检查 customize 是否包含对应的 targetName,若包含则替换为 tNum
pricingTargetData.forEach((item) => {
if (formula.includes(item.targetName)) {
formula = formula.replace(new RegExp(item.targetName, 'g'), item.tNum);
}
});
// 使用 eval 计算公式结果(注意:eval 存在安全风险,仅适用于受控环境)
try {
formulaVal = eval(formula);
} catch (error) {
console.error('公式计算错误:', error);
}
} else {
const formula = pricingTargetData.map(item => item.tNum);
if (row.computationalFormula == '3') {
formulaVal = formula.reduce((accumulator, currentValue) => parseFloat(accumulator) * parseFloat(currentValue), 1); // 初始值为1
} else {
formulaVal = formula.reduce((accumulator, currentValue) => parseFloat(accumulator) + parseFloat(currentValue), 0); // 初始值为0
}
}
return (Math.round(formulaVal * 100) / 100).toFixed(2);
};
// 获取疾病得分
const getTargetNum = (params) => {
// loading.value = true;
getPriceResult(params).then((res: any) => {
......@@ -764,151 +834,6 @@ const getTargetNum = (params) => {
});
}
// 生成报告内容
const reporting = (formInfo) => {
let resultInfo: any = [];
const signatoryData = JSON.parse(JSON.stringify(modelData.value.pricingDimensionalityRSVOS || '[]'));
signatoryData.map((sign, s) => {
resultInfo.push({
dimensionalityName: sign.dimensionalityName,
computationalFormula: sign.computationalFormula,
customize: sign.customize,
pricingTargetRSVOS: []
});
const targets = sign.pricingTargetRSVOS || [];
const signTargets = targets.map(t => {
let tNum: any = 0, tCustomize = '';
if (t.targetType == '3') { // 指标类型-数据字典
const tName = dictionaryData.value.find(d => d.guid == t.guid) ? `dict_${t.guid}` : '';
if (tName) {
const pVal = typeMap.value[tName].find(t => t.value == formInfo[tName]);
const dictionary = t.dictionaryJson.find(d => d.name == pVal.label);
if (sign.computationalFormula == '1') {// 加权平均
tNum = parseFloat(t.weight) / 100 * parseFloat(dictionary?.value || t.defaultValue || 0);
tCustomize = `权重${parseFloat(t.weight) / 100} * 因子/默认值${parseFloat(dictionary?.value || t.defaultValue || 0)}`;
} else { // 其他
tNum = parseFloat(dictionary?.value || t.defaultValue || 0);
tCustomize = `默认值${parseFloat(dictionary?.value || t.defaultValue || 0)}`;
}
t.dictionaryName == '数据用途' && (dataUsage.value = pVal.value || '');
}
} else if (t.targetType == '2') {// 指标类型-系统功能
if (t.functionName == '1') { // 功能名称-质量评价模型
const score = parseFloat(qualityScoreData.value.qualityScore || 0);
tNum = parseFloat(t.weight || 1) / 100 * score / 100;
tCustomize = `权重${parseFloat(t.weight || 1) / 100} * 模型评分${score}/100`;
} else if (t.functionName == '2') { // 功能名称-疾病管理
if (sign.computationalFormula == '1') {// 加权平均
const score = parseFloat(disScore.value.find(d => d.guid == t.guid)?.factor || 0);
tNum = parseFloat(t.weight) / 100 * score;
tCustomize = `权重${parseFloat(t.weight) / 100} * 疾病得分${score}`;
} else { //其他
tNum = parseFloat(disScore.value.find(d => d.guid == t.guid)?.factor || 0);
tCustomize = `疾病得分${tNum}`;
}
} else if (t.functionName == '3') {// 功能名称-需求表管理
const tData = tableData.value.find(f => f.demandTableGuid == t.demandTableGuid || f.guid == t.demandTableGuid);
if (tData) {
if (sign.computationalFormula == '1') {// 加权平均
tNum = parseFloat(t.weight) / 100 * (parseFloat(tData.dataFieldsNum) / tData.dataFields.length || parseFloat(t.defaultValue || 0));
tCustomize = `权重${parseFloat(t.weight) / 100} * 匹配率/默认值${parseFloat(tData.dataFieldsNum) / tData.dataFields.length || parseFloat(t.defaultValue || 0)}`;
} else { //其他
tNum = parseFloat(tData.dataFieldsNum) / tData.dataFields.length || parseFloat(t.defaultValue || 0);
tCustomize = `匹配率/默认值${parseFloat(tData.dataFieldsNum) / tData.dataFields.length || parseFloat(t.defaultValue || 0)}`;
}
}
}
} else { // 指标类型-系统内置
if (sign.computationalFormula == '1') {// 加权平均
tNum = parseFloat(t.weight) / 100 * parseFloat(t.defaultValue || 0);
tCustomize = `权重${parseFloat(t.weight) / 100} * 默认值${parseFloat(t.defaultValue || 0)}`;
} else { //其他
tNum = parseFloat(t.defaultValue || 0);
tCustomize = `默认值${parseFloat(t.defaultValue || 0)}`;
}
}
t.tNum = (Math.round(parseFloat(tNum) * 100) / 100).toFixed(2);
resultInfo[s].pricingTargetRSVOS.push({
targetName: t.targetName,
targetType: t.targetType,
functionName: t.functionName,
customize: tCustomize,
tNum: t.tNum,
})
return t;
})
sign.pricingTargetRSVOS = signTargets;
sign.sNum = getSignatory(sign);
resultInfo[s].sNum = sign.sNum;
})
// exportData.value = resultInfo;
return { signatoryData, resultInfo };
}
// 计算价格
const calculatePrice = (pData) => {
let modelFormula = modelData.value.modelFormula;
// 1. 移除所有干扰的引号(确保是数学表达式)
modelFormula = modelFormula.replace(/["']/g, "").trim();
// 2. 定义允许的数学运算符和函数
const allowedOperators = /[+\-*/%^() .\d]/;
const mathFunctions = ['sin', 'cos', 'tan', 'log', 'sqrt', 'abs', 'pow'];
// 3. 提取变量名
const variableRegex = /[\u4e00-\u9fa5a-zA-Z_][\u4e00-\u9fa5a-zA-Z0-9_]*/g;
const variableNames = [...new Set(modelFormula.match(variableRegex) || [])];
// 4. 构建变量映射
const variables = {};
variableNames.forEach(name => {
const dim = pData.find(d => d.dimensionalityName === name);
variables[name] = dim ? parseFloat(dim.sNum) || 0 : 0;
});
// 5. 替换变量为数值(考虑边界情况)
let expression = modelFormula;
Object.keys(variables).forEach(name => {
expression = expression.replace(new RegExp(name, 'g'), variables[name]);
});
// 6. 表达式规范化(不丢失括号)
expression = expression
.replace(/\s+/g, '') // 去空格
.replace(/\^/g, '**') // 幂运算转换
.replace(/"|'/g, '') // 去引号(不破坏括号)
.replace(/(\d)\(/g, '$1*(') // 处理隐式乘法
.replace(/\)\(/g, ')*('); // 括号间乘法
// 7. 验证括号配对
const balance = expression.split('').reduce((acc, char) => {
if (char === '(') acc++;
if (char === ')') acc--;
return acc;
}, 0);
if (balance !== 0) {
console.error('括号不匹配');
return NaN;
}
// 8. 安全计算
try {
const result = new Function('return ' + expression)();
const roundedResult = Math.round(parseFloat(result) * 100) / 100;
dataTransactionPrice.value = roundedResult.toFixed(2);
return roundedResult;
} catch (error) {
console.error('计算错误:', {
error,
original: modelFormula,
processed: expression
});
return NaN;
}
};
// 获取定价计算配置参数
const getCalculateParams = (baseConfigFormObj, baseConfigFormInfo) => {
const modelName = typeMap.value.modelGuid.find(d => d.guid == baseConfigFormInfo.modelGuid)?.modelName || '';
......@@ -925,19 +850,32 @@ const getCalculateParams = (baseConfigFormObj, baseConfigFormInfo) => {
belongingTheme: baseConfigFormInfo.belongingTheme,
diseaseGuid,
diseaseName: '',
dataUsage: dataUsage.value
dataUsage: dataUsage.value.dictValue
};
if (diseaseGuid) {
const parentsData = baseConfigFormObj.getCascaderCheckedData();
params.diseaseName = parentsData[0]?.label || '';
}
let dictionaryJson = {};
let dictionaryJson = {}, builtInTarget: any = [];
for (var b in baseConfigFormInfo) {
if (b.indexOf('dict_') > -1) {
dictionaryJson[b] = baseConfigFormInfo[b];
}
}
buildInData.value.map(item => {
let targetValue = baseConfigFormInfo[`build_${item.guid}`];
if (typeof targetValue === 'string') {
if (/^[+-]?\d{1,3}(,\d{3})*(\.\d{2})?$/.test(targetValue)) {
targetValue = parseFloat(targetValue.replace(/,/g, ''))
}
}
builtInTarget.push({
...item,
targetValue
})
})
params.dictionaryJson = Object.keys(dictionaryJson).length ? JSON.stringify(dictionaryJson) : '';
params.builtIndicators = builtInTarget;
let demandMatchingData: any = [];
tableData.value.map(item => {
demandMatchingData.push({
......@@ -967,15 +905,16 @@ const getCalculateParams = (baseConfigFormObj, baseConfigFormInfo) => {
const getCalculatPrice = async (params) => {
try {
const res: any = await calculatPrice(params);
loading.value = false;
if (res.code === proxy.$passCode) {
const data = res.data || {};
return data; // 返回计算结果以便后续使用
} else {
proxy.$ElMessage.error(res.msg);
loading.value = false;
throw new Error(res.msg); // 抛出错误以便 catch 捕获
}
} catch (error) {
console.error('计算价格失败:', error);
loading.value = false;
throw error; // 重新抛出错误
}
......@@ -994,10 +933,8 @@ const checkForm = (type) => {
const priceData = await getCalculatPrice(paramsInfo);
// 显示结果
dataTransactionPrice.value = priceData.transactionPrice.toFixed(2);
if (type == 'calculate') {
loading.value = false;
} else if (type == 'export') {
if (type == 'export') {
loading.value = true;
const exportOut = {
one: priceData.one,
two: priceData.two,
......@@ -1021,11 +958,12 @@ const checkForm = (type) => {
message: '下载报告请求失败',
});
})
} else {
} else if (type == 'submit') {
let params = {
...paramsInfo,
dataTransactionPrice: dataTransactionPrice.value,
}
loading.value = true;
savePrice(params).then((res: any) => {
loading.value = false;
if (res.code == proxy.$passCode) {
......@@ -1058,6 +996,11 @@ const btnClick = async (btn, row: any = null) => {
expendTableRef.value.toggleRowExpansion(row);
} else if (type == 'calculate' || type == 'submit') {
if (type == 'submit') {
const errorMsgText = document.querySelectorAll('.el-form-item__error');
if (errorMsgText.length) {
ElMessage.info('请修改错误提示项内容后,再操作');
return
}
ElMessageBox.confirm(dataTransactionPrice.value === '' ? '是否直接计算价格并提交' : '请确认当前数据交易价格是否为最新计算结果', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
......@@ -1121,7 +1064,6 @@ onBeforeMount(() => {
getDetail();
} else {
getDataTypeList();
getModel()
}
})
onMounted(() => {
......@@ -1214,16 +1156,11 @@ onMounted(() => {
clearable />
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="100">
<template #default="scope">
<el-button type="primary" link @click="btnClick({ value: 'expend' }, scope.row)">字段映射</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
</ContentWrap>
<ContentWrap id="contract-content-wrap" title="输出结" expandSwicth style="margin-top: 15px" :isExpand="expand3"
<ContentWrap id="contract-content-wrap" title="输出结" expandSwicth style="margin-top: 15px" :isExpand="expand3"
@expand="(v) => expand3 = v">
<el-form class="result-form">
<el-form-item class="flex-column" label="数据交易价格(元)">
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!