From 38f0f601c507fa9a7a27754e9f1a1bd10f913899 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期日, 03 十二月 2023 23:07:12 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS-WEB/src/views/ruleBasic/delimiterConfig.vue      |  282 +++++++++++++
 Source/UBCS-WEB/src/views/ruleBasic/paddingCharacter.vue     |  282 +++++++++++++
 Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue       |    1 
 Source/UBCS-WEB/src/components/FormTemplate/index.vue        |   14 
 Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue  |   25 
 Source/UBCS-WEB/src/api/code/codeCharcter.js                 |   45 ++
 Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue      |  282 +++++++++++++
 Source/UBCS-WEB/src/views/ruleBasic/prefixConfig.vue         |  289 +++++++++++++
 Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue |    8 
 9 files changed, 1,209 insertions(+), 19 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/code/codeCharcter.js b/Source/UBCS-WEB/src/api/code/codeCharcter.js
new file mode 100644
index 0000000..3dd0f56
--- /dev/null
+++ b/Source/UBCS-WEB/src/api/code/codeCharcter.js
@@ -0,0 +1,45 @@
+import request from '@/router/axios';
+
+export const getList = (params) => {
+  return request({
+    url: '/api/ubcs-code/codeRuleCharacterController/list',
+    method: 'get',
+    params: {
+      ...params,
+    }
+  })
+}
+
+export const gridCodeRule = (params) => {
+  return request({
+    url: '/api/ubcs-code/mdmRule/gridCodeRule',
+    method: 'get',
+    params: {
+      ...params,
+    },
+  })
+}
+
+export const addSave = (codeRuleCharacterVO) => {
+  return request({
+    url: '/api/ubcs-code/codeRuleCharacterController/addSave',
+    method: 'post',
+    data:codeRuleCharacterVO
+  })
+}
+
+export const editSave = (codeRuleCharacterVO) => {
+  return request({
+    url: '/api/ubcs-code/codeRuleCharacterController/editSave',
+    method: 'post',
+    data:codeRuleCharacterVO
+  })
+}
+
+export const deleteSave = (codeRuleCharacterVO) => {
+  return request({
+    url: '/api/ubcs-code/codeRuleCharacterController/delete',
+    method: 'post',
+    data:codeRuleCharacterVO
+  })
+}
diff --git a/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue b/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
index bfd0254..e75483c 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
@@ -317,9 +317,10 @@
           valueFormat: formItem.dateFormate || "yyyy-MM-dd HH:mm:ss",
           format: formItem.dateFormate,
           keyAttr: formItem.keyAttr,
-          value: (formItem.dicData && formItem.dicData.length > 0 && formItem.secType == "codefixedsec" ? formItem.dicData[0].id : null) ||
+          value:formItem.defaultValue || (formItem.dicData && formItem.dicData.length > 0 && formItem.secType == "codefixedsec" ? formItem.dicData[0].id : null) ||
             (formItem.secType == "codedatesec" ? formItem.codeDateValue : null) || (TreeValue && formItem.secType == "codelevelsec" ? TreeValue : null) ||
-            (formItem.secType == "codeattrsec" ? this.add : null) || (this.status === "apply" && formItem.field === "codeStandardEditType" ? "1" : null),
+            (formItem.secType == "codeattrsec" ? this.add : null) || (this.status === "apply" && formItem.field === "codeStandardEditType" ? "1" : null) ||
+            (this.status === "amend" && formItem.field === "codeStandardEditType" ? "2" : null),
           placeholder: formItem.inputTip,
           comboxKey: formItem.comboxKey,
           tip: formItem.tooltips,
@@ -427,7 +428,8 @@
           keyAttr: formItem.keyAttr,
           value: (formItem.dicData && formItem.dicData.length > 0 && formItem.secType == "codefixedsec" ? formItem.dicData[0].id : null) ||
             (formItem.secType == "codedatesec" ? formItem.codeDateValue : null) || (TreeValue && formItem.secType == "codelevelsec" ? TreeValue : null) ||
-            (formItem.secType == "codeattrsec" ? this.add : null) || (this.status === "apply" && formItem.field === "codeStandardEditType" ? "1" : null),
+            (formItem.secType == "codeattrsec" ? this.add : null) || (this.status === "apply" && formItem.field === "codeStandardEditType" ? "1" : null)  ||
+            (this.status === "amend" && formItem.field === "codeStandardEditType" ? "2" : null),
           placeholder: formItem.inputTip,
           comboxKey: formItem.comboxKey,
           tip: formItem.tooltips,
diff --git a/Source/UBCS-WEB/src/components/FormTemplate/index.vue b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
index 2567d87..340f056 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/index.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -444,7 +444,18 @@
         );
       }
       // 鎺掗櫎涓�浜涘瓧娈�
