|
|
@@ -0,0 +1,333 @@
|
|
|
+<template>
|
|
|
+ <div class="template">
|
|
|
+ <MenuPage only-key="/personal_workbench/pinyin_correction_list" />
|
|
|
+
|
|
|
+ <div class="template-list">
|
|
|
+ <div id="query-form">
|
|
|
+ <el-form inline>
|
|
|
+ <el-form-item prop="storage_type" label="库类型">
|
|
|
+ <el-select v-model="form.storage_type">
|
|
|
+ <el-option v-for="item in storageTypeList" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="word" label="词汇">
|
|
|
+ <el-input v-model="form.word" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item class="search-box">
|
|
|
+ <el-button class="search-btn" type="primary" @click="queryList">查询</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <el-button type="primary" size="small" @click="visible = true"> 添加拼音校正 </el-button>
|
|
|
+ </div>
|
|
|
+ <el-table
|
|
|
+ v-if="tableHeight"
|
|
|
+ :data="list"
|
|
|
+ :max-height="tableHeight + 'px'"
|
|
|
+ @sort-change="handleSort"
|
|
|
+ :default-sort="dataSort"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ type="index"
|
|
|
+ label="序号"
|
|
|
+ width="60"
|
|
|
+ align="center"
|
|
|
+ :index="(form.cur_page - 1) * form.page_capacity + 1"
|
|
|
+ header-align="center"
|
|
|
+ class-name="index-column"
|
|
|
+ />
|
|
|
+ <el-table-column min-width="250" prop="id" label="编号" align="center" header-align="center" />
|
|
|
+ <el-table-column prop="word" label="词汇" align="center" header-align="center" sortable />
|
|
|
+ <el-table-column min-width="100" prop="pos_name" label="词性" align="center" header-align="center" sortable>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column min-width="100" prop="pinyin" label="拼音" align="center" header-align="center" sortable>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ min-width="100"
|
|
|
+ prop="pinyin_lt"
|
|
|
+ label="连体拼音"
|
|
|
+ align="center"
|
|
|
+ header-align="center"
|
|
|
+ sortable
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ min-width="100"
|
|
|
+ prop="storage_type"
|
|
|
+ label="库类型"
|
|
|
+ align="center"
|
|
|
+ header-align="center"
|
|
|
+ sortable
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ {{ storageTypeList.find((item) => item.value === row.storage_type).label }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
+ prop="create_time"
|
|
|
+ label="创建时间"
|
|
|
+ align="center"
|
|
|
+ width="180"
|
|
|
+ header-align="center"
|
|
|
+ sortable
|
|
|
+ />
|
|
|
+
|
|
|
+ <el-table-column prop="operation" label="操作" fixed="right" width="200" align="center" header-align="center">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <span class="link danger" @click="deleteTemplate(row)">删除</span>
|
|
|
+ <span class="link" @click="copyPinyin(row)" v-if="row.storage_type !== 2">写入全域库</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <PaginationPage ref="pagination" :total="total" @getList="queryTemplateList" />
|
|
|
+ </div>
|
|
|
+ <el-dialog
|
|
|
+ title="添加拼音校正"
|
|
|
+ :visible="visible"
|
|
|
+ width="460px"
|
|
|
+ :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-item prop="storage_type" label="库类型">
|
|
|
+ <el-select v-model="data.storage_type">
|
|
|
+ <el-option v-for="item in storageTypeList" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer">
|
|
|
+ <el-button @click="dialogClose">取消</el-button>
|
|
|
+ <el-button type="primary" :loading="loading" @click="addTemplate">确定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import MenuPage from '../common/menu.vue';
|
|
|
+import PaginationPage from '@/components/PaginationPage.vue';
|
|
|
+
|
|
|
+import { PageQueryPinyinCorrectionListAdmin } from '@/api/list.js';
|
|
|
+import {
|
|
|
+ toolAddPinyinCorrection,
|
|
|
+ toolDeletePinyinCorrection,
|
|
|
+ toolGetCXList,
|
|
|
+ toolCopyPinyinCorrectionToStorage,
|
|
|
+} from '@/api/pinyinCorrection';
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: 'PersonalWorkbenchPinyinCorrectionListManager',
|
|
|
+ components: {
|
|
|
+ MenuPage,
|
|
|
+ PaginationPage,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ list: [],
|
|
|
+ total: 0,
|
|
|
+ cur_page_begin_index: 0,
|
|
|
+
|
|
|
+ form: {
|
|
|
+ storage_type: null,
|
|
|
+ word: '',
|
|
|
+ page_capacity: 10,
|
|
|
+ cur_page: 1,
|
|
|
+ order_column_list: [],
|
|
|
+ },
|
|
|
+ dataSort: {},
|
|
|
+ tableHeight: 0,
|
|
|
+ rules: {
|
|
|
+ word: [{ required: true, message: '请输入词汇', trigger: 'blur' }],
|
|
|
+ // pos: [{ required: true, message: '请选择词性', trigger: 'change' }],
|
|
|
+ // pinyin: [{ required: true, message: '请输入拼音', trigger: 'blur' }],
|
|
|
+ },
|
|
|
+ data: {
|
|
|
+ storage_type: 0,
|
|
|
+ word: '',
|
|
|
+ pos: '',
|
|
|
+ pinyin: '',
|
|
|
+ pinyin_lt: '',
|
|
|
+ },
|
|
|
+ visible: false,
|
|
|
+ loading: false,
|
|
|
+ cxList: [],
|
|
|
+ storageTypeList: [
|
|
|
+ {
|
|
|
+ value: 0,
|
|
|
+ label: '个人库',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 1,
|
|
|
+ label: '机构库',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 2,
|
|
|
+ label: '全域库',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.getCXList();
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.tableHeight =
|
|
|
+ document.getElementsByClassName('app-container')[0].clientHeight -
|
|
|
+ document.getElementById('query-form').clientHeight -
|
|
|
+ document.getElementsByClassName('el-pagination')[0].clientHeight -
|
|
|
+ 10;
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ // 获取词性列表
|
|
|
+ getCXList() {
|
|
|
+ this.cxList = [];
|
|
|
+ toolGetCXList().then(({ cx_list }) => {
|
|
|
+ this.cxList = cx_list;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ handleSort(value) {
|
|
|
+ let dataSort = {
|
|
|
+ prop: value.prop,
|
|
|
+ order: value.order,
|
|
|
+ };
|
|
|
+ this.dataSort = dataSort;
|
|
|
+ this.queryList();
|
|
|
+ },
|
|
|
+ queryTemplateList(data) {
|
|
|
+ this.form.page_capacity = data.page_capacity;
|
|
|
+ this.form.cur_page = data.cur_page;
|
|
|
+ let order_column_list = [];
|
|
|
+ if (Object.keys(this.dataSort).length === 0) {
|
|
|
+ order_column_list = ['create_time:desc'];
|
|
|
+ } else {
|
|
|
+ if (this.dataSort.order == 'descending') {
|
|
|
+ order_column_list = [this.dataSort.prop + ':desc'];
|
|
|
+ } else if (this.dataSort.order == 'ascending') {
|
|
|
+ // 升序不传值
|
|
|
+ order_column_list = [this.dataSort.prop];
|
|
|
+ } else {
|
|
|
+ order_column_list = ['create_time:desc'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.form.order_column_list = order_column_list;
|
|
|
+ PageQueryPinyinCorrectionListAdmin(this.form).then(({ total_count, word_list }) => {
|
|
|
+ this.total = total_count;
|
|
|
+ this.list = word_list;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ queryList() {
|
|
|
+ this.queryTemplateList({ cur_page: 1, page_capacity: this.form.page_capacity });
|
|
|
+ },
|
|
|
+ // 关闭弹窗
|
|
|
+ dialogClose() {
|
|
|
+ this.visible = false;
|
|
|
+ },
|
|
|
+ // 确定创建拼音校正
|
|
|
+ addTemplate() {
|
|
|
+ this.loading = true;
|
|
|
+ toolAddPinyinCorrection(this.data)
|
|
|
+ .then((res) => {
|
|
|
+ this.loading = false;
|
|
|
+ this.visible = false;
|
|
|
+ if (res.status === 1) {
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: '创建成功!',
|
|
|
+ });
|
|
|
+ this.data = {
|
|
|
+ storage_type: 0,
|
|
|
+ word: '',
|
|
|
+ pos: '',
|
|
|
+ pinyin: '',
|
|
|
+ pinyin_lt: '',
|
|
|
+ };
|
|
|
+
|
|
|
+ this.queryList();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ this.loading = false;
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ // 删除词汇
|
|
|
+ deleteTemplate(row) {
|
|
|
+ this.$confirm('是否删除此词汇?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning',
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ toolDeletePinyinCorrection({ id: row.id }).then((res) => {
|
|
|
+ if (res.status === 1) {
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: '删除成功!',
|
|
|
+ });
|
|
|
+ this.queryTemplateList({ cur_page: this.form.cur_page, page_capacity: this.form.page_capacity });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .catch(() => {});
|
|
|
+ },
|
|
|
+ // 复制拼音到指定库
|
|
|
+ copyPinyin(row) {
|
|
|
+ this.$confirm('是否要将此词汇写入机构库吗?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning',
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ toolCopyPinyinCorrectionToStorage({ pinyin_correction_id: row.id, storage_type: 2 }).then((res) => {
|
|
|
+ if (res.status === 1) {
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: '操作成功!',
|
|
|
+ });
|
|
|
+ this.queryTemplateList({ cur_page: this.form.cur_page, page_capacity: this.form.page_capacity });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .catch(() => {});
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+@use '@/styles/mixin.scss' as *;
|
|
|
+
|
|
|
+.template {
|
|
|
+ @include page-base;
|
|
|
+ @include table-list;
|
|
|
+
|
|
|
+ #query-form {
|
|
|
+ display: flex;
|
|
|
+ gap: 10px;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ :deep .el-form-item--small.el-form-item {
|
|
|
+ margin-bottom: 5px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|