YZProjectCloud/yanzhu-ui-vue3/src/components/Process/panel/commonPanel.vue

125 lines
4.4 KiB
Vue
Raw Normal View History

2024-08-24 11:53:56 +08:00
<template>
<el-form :model="bpmnFormData" label-width="80px" :rules="rules" status-icon>
2024-08-25 13:31:15 +08:00
<!--流程的基础属性-->
<template v-if="bpmnFormData.$type === 'bpmn:Process'">
2024-12-20 20:24:08 +08:00
<el-form-item label="项目单位" prop="proId">
<el-select v-model="bpmnFormData.proId" placeholder="请选择项目单位" @change="updateElementPro" style="width:100%">
2024-08-25 13:31:15 +08:00
<el-option
2024-12-20 20:24:08 +08:00
v-for="opt in proOptions"
:key="opt.id"
:label="opt.projectName"
:value="opt.id"
2024-08-25 13:31:15 +08:00
></el-option>
</el-select>
</el-form-item>
</template>
<el-form-item :label="bpmnFormData.$type === 'bpmn:Process'? '流程标识': '节点ID'" prop="id" @change="updateElementTask('id')">
<el-input v-model="bpmnFormData.id"/>
</el-form-item>
<el-form-item :label="bpmnFormData.$type === 'bpmn:Process'? '流程标识': '节点ID'" prop="id" @change="updateElementTask('id')">
<el-input v-model="bpmnFormData.id"/>
</el-form-item>
2024-08-24 11:53:56 +08:00
<el-form-item :label="bpmnFormData.$type === 'bpmn:Process'? '流程标识': '节点ID'" prop="id" @change="updateElementTask('id')">
<el-input v-model="bpmnFormData.id"/>
</el-form-item>
<el-form-item :label="bpmnFormData.$type === 'bpmn:Process'? '流程名称': '节点名称'" prop="name">
<el-input v-model="bpmnFormData.name" @change="updateElementTask('name')"/>
</el-form-item>
<!--流程的基础属性-->
<template v-if="bpmnFormData.$type === 'bpmn:Process'">
<el-form-item label="流程分类" prop="processCategory">
2024-12-20 20:24:08 +08:00
<el-select v-model="bpmnFormData.processCategory" placeholder="请选择流程分类" @change="updateElementTask('processCategory')" style="width:100%">
2024-08-24 11:53:56 +08:00
<el-option
v-for="dict in sys_process_category"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</template>
<el-form-item v-if="bpmnFormData.$type === 'bpmn:SubProcess'" label="状态">
<el-switch v-model="bpmnFormData.isExpanded" active-text="" inactive-text="" @change="updateElementTask('isExpanded')" />
</el-form-item>
<el-form-item label="节点描述">
<el-input :rows="2" type="textarea" v-model="bpmnFormData.documentation" @change="updateElementTask('documentation')"/>
</el-form-item>
</el-form>
</template>
<script setup name="CommonPanel">
import {StrUtil} from '@/utils/StrUtil'
import useModelerStore from '@/store/modules/modeler'
2024-12-20 20:24:08 +08:00
import { listProProjectInfo } from "@/api/manage/proProjectInfo";
2024-08-24 11:53:56 +08:00
const modelerStore = useModelerStore()
2024-12-20 20:24:08 +08:00
import useUserStore from '@/store/modules/user'
2024-08-24 11:53:56 +08:00
const { proxy } = getCurrentInstance();
const { sys_process_category } = proxy.useDict('sys_process_category');
2024-12-20 20:24:08 +08:00
const userStore = useUserStore()
// 项目数据
const proOptions = ref([]);
2024-08-24 11:53:56 +08:00
const data = reactive({
rules:{
id: [
{ required: true, message: '节点Id 不能为空', trigger: 'blur' },
],
name: [
{ required: true, message: '节点名称不能为空', trigger: 'blur' },
],
2024-12-20 20:24:08 +08:00
proId: [
2024-08-25 13:31:15 +08:00
{ required: true, message: '项目单位不能为空', trigger: 'change' },
],
2024-12-20 20:24:08 +08:00
processCategory: [
{ required: true, message: '流程分类不能为空', trigger: 'change' },
]
2024-08-24 11:53:56 +08:00
},
bpmnFormData: {}
});
const { rules, bpmnFormData } = toRefs(data);
/** 组件传值 */
const props = defineProps({
id: {
type: String,
required: true
},
});
/** 传值监听 */
watch(() => props.id, newVal => {
if (newVal) {
resetTaskForm();
}
},
{immediate: true}
)
function resetTaskForm() {
bpmnFormData.value = JSON.parse(JSON.stringify(modelerStore.getBpmnElement.businessObject));
}
2024-12-20 20:24:08 +08:00
function updateElementPro() {
modelerStore.getModeling.updateProperties(modelerStore.getBpmnElement, { 'proId': bpmnFormData.value.proId });
}
2024-08-24 11:53:56 +08:00
function updateElementTask(key) {
const taskAttr = Object.create(null);
taskAttr[key] = bpmnFormData.value[key] || null;
modelerStore.getModeling.updateProperties(modelerStore.getBpmnElement, taskAttr);
2024-12-20 20:24:08 +08:00
console.log("taskAttr",modelerStore.getBpmnElement)
2024-08-24 11:53:56 +08:00
}
2024-08-25 13:31:15 +08:00
/** 初始化数据 */
2024-12-20 20:24:08 +08:00
function initDatas(){
listProProjectInfo({pageSize:1000,comId:userStore.currentComId}).then(response => {
proOptions.value = response.rows;
});
}
2024-08-25 13:31:15 +08:00
2024-12-20 20:24:08 +08:00
initDatas();
2024-08-24 11:53:56 +08:00
</script>