From e98f65f2a02e82b02d327506d592564f78f4ecf7 Mon Sep 17 00:00:00 2001
From: WXL <1785969728@qq.com>
Date: 星期一, 15 四月 2024 18:22:22 +0800
Subject: [PATCH] 测试完成

---
 src/views/repositoryai/general/particulars/index.vue |  202 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 195 insertions(+), 7 deletions(-)

diff --git a/src/views/repositoryai/general/particulars/index.vue b/src/views/repositoryai/general/particulars/index.vue
index 63f1374..8a161a6 100644
--- a/src/views/repositoryai/general/particulars/index.vue
+++ b/src/views/repositoryai/general/particulars/index.vue
@@ -172,12 +172,89 @@
               <!-- <el-input v-model="indexform.userName" maxlength="30" /> -->
             </el-form-item>
 
-            <el-form-item label="鍖归厤鏂囨湰" prop="desc">
-              <el-input
-                type="textarea"
-                placeholder="璇疯緭鍏ュ尮閰嶆鍒�"
-                v-model="ruleForm.selfRegex"
-              ></el-input>
+            <el-form-item label="鍏抽敭瀛�(鍚�)" prop="desc">
+              <div class="xinz-inf">
+                <el-tag
+                  :key="crux"
+                  type="success"
+                  v-for="crux in ruleForm.dynamiccruxs"
+                  closable
+                  effect="dark"
+                  :disable-transitions="false"
+                  @close="handleClosecrux(crux, ruleForm, 1)"
+                >
+                  {{ crux }}
+                </el-tag>
+                <el-select
+                  v-model="inputValue"
+                  v-if="inputVisible"
+                  @change="handleInputConfirm(ruleForm)"
+                  filterable
+                  remote
+                  allow-create
+                  reserve-keyword
+                  default-first-option
+                  :loading="loading"
+                  placeholder="璇烽�夋嫨"
+                >
+                  <el-option
+                    v-for="ruleForms in regular"
+                    :key="ruleForms.label"
+                    :label="ruleForms.label"
+                    :value="ruleForms.label"
+                  >
+                  </el-option>
+                </el-select>
+                <el-button
+                  v-else
+                  class="button-new-tag"
+                  size="small"
+                  @click="showInput(ruleForm)"
+                  >+ 鏂板</el-button
+                >
+              </div>
+            </el-form-item>
+            <el-form-item label="鍏抽敭瀛�(闈�)" prop="desc">
+              <div class="xinz-inf">
+                <el-tag
+                  :key="crux"
+                  type="warning"
+                  v-for="crux in ruleForm.nodynamiccruxs"
+                  closable
+                  effect="dark"
+                  :disable-transitions="false"
+                  @close="handleClosecrux(crux, ruleForm, 2)"
+                >
+                  {{ crux }}
+                </el-tag>
+                <el-select
+                  v-model="inputValue"
+                  v-if="noinputVisible"
+                  @change="handleInputConfirm(ruleForm)"
+                  filterable
+                  remote
+                  allow-create
+                  reserve-keyword
+                  default-first-option
+                  :loading="loading"
+                  placeholder="璇烽�夋嫨"
+                >
+                  <el-option
+                    v-for="ruleForms in noregular"
+                    :key="ruleForms.value"
+                    :label="ruleForms.label"
+                    :value="ruleForms.label"
+                  >
+                  </el-option>
+                </el-select>
+                <el-button
+                  v-else
+                  class="button-new-tag"
+                  size="small"
+                  @click="showInputno(ruleForm)"
+                  >+ 鏂板</el-button
+                >
+              </div>
             </el-form-item>
             <el-form-item>
               <el-button type="primary" @click="submitForm('ruleForm')"
@@ -247,12 +324,24 @@
           label: "缁撴潫璇�",
         },
       ],
-      ruleForm: {},
+      ruleForm: {
+        dynamiccruxs: [],
+        nodynamiccruxs: [],
+      },
       baseForm: {
         extName: "",
       },
       rules: {},
       bases: {},
+      whether: 1, //1涓哄叧閿瘝锛�2涓哄惁瀹氬叧閿瘝
+      inputValue: "",
+      inputVisible: false,
+      noinputVisible: false,
+      loading: false,
+      regular: [],
+      noregular: [],
+      nodynamiccruxs: ["鍒�", "涓�"],
+      dynamiccruxs: ["濂�"],
     };
   },
 
