瀏覽代碼

场景数据包-名称校验不重复

zhangliang2 3 年之前
父節點
當前提交
f32ee2ee9f

+ 0 - 77
src/views/sceneLibrary/components/nodeTree.vue

@@ -1,77 +0,0 @@
-<template>
-    <div>
-        <li>
-            <div
-                :class="{ bold: isFolder }"
-                @click="toggle"
-                @dblclick="makeFolder"
-            >
-                {{ item.name }}
-                <span v-if="isFolder">[{{ isOpen ? "-" : "+" }}]</span>
-            </div>
-            <ul v-show="isOpen" v-if="isFolder">
-                <tree-item
-                    class="item"
-                    v-for="(child, index) in item.children"
-                    :key="index"
-                    :item="child"
-                    @make-folder="$emit('make-folder', $event)"
-                    @add-item="$emit('add-item', $event)"
-                ></tree-item>
-                <li class="add" @click="$emit('add-item', item)">+</li>
-            </ul>
-        </li>
-    </div>
-</template>
-
-<script>
-//import  from '';
-
-export default {
-    name: "tree-item", //
-    props: {
-        item: Object,
-    },
-    data: function () {
-        return {
-            isOpen: false,
-        };
-    },
-    computed: {
-        isFolder: function () {
-            return this.item.children && this.item.children.length;
-        },
-    },
-    methods: {
-        toggle: function () {
-            if (this.isFolder) {
-                this.isOpen = !this.isOpen;
-            }
-        },
-        makeFolder: function () {
-            if (!this.isFolder) {
-                this.$emit("make-folder", this.item);
-                this.isOpen = true;
-            }
-        },
-    },
-
-    // mounted() {},
-};
-</script>
-
-<style lang='less' scoped>
-.item {
-    cursor: pointer;
-}
-
-.bold {
-    font-weight: bold;
-}
-
-ul {
-    padding-left: 1em;
-    line-height: 1.5em;
-    list-style-type: dot;
-}
-</style>

+ 27 - 1
src/views/sceneLibrary/scenePacketList.vue

@@ -218,7 +218,6 @@ import searchLayout from "@/components/grid/searchLayout";
 import tableList from "@/components/grid/TableList";
 import toolbarTab from "@/components/toolbar/toolbarTab";
 import realSceneList from "./components/realSceneList";
