This commit is contained in:
weibl
2025-11-28 15:38:07 +08:00
10 changed files with 143 additions and 76 deletions

View File

@@ -149,7 +149,7 @@ export const addLibraryCategoryObjectApi = (params: any) => {
* @returns
*/
export const deleteSimulationParameterApi = (params: any) => {
return get(`${PREFIX}simulationParameterLibrary/deleteSimulationParameter`, params);
return post(`${PREFIX}simulationParameterLibrary/deleteSimulationParameter`, params);
};
/**

View File

@@ -2,6 +2,7 @@
<template v-if="item.inputMode !== 'slot'">
<el-input
v-if="item.inputMode === 'input'"
v-bind="attrs"
v-model="formData[item.key]"
:placeholder="(item.disabled && showDisabled) ? '' : '请输入'"
clearable
@@ -10,6 +11,7 @@
/>
<el-input
v-if="item.inputMode === 'textarea'"
v-bind="attrs"
v-model="formData[item.key]"
type="textarea"
autosize
@@ -19,6 +21,7 @@
/>
<el-input-number
v-if="item.inputMode === 'inputNumber'"
v-bind="attrs"
v-model="formData[item.key]"
:placeholder="(item.disabled && showDisabled) ? '' : '请输入'"
:min="0"
@@ -29,6 +32,7 @@
/>
<el-select
v-if="item.inputMode === 'select'"
v-bind="attrs"
v-model="formData[item.key]"
:placeholder="(item.disabled && showDisabled) ? '' : '请选择'"
clearable
@@ -38,6 +42,7 @@
></el-select>
<el-radio-group
v-if="item.inputMode === 'radio'"
v-bind="attrs"
v-model="formData[item.key]"
:disabled="item.disabled && showDisabled"
@change="(val: any) => changeFun(item.key, val)"
@@ -46,6 +51,7 @@
</el-radio-group>
<el-checkbox-group
v-if="item.inputMode === 'checkbox'"
v-bind="attrs"
v-model="formData[item.key]"
:disabled="item.disabled && showDisabled"
@change="(val: any) => changeFun(item.key, val)"
@@ -61,6 +67,7 @@
/>
<el-date-picker
v-if="item.inputMode === 'date'"
v-bind="attrs"
v-model="formData[item.key]"
type="datetime"
format="YYYY-MM-DD HH:mm:ss"
@@ -72,6 +79,7 @@
/>
<el-date-picker
v-if="item.inputMode === 'daterange'"
v-bind="attrs"
v-model="formData[item.key]"
type="datetimerange"
start-placeholder="开始时间"
@@ -84,6 +92,7 @@
/>
<el-upload
v-if="item.inputMode === 'choseFile'"
v-bind="attrs"
v-model:file-list="formData[item.key]"
class="upload-btn"
:limit="item.limit"
@@ -149,12 +158,14 @@ interface Props {
item: any;
form: any;
showDisabled?: boolean;
attrs?: any;
}
const props = withDefaults(defineProps<Props>(), {
item: {},
form: {},
showDisabled: false,
attrs: {},
});
watch(() => props.form, (val: any) => {

View File

@@ -10,6 +10,7 @@
:item="item"
:form="formData"
:showDisabled="showDisabled"
:attrs="formAttrs[item.key]"
@change="(val) => changeFun(val)"
@remove="(val) => removeFun(val)"
>
@@ -32,7 +33,6 @@ import FormItem from './formItem.vue';
import { getFormConfigureApi } from '@/api/system/systemData';
import { isPhone, isEmail, hasNoSpecialChar, length20, length100 } from '@/utils/validate';
import { formOptionsFormat } from './lib';
import { cloneDeep } from 'lodash-es';
const emit = defineEmits(['change', 'remove', 'load']);
@@ -42,6 +42,7 @@ interface Props {
showDisabled?: boolean;
ruleData?: any;
data?: any;
formAttrs?: any;
}
const props = withDefaults(defineProps<Props>(), {
@@ -50,6 +51,7 @@ const props = withDefaults(defineProps<Props>(), {
showDisabled: false,
ruleData: {},
data: {},
formAttrs: {},
});
watch(() => props.data, (data: any) => {
@@ -61,12 +63,11 @@ onMounted(() => {
});
const formatDataFun = (data: any) => {
const formatData = cloneDeep(data);
data.extras?.forEach((item: any) => {
const { propertyName, propertyValue } = item;
formatData[propertyName] = propertyValue;
data[propertyName] = propertyValue;
});
return formatData;
return data;
};
const formData = ref<any>(formatDataFun(props.data));

View File

@@ -201,7 +201,7 @@ const editData = ref<any>({});
const chosenData = ref<any>([]);
const BaseTableRef = ref();
const fileData = ref<any>({});
const nodeType = ref('');
const nodeType = ref<any>('');
onMounted(() => {
getAllTemplateFun();
@@ -331,7 +331,7 @@ const searchFileFun = (data: any) => {
};
const addNodeFun = (data: any) => {
if (nodeType.value === NODE_TYPE.CATEGORY) {
if ([NODE_TYPE.CATEGORY, NODE_TYPE.WORKSPACE].includes(nodeType.value)) {
addClassFun(data);
}
if (nodeType.value === NODE_TYPE.TASK) {

View File

@@ -0,0 +1,54 @@
<template>
<div class="content">
<div class="table">
<BaseTable ref="baseTableRef" tableName="PARAMETER_LIST" hidePagination />
</div>
<div class="info">
<el-descriptions class="info-content-descriptions" :column="1" label-width="100px" border>
<el-descriptions-item v-if="baseInfo?.parameterLibraryCategoryObjectName" label="对象名称">{{ baseInfo?.parameterLibraryCategoryObjectName }}</el-descriptions-item>
<el-descriptions-item label="所属库">{{ baseInfo?.parameterLibraryName }}</el-descriptions-item>
<el-descriptions-item v-if="baseInfo?.parameterLibraryCategoryName" label="所属分类">{{ baseInfo?.parameterLibraryCategoryName }}</el-descriptions-item>
<el-descriptions-item v-if="baseInfo?.createTime" label="创建时间">{{ baseInfo?.createTime }}</el-descriptions-item>
</el-descriptions>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue';
import BaseTable from '@/components/common/table/baseTable.vue';
interface Props {
data: any;
}
const props = withDefaults(defineProps<Props>(), {
data: {},
});
const baseTableRef = ref<any>();
const baseInfo = ref<any>({});
onMounted(() => {
const approveContents = JSON.parse(props.data.approveContents);
const { paramData = {} } = approveContents;
const { parameterJsonValue = [] } = paramData;
baseTableRef.value.setDataFun(parameterJsonValue);
baseInfo.value = paramData;
});
</script>
<style lang="scss" scoped>
.content {
display: flex;
.table {
flex: 1;
padding-right: 20px;
margin-right: 20px;
border-right: solid 1px var(--el-border-color);
}
.info {
width: 300px;
}
}
</style>

View File

@@ -5,6 +5,7 @@
<Knowledge v-else-if="data.approveType === 2" :data="data" />
<FlowView type="approve" v-else-if="data.approveType === 3" :data="data" />
<DeliverableFile v-else-if="data.approveType === 4" :data="data" />
<Parameter v-else-if="data.approveType === 5" :data="data" />
<div v-else>其他审核预览{{ data.cidFlowId }}</div>
</div>
</div>
@@ -18,6 +19,7 @@ import TaskPool from './components/taskPool.vue';
import Knowledge from './components/knowledge.vue';
import FlowView from '@/components/common/flow/flowView.vue';
import DeliverableFile from './components/deliverableFile.vue';
import Parameter from './components/parameter.vue';
const w: any = window;
const $wujie: any = w.$wujie;

View File

@@ -27,7 +27,7 @@ import { ref } from 'vue';
import Dialog from '@/components/common/dialog/index.vue';
import { ElMessage } from 'element-plus';
const emits = defineEmits(['close', 'createFn']);
const emits = defineEmits(['close', 'createFun']);
const visible = ref(true);
@@ -44,7 +44,7 @@ const onConfirmFun = () => {
ElMessage.warning('请输入参数库名称!');
return;
} else {
emits('createFn', formData.value);
emits('createFun', formData.value);
}
};
</script>

View File

@@ -3,38 +3,33 @@
v-model="visible"
show-footer
diaTitle="新增参数对象"
:width="400"
:width="450"
@close="closeFun"
>
<template #default>
<el-form :model="formData" labelWidth="auto">
<el-form-item label="参数库名称" >
<el-input v-model="formData.parameterLibraryName" disabled></el-input>
</el-form-item>
<el-form-item label="分类名称">
<el-input v-model="formData.parameterLibraryCategoryName" disabled></el-input>
</el-form-item>
<el-form-item label="参数对象名称">
<el-input v-model="formData.parameterLibraryCategoryObjectName" ></el-input>
</el-form-item>
<el-form-item label="参数文件">
<el-tooltip
placement="top"
content="例:[{'parameterName': 'parameterName','parameterValue': 'parameterValue', 'unit': 'unit', 'description': 'description'}]"
>
<div class="tip">参数对象上传的JSON文件格式必须遵守格式要求否则无法解析</div>
</el-tooltip>
<el-tag v-if="formData.fileName" closable @close="deleteParamFile"> {{ formData.fileName }}</el-tag>
<el-upload
v-else
:show-file-list="false"
:before-upload="beforeUploadFun"
accept=".json"
>
<el-button type="primary">上传参数文件</el-button>
</el-upload>
</el-form-item>
</el-form>
<TableForm
ref="tableFormRef"
tableName="PARAMETER_LIBRARY_FORM"
:data="formData"
showDisabled
@change="changeFun"
:formAttrs="{
files: {
accept: '.json'
}
}"
/>
<div class="tip">
<el-tooltip
placement="top"
content="例:[{'parameterName': 'parameterName','parameterValue': 'parameterValue', 'unit': 'unit', 'description': 'description'}]"
>
<el-icon class="icon" :size="16">
<Warning />
</el-icon>
</el-tooltip>
<span>参数对象上传的JSON文件格式必须遵守格式要求否则无法解析</span>
</div>
</template>
<template #footer>
<div class="dialog-footer">
@@ -46,53 +41,45 @@
</template>
<script setup lang="ts">
import { ref, onMounted, reactive } from 'vue';
import { ref, onMounted } from 'vue';
import Dialog from '@/components/common/dialog/index.vue';
import { ElMessage } from 'element-plus';
import TableForm from '@/components/common/table/tableForm.vue';
import { Warning } from '@element-plus/icons-vue';
const emits = defineEmits(['close', 'createFn']);
const emits = defineEmits(['close', 'createFun']);
const props = defineProps(['libTypeInfo']);
const visible = ref(true);
const formData = reactive<any>({
parameterLibraryName: '',
parameterLibraryCategoryName: '',
parameterLibraryCategoryObjectName: '',
file: {},
fileName: '',
});
const tableFormRef = ref<any>();
const formData = ref<any>({});
const closeFun = () => {
emits('close');
};
const onConfirmFun = () => {
if (!formData.parameterLibraryCategoryObjectName) {
ElMessage.warning('请输入参数类型名称!');
return;
} else if (!formData.fileName) {
ElMessage.warning('请请上传对应参数文件');
return;
} else {
emits('createFn', formData);
const onConfirmFun = async() => {
const valid = await tableFormRef.value?.validateFun();
if (valid) {
emits('createFun', formData.value);
}
};
const beforeUploadFun = (file: any) => {
formData.file = file;
formData.fileName = file.name;
};
const deleteParamFile = () => {
formData.fileName = '';
formData.file = {};
const changeFun = (data: any) => {
const { key, val } = data;
if (key === 'files') {
formData.value.file = val.raw;
formData.value.fileName = val.name;
}
if (key === 'templateId') {
formData.value.templateName = val.label;
}
};
onMounted(() => {
if (props.libTypeInfo) {
formData.parameterLibraryName = props.libTypeInfo.libName;
formData.parameterLibraryCategoryName = props.libTypeInfo.name;
formData.parameterLibraryId = props.libTypeInfo.libId;
formData.parameterLibraryCategoryId = props.libTypeInfo.id;
formData.value.parameterLibraryName = props.libTypeInfo.libName;
formData.value.parameterLibraryCategoryName = props.libTypeInfo.name;
formData.value.parameterLibraryId = props.libTypeInfo.libId;
formData.value.parameterLibraryCategoryId = props.libTypeInfo.id;
}
});
</script>
@@ -109,9 +96,19 @@ onMounted(() => {
justify-content: flex-end;
}
.tip {
display: flex;
align-items: center;
justify-content: flex-end;
padding-bottom: 10px;
font-size: 12px;
line-height: 14px;
color: var(--el-text-color-secondary);
.icon {
color: var(--el-color-danger);
cursor: pointer;
}
span {
padding-left: 4px;
}
}
</style>

View File

@@ -30,7 +30,7 @@ import { ref, onMounted } from 'vue';
import Dialog from '@/components/common/dialog/index.vue';
import { ElMessage } from 'element-plus';
const emits = defineEmits(['close', 'createFn']);
const emits = defineEmits(['close', 'createFun']);
const props = defineProps(['libInfo']);
const visible = ref(true);
const formData = ref({
@@ -47,7 +47,7 @@ const onConfirmFun = () => {
ElMessage.warning('请输入参数类型名称!');
return;
} else {
emits('createFn', {
emits('createFun', {
parameterLibraryCategoryName: formData.value.parameterLibraryCategoryName,
parameterLibraryId: props.libInfo.id,
});

View File

@@ -62,19 +62,19 @@
<addParamLib
v-if="showParamLibVisible"
@close="showParamLibVisible = false"
@create-fn="createLibFun"
@createFun="createLibFun"
/>
<addParamType
v-if="showParamTypeVisible"
@close="showParamTypeVisible = false"
:lib-info="currentNode"
@create-fn="createLibTypeFun"
@createFun="createLibTypeFun"
/>
<addParamObject
v-if="showParamObjVisible"
@close="showParamObjVisible = false"
:lib-type-info="currentNode"
@create-fn="creatLibParamObjFun"
@createFun="creatLibParamObjFun"
/>
</div>
</template>
@@ -158,7 +158,7 @@ const currentChangeFun = async(data: any) => {
ObjectId: data.id,
});
if (res && res.code === 200) {
paramObjInfo.value = res.data;
paramObjInfo.value = res.data || [];
paramTableRef.value.setDataFun( paramObjInfo.value.parameterJsonValue || []);
}
} else if (data.type === 2) {
@@ -224,10 +224,12 @@ const creatLibParamObjFun = async(data: any) => {
parameterLibraryCategoryObjectName: data.parameterLibraryCategoryObjectName,
fileName: data.fileName,
file: data.file,
templateId: data.templateId,
templateName: data.templateName,
});
if (res && res.code === 200) {
ElMessage.success('新增参数对象成功');
ElMessage.success('操作成功');
const list = await getSimulationParameterTreeDAtaFun(currentNode.value);
const node = list.find((item: any) => {
return item.name === data.parameterLibraryCategoryObjectName;