-      const noData = [
+      const noData = this.status ? [
+        "jiliangdwname",
+        "materialtypeText",
+        "morengongysname",
+        "$caigouwl",
+        "$xiaoshouwl",
+        "$shifoupihaoguanli",
+        "lcstatus_text",
+        "hesuanfenleiname",
+        "$kucunwl",
+        "lastmodifier"
+      ] : [
         "jiliangdwname",
         "materialtypeText",
         "morengongysname",
@@ -457,6 +468,7 @@
         "oldcode",
         "lastmodifier"
       ];
+
       let resForm = {};
       const {defaultValue, formValue} = this.getDefaultValueAndFormValues(
         this.form
diff --git a/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue b/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
index a8121e9..36ca0b3 100644
--- a/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
+++ b/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
@@ -40,7 +40,7 @@
                         border class="cus-table"
                         @select="handleSelection" @cell-click="handleCellClick" @row-click="handleRowClick"
                         @select-all="handleSelectionAll" @selection-change="handleSelectionChange"
-                        @sort-change="sortChange">
+                        @sort-change="sortChange"  :header-cell-style="{background:'#FAFAFA',color:'#505050'}">
                 <el-table-column v-if="tableData.length != 0" fixed type="selection" width="55"></el-table-column>
                 <el-table-column v-if="tableData.length != 0" fixed label="搴忓彿" type="index" width="55">
                 </el-table-column>
@@ -108,7 +108,7 @@
           </FormTemplateDialog>
           <!--          淇敼-->
           <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
-                              :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'淇敼缂栫爜淇℃伅'"
+                              :disabledProp="disabledProp" rowOid="rowOid" :templateOid="templateOid" :title="'淇敼缂栫爜淇℃伅'"
                               :visible.sync="editvisible"
                               type="edit" @submit="EditSumbit"></FormTemplateDialog>
           <!--          鎵归噺缂栬緫-->
@@ -584,11 +584,24 @@
     },
     //鏍囧噯淇
     codeAMENDHandler() {
-      if (this.selectRow.length !== 1) {
-        this.$message.warning("璇烽�夋嫨涓�鏉℃暟鎹�");
-      } else {
+      let foundItem = false;
+
+      this.tableHeadFindData.forEach(item => {
+        if (item.field === "oldcode" && Object.keys(item.referConfig).length >= 1) {
+          foundItem = true;
+        }
+      });
+
+      if (foundItem) {
         this.amendvisible = true;
-        this.rowOid = this.selectRow[0].oid;
+        this.rowOid = this.selectRow[0].oid ;
+      } else {
+        if (this.selectRow.length !== 1) {
+          this.$message.warning("璇烽�夋嫨涓�鏉℃暟鎹�");
+        }else {
+          this.amendvisible = true;
+          this.rowOid = this.selectRow[0].oid ;
+        }
       }
     },
     //鎵归噺缂栬緫
diff --git a/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue b/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
index 5e44b6a..3ee51de 100644
--- a/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
@@ -326,6 +326,7 @@
                 v-loading="loading"
                 :data="ProData"
                 :height="this.tableHeight"
+                :header-cell-style="{background:'#FAFAFA',color:'#505050'}"
                 border
                 style="width: 100%"
                 @select="selectHandle"
diff --git a/Source/UBCS-WEB/src/views/ruleBasic/delimiterConfig.vue b/Source/UBCS-WEB/src/views/ruleBasic/delimiterConfig.vue
index 867a34d..a78ad01 100644
--- a/Source/UBCS-WEB/src/views/ruleBasic/delimiterConfig.vue
+++ b/Source/UBCS-WEB/src/views/ruleBasic/delimiterConfig.vue
@@ -1,13 +1,289 @@
 <template>
+  <basic-container>
 
+    <el-header>
+      <div style="margin-bottom: 15px">
+        缂栫爜瑙勫垯锛�
+        <el-select v-model="select" :filter-method="filterValue" filterable placeholder="璇烽�夋嫨" size="small"
+                   @change="selectHandler">
+          <el-option v-for="(item,index) in queryReleasedList"
+                     :key="item.oid"
+                     :label="item.name"
+                     :value="item.oid"></el-option>
+        </el-select>
+      </div>
+    </el-header>
+    <el-main>
+      <el-table
+        v-loading="loading"
+        :data="tableData"
+        :header-cell-style="{background:'#FAFAFA',color:'#505050'}"
+        border
+        style="width: 100%;height:  calc(100vh - 320px)"
+        @cell-click="cellClickHandler">
+        <el-table-column
+          align="center"
+          label="1"
+          prop="1"
+        >
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="2"
+          prop="2"
+        >
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="3"
+          prop="3">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="4"
+          prop="4">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="5"
+          prop="5">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="6"
+          prop="6">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="7"
+          prop="7">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="8"
+          prop="8">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="9"
+          prop="9">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="10"
+          prop="10">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="11"
+          prop="11">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="12"
+          prop="12">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="13"
+          prop="13">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="14"
+          prop="14">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="15"
+          prop="15">
+        </el-table-column>
+      </el-table>
+    </el-main>
+    <el-footer>
+      <div style="width: 260px; display: flex; align-items: center;margin-top: 5px">
+        <p>鍊硷細</p>
+        <el-input v-model="characterValue" size="small" style="flex: 1;"></el-input>
+      </div>
+    </el-footer>
+    <div style="margin-bottom: 10px;text-align: center">
+      <el-button icon="el-icon-plus" plain size="small" type="success" @click="addSaveHandler">娣诲姞</el-button>
+      <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editSaveHandler">淇敼</el-button>
+      <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delSaveHandler">鍒犻櫎</el-button>
+    </div>
+  </basic-container>
 </template>
 
 <script>
+import {getList, addSave, editSave, deleteSave} from "@/api/code/codeCharcter"
+import {gridCodeRule} from "@/api/code/codeCharcter"
+
 export default {
-  name: "delimiterConfig"
+  name: "delimiterConfig",
+  data() {
+    return {
+      loading: false,
+      //涓嬫媺妗嗘暟缁�
+      queryReleasedList: [],
+      //涓嬫媺妗嗗垵濮嬫暟鎹暟缁�
+      characterReleasedList: [],
+      characterValue: "",
+      characterEditOldValue: "",
+      tableData: [],
+      select: "",
+      selectValue: ""
+    }
+  },
+  watch: {
+    select: {
+      handler(newV) {
+        // console.log(newV)
+      }
+    }
+  },
+  created() {
+    this.getCodeRule();
+  },
+  methods: {
+    cellClickHandler(row, column) {
+      this.characterValue = row[column.property];
+      this.characterEditOldValue = row[column.property]
+    },
+    async getCodeRule() {
+      try {
+        // 缂栫爜瑙勫垯宸插彂甯冩暟鎹簮
+        const res = await gridCodeRule({["conditionMap" + "[lcStatus_like]"]: "Released"});
+        this.characterReleasedList = res.data.data.records;
+        this.queryReleasedList = this.characterReleasedList;
+        this.select = this.characterReleasedList[0].oid;
+        this.loading = true;
+        const res2 = await getList({codeRuleId: this.select, chartType: "separator", chartValue: this.characterValue});
+        this.tableData = res2.data.data;
+        this.loading = false;
+        // console.log("this.tableData", this.tableData);
+      } catch (error) {
+        this.$message.warning(error)
+      }
+    },
+    //缂栫爜瑙勫垯涓嬫媺妗嗘悳绱�
+    filterValue(query) {
+      console.log(query)
+      if (query !== "") {
+        this.queryReleasedList = this.characterReleasedList.filter(item => {
+          return item.name.includes(query.toString());
+        });
+      } else {
+        this.queryReleasedList = this.characterReleasedList;
+      }
+    },
+    selectHandler(val) {
+      this.selectValue = val;
+      this.characterValue = ""
+      this.getTableData()
+    },
+    getTableData() {
+      this.loading = true;
+      // const targetObject = this.characterReleasedList.find(obj => obj.oid === this.selectValue);
+      // const chartValue = targetObject.name;
+      getList({codeRuleId: this.select, chartType: "separator", chartValue: this.characterValue}).then(res => {
+        console.log(res.data.data);
+        this.tableData = res.data.data;
+        this.loading = false;
+      });
+    },
+    addSaveHandler() {
+      if (!this.characterValue) {
+        this.$message.warning('璇峰~鍐欒娣诲姞鐨勫�硷紒');
+        return; // 鍒ゆ柇杈撳叆鍊�
+      }
+
+      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
+      if (!targetObject) {
+        return; // 鏌ユ壘瀵瑰簲typeText
+      }
+
+      const codeRuleCharacterVO = {
+        codeRuleId: this.select,
+        chartType: "separator",
+        chartValue: this.characterValue,
+        chartTypeText: targetObject.name
+      };
+
+      addSave(codeRuleCharacterVO)
+        .then(res => {
+          this.$message.success(res.data.msg);
+          this.characterValue = "";
+          this.getTableData();
+        }).catch(error => {
+        this.$message.error('娣诲姞澶辫触');
+      });
+    },
+    editSaveHandler() {
+      if (this.characterEditOldValue === "") {
+        this.$message.warning('璇烽�夋嫨淇敼鐨勫�硷紒');
+        return; // 鍒ゆ柇閫夋嫨鍊�
+      }
+
+      if (this.characterValue === "") {
+        this.$message.warning('璇峰~鍐欒淇敼鐨勫�硷紒');
+        return; // 鍒ゆ柇杈撳叆鍊�
+      }
+
+      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
+      if (!targetObject) {
+        return; // 鏌ユ壘瀵瑰簲typeText
+      }
+
+      const codeRuleCharacterVO = {
+        codeRuleId: this.select,
+        chartType: "separator",
+        chartValue: this.characterValue,
+        oldChartValue: this.characterEditOldValue,
+        chartTypeText: targetObject.name
+      };
+
+      editSave(codeRuleCharacterVO)
+        .then(res => {
+          this.$message.success(res.data.msg);
+          this.characterValue = "";
+          this.getTableData();
+        }).catch(error => {
+        this.$message.error('淇敼澶辫触');
+      });
+    },
+    delSaveHandler() {
+      //鍒ゆ柇閫夋嫨鏁版嵁characterEditOldValue
+      if (this.characterEditOldValue === "" || this.characterValue === "") {
+        this.$message.warning('璇烽�夋嫨瑕佸垹闄ょ殑鍊�');
+        return;
+      }
+
+      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
+      if (!targetObject) {
+        return; // 鏌ユ壘瀵瑰簲typeText
+      }
+      const codeRuleCharacterVO = {
+        codeRuleId: this.select,
+        chartType: "separator",
+        chartValue: this.characterValue,
+        chartTypeText: targetObject.name
+      };
+
+      deleteSave(codeRuleCharacterVO)
+        .then(res => {
+          this.$message.success(res.data.msg);
+          this.characterValue = "";
+          this.getTableData();
+        }).catch(error => {
+        this.$message.error('鍒犻櫎澶辫触');
+      });
+    }
+  }
 }
 </script>
 
-<style scoped>
-
+<style lang="scss" scoped>
+.el-header {
+  padding: 0;
+}
 </style>
diff --git a/Source/UBCS-WEB/src/views/ruleBasic/paddingCharacter.vue b/Source/UBCS-WEB/src/views/ruleBasic/paddingCharacter.vue
index 9de161e..a1a9026 100644
--- a/Source/UBCS-WEB/src/views/ruleBasic/paddingCharacter.vue
+++ b/Source/UBCS-WEB/src/views/ruleBasic/paddingCharacter.vue
@@ -1,13 +1,289 @@
 <template>
+  <basic-container>
 
+    <el-header>
+      <div style="margin-bottom: 15px">
+        缂栫爜瑙勫垯锛�
+        <el-select v-model="select" :filter-method="filterValue" filterable placeholder="璇烽�夋嫨" size="small"
+                   @change="selectHandler">
+          <el-option v-for="(item,index) in queryReleasedList"
+                     :key="item.oid"
+                     :label="item.name"
+                     :value="item.oid"></el-option>
+        </el-select>
+      </div>
+    </el-header>
+    <el-main>
+      <el-table
+        v-loading="loading"
+        :data="tableData"
+        :header-cell-style="{background:'#FAFAFA',color:'#505050'}"
+        border
+        style="width: 100%;height:  calc(100vh - 320px)"
+        @cell-click="cellClickHandler">
+        <el-table-column
+          align="center"
+          label="1"
+          prop="1"
+        >
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="2"
+          prop="2"
+        >
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="3"
+          prop="3">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="4"
+          prop="4">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="5"
+          prop="5">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="6"
+          prop="6">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="7"
+          prop="7">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="8"
+          prop="8">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="9"
+          prop="9">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="10"
+          prop="10">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="11"
+          prop="11">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="12"
+          prop="12">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="13"
+          prop="13">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="14"
+          prop="14">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="15"
+          prop="15">
+        </el-table-column>
+      </el-table>
+    </el-main>
+    <el-footer>
+      <div style="width: 260px; display: flex; align-items: center;margin-top: 5px">
+        <p>鍊硷細</p>
+        <el-input v-model="characterValue" size="small" style="flex: 1;"></el-input>
+      </div>
+    </el-footer>
+    <div style="margin-bottom: 10px;text-align: center">
+      <el-button icon="el-icon-plus" plain size="small" type="success" @click="addSaveHandler">娣诲姞</el-button>
+      <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editSaveHandler">淇敼</el-button>
+      <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delSaveHandler">鍒犻櫎</el-button>
+    </div>
+  </basic-container>
 </template>
 
 <script>
+import {getList, addSave, editSave, deleteSave} from "@/api/code/codeCharcter"
+import {gridCodeRule} from "@/api/code/codeCharcter"
+
 export default {
-  name: "paddingCharacter"
+  name: "paddingCharacter",
+  data() {
+    return {
+      loading: false,
+      //涓嬫媺妗嗘暟缁�
+      queryReleasedList: [],
+      //涓嬫媺妗嗗垵濮嬫暟鎹暟缁�
+      characterReleasedList: [],
+      characterValue: "",
+      characterEditOldValue: "",
+      tableData: [],
+      select: "",
+      selectValue: ""
+    }
+  },
+  watch: {
+    select: {
+      handler(newV) {
+        // console.log(newV)
+      }
+    }
+  },
+  created() {
+    this.getCodeRule();
+  },
+  methods: {
+    cellClickHandler(row, column) {
+      this.characterValue = row[column.property];
+      this.characterEditOldValue = row[column.property]
+    },
+    async getCodeRule() {
+      try {
+        // 缂栫爜瑙勫垯宸插彂甯冩暟鎹簮
+        const res = await gridCodeRule({["conditionMap" + "[lcStatus_like]"]: "Released"});
+        this.characterReleasedList = res.data.data.records;
+        this.queryReleasedList = this.characterReleasedList;
+        this.select = this.characterReleasedList[0].oid;
+        this.loading = true;
+        const res2 = await getList({codeRuleId: this.select, chartType: "fillerChar", chartValue: this.characterValue});
+        this.tableData = res2.data.data;
+        this.loading = false;
+        // console.log("this.tableData", this.tableData);
+      } catch (error) {
+        this.$message.warning(error)
+      }
+    },
+    //缂栫爜瑙勫垯涓嬫媺妗嗘悳绱�
+    filterValue(query) {
+      console.log(query)
+      if (query !== "") {
+        this.queryReleasedList = this.characterReleasedList.filter(item => {
+          return item.name.includes(query.toString());
+        });
+      } else {
+        this.queryReleasedList = this.characterReleasedList;
+      }
+    },
+    selectHandler(val) {
+      this.selectValue = val;
+      this.characterValue = ""
+      this.getTableData()
+    },
+    getTableData() {
+      this.loading = true;
+      // const targetObject = this.characterReleasedList.find(obj => obj.oid === this.selectValue);
+      // const chartValue = targetObject.name;
+      getList({codeRuleId: this.select, chartType: "fillerChar", chartValue: this.characterValue}).then(res => {
+        console.log(res.data.data);
+        this.tableData = res.data.data;
+        this.loading = false;
+      });
+    },
+    addSaveHandler() {
+      if (!this.characterValue) {
+        this.$message.warning('璇峰~鍐欒娣诲姞鐨勫�硷紒');
+        return; // 鍒ゆ柇杈撳叆鍊�
+      }
+
+      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
+      if (!targetObject) {
+        return; // 鏌ユ壘瀵瑰簲typeText
+      }
+
+      const codeRuleCharacterVO = {
+        codeRuleId: this.select,
+        chartType: "fillerChar",
+        chartValue: this.characterValue,
+        chartTypeText: targetObject.name
+      };
+
+      addSave(codeRuleCharacterVO)
+        .then(res => {
+          this.$message.success(res.data.msg);
+          this.characterValue = "";
+          this.getTableData();
+        }).catch(error => {
+        this.$message.error('娣诲姞澶辫触');
+      });
+    },
+    editSaveHandler() {
+      if (this.characterEditOldValue === "") {
+        this.$message.warning('璇烽�夋嫨淇敼鐨勫�硷紒');
+        return; // 鍒ゆ柇閫夋嫨鍊�
+      }
+
+      if (this.characterValue === "") {
+        this.$message.warning('璇峰~鍐欒淇敼鐨勫�硷紒');
+        return; // 鍒ゆ柇杈撳叆鍊�
+      }
+
+      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
+      if (!targetObject) {
+        return; // 鏌ユ壘瀵瑰簲typeText
+      }
+
+      const codeRuleCharacterVO = {
+        codeRuleId: this.select,
+        chartType: "fillerChar",
+        chartValue: this.characterValue,
+        oldChartValue: this.characterEditOldValue,
+        chartTypeText: targetObject.name
+      };
+
+      editSave(codeRuleCharacterVO)
+        .then(res => {
+          this.$message.success(res.data.msg);
+          this.characterValue = "";
+          this.getTableData();
+        }).catch(error => {
+        this.$message.error('淇敼澶辫触');
+      });
+    },
+    delSaveHandler() {
+      //鍒ゆ柇閫夋嫨鏁版嵁characterEditOldValue
+      if (this.characterEditOldValue === "" || this.characterValue === "") {
+        this.$message.warning('璇烽�夋嫨瑕佸垹闄ょ殑鍊�');
+        return;
+      }
+
+      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
+      if (!targetObject) {
+        return; // 鏌ユ壘瀵瑰簲typeText
+      }
+      const codeRuleCharacterVO = {
+        codeRuleId: this.select,
+        chartType: "fillerChar",
+        chartValue: this.characterValue,
+        chartTypeText: targetObject.name
+      };
+
+      deleteSave(codeRuleCharacterVO)
+        .then(res => {
+          this.$message.success(res.data.msg);
+          this.characterValue = "";
+          this.getTableData();
+        }).catch(error => {
+        this.$message.error('鍒犻櫎澶辫触');
+      });
+    }
+  }
 }
 </script>
 
-<style scoped>
-
+<style lang="scss" scoped>
+.el-header {
+  padding: 0;
+}
 </style>
diff --git a/Source/UBCS-WEB/src/views/ruleBasic/prefixConfig.vue b/Source/UBCS-WEB/src/views/ruleBasic/prefixConfig.vue
new file mode 100644
index 0000000..fe196c6
--- /dev/null
+++ b/Source/UBCS-WEB/src/views/ruleBasic/prefixConfig.vue
@@ -0,0 +1,289 @@
+<template>
+  <basic-container>
+
+    <el-header>
+      <div style="margin-bottom: 15px">
+        缂栫爜瑙勫垯锛�
+        <el-select v-model="select" :filter-method="filterValue" filterable placeholder="璇烽�夋嫨" size="small"
+                   @change="selectHandler">
+          <el-option v-for="(item,index) in queryReleasedList"
+                     :key="item.oid"
+                     :label="item.name"
+                     :value="item.oid"></el-option>
+        </el-select>
+      </div>
+    </el-header>
+    <el-main>
+      <el-table
+        v-loading="loading"
+        :data="tableData"
+        :header-cell-style="{background:'#FAFAFA',color:'#505050'}"
+        border
+        style="width: 100%;height:  calc(100vh - 320px)"
+        @cell-click="cellClickHandler">
+        <el-table-column
+          align="center"
+          label="1"
+          prop="1"
+        >
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="2"
+          prop="2"
+        >
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="3"
+          prop="3">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="4"
+          prop="4">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="5"
+          prop="5">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="6"
+          prop="6">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="7"
+          prop="7">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="8"
+          prop="8">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="9"
+          prop="9">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="10"
+          prop="10">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="11"
+          prop="11">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="12"
+          prop="12">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="13"
+          prop="13">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="14"
+          prop="14">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="15"
+          prop="15">
+        </el-table-column>
+      </el-table>
+    </el-main>
+    <el-footer>
+      <div style="width: 260px; display: flex; align-items: center;margin-top: 5px">
+        <p>鍊硷細</p>
+        <el-input v-model="characterValue" size="small" style="flex: 1;"></el-input>
+      </div>
+    </el-footer>
+    <div style="margin-bottom: 10px;text-align: center">
+      <el-button icon="el-icon-plus" plain size="small" type="success" @click="addSaveHandler">娣诲姞</el-button>
+      <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editSaveHandler">淇敼</el-button>
+      <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delSaveHandler">鍒犻櫎</el-button>
+    </div>
+  </basic-container>
+</template>
+
+<script>
+import {getList, addSave, editSave, deleteSave} from "@/api/code/codeCharcter"
+import {gridCodeRule} from "@/api/code/codeCharcter"
+
+export default {
+  name: "prefixConfig",
+  data() {
+    return {
+      loading: false,
+      //涓嬫媺妗嗘暟缁�
+      queryReleasedList: [],
+      //涓嬫媺妗嗗垵濮嬫暟鎹暟缁�
+      characterReleasedList: [],
+      characterValue: "",
+      characterEditOldValue: "",
+      tableData: [],
+      select: "",
+      selectValue: ""
+    }
+  },
+  watch: {
+    select: {
+      handler(newV) {
+        // console.log(newV)
+      }
+    }
+  },
+  created() {
+    this.getCodeRule();
+  },
+  methods: {
+    cellClickHandler(row, column) {
+      this.characterValue = row[column.property];
+      this.characterEditOldValue = row[column.property]
+    },
+    async getCodeRule() {
+      try {
+        // 缂栫爜瑙勫垯宸插彂甯冩暟鎹簮
+        const res = await gridCodeRule({["conditionMap" + "[lcStatus_like]"]: "Released"});
+        this.characterReleasedList = res.data.data.records;
+        this.queryReleasedList = this.characterReleasedList;
+        this.select = this.characterReleasedList[0].oid;
+        this.loading = true;
+        const res2 = await getList({codeRuleId: this.select, chartType: "prefix", chartValue: this.characterValue});
+        this.tableData = res2.data.data;
+        this.loading = false;
+        // console.log("this.tableData", this.tableData);
+      } catch (error) {
+        this.$message.warning(error)
+      }
+    },
+    //缂栫爜瑙勫垯涓嬫媺妗嗘悳绱�
+    filterValue(query) {
+      console.log(query)
+      if (query !== "") {
+        this.queryReleasedList = this.characterReleasedList.filter(item => {
+          return item.name.includes(query.toString());
+        });
+      } else {
+        this.queryReleasedList = this.characterReleasedList;
+      }
+    },
+    selectHandler(val) {
+      this.selectValue = val;
+      this.characterValue = ""
+      this.getTableData()
+    },
+    getTableData() {
+      this.loading = true;
+      // const targetObject = this.characterReleasedList.find(obj => obj.oid === this.selectValue);
+      // const chartValue = targetObject.name;
+      getList({codeRuleId: this.select, chartType: "prefix", chartValue: this.characterValue}).then(res => {
+        console.log(res.data.data);
+        this.tableData = res.data.data;
+        this.loading = false;
+      });
+    },
+    addSaveHandler() {
+      if (!this.characterValue) {
+        this.$message.warning('璇峰~鍐欒娣诲姞鐨勫�硷紒');
+        return; // 鍒ゆ柇杈撳叆鍊�
+      }
+
+      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
+      if (!targetObject) {
+        return; // 鏌ユ壘瀵瑰簲typeText
+      }
+
+      const codeRuleCharacterVO = {
+        codeRuleId: this.select,
+        chartType: "prefix",
+        chartValue: this.characterValue,
+        chartTypeText: targetObject.name
+      };
+
+      addSave(codeRuleCharacterVO)
+        .then(res => {
+          this.$message.success(res.data.msg);
+          this.characterValue = "";
+          this.getTableData();
+        }).catch(error => {
+        this.$message.error('娣诲姞澶辫触');
+      });
+    },
+    editSaveHandler() {
+      if (this.characterEditOldValue === "") {
+        this.$message.warning('璇烽�夋嫨淇敼鐨勫�硷紒');
+        return; // 鍒ゆ柇閫夋嫨鍊�
+      }
+
+      if (this.characterValue === "") {
+        this.$message.warning('璇峰~鍐欒淇敼鐨勫�硷紒');
+        return; // 鍒ゆ柇杈撳叆鍊�
+      }
+
+      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
+      if (!targetObject) {
+        return; // 鏌ユ壘瀵瑰簲typeText
+      }
+
+      const codeRuleCharacterVO = {
+        codeRuleId: this.select,
+        chartType: "prefix",
+        chartValue: this.characterValue,
+        oldChartValue: this.characterEditOldValue,
+        chartTypeText: targetObject.name
+      };
+
+      editSave(codeRuleCharacterVO)
+        .then(res => {
+          this.$message.success(res.data.msg);
+          this.characterValue = "";
+          this.getTableData();
+        }).catch(error => {
+        this.$message.error('淇敼澶辫触');
+      });
+    },
+    delSaveHandler() {
+      //鍒ゆ柇閫夋嫨鏁版嵁characterEditOldValue
+      if (this.characterEditOldValue === "" || this.characterValue === "") {
+        this.$message.warning('璇烽�夋嫨瑕佸垹闄ょ殑鍊�');
+        return;
+      }
+
+      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
+      if (!targetObject) {
+        return; // 鏌ユ壘瀵瑰簲typeText
+      }
+      const codeRuleCharacterVO = {
+        codeRuleId: this.select,
+        chartType: "prefix",
+        chartValue: this.characterValue,
+        chartTypeText: targetObject.name
+      };
+
+      deleteSave(codeRuleCharacterVO)
+        .then(res => {
+          this.$message.success(res.data.msg);
+          this.characterValue = "";
+          this.getTableData();
+        }).catch(error => {
+        this.$message.error('鍒犻櫎澶辫触');
+      });
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.el-header {
+  padding: 0;
+}
+</style>
diff --git a/Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue b/Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue
index f983576..fc533eb 100644
--- a/Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue
+++ b/Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue
@@ -1,13 +1,289 @@
 <template>
+  <basic-container>
 
+    <el-header>
+      <div style="margin-bottom: 15px">
+        缂栫爜瑙勫垯锛�
+        <el-select v-model="select" :filter-method="filterValue" filterable placeholder="璇烽�夋嫨" size="small"
+                   @change="selectHandler">
+          <el-option v-for="(item,index) in queryReleasedList"
+                     :key="item.oid"
+                     :label="item.name"
+                     :value="item.oid"></el-option>
+        </el-select>
+      </div>
+    </el-header>
+    <el-main>
+      <el-table
+        v-loading="loading"
+        :data="tableData"
+        :header-cell-style="{background:'#FAFAFA',color:'#505050'}"
+        border
+        style="width: 100%;height:  calc(100vh - 320px)"
+        @cell-click="cellClickHandler">
+        <el-table-column
+          align="center"
+          label="1"
+          prop="1"
+        >
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="2"
+          prop="2"
+        >
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="3"
+          prop="3">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="4"
+          prop="4">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="5"
+          prop="5">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="6"
+          prop="6">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="7"
+          prop="7">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="8"
+          prop="8">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="9"
+          prop="9">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="10"
+          prop="10">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="11"
+          prop="11">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="12"
+          prop="12">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="13"
+          prop="13">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="14"
+          prop="14">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="15"
+          prop="15">
+        </el-table-column>
+      </el-table>
+    </el-main>
+    <el-footer>
+      <div style="width: 260px; display: flex; align-items: center;margin-top: 5px">
+        <p>鍊硷細</p>
+        <el-input v-model="characterValue" size="small" style="flex: 1;"></el-input>
+      </div>
+    </el-footer>
+    <div style="margin-bottom: 10px;text-align: center">
+      <el-button icon="el-icon-plus" plain size="small" type="success" @click="addSaveHandler">娣诲姞</el-button>
+      <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editSaveHandler">淇敼</el-button>
+      <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delSaveHandler">鍒犻櫎</el-button>
+    </div>
+  </basic-container>
 </template>
 
 <script>
+import {getList, addSave, editSave, deleteSave} from "@/api/code/codeCharcter"
+import {gridCodeRule} from "@/api/code/codeCharcter"
+
 export default {
-name: "usableCharacter"
+  name: "usableCharacter",
+  data() {
+    return {
+      loading: false,
+      //涓嬫媺妗嗘暟缁�
+      queryReleasedList: [],
+      //涓嬫媺妗嗗垵濮嬫暟鎹暟缁�
+      characterReleasedList: [],
+      characterValue: "",
+      characterEditOldValue: "",
+      tableData: [],
+      select: "",
+      selectValue: ""
+    }
+  },
+  watch: {
+    select: {
+      handler(newV) {
+        // console.log(newV)
+      }
+    }
+  },
+  created() {
+    this.getCodeRule();
+  },
+  methods: {
+    cellClickHandler(row, column) {
+      this.characterValue = row[column.property];
+      this.characterEditOldValue = row[column.property]
+    },
+    async getCodeRule() {
+      try {
+        // 缂栫爜瑙勫垯宸插彂甯冩暟鎹簮
+        const res = await gridCodeRule({["conditionMap" + "[lcStatus_like]"]: "Released"});
+        this.characterReleasedList = res.data.data.records;
+        this.queryReleasedList = this.characterReleasedList;
+        this.select = this.characterReleasedList[0].oid;
+        this.loading = true;
+        const res2 = await getList({codeRuleId: this.select, chartType: "charset", chartValue: this.characterValue});
+        this.tableData = res2.data.data;
+        this.loading = false;
+        // console.log("this.tableData", this.tableData);
+      } catch (error) {
+        this.$message.warning(error)
+      }
+    },
+    //缂栫爜瑙勫垯涓嬫媺妗嗘悳绱�
+    filterValue(query) {
+      console.log(query)
+      if (query !== "") {
+        this.queryReleasedList = this.characterReleasedList.filter(item => {
+          return item.name.includes(query.toString());
+        });
+      } else {
+        this.queryReleasedList = this.characterReleasedList;
+      }
+    },
+    selectHandler(val) {
+      this.selectValue = val;
+      this.characterValue = ""
+      this.getTableData()
+    },
+    getTableData() {
+      this.loading = true;
+      // const targetObject = this.characterReleasedList.find(obj => obj.oid === this.selectValue);
+      // const chartValue = targetObject.name;
+      getList({codeRuleId: this.select, chartType: "charset", chartValue: this.characterValue}).then(res => {
+        console.log(res.data.data);
+        this.tableData = res.data.data;
+        this.loading = false;
+      });
+    },
+    addSaveHandler() {
+      if (!this.characterValue) {
+        this.$message.warning('璇峰~鍐欒娣诲姞鐨勫�硷紒');
+        return; // 鍒ゆ柇杈撳叆鍊�
+      }
+
+      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
+      if (!targetObject) {
+        return; // 鏌ユ壘瀵瑰簲typeText
+      }
+
+      const codeRuleCharacterVO = {
+        codeRuleId: this.select,
+        chartType: "charset",
+        chartValue: this.characterValue,
+        chartTypeText: targetObject.name
+      };
+
+      addSave(codeRuleCharacterVO)
+        .then(res => {
+          this.$message.success(res.data.msg);
+          this.characterValue = "";
+          this.getTableData();
+        }).catch(error => {
+        this.$message.error('娣诲姞澶辫触');
+      });
+    },
+    editSaveHandler() {
+      if (this.characterEditOldValue === "") {
+        this.$message.warning('璇烽�夋嫨淇敼鐨勫�硷紒');
+        return; // 鍒ゆ柇閫夋嫨鍊�
+      }
+
+      if (this.characterValue === "") {
+        this.$message.warning('璇峰~鍐欒淇敼鐨勫�硷紒');
+        return; // 鍒ゆ柇杈撳叆鍊�
+      }
+
+      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
+      if (!targetObject) {
+        return; // 鏌ユ壘瀵瑰簲typeText
+      }
+
+      const codeRuleCharacterVO = {
+        codeRuleId: this.select,
+        chartType: "charset",
+        chartValue: this.characterValue,
+        oldChartValue: this.characterEditOldValue,
+        chartTypeText: targetObject.name
+      };
+
+      editSave(codeRuleCharacterVO)
+        .then(res => {
+          this.$message.success(res.data.msg);
+          this.characterValue = "";
+          this.getTableData();
+        }).catch(error => {
+        this.$message.error('淇敼澶辫触');
+      });
+    },
+    delSaveHandler() {
+      //鍒ゆ柇閫夋嫨鏁版嵁characterEditOldValue
+      if (this.characterEditOldValue === "" || this.characterValue === "") {
+        this.$message.warning('璇烽�夋嫨瑕佸垹闄ょ殑鍊�');
+        return;
+      }
+
+      const targetObject = this.characterReleasedList.find(obj => obj.oid === this.select);
+      if (!targetObject) {
+        return; // 鏌ユ壘瀵瑰簲typeText
+      }
+      const codeRuleCharacterVO = {
+        codeRuleId: this.select,
+        chartType: "charset",
+        chartValue: this.characterValue,
+        chartTypeText: targetObject.name
+      };
+
+      deleteSave(codeRuleCharacterVO)
+        .then(res => {
+          this.$message.success(res.data.msg);
+          this.characterValue = "";
+          this.getTableData();
+        }).catch(error => {
+        this.$message.error('鍒犻櫎澶辫触');
+      });
+    }
+  }
 }
 </script>
 
-<style scoped>
-
+<style lang="scss" scoped>
+.el-header {
+  padding: 0;
+}
 </style>

--
Gitblit v1.9.3