-// import viewTree from "./components/viewTree";
 import viewTree from "./components/elTree";
 
 export default {
@@ -253,6 +252,21 @@ export default {
             callback();
         };
 
+        let validateSublistName = (rule, value, callback) => {
+            this.nodeList = [];
+            this.deepFirstSearch(this.getDataWay.data[0], this.nodeList);
+
+            let names = this.nodeList
+                .filter((i) => i.id != this.form.id)
+                .map((i) => i.sublistName);
+            if (names.includes(value)) {
+                callback(new Error(rule.message));
+                return;
+            } else {
+                callback();
+            }
+        };
+
         return {
             packageId: "",
             share: "",
@@ -320,10 +334,16 @@ export default {
                 sublistName: "",
                 weight: "",
                 remarks: "",
+                id: "",
             },
             rules: {
                 sublistName: [
                     { required: true, message: "请输入", trigger: "blur" },
+                    {
+                        validator: validateSublistName,
+                        message: "指标名称重复",
+                        trigger: ["blur"],
+                    },
                 ],
                 weight: [
                     { required: true, message: "请输入", trigger: "blur" },
@@ -374,6 +394,7 @@ export default {
                 cancelButtonText: "取消",
                 type: "warning",
             }).then(() => {
+                this.nodeList = [];
                 this.deepFirstSearch(
                     this.getDataWay.data[0],
                     this.nodeList,
@@ -403,6 +424,7 @@ export default {
             this.form.sublistName = row.sublistName;
             this.form.weight = row.weight;
             this.form.remarks = row.remarks;
+            this.form.id = row.id;
 
             this.curNode = row;
         },
@@ -437,6 +459,7 @@ export default {
                         this.curNode.sublistName = this.form.sublistName;
                         this.curNode.weight = this.form.weight;
                         this.curNode.remarks = this.form.remarks;
+                        // 为了预览展示
                         this.curNode.treeNode =
                             this.form.sublistName +
                             " (" +
@@ -474,6 +497,7 @@ export default {
                         this.curNode.children.push(node);
                     }
 
+                    this.nodeList = [];
                     // 遍历当前树 拿到所有节点的平行展开数组
                     this.deepFirstSearch(
                         this.getDataWay.data[0],
@@ -494,6 +518,7 @@ export default {
             this.form.sublistName = "";
             this.form.weight = "";
             this.form.remarks = "";
+            this.form.id = "";
             this.curNode = {};
             this.indicatorsVisible = false;
         },
@@ -567,6 +592,7 @@ export default {
             this.curNode.sceneNaturalIds = this.checkedIdsB.join(",");
             this.curNode.sceneStatueIds = this.checkedIdsC.join(",");
 
+            this.nodeList = [];
             // 遍历当前树 拿到所有节点的平行展开数组
             this.deepFirstSearch(this.getDataWay.data[0], this.nodeList);
 

+ 0 - 239
src/views/sceneLibrary/templateView.vue

@@ -1,239 +0,0 @@
-<template>
-    <div class="templateViewPanel">
-        <!-- <div class="nodeBox">
-            <div class="node">1</div>
-        </div>
-        <div class="nodeBox">
-            <div class="node">2-1</div>
-            <div class="node">2-2</div>
-            <div class="node">2-3</div>
-            <div class="node">2-4</div>
-        </div>
-        <div class="nodeBox">
-            <div class="node">3-1</div>
-            <div class="node">3-2</div>
-            <div class="node">3-3</div>
-            <div class="node">3-4</div>
-            <div class="node">3-1</div>
-            <div class="node">3-2</div>
-            <div class="node">3-3</div>
-            <div class="node">3-4</div>
-        </div> -->
-        <!-- <el-tree
-            :data="data1"
-            :props="defaultProps"
-            @node-click="handleNodeClick"
-        ></el-tree> -->
-
-        <ul id="demo">
-            <tree-item
-                class="item"
-                :item="treeData"
-                @make-folder="makeFolder"
-                @add-item="addItem"
-            ></tree-item>
-        </ul>
-    </div>
-</template>
-
-<script>
-import treeItem from "./components/nodeTree";
-
-export default {
-    name: "templateView", // 模板预览
-    components: { treeItem },
-    data() {
-        return {
-            data1: [],
-            data: [
-                {
-                    label: "一级 1",
-                    children: [
-                        {
-                            label: "二级 1-1",
-                            children: [
-                                {
-                                    label: "三级 1-1-1",
-                                },
-                            ],
-                        },
-                    ],
-                },
-                {
-                    label: "一级 2",
-                    children: [
-                        {
-                            label: "二级 2-1",
-                            children: [
-                                {
-                                    label: "三级 2-1-1",
-                                },
-                            ],
-                        },
-                        {
-                            label: "二级 2-2",
-                            children: [
-                                {
-                                    label: "三级 2-2-1",
-                                },
-                            ],
-                        },
-                    ],
-                },
-                {
-                    label: "一级 3",
-                    children: [
-                        {
-                            label: "二级 3-1",
-                            children: [
-                                {
-                                    label: "三级 3-1-1",
-                                },
-                            ],
-                        },
-                        {
-                            label: "二级 3-2",
-                            children: [
-                                {
-                                    label: "三级 3-2-1",
-                                },
-                            ],
-                        },
-                    ],
-                },
-            ],
-            defaultProps: {
-                children: "children",
-                label: "sublistName",
-            },
-            treeData: {
-                name: "My Tree",
-                children: [
-                    {
-                        name: "hello",
-                    },
-                    {
-                        name: "wat",
-                    },
-                    {
-                        name: "child folder",
-                        children: [
-                            {
-                                name: "child folder",
-                                children: [
-                                    {
-                                        name: "hello",
-                                    },
-                                    {
-                                        name: "wat",
-                                    },
-                                ],
-                            },
-                            {
-                                name: "hello",
-                            },
-                            {
-                                name: "wat",
-                            },
-                            {
-                                name: "child folder",
-                                children: [
-                                    {
-                                        name: "hello",
-                                    },
-                                    {
-                                        name: "wat",
-                                    },
-                                ],
-                            },
-                        ],
-                    },
-                ],
-            },
-        };
-    },
-
-    computed: {},
-
-    methods: {
-        handleNodeClick(data) {
-            console.log(data);
-        },
-        makeFolder: function (item) {
-            this.$set(item, "children", []);
-            this.addItem(item);
-        },
-        addItem: function (item) {
-            item.children.push({
-                name: "new stuff",
-            });
-        },
-    },
-
-    mounted() {
-        if (this.$route.query.packageId) {
-            this.packageId = this.$route.query.packageId;
-
-            if (this.packageId) {
-                this.$axios({
-                    method: "post",
-                    url: this.$api.sceneLibrary.queryScenePackageSublistList,
-                    data: {
-                        packageId: this.packageId,
-                    },
-                }).then((res) => {
-                    if (res.code == 200 && res.info) {
-                        this.data1 = res.info;
-                    } else {
-                        this.$message.error(res.message || "获取信息失败");
-                    }
-                });
-            }
-        }
-    },
-};
-</script>
-
-<style lang='less' scoped>
-.templateViewPanel1 {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    padding: 30px;
-    height: calc(90vh);
-
-    .nodeBox {
-        margin-right: 120px;
-    }
-
-    .node {
-        padding: 10px;
-        margin-bottom: 20px;
-        border: 1px solid @gray;
-        border-radius: 3px;
-
-        &:last-child {
-            margin-bottom: 0;
-        }
-    }
-
-    body {
-        font-family: Menlo, Consolas, monospace;
-        color: #444;
-    }
-
-    .item {
-        cursor: pointer;
-    }
-
-    .bold {
-        font-weight: bold;
-    }
-
-    ul {
-        padding-left: 1em;
-        line-height: 1.5em;
-        list-style-type: dot;
-    }
-}
-</style>