Browse Source

拼音校正添加任意词性,添加自动加声调

natasha 1 tháng trước cách đây
mục cha
commit
30da7cd00e

+ 210 - 19
src/views/personal_workbench/pinyin_correction_list/index.vue

@@ -69,27 +69,55 @@
     <el-dialog
       title="添加拼音校正"
       :visible="visible"
-      width="460px"
+      width="660px"
       :close-on-click-modal="false"
       class="add-chapter"
       @close="dialogClose"
     >
-      <el-form ref="form" :model="data" :rules="rules" label-width="80px">
-        <el-form-item label="词汇" prop="word">
-          <el-input ref="word" v-model="data.word" placeholder="请输入词汇" />
-        </el-form-item>
-        <el-form-item label="词性" prop="pos">
-          <el-select v-model="data.pos">
-            <el-option v-for="item in cxList" :key="item.pos" :label="item.pos_name" :value="item.pos" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="拼音" prop="pinyin">
-          <el-input ref="pinyin" v-model="data.pinyin" placeholder="多个拼音用,分割" />
-        </el-form-item>
-        <el-form-item label="连体拼音" prop="pinyin_lt">
-          <el-input ref="pinyin_lt" v-model="data.pinyin_lt" placeholder="请输入连体拼音" />
-        </el-form-item>
-      </el-form>
+      <div class="pinyin-correction-add">
+        <el-form ref="form" :model="data" :rules="rules" label-width="80px">
+          <el-form-item label="词汇" prop="word">
+            <el-input ref="word" v-model="data.word" placeholder="请输入词汇" />
+          </el-form-item>
+          <el-form-item label="词性" prop="pos">
+            <el-select v-model="data.pos">
+              <el-option v-for="item in cxList" :key="item.pos" :label="item.pos_name" :value="item.pos" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="拼音" prop="pinyin">
+            <el-input
+              ref="pinyin"
+              v-model="data.pinyin"
+              placeholder="多个拼音用,分割"
+              @blur="handleReplaceTone(data.pinyin, 'pinyin')"
+            />
+          </el-form-item>
+          <el-form-item label="连体拼音" prop="pinyin_lt">
+            <el-input
+              ref="pinyin_lt"
+              v-model="data.pinyin_lt"
+              placeholder="请输入连体拼音"
+              @blur="handleReplaceTone(data.pinyin_lt, 'pinyin_lt')"
+            />
+          </el-form-item>
+        </el-form>
+        <div class="yunmu">
+          <span>点击可复制</span>
+          <table border="1" class="yunmu-table">
+            <tr v-for="(item, index) in tableData" :key="'tableData' + index">
+              <td
+                v-for="(tdItem, tdIndex) in item"
+                :key="'td' + index + tdIndex"
+                :id="'td' + index + tdIndex"
+                @click="CopyToClipboard('td' + index + tdIndex)"
+                style="font-family: 'Sans-GBNPC'; background: #fff"
+              >
+                {{ tdItem }}
+              </td>
+            </tr>
+          </table>
+        </div>
+      </div>
       <div slot="footer">
         <el-button @click="dialogClose">取消</el-button>
         <el-button type="primary" :loading="loading" @click="addTemplate">确定</el-button>
