Browse Source

Merge branch 'master' into 'master'

新增指标删除以及指标显示优化

See merge request lighter/vue-intergration-platform!49
huangshuhua 2 years ago
parent
commit
85657ee9e3

+ 9 - 0
src/api/target-management/target-dict.js

@@ -36,3 +36,12 @@ export function updateTargetDict(data) {
         data,
     })
 }
+
+// 根据id和父id删除指标字典数据
+export function deleteTargetDictById(data) {
+    return request({
+        url: '/targetManagement/deleteTargetDictById',
+        method: 'post',
+        data,
+    })
+}

+ 70 - 1
src/views/target-management/target-comm/targetTree.vue

@@ -4,12 +4,21 @@
         <el-tree ref="treeRef" class="filter-tree" :data="treeData" :props="defaultProps" node-key="id" default-expand-all
             :check-strictly="isCheck" highlight-current :filter-node-method="filterNode" :height="targetTreeData.height"
             @node-click="handleNodeClick" :expand-on-click-node="isOkDoor">
+            <template #default="{ node, data }" class="custom-tree-node">
+                <span :title="data.label">
+                    {{ data.label.length > 27 ? data.label.slice(0, 27) + '...' : data.label }}
+                </span>
+                <span style="z-index: 100;" v-if="node.isLeaf">
+                    <el-button link type="danger" size="small" @click.stop="removeTarget(node, data)">删除</el-button>
+                </span>
+            </template>
         </el-tree>
     </div>
 </template>
 <script setup name="TargetTree" lang="ts">
 import { ref, onMounted, watch, nextTick, computed } from 'vue'