@@ -262,6 +351,8 @@
     this.usable = store.getters.usablesz;
     this.languagelist = store.getters.languagelist;
     this.mode = store.getters.mode;
+    this.regular = store.getters.regular;
+    this.noregular = store.getters.noregular;
   },
 
   methods: {
@@ -388,6 +479,81 @@
       }
       return "";
     },
+    // 姝e垯-----------------
+    // 鐢熸垚姝e垯
+    generateRegex(row) {
+      let regex = "";
+      let regexno = "";
+      let hostregex = "";
+      let hostregexno = "";
+
+      for (let i = 0; i < this.ruleForm.dynamiccruxs.length; i++) {
+        regex += `${this.ruleForm.dynamiccruxs[i]}|`;
+      }
+      for (let i = 0; i < this.ruleForm.nodynamiccruxs.length; i++) {
+        regexno += `${this.ruleForm.nodynamiccruxs[i]}|`;
+      }
+      regex = regex.slice(0, -1);
+      regexno = regexno.slice(0, -1);
+      hostregex = "(?=.*(?:" + `${regex}` + ")).*$";
+      hostregexno = "^(?!.(?:" + `${regexno}` + ")).*$";
+      this.ruleForm.selfRegex = hostregex;
+      this.ruleForm.selfRegex2 = hostregexno;
+      console.log(hostregex, "纭畾瀛楀尮閰�");
+      console.log(hostregexno, "鍚﹀畾瀛楀尮閰�");
+    },
+    handleClosecrux(crux, item, whether) {
+      if (whether == 1) {
+        item.dynamiccruxs.splice(item.dynamiccruxs.indexOf(crux), 1);
+        console.log(1);
+        console.log(item.dynamiccruxs);
+        console.log(item.nodynamiccruxs);
+      } else {
+        console.log(2);
+        item.nodynamiccruxs.splice(item.nodynamiccruxs.indexOf(crux), 1);
+      }
+      this.generateRegex(item);
+    },
+    handleInputConfirm(row) {
+      // let index = this.TargetoptionList.indexOf(row);
+      console.log(this.ruleForm.dynamiccruxs);
+      console.log(this.ruleForm.nodynamiccruxs);
+      if (this.whether == 1 && this.inputValue) {
+        console.log(1);
+        if (this.ruleForm.dynamiccruxs.indexOf(this.inputValue) == -1) {
+          this.ruleForm.dynamiccruxs.push(this.inputValue);
+          console.log(2);
+        } else {
+          this.$message.error("鍏抽敭瀛楀凡瀛樺湪");
+        }
+        // this.inputVisible = false;
+        this.inputVisible = false;
+      } else if (this.whether == 2 && this.inputValue) {
+        console.log(this.ruleForm.nodynamiccruxs.indexOf(this.inputValue));
+        if (this.ruleForm.nodynamiccruxs.indexOf(this.inputValue) == -1) {
+          this.ruleForm.nodynamiccruxs.push(this.inputValue);
+        } else {
+          this.$message.error("鍏抽敭瀛楀凡瀛樺湪");
+        }
+        // this.noinputVisible = false;
+        this.noinputVisible = false;
+      }
+      this.generateRegex(row);
+
+      this.inputValue = "";
+    },
+    showInput(row) {
+      // let index = this.TargetoptionList.indexOf(row);
+      this.inputVisible = true;
+      // this.$set(this.ruleForm, "inputVisible", true);
+      this.whether = 1;
+    },
+    showInputno(row) {
+      // let index = this.TargetoptionList.indexOf(row);
+      this.noinputVisible = true;
+      // this.$set(this.ruleForm, "noinputVisible", true);
+      this.whether = 2;
+    },
   },
 };
 </script>
@@ -408,6 +574,28 @@
 .button-textsc {
   color: rgb(235, 23, 23);
 }
+.topicxq {
+  background-color: #e2f5fc;
+  border-radius: 4px;
+  margin-top: 10px;
+  padding: 10px;
+}
+
+.el-tag + .el-tag {
+  margin-left: 10px;
+}
+.button-new-tag {
+  margin-left: 10px;
+  height: 32px;
+  line-height: 30px;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+.input-new-tag {
+  width: 90px;
+  margin-left: 10px;
+  vertical-align: bottom;
+}
 ::v-deep.el-table .warning-row {
   background: rgb(193, 208, 250);
 }

--
Gitblit v1.9.3