@@ -140,6 +168,21 @@ export default {
       visible: false,
       loading: false,
       cxList: [],
+      tableData: [
+        ['ā', 'á', 'ǎ', 'à', 'a'],
+        ['ō', 'ó', 'ǒ', 'ò', 'o'],
+        ['ē', 'é', 'ě', 'è', 'e'],
+        ['ī', 'í', 'ǐ', 'ì', 'i'],
+        ['ū', 'ú', 'ǔ', 'ù', 'u'],
+        ['ǖ', 'ǘ', 'ǚ', 'ǜ', 'ü'],
+        ['Ā', 'Á', 'Â', 'À', 'A'],
+        ['Ō', 'Ó', 'Ô', 'Ò', 'O'],
+        ['Ē', 'É', 'Ê', 'È', 'E'],
+        ['Ī', 'Í', 'Î', 'Ì', 'I'],
+        ['Ū', 'Ú', 'Û', 'Ù', 'U'],
+        ['n', 'ń', 'ň', 'ǹ', 'n'],
+        ['m̄', 'ḿ', 'm', 'm̀', 'm'],
+      ],
     };
   },
   created() {
@@ -155,9 +198,14 @@ export default {
   methods: {
     // 获取词性列表
     getCXList() {
-      this.cxList = [];
+      this.cxList = [
+        {
+          pos: '',
+          pos_name: '任意',
+        },
+      ];
       toolGetCXList().then(({ cx_list }) => {
-        this.cxList = cx_list;
+        this.cxList = this.cxList.concat(cx_list);
       });
     },
     handleSort(value) {
@@ -245,6 +293,129 @@ export default {
         })
         .catch(() => {});
     },
+    CopyToClipboard(element) {
+      var doc = document,
+        text = doc.getElementById(element),
+        range,
+        selection;
+      if (doc.body.createTextRange) {
+        range = doc.body.createTextRange();
+        range.moveToElementText(text);
+        range.select();
+      } else if (window.getSelection) {
+        selection = window.getSelection();
+        range = doc.createRange();
+        range.selectNodeContents(text);
+        selection.removeAllRanges();
+        selection.addRange(range);
+      }
+      document.execCommand('copy');
+      this.$message({
+        message: '复制成功',
+        type: 'success',
+      });
+      window.getSelection().removeAllRanges();
+    },
+    handleReplaceTone(e, obj) {
+      let _this = this;
+      _this.$nextTick(() => {
+        let value = e;
+        _this.resArr = [];
+        if (value) {
+          let valueArr = [];
+          value.replace(/\s+/g, ' ');
+          valueArr = value.split(' ');
+          //   let reg = /\s+/g;
+          //   valueArr = value.split(reg);
+
+          valueArr.forEach((item, index) => {
+            this.handleValue(item);
+          });
+          let str = '';
+          setTimeout(() => {
+            _this.resArr.forEach((item) => {
+              str += ' ';
+              item.forEach((sItem) => {
+                if (sItem.number && sItem.con) {
+                  let number = Number(sItem.number);
+                  let con = sItem.con;
+                  let word = _this.addTone(number, con);
+                  str += word;
+                } else if (sItem.number) {
+                  str += sItem.number;
+                } else if (sItem.con) {
+                  str += ` ${sItem.con} `;
+                }
+              });
+            });
+
+            this.data[obj] = str.trim().replace(/\s+/g, '');
+          }, 10);
+        }
+      });
+    },
+    handleValue(valItem) {
+      let reg = /\d/;
+      let reg2 = /[A-Za-z]+\d/g;
+      let numList = [];
+      let valArr = valItem.split('');
+      if (reg2.test(valItem)) {
+        for (let i = 0; i < valArr.length; i++) {
+          let item = valItem[i];
+          if (reg.test(item)) {
+            let numIndex = numList.length == 0 ? 0 : numList[numList.length - 1].index;
+            let con = valItem.substring(numIndex, i);
+            con = con.replace(/\d/g, '');
+            let obj = {
+              index: i,
+              number: item,
+              con,
+              isTran: true,
+            };
+            numList.push(obj);
+          }
+        }
+      } else {
+        numList = [];
+      }
+      if (numList.length == 0) {
+        this.resArr.push([{ con: valItem }]);
+      } else {
+        this.resArr.push(numList);
+      }
+    },
+    addTone(number, con) {
+      let _this = this;
+      let zmList = ['a', 'o', 'e', 'i', 'u', 'v', 'A', 'O', 'E', 'I', 'U', 'n', 'm'];
+      if (number) {
+        for (let i = 0; i < zmList.length; i++) {
+          let zm = zmList[i];
+          if (con.indexOf(zm) > -1) {
+            let zm2 = _this.tableData[i][number - 1];
+            if (con.indexOf('iu') > -1) {
+              zm2 = _this.tableData[4][number - 1];
+              con = con.replace('u', zm2);
+            } else if (con.indexOf('ui') > -1) {
+              zm2 = _this.tableData[3][number - 1];
+              con = con.replace('i', zm2);
+            } else if (
+              con.indexOf('yv') > -1 ||
+              con.indexOf('jv') > -1 ||
+              con.indexOf('qv') > -1 ||
+              con.indexOf('xv') > -1
+            ) {
+              zm2 = _this.tableData[4][number - 1];
+              con = con.replace('v', zm2);
+            } else {
+              con = con.replace(zm, zm2);
+            }
+
+            break;
+          }
+        }
+      }
+      return con;
+    },
   },
 };
 </script>
@@ -267,4 +438,24 @@ export default {
     }
   }
 }