-import { ElTree } from 'element-plus'
+import { ElTree, ElMessage, ElMessageBox } from 'element-plus'
+import { selectTargetDictTree, deleteTargetDictById } from '../../../api/target-management/target-dict'
 
 const { targetTreeData } = defineProps({
     targetTreeData: {
@@ -37,6 +46,13 @@ onMounted(() => {
 
 })
 
+const customNodeClass = (data: Tree, node: Node) => {
+    if (data.isPenultimate) {
+        return 'is-penultimate'
+    }
+    return null
+}
+
 interface Tree {
     [key: string]: any
 }
@@ -45,6 +61,7 @@ const defaultProps = {
     value: 'id',
     label: 'label',
     children: 'children',
+    class: customNodeClass
 }
 watch(filterText, (val) => {
     treeRef.value!.filter(val)
@@ -63,6 +80,44 @@ const handleNodeClick = (data: any, node: any, obj: any) => {
     }
 
 }
+
+const removeTarget = (node: any, data: any) => {
+    if (!node.isLeaf) {
+        ElMessage({
+            type: "info",
+            message: "不是叶子节点不允许删除,请确认!",
+            duration: 2500,
+            showClose: true,
+        });
+        return
+    }
+
+    ElMessageBox.confirm('确认删除指标?', '提示', {
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        distinguishCancelAndClose: true
+    }).then(() => {
+        deleteTargetDictById(data)
+            .then((res: any) => {
+                let queryParam = {
+                    id: '',
+                    pid: ''
+                }
+                selectTargetDictTree(queryParam)
+                    .then((res: any) => {
+                        targetTreeData.data = res
+                    });
+            });
+    }).catch((action) => {
+        ElMessage({
+            type: "info",
+            message: "删除指标节点失败!",
+            duration: 2500,
+            showClose: true,
+        });
+        return
+    })
+}
 </script>
 <style lang="scss" scoped deep>
 .qt-cl {
@@ -82,4 +137,18 @@ const handleNodeClick = (data: any, node: any, obj: any) => {
     height: 32px;
     vertical-align: middle;
 }
+
+.custom-tree-node {
+    flex: 1;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    font-size: 14px;
+    padding-right: 8px;
+}
+
+:deep(.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content) {
+    color: #409eff; // 节点的字体颜色
+    background-color: rgba(135, 206, 235, 0.2);
+}
 </style>

+ 50 - 10
src/views/target-management/target-dict/TargetDictConfig.vue

@@ -6,7 +6,7 @@
         <el-col :span="16">
             <PageLayer>
                 <template #header class="hd-cl">
-                    <el-button type="primary" icon="Plus" @click="resetForm(ruleFormRef)"
+                    <el-button type="primary" icon="Plus" @click="addForm(ruleFormRef)"
                         style="margin-left: 10px">新增</el-button>
                     <el-button type="primary" icon="Edit" @click="editForm(ruleFormRef)"
                         style="margin-left: 10px">编辑</el-button>
@@ -98,13 +98,14 @@
                             <el-input v-model="ruleForm.definition" type="textarea" />
                         </el-form-item>
                         <el-form-item label="评审方法" prop="method">
-                            <el-input v-model="ruleForm.method" type="textarea" />
+                            <el-input v-model="ruleForm.method" type="textarea" :rows="4" />
                         </el-form-item>
                         <el-form-item label="计分细则" prop="scoreRule">
                             <el-input v-model="ruleForm.scoreRule" type="textarea" />
                         </el-form-item>
-                        <el-form-item label="数据来源" prop="source">
-                            <el-input v-model="ruleForm.source" type="textarea" />
+                        <el-form-item label="数据来源条件" prop="source">
+                            <el-input v-model="ruleForm.source" type="textarea"
+                                placeholder="请描述指标数据来源条件,比如:诊断包含xxx, 诊断编码是xxx等等" />
                         </el-form-item>
                         <el-divider />
                         <el-form ref="ruleFormRef" label-width="120px" :model="sqlForm" class="demo-ruleForm"
@@ -273,7 +274,7 @@ let ruleForm = $ref({
     method: '', // 评审方法
     scoreRule: '', // 计分细则
     source: '', // 数据来源
-    isLeaf: '0', // 是否叶子节点(0:否, 1:是)
+    isLeaf: '1', // 是否叶子节点(0:否, 1:是)
     calcChild: '', // 计算-分子
     calcMom: '', // 计算-分母
 })
@@ -326,13 +327,13 @@ const rules = $ref<FormRules>({
         { min: 0, max: 48, message: '指标所占比例长度范围0-48个字符', trigger: 'blur' },
     ],
     definition: [
-        { required: false, message: '请填写指标定义', trigger: 'blur' },
+        { required: true, message: '请填写指标定义', trigger: 'blur' },
     ],
     method: [
-        { required: false, message: '请填写评审方法', trigger: 'blur' },
+        { required: true, message: '请填写评审方法', trigger: 'blur' },
     ],
     scoreRule: [
-        { required: false, message: '请填写计分细则', trigger: 'blur' },
+        { required: true, message: '请填写计分细则', trigger: 'blur' },
     ]
 })
 
@@ -369,6 +370,44 @@ const submitForm = async (formEl: FormInstance | undefined) => {
     })
 }
 
+const addForm = (formEl: FormInstance | undefined) => {
+    if (!formEl) return
+
+    if (queryParam.id === '') {
+        ElMessage({
+            type: "info",
+            message: "请选择一个指标!",
+            duration: 2500,
+            showClose: true,
+        });
+        return
+    }
+
+    if (queryParam.isLeaf === '1') {
+        ElMessage({
+            type: "info",
+            message: "请选择一个父节点指标!",
+            duration: 2500,
+            showClose: true,
+        });
+        return
+    }
+
+    if (isShowForm.value) {
+        isShowForm.value = false
+    }
+
+    formEl.resetFields()
+
+    // 新增自动映射父指标id作为子指标的父id
+    ruleForm.pid = queryParam.id
+    sqlForm.startTime = ''
+    sqlForm.endTime = ''
+    sqlForm.childResult = ''
+    sqlForm.momResult = ''
+    sqlForm.calcResult = ''
+}
+
 const resetForm = (formEl: FormInstance | undefined) => {
     if (!formEl) return
 
@@ -427,7 +466,6 @@ const editForm = (formEl: FormInstance | undefined) => {
 // ------  接收树页面传来的数据 -------
 const treeNodeClick = (data: any, node: any, obj: any) => {
     if (node.data) {
-
         sqlForm.startTime = ''
         sqlForm.endTime = ''
         sqlForm.childResult = ''
@@ -442,6 +480,8 @@ const treeNodeClick = (data: any, node: any, obj: any) => {
                     nextTick(() => {
                         isShowForm.value = true
                         ruleForm = clone(res[0])
+                        // 获取点击树的是否叶子节点数据
+                        queryParam.isLeaf = ruleForm.isLeaf
                         ruleFormRef.value?.resetFields()
                         ruleFormRef.value?.clearValidate()
                         leafRulesChange(ruleFormRef.value)
@@ -497,7 +537,7 @@ const sqlExecute = (formEl: FormInstance | undefined) => {
     if (ruleForm.isLeaf === '0') {
         ElMessage({
             type: "info",
-            message: "不是基础指标,不需要执行sql,请确认",
+            message: "不是基础指标,不需要执行sql,请确认!",
             duration: 2500,
             showClose: true,
         });