+
+.pinyin-correction-add {
+  display: flex;
+  gap: 30px;
+
+  .yunmu {
+    &-table {
+      width: 172px;
+
+      > tr {
+        td {
+          height: 26px;
+          font-size: 16px;
+          text-align: center;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+}
 </style>

+ 210 - 19
src/views/personal_workbench/pinyin_correction_list_manager/index.vue

@@ -84,27 +84,55 @@
     <el-dialog
       title="添加拼音校正"
       :visible="visible"
-      width="460px"
+      width="660px"
       :close-on-click-modal="false"
       class="add-chapter"
       @close="dialogClose"
     >
-      <el-form ref="form" :model="data" :rules="rules" label-width="80px">
-        <el-form-item label="词汇" prop="word">
-          <el-input ref="word" v-model="data.word" placeholder="请输入词汇" />
-        </el-form-item>
-        <el-form-item label="词性" prop="pos">
-          <el-select v-model="data.pos">
-            <el-option v-for="item in cxList" :key="item.pos" :label="item.pos_name" :value="item.pos" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="拼音" prop="pinyin">
-          <el-input ref="pinyin" v-model="data.pinyin" placeholder="多个拼音用,分割" />
-        </el-form-item>
-        <el-form-item label="连体拼音" prop="pinyin_lt">
-          <el-input ref="pinyin_lt" v-model="data.pinyin_lt" placeholder="请输入连体拼音" />
-        </el-form-item>
-      </el-form>
+      <div class="pinyin-correction-add">
+        <el-form ref="form" :model="data" :rules="rules" label-width="80px">
+          <el-form-item label="词汇" prop="word">
+            <el-input ref="word" v-model="data.word" placeholder="请输入词汇" />
+          </el-form-item>
+          <el-form-item label="词性" prop="pos">
+            <el-select v-model="data.pos">
+              <el-option v-for="item in cxList" :key="item.pos" :label="item.pos_name" :value="item.pos" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="拼音" prop="pinyin">
+            <el-input
+              ref="pinyin"
+              v-model="data.pinyin"
+              placeholder="多个拼音用,分割"
+              @blur="handleReplaceTone(data.pinyin, 'pinyin')"
+            />
+          </el-form-item>
+          <el-form-item label="连体拼音" prop="pinyin_lt">
+            <el-input
+              ref="pinyin_lt"
+              v-model="data.pinyin_lt"
+              placeholder="请输入连体拼音"
+              @blur="handleReplaceTone(data.pinyin_lt, 'pinyin_lt')"
+            />
+          </el-form-item>
+        </el-form>
+        <div class="yunmu">
+          <span>点击可复制</span>
+          <table border="1" class="yunmu-table">
+            <tr v-for="(item, index) in tableData" :key="'tableData' + index">
+              <td
+                v-for="(tdItem, tdIndex) in item"
+                :key="'td' + index + tdIndex"
+                :id="'td' + index + tdIndex"
+                @click="CopyToClipboard('td' + index + tdIndex)"
+                style="font-family: 'Sans-GBNPC'; background: #fff"
+              >
+                {{ tdItem }}
+              </td>
+            </tr>
+          </table>
+        </div>
+      </div>
       <div slot="footer">
         <el-button @click="dialogClose">取消</el-button>
         <el-button type="primary" :loading="loading" @click="addTemplate">确定</el-button>
@@ -179,6 +207,21 @@ export default {
           label: '全域库',
         },
       ],
+      tableData: [
+        ['ā', 'á', 'ǎ', 'à', 'a'],
+        ['ō', 'ó', 'ǒ', 'ò', 'o'],
+        ['ē', 'é', 'ě', 'è', 'e'],
+        ['ī', 'í', 'ǐ', 'ì', 'i'],
+        ['ū', 'ú', 'ǔ', 'ù', 'u'],
+        ['ǖ', 'ǘ', 'ǚ', 'ǜ', 'ü'],
+        ['Ā', 'Á', 'Â', 'À', 'A'],
+        ['Ō', 'Ó', 'Ô', 'Ò', 'O'],
+        ['Ē', 'É', 'Ê', 'È', 'E'],
+        ['Ī', 'Í', 'Î', 'Ì', 'I'],
+        ['Ū', 'Ú', 'Û', 'Ù', 'U'],
+        ['n', 'ń', 'ň', 'ǹ', 'n'],
+        ['m̄', 'ḿ', 'm', 'm̀', 'm'],
+      ],
     };
   },
   created() {
@@ -194,9 +237,14 @@ export default {
   methods: {
     // 获取词性列表
     getCXList() {
-      this.cxList = [];
+      this.cxList = [
+        {
+          pos: '',
+          pos_name: '任意',
+        },
+      ];
       toolGetCXList().then(({ cx_list }) => {
-        this.cxList = cx_list;
+        this.cxList = this.cxList.concat(cx_list);
       });
     },
     handleSort(value) {
@@ -304,6 +352,129 @@ export default {
         })
         .catch(() => {});
     },
+    CopyToClipboard(element) {
+      var doc = document,
+        text = doc.getElementById(element),
+        range,
+        selection;
+      if (doc.body.createTextRange) {
+        range = doc.body.createTextRange();
+        range.moveToElementText(text);
+        range.select();
+      } else if (window.getSelection) {
+        selection = window.getSelection();
+        range = doc.createRange();
+        range.selectNodeContents(text);
+        selection.removeAllRanges();
+        selection.addRange(range);
+      }
+      document.execCommand('copy');
+      this.$message({
+        message: '复制成功',
+        type: 'success',
+      });
+      window.getSelection().removeAllRanges();
+    },
+    handleReplaceTone(e, obj) {
+      let _this = this;
+      _this.$nextTick(() => {
+        let value = e;
+        _this.resArr = [];
+        if (value) {
+          let valueArr = [];
+          value.replace(/\s+/g, ' ');
+          valueArr = value.split(' ');
+          //   let reg = /\s+/g;
+          //   valueArr = value.split(reg);
+
+          valueArr.forEach((item, index) => {
+            this.handleValue(item);
+          });
+          let str = '';
+          setTimeout(() => {
+            _this.resArr.forEach((item) => {
+              str += ' ';
+              item.forEach((sItem) => {
+                if (sItem.number && sItem.con) {
+                  let number = Number(sItem.number);
+                  let con = sItem.con;
+                  let word = _this.addTone(number, con);
+                  str += word;
+                } else if (sItem.number) {
+                  str += sItem.number;
+                } else if (sItem.con) {
+                  str += ` ${sItem.con} `;
+                }
+              });
+            });
+
+            this.data[obj] = str.trim().replace(/\s+/g, '');
+          }, 10);
+        }
+      });
+    },
+    handleValue(valItem) {
+      let reg = /\d/;
+      let reg2 = /[A-Za-z]+\d/g;
+      let numList = [];
+      let valArr = valItem.split('');
+      if (reg2.test(valItem)) {
+        for (let i = 0; i < valArr.length; i++) {
+          let item = valItem[i];
+          if (reg.test(item)) {
+            let numIndex = numList.length == 0 ? 0 : numList[numList.length - 1].index;
+            let con = valItem.substring(numIndex, i);
+            con = con.replace(/\d/g, '');
+            let obj = {
+              index: i,
+              number: item,
+              con,
+              isTran: true,
+            };
+            numList.push(obj);
+          }
+        }
+      } else {
+        numList = [];
+      }
+      if (numList.length == 0) {
+        this.resArr.push([{ con: valItem }]);
+      } else {
+        this.resArr.push(numList);
+      }
+    },
+    addTone(number, con) {
+      let _this = this;
+      let zmList = ['a', 'o', 'e', 'i', 'u', 'v', 'A', 'O', 'E', 'I', 'U', 'n', 'm'];
+      if (number) {
+        for (let i = 0; i < zmList.length; i++) {
+          let zm = zmList[i];
+          if (con.indexOf(zm) > -1) {
+            let zm2 = _this.tableData[i][number - 1];
+            if (con.indexOf('iu') > -1) {
+              zm2 = _this.tableData[4][number - 1];
+              con = con.replace('u', zm2);
+            } else if (con.indexOf('ui') > -1) {
+              zm2 = _this.tableData[3][number - 1];
+              con = con.replace('i', zm2);
+            } else if (
+              con.indexOf('yv') > -1 ||
+              con.indexOf('jv') > -1 ||
+              con.indexOf('qv') > -1 ||
+              con.indexOf('xv') > -1
+            ) {
+              zm2 = _this.tableData[4][number - 1];
+              con = con.replace('v', zm2);
+            } else {
+              con = con.replace(zm, zm2);
+            }
+
+            break;
+          }
+        }
+      }
+      return con;
+    },
   },
 };
 </script>
@@ -326,4 +497,24 @@ export default {
     }
   }
 }
+
+.pinyin-correction-add {
+  display: flex;
+  gap: 30px;
+
+  .yunmu {
+    &-table {
+      width: 172px;
+
+      > tr {
+        td {
+          height: 26px;
+          font-size: 16px;
+          text-align: center;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+}
 </style>

+ 210 - 19
src/views/personal_workbench/pinyin_correction_list_org/index.vue

@@ -84,27 +84,55 @@
     <el-dialog
       title="添加拼音校正"
       :visible="visible"
-      width="460px"
+      width="660px"
       :close-on-click-modal="false"
       class="add-chapter"
       @close="dialogClose"
     >
-      <el-form ref="form" :model="data" :rules="rules" label-width="80px">
-        <el-form-item label="词汇" prop="word">
-          <el-input ref="word" v-model="data.word" placeholder="请输入词汇" />
-        </el-form-item>
-        <el-form-item label="词性" prop="pos">
-          <el-select v-model="data.pos">
-            <el-option v-for="item in cxList" :key="item.pos" :label="item.pos_name" :value="item.pos" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="拼音" prop="pinyin">
-          <el-input ref="pinyin" v-model="data.pinyin" placeholder="多个拼音用,分割" />
-        </el-form-item>
-        <el-form-item label="连体拼音" prop="pinyin_lt">
-          <el-input ref="pinyin_lt" v-model="data.pinyin_lt" placeholder="请输入连体拼音" />
-        </el-form-item>
-      </el-form>
+      <div class="pinyin-correction-add">
+        <el-form ref="form" :model="data" :rules="rules" label-width="80px">
+          <el-form-item label="词汇" prop="word">
+            <el-input ref="word" v-model="data.word" placeholder="请输入词汇" />
+          </el-form-item>
+          <el-form-item label="词性" prop="pos">
+            <el-select v-model="data.pos">
+              <el-option v-for="item in cxList" :key="item.pos" :label="item.pos_name" :value="item.pos" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="拼音" prop="pinyin">
+            <el-input
+              ref="pinyin"
+              v-model="data.pinyin"
+              placeholder="多个拼音用,分割"
+              @blur="handleReplaceTone(data.pinyin, 'pinyin')"
+            />
+          </el-form-item>
+          <el-form-item label="连体拼音" prop="pinyin_lt">
+            <el-input
+              ref="pinyin_lt"
+              v-model="data.pinyin_lt"
+              placeholder="请输入连体拼音"
+              @blur="handleReplaceTone(data.pinyin_lt, 'pinyin_lt')"
+            />
+          </el-form-item>
+        </el-form>
+        <div class="yunmu">
+          <span>点击可复制</span>
+          <table border="1" class="yunmu-table">
+            <tr v-for="(item, index) in tableData" :key="'tableData' + index">
+              <td
+                v-for="(tdItem, tdIndex) in item"
+                :key="'td' + index + tdIndex"
+                :id="'td' + index + tdIndex"
+                @click="CopyToClipboard('td' + index + tdIndex)"
+                style="font-family: 'Sans-GBNPC'; background: #fff"
+              >
+                {{ tdItem }}
+              </td>
+            </tr>
+          </table>
+        </div>
+      </div>
       <div slot="footer">
         <el-button @click="dialogClose">取消</el-button>
         <el-button type="primary" :loading="loading" @click="addTemplate">确定</el-button>
@@ -175,6 +203,21 @@ export default {
           label: '机构库',
         },
       ],
+      tableData: [
+        ['ā', 'á', 'ǎ', 'à', 'a'],
+        ['ō', 'ó', 'ǒ', 'ò', 'o'],
+        ['ē', 'é', 'ě', 'è', 'e'],
+        ['ī', 'í', 'ǐ', 'ì', 'i'],
+        ['ū', 'ú', 'ǔ', 'ù', 'u'],
+        ['ǖ', 'ǘ', 'ǚ', 'ǜ', 'ü'],
+        ['Ā', 'Á', 'Â', 'À', 'A'],
+        ['Ō', 'Ó', 'Ô', 'Ò', 'O'],
+        ['Ē', 'É', 'Ê', 'È', 'E'],
+        ['Ī', 'Í', 'Î', 'Ì', 'I'],
+        ['Ū', 'Ú', 'Û', 'Ù', 'U'],
+        ['n', 'ń', 'ň', 'ǹ', 'n'],
+        ['m̄', 'ḿ', 'm', 'm̀', 'm'],
+      ],
     };
   },
   created() {
@@ -190,9 +233,14 @@ export default {
   methods: {
     // 获取词性列表
     getCXList() {
-      this.cxList = [];
+      this.cxList = [
+        {
+          pos: '',
+          pos_name: '任意',
+        },
+      ];
       toolGetCXList().then(({ cx_list }) => {
-        this.cxList = cx_list;
+        this.cxList = this.cxList.concat(cx_list);
       });
     },
     handleSort(value) {
@@ -300,6 +348,129 @@ export default {
         })
         .catch(() => {});
     },
+    CopyToClipboard(element) {
+      var doc = document,
+        text = doc.getElementById(element),
+        range,
+        selection;
+      if (doc.body.createTextRange) {
+        range = doc.body.createTextRange();
+        range.moveToElementText(text);
+        range.select();
+      } else if (window.getSelection) {
+        selection = window.getSelection();
+        range = doc.createRange();
+        range.selectNodeContents(text);
+        selection.removeAllRanges();
+        selection.addRange(range);
+      }
+      document.execCommand('copy');
+      this.$message({
+        message: '复制成功',
+        type: 'success',
+      });
+      window.getSelection().removeAllRanges();
+    },
+    handleReplaceTone(e, obj) {
+      let _this = this;
+      _this.$nextTick(() => {
+        let value = e;
+        _this.resArr = [];
+        if (value) {
+          let valueArr = [];
+          value.replace(/\s+/g, ' ');
+          valueArr = value.split(' ');
+          //   let reg = /\s+/g;
+          //   valueArr = value.split(reg);
+
+          valueArr.forEach((item, index) => {
+            this.handleValue(item);
+          });
+          let str = '';
+          setTimeout(() => {
+            _this.resArr.forEach((item) => {
+              str += ' ';
+              item.forEach((sItem) => {
+                if (sItem.number && sItem.con) {
+                  let number = Number(sItem.number);
+                  let con = sItem.con;
+                  let word = _this.addTone(number, con);
+                  str += word;
+                } else if (sItem.number) {
+                  str += sItem.number;
+                } else if (sItem.con) {
+                  str += ` ${sItem.con} `;
+                }
+              });
+            });
+
+            this.data[obj] = str.trim().replace(/\s+/g, '');
+          }, 10);
+        }
+      });
+    },
+    handleValue(valItem) {
+      let reg = /\d/;
+      let reg2 = /[A-Za-z]+\d/g;
+      let numList = [];
+      let valArr = valItem.split('');
+      if (reg2.test(valItem)) {
+        for (let i = 0; i < valArr.length; i++) {
+          let item = valItem[i];
+          if (reg.test(item)) {
+            let numIndex = numList.length == 0 ? 0 : numList[numList.length - 1].index;
+            let con = valItem.substring(numIndex, i);
+            con = con.replace(/\d/g, '');
+            let obj = {
+              index: i,
+              number: item,
+              con,
+              isTran: true,
+            };
+            numList.push(obj);
+          }
+        }
+      } else {
+        numList = [];
+      }
+      if (numList.length == 0) {
+        this.resArr.push([{ con: valItem }]);
+      } else {
+        this.resArr.push(numList);
+      }
+    },
+    addTone(number, con) {
+      let _this = this;
+      let zmList = ['a', 'o', 'e', 'i', 'u', 'v', 'A', 'O', 'E', 'I', 'U', 'n', 'm'];
+      if (number) {
+        for (let i = 0; i < zmList.length; i++) {
+          let zm = zmList[i];
+          if (con.indexOf(zm) > -1) {
+            let zm2 = _this.tableData[i][number - 1];
+            if (con.indexOf('iu') > -1) {
+              zm2 = _this.tableData[4][number - 1];
+              con = con.replace('u', zm2);
+            } else if (con.indexOf('ui') > -1) {
+              zm2 = _this.tableData[3][number - 1];
+              con = con.replace('i', zm2);
+            } else if (
+              con.indexOf('yv') > -1 ||
+              con.indexOf('jv') > -1 ||
+              con.indexOf('qv') > -1 ||
+              con.indexOf('xv') > -1
+            ) {
+              zm2 = _this.tableData[4][number - 1];
+              con = con.replace('v', zm2);
+            } else {
+              con = con.replace(zm, zm2);
+            }
+
+            break;
+          }
+        }
+      }
+      return con;
+    },
   },
 };
 </script>
@@ -322,4 +493,24 @@ export default {
     }
   }
 }
+
+.pinyin-correction-add {
+  display: flex;
+  gap: 30px;
+
+  .yunmu {
+    &-table {
+      width: 172px;
+
+      > tr {
+        td {
+          height: 26px;
+          font-size: 16px;
+          text-align: center;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+}
 </style>