From 0f5e64c3d3cb194b6b853b80524a81392b5d04d1 Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期三, 21 六月 2023 09:58:42 +0800
Subject: [PATCH] Merge branch 'develop' of http://116.62.18.175:6699/r/~yxh/smartor-web into yxh01

---
 src/views/repositoryai/verbaltrick/index.vue            |  863 ++++++++++
 vue.config.js                                           |    4 
 src/views/knowledge/questionnaire/compilequer/index.vue |   74 
 src/views/patient/patient/index.vue                     |  574 ++---
 src/views/knowledge/questionbank/index.vue              |  773 +++-----
 src/views/knowledge/education/index.vue                 |  114 +
 src/api/patient/homepage.js                             |    8 
 src/api/system/label.js                                 |   87 
 src/views/system/user/index.vue                         |  383 +++-
 src/views/knowledge/education/compilequer/video.js      |   71 
 src/main.js                                             |   28 
 src/views/system/label/index.vue                        |  473 +++--
 package.json                                            |    7 
 src/views/Intelligentcenter/centercontrol/index.vue     |  236 ++
 src/views/knowledge/questionnaire/index.vue             |  104 +
 src/views/repositoryai/intention/index.vue              |  863 ++++++++++
 src/views/knowledge/education/compilequer/index.vue     |  389 ++-
 src/views/repositoryai/templateku/index.vue             |   17 
 18 files changed, 3,770 insertions(+), 1,298 deletions(-)

diff --git a/package.json b/package.json
index 70a1102..d78f317 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,7 @@
     "@riophae/vue-treeselect": "0.4.0",
     "axios": "0.24.0",
     "clipboard": "2.0.8",
-    "core-js": "3.25.3",
+    "core-js": "^3.25.3",
     "cos-js-sdk-v5": "^1.4.18",
     "dayjs": "^1.11.7",
     "echarts": "^5.4.2",
@@ -47,11 +47,15 @@
     "file-saver": "^2.0.5",
     "fuse.js": "6.4.3",
     "highlight.js": "9.18.5",
+    "jquery": "^3.7.0",
     "js-beautify": "1.13.0",
     "js-cookie": "3.0.1",
     "jsencrypt": "3.0.0-rc.1",
     "nprogress": "0.2.0",
     "quill": "1.3.7",
+    "quill-image-drop-module": "^1.0.3",
+    "quill-image-resize": "^3.0.9",
+    "quill-image-resize-module": "^3.0.0",
     "screenfull": "5.0.2",
     "sortablejs": "1.10.2",
     "vue": "2.6.12",
@@ -59,6 +63,7 @@
     "vue-count-to": "1.0.13",
     "vue-cropper": "0.5.5",
     "vue-meta": "2.4.0",
+    "vue-quill-editor": "^3.0.6",
     "vue-router": "3.4.9",
     "vuedraggable": "2.24.3",
     "vuex": "3.6.0",
diff --git a/src/api/patient/homepage.js b/src/api/patient/homepage.js
index 6f3bf90..8ede6e1 100644
--- a/src/api/patient/homepage.js
+++ b/src/api/patient/homepage.js
@@ -17,14 +17,6 @@
     data: data
   })
 };
-// 鏍囩鏌ヨ鎮h�呭垪琛�
-export function taglistpatient(data) {
-  return request({
-    url: '/smartor/patarchive/patTagByContion',
-    method: 'post',
-    data: data
-  })
-};
 // 淇敼鎮h�呮。妗�
 export function alterpatient(data) {
   return request({
diff --git a/src/api/system/label.js b/src/api/system/label.js
index 6e68fc6..2ec7c9e 100644
--- a/src/api/system/label.js
+++ b/src/api/system/label.js
@@ -2,9 +2,29 @@
 import { parseStrEmpty } from "@/utils/ruoyi";//澶勭悊瀛楃涓�,und,null杞崲涓�'';
 
 // 淇敼鏍囩
-export function amendtag(data) {
+export function toamendtag(data) {
   return request({
     url: '/base/tag',
+    method: 'put',
+    data: data
+  })
+};
+// 鏍囩鐘舵�佷慨鏀�
+export function changetagcategory(tagid, isupload) {
+  const data = {
+    tagid,
+    isupload
+  }
+  return request({
+    url: '/base/tag',
+    method: 'put',
+    data: data
+  })
+}
+// 淇敼鏍囩绫诲埆
+export function toamendtagcategory(data) {
+  return request({
+    url: '/system/tagcategory',
     method: 'put',
     data: data
   })
@@ -17,16 +37,25 @@
       data: data
     })
   };
+  // 鏂板鏍囩绫诲埆
+export function addtagcategory(data) {
+  return request({
+    url: '/system/tagcategory',
+    method: 'post',
+    data: data
+  })
+};
+
 
 /**
  * 
- * @param {鏍囩id} userId 
+ * @param {鏍囩id} tagid 
  * 鑾峰彇鏍囩璇︽儏
  * @returns 
  */
-export function detailstag(userId) {
+export function detailstag(tagid) {
     return request({
-      url: '/base/tag/'+ userId,
+      url: '/base/tag/'+ tagid,
       method: 'get',
     })
   };
@@ -34,17 +63,34 @@
   
   /**
    * 
-   * @param {鏍囩id} userId 
+   * @param {鏍囩id} tagid 
    * 鍒犻櫎鏍囩
    * @returns 
    */
-export function deletetag(userId) {
+export function deletetag(tagids) {
     return request({
-      url: '/base/tag/' + userId,
+      url: '/base/tag/' + tagids,
       method: 'delete',
     })
   };
-  // 瀵煎嚭鏍囩鍒楄〃
+    /**
+   * 
+   * @param {鏍囩id} tagid 
+   * 鍒犻櫎鏍囩鍒嗙被
+   * @returns 
+   */
+export function deletetagcategory(tagid) {
+  return request({
+    url: '/system/tagcategory/' + tagid,
+    method: 'delete',
+  })
+};
+  /**
+   * 
+   * @param {*} data 
+   * 瀵煎嚭鏍囩鍒楄〃
+   * @returns 
+   */
 export function exporttag(data) {
     return request({
       url: '/base/tag/export',
@@ -52,11 +98,28 @@
       data: data
     })
   };
-  // 鏌ヨ鏍囩鍒楄〃
-export function listtag(query) {
+  /**
+   * 
+   * @param {object}  
+   * 鏌ヨ鏍囩鍒楄〃
+   * @returns 
+   */
+export function listtag(data) {
     return request({
       url: '/base/tag/list',
-      method: 'get',
-      params: query
+      method: 'post',
+      data: data
+    })
+  };
+  /**
+   * @param {name}
+   * 鑾峰彇鏍囩鍒嗙被鍒楄〃
+   * @returns
+   */
+  export function tagclassifylist(params) {
+    return request({
+      url: '/system/tagcategory/baseTagCategoryByName',
+      method: 'post',
+      params: params,
     })
   };
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
index c95a818..3bb7dce 100644
--- a/src/main.js
+++ b/src/main.js
@@ -14,6 +14,32 @@
 import directive from './directive' // directive
 import plugins from './plugins' // plugins
 import { download } from '@/utils/request'
+ //寮曞叆quill-editor缂栬緫鍣�
+ import VueQuillEditor from 'vue-quill-editor'
+ // require styles 寮曞叆鏍峰紡
+ import 'quill/dist/quill.core.css'
+ import 'quill/dist/quill.snow.css'
+ import 'quill/dist/quill.bubble.css'
+ Vue.use(VueQuillEditor)
+
+ //瀹炵幇quill-editor缂栬緫鍣ㄦ嫋鎷戒笂浼犲浘鐗�
+//  import Quill from 'quill'
+import {Quill} from 'vue-quill-editor' 
+ window.Quill = Quill;
+ import imageResize from 'quill-image-resize'
+//  const scriptEl = document.createElement('script'); 
+// 	scriptEl.charset = 'utf-8' 
+// 	scriptEl.src =  './image-resize.min.js' 
+// 	const head = document.head || document.getElementsByTagName('head')[0]; 
+// 	head.appendChild(scriptEl);
+
+ import { ImageDrop } from 'quill-image-drop-module'
+//  import imageResize from 'quill-image-resize'
+ Quill.register('modules/imageDrop', ImageDrop)
+//  import imageResize from 'quill-image-resize-module'
+ Quill.register('modules/imageResize', imageResize)
+ //瀹炵幇quill-editor缂栬緫鍣ㄨ皟鏁村浘鐗囧昂瀵�
+//  Quill.register('modules/imageResize', ImageResize)
 
 import './assets/icons' // icon
 import './permission' // permission control
@@ -77,6 +103,8 @@
 Vue.use(VueMeta)
 DictData.install()
 Vue.use(components)
+// Vue.use(VueQuillEditor)
+
 
 /**
  * If you don't want to use mock-server
diff --git a/src/views/Intelligentcenter/centercontrol/index.vue b/src/views/Intelligentcenter/centercontrol/index.vue
new file mode 100644
index 0000000..221339b
--- /dev/null
+++ b/src/views/Intelligentcenter/centercontrol/index.vue
@@ -0,0 +1,236 @@
+<template>
+  <div class="educationmanagement">
+    <!-- 宸︿晶鏍� -->
+    <div class="sidecolumn">
+      <el-menu
+        default-active="2"
+        class="el-menu-vertical-demo"
+        @open="handleOpen"
+        @close="handleClose"
+        background-color="#545c64"
+        text-color="#fff"
+        active-text-color="#ffd04b"
+      >
+        <el-submenu index="1">
+          <template slot="title">
+            <i class="el-icon-location"></i>
+            <span>瀵艰埅涓�</span>
+          </template>
+          <el-menu-item-group>
+            <template slot="title">鍒嗙粍涓�</template>
+            <el-menu-item index="1-1">閫夐」1</el-menu-item>
+            <el-menu-item index="1-2">閫夐」2</el-menu-item>
+          </el-menu-item-group>
+          <el-menu-item-group title="鍒嗙粍2">
+            <el-menu-item index="1-3">閫夐」3</el-menu-item>
+          </el-menu-item-group>
+          <el-submenu index="1-4">
+            <template slot="title">閫夐」4</template>
+            <el-menu-item index="1-4-1">閫夐」1</el-menu-item>
+          </el-submenu>
+        </el-submenu>
+        <el-menu-item index="2">
+          <i class="el-icon-menu"></i>
+          <span slot="title">瀵艰埅浜�</span>
+        </el-menu-item>
+        <el-menu-item index="3" disabled>
+          <i class="el-icon-document"></i>
+          <span slot="title">瀵艰埅涓�</span>
+        </el-menu-item>
+        <el-menu-item index="4">
+          <i class="el-icon-setting"></i>
+          <span slot="title">瀵艰埅鍥�</span>
+        </el-menu-item>
+      </el-menu>
+    </div>
+    <!-- 鍙充晶鏁版嵁 -->
+    <div class="leftvlue">
+      <div class="leftvalu-top">
+        <el-tabs
+          v-model="editableTabsValue"
+          type="card"
+          editable
+          @edit="handleTabsEdit"
+        >
+          <el-tab-pane
+            :key="item.name"
+            v-for="(item, index) in editableTabs"
+            :label="item.title"
+            :name="item.name"
+          >
+            {{ item.content }}
+          </el-tab-pane>
+        </el-tabs>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "education",
+
+  data() {
+    return {
+      editableTabsValue: "2",
+      editableTabs: [
+        {
+          title: "Tab 1",
+          name: "1",
+          content: "Tab 1 content",
+        },
+        {
+          title: "Tab 2",
+          name: "2",
+          content: "Tab 2 content",
+        },
+      ],
+      tabIndex: 2,
+    };
+  },
+
+  methods: {
+    handleClose(key, keyPath) {
+      console.log(key, keyPath);
+    },
+    handleOpen(key, keyPath) {
+      console.log(key, keyPath);
+    },
+    handleTabsEdit(targetName, action) {
+      if (action === "add") {
+        let newTabName = ++this.tabIndex + "";
+        this.editableTabs.push({
+          title: "New Tab",
+          name: newTabName,
+          content: "New Tab content",
+        });
+        this.editableTabsValue = newTabName;
+      }
+      if (action === "remove") {
+        let tabs = this.editableTabs;
+        let activeName = this.editableTabsValue;
+        if (activeName === targetName) {
+          tabs.forEach((tab, index) => {
+            if (tab.name === targetName) {
+              let nextTab = tabs[index + 1] || tabs[index - 1];
+              if (nextTab) {
+                activeName = nextTab.name;
+              }
+            }
+          });
+        }
+
+        this.editableTabsValue = activeName;
+        this.editableTabs = tabs.filter((tab) => tab.name !== targetName);
+      }
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.educationmanagement {
+  display: flex;
+}
+.sidecolumn {
+  width: 300px;
+  min-height: 100vh;
+  text-align: center;
+  //   display: flex;
+  margin-top: 20px;
+  margin: 20px;
+  padding: 10px;
+  background: #edf1f7;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+  .sidecolumn-top {
+    display: flex;
+    justify-content: space-between;
+    .top-wj {
+      font-size: 20px;
+    }
+    .top-tj {
+      font-size: 18px;
+
+      color: rgb(0, 89, 255);
+      cursor: pointer;
+    }
+  }
+  .center-ss {
+    margin-top: 30px;
+    .input-with-select {
+      height: 40px !important;
+    }
+  }
+  .bottom-fl {
+    margin-top: 30px;
+    display: center !important;
+  }
+}
+.qrcode-dialo {
+  text-align: center;
+  //   display: flex;
+  margin: 20px;
+  padding: 30px;
+  background: #edf1f7;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+  .qrcode-text {
+    font-size: 20px;
+    span {
+      margin-left: 20px;
+    }
+  }
+  .qrcode-img {
+    width: 300px;
+    height: 400px;
+  }
+}
+::v-deep.el-tabs--left,
+.el-tabs--right {
+  overflow: hidden;
+  align-items: center;
+  display: flex;
+}
+::v-deep.el-input--medium .el-input__inner {
+  height: 40px !important;
+}
+::v-deep.el-tabs--right .el-tabs__active-bar.is-right {
+  height: 40px;
+  width: 5px;
+  left: 0;
+}
+::v-deep.el-tabs--right .el-tabs__item.is-right {
+  display: block;
+  font-size: 20px;
+}
+.leftvlue {
+  //   display: flex;
+  //   flex: 1;
+  width: 80%;
+  margin-top: 20px;
+  //   margin: 20px;
+  padding: 30px;
+  background: #ffff;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+  .mulsz {
+    font-size: 20px;
+  }
+}
+.button-text {
+  color: rgb(70, 204, 238);
+}
+.button-textck {
+  color: rgb(39, 167, 67);
+}
+.button-textxg {
+  color: rgb(35, 81, 233);
+}
+.button-textsc {
+  color: rgb(235, 23, 23);
+}
+</style>
diff --git a/src/views/knowledge/education/compilequer/index.vue b/src/views/knowledge/education/compilequer/index.vue
index 81ced24..3df9ce1 100644
--- a/src/views/knowledge/education/compilequer/index.vue
+++ b/src/views/knowledge/education/compilequer/index.vue
@@ -44,7 +44,7 @@
               multiple
               filterable
               placeholder="璇烽�夋嫨鍒嗙被"
-            > 
+            >
               <el-option
                 class="ruleFormaa"
                 v-for="item in options"
@@ -90,164 +90,116 @@
       <!-- 瀹f暀鍐呭 -->
       <div v-if="Editprogress == 2">
         <div class="leftvlue-jbxx">瀹f暀鍐呭</div>
-        <el-form
-          :model="ruleForm"
-          :rules="rules"
-          ref="ruleForm"
-          label-width="100px"
-          class="demo-ruleForm"
-        >
-          <el-form-item label="瀹f暀浠嬬粛" prop="desc">
-            <el-cascader
-              class="demo-cascader"
-              v-model="ruleForm.templatevalue"
-              :options="asoptions"
-              :props="{ expandTrigger: 'hover' }"
-            ></el-cascader>
-            <el-select v-model="ruleForm.data2" placeholder="鎻愪氦鎻愮ず">
-              <el-option
-                v-for="item in asoptions"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value"
-              >
-              </el-option>
-            </el-select>
-            <div style="display: flex; margin-top: 20px">
-              <div class="PreviewTemplate" @click="PreviewTemplate()">
-                棰勮妯$増
-              </div>
-              <el-button type="primary">纭寮曠敤</el-button>
-            </div>
-          </el-form-item>
-          <el-form-item label="娲诲姩褰㈠紡" prop="desc">
-            <el-input type="textarea" v-model="ruleForm.desc"></el-input>
-          </el-form-item>
-          <el-form-item label="娲诲姩褰㈠紡" prop="desc">
-            <el-input type="textarea" v-model="ruleForm.desc"></el-input>
-            <div class="addtopic">
-              <el-select
-                v-model="addvalue"
-                @change="changeaddtopic"
-                class="addtopic-input"
-              >
-                <el-option
-                  v-for="item in options"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-                >
-                </el-option>
-              </el-select>
-            </div>
-
-            <div class="presentation">
-              <div class="presentation-left">
-                <el-table v-loading="loading" :data="userList">
-                  <el-table-column
-                    label="搴忓彿"
-                    align="center"
-                    key="userid"
-                    prop="userid"
-                  />
-                  <el-table-column
-                    label="棰樼洰"
-                    align="center"
-                    key="userName"
-                    prop="userName"
-                    :show-overflow-tooltip="true"
-                  />
-
-                  <el-table-column
-                    label="鎿嶄綔"
-                    align="center"
-                    width="300"
-                    class-name="small-padding fixed-width"
-                  >
-                    <template slot-scope="scope">
-                      <!-- <el-button
-                        size="medium"
-                        type="text"
-                        @click="goQRCode(scope.row)"
-                        v-hasPermi="['system:user:edit']"
-                      >
-                        <span class="button-text"
-                          ><i class="el-icon-edit"></i>浜岀淮鐮�</span
-                        ></el-button
-                      >
-                      <el-button
-                        size="medium"
-                        type="text"
-                        @click="ViewQuestionnaire(scope.row)"
-                        v-hasPermi="['system:user:edit']"
-                        ><span class="button-textck"
-                          ><i class="el-icon-edit"></i>鏌ョ湅</span
-                        ></el-button
-                      > -->
-                      <el-button
-                        size="medium"
-                        type="text"
-                        @click="handleUpdate(scope.row)"
-                        v-hasPermi="['system:user:edit']"
-                        ><span class="button-textxg"
-                          ><i class="el-icon-scissors"></i>淇敼</span
-                        ></el-button
-                      >
-                      <el-button
-                        size="medium"
-                        type="text"
-                        @click="handleDelete(scope.row)"
-                        v-hasPermi="['system:user:remove']"
-                        ><span class="button-textsc"
-                          ><i class="el-icon-delete"></i>鍒犻櫎</span
-                        ></el-button
-                      >
-                    </template>
-                  </el-table-column>
-                </el-table>
-
-                <pagination
-                  v-show="total > 0"
-                  :total="total"
-                  :page.sync="queryParams.pageNum"
-                  :limit.sync="queryParams.pageSize"
-                  @pagination="getList"
-                />
-              </div>
-              <div class="presentation-right">
-                <div class="headline">棰樼洰璁剧疆璇︽儏</div>
-                <div>棰樼洰鏍囬锛�<span>杩欏鏈烘瀯鎬庝箞鏍�</span></div>
-                <div>鏄惁蹇呯瓟锛�<span>鏄�</span> 鏄惁闅愯棌锛�<span>鍚�</span></div>
-                <div class="headline">閫夐」璁剧疆</div>
-                <div>
-                  <p>閫夐」1:<span>鍖荤枟鏈烘瀯</span></p>
-                  <p>
-                    濉啓鏄庣粏锛�<span>鏃�</span> 寮傚父閫夐」锛�<span>鏃�</span>
-                    鍒嗗�硷細<span>3</span>
-                  </p>
-                  <p>閫変腑鎻愮ず锛�<span>杩欎釜棰樻湁鐐归毦璇锋敞鎰�</span></p>
-                  <p>閫変腑璺宠浆锛�<span>鏃�</span></p>
-                </div>
-              </div>
-            </div>
-          </el-form-item>
-          <el-form-item>
-            <el-button type="success" @click="submitForm('ruleForm')"
-              >绔嬪嵆鍒涘缓</el-button
+        <div>
+          <div>
+            <el-button @click="openContent" type="primary">鏌ョ湅鍏冪礌</el-button>
+          </div>
+          <div id="quillEditorQiniu">
+            <!-- 鍩轰簬elementUi鐨勪笂浼犵粍浠� el-upload begin-->
+            <el-upload
+              class="avatar-uploader"
+              :action="uploadImgUrl"
+              :accept="'image/*,video/*'"
+              :show-file-list="false"
+              :on-success="uploadEditorSuccess"
+              :on-error="uploadEditorError"
+              :before-upload="beforeEditorUpload"
+              :headers="headers"
             >
-            <el-button type="primary" @click="laststep()">涓婁竴姝�</el-button>
-            <el-button @click="resetForm('ruleForm')">閲嶇疆</el-button>
-          </el-form-item>
-        </el-form>
+            </el-upload>
+            <!-- 鍩轰簬elementUi鐨勪笂浼犵粍浠� el-upload end-->
+            <quill-editor
+              class="editor"
+              v-model="content"
+              ref="customQuillEditor"
+              :options="editorOption"
+            >
+            </quill-editor>
+          </div>
+        </div>
       </div>
     </div>
   </div>
 </template>
 
 <script>
+import { quillEditor } from "vue-quill-editor";
+// import * as Quill from "quill";
+import Quill from "quill";
+
+// 杩欓噷寮曞叆淇敼杩囩殑video妯″潡骞舵敞鍐�
+import Video from "./video";
+Quill.register(Video, true);
+//鑾峰彇鐧诲綍token锛屽紩鍏ユ枃浠讹紝濡傛灉鍙槸绠�鍗曟祴璇曪紝娌℃湁涓婁紶鏂囦欢鏄惁鐧诲綍鐨勯檺鍒剁殑璇濓紝
+//杩欎釜token鍙互涓嶇敤鑾峰彇锛屾枃浠跺彲浠ヤ笉寮曞叆锛屾妸涓婇潰瀵瑰簲鐨勪笂浼犳枃浠舵惡甯﹁姹傚ご  :headers="headers" 杩欎釜浠g爜鍒犳帀鍗冲彲
+import { getToken } from "@/utils/auth";
+const toolbarOptions = [
+  ["bold", "italic", "underline", "strike"], // toggled buttons
+  ["blockquote", "code-block"],
+
+  [{ header: 1 }, { header: 2 }], // custom button values
+  [{ list: "ordered" }, { list: "bullet" }],
+  [{ script: "sub" }, { script: "super" }], // superscript/subscript
+  [{ indent: "-1" }, { indent: "+1" }], // outdent/indent
+  [{ direction: "rtl" }], // text direction
+
+  [{ size: ["small", false, "large", "huge"] }], // custom dropdown
+  [{ header: [1, 2, 3, 4, 5, 6, false] }],
+
+  [{ color: [] }, { background: [] }], // dropdown with defaults from theme
+  [{ font: [] }],
+  [{ align: [] }],
+  ["link", "image", "video"],
+  ["clean"], // remove formatting button
+];
+
 export default {
   data() {
     return {
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      uploadImgUrl: "/v1/admin/common/upload",
+      uploadUrlPath: "娌℃湁鏂囦欢涓婁紶",
+      quillUpdateImg: false,
+      content: "", //鏈�缁堜繚瀛樼殑鍐呭
+      editorOption: {
+        placeholder: "浣犳兂璇翠粈涔堬紵",
+        modules: {
+          imageResize: {
+            displayStyles: {
+              backgroundColor: "black",
+              border: "none",
+              color: "white",
+            },
+            modules: ["Resize", "DisplaySize", "Toolbar"],
+          },
+          toolbar: {
+            container: toolbarOptions, // 宸ュ叿鏍�
+            handlers: {
+              image: function (value) {
+                if (value) {
+                  document
+                    .querySelector("#quillEditorQiniu .avatar-uploader input")
+                    .click();
+                } else {
+                  this.quill.format("image", false);
+                }
+              },
+              video: function (value) {
+                if (value) {
+                  document
+                    .querySelector("#quillEditorQiniu .avatar-uploader input")
+                    .click();
+                } else {
+                  this.quill.format("video", false);
+                }
+              },
+            },
+          },
+        },
+      },
+
       sidecolumnrabs: "left", //鏂瑰悜
       Editprogress: 1, //缂栬緫杩涘害
       currentVersion: "1.2.3", //褰撳墠鐗堟湰
@@ -669,6 +621,13 @@
   },
 
   created() {},
+  watch: {
+    content(newVal, oldVal) {
+      //this.$emit('input', newVal);
+      console.log(newVal);
+      console.log(oldVal);
+    },
+  },
 
   methods: {
     submitForm(formName) {
@@ -714,6 +673,58 @@
     },
     resetForm(formName) {
       this.$refs[formName].resetFields();
+    },
+
+    //涓婁紶鍥剧墖涔嬪墠async
+    beforeEditorUpload(res, file) {
+      //鏄剧ず涓婁紶鍔ㄧ敾
+      this.quillUpdateImg = true;
+      //  const res1 = await uploadImage()
+      // console.log(res1,'=====');
+      // this.$emit('before',res, file)
+      console.log(res);
+      console.log(file);
+    },
+    // 涓婁紶鍥剧墖鎴愬姛
+    uploadEditorSuccess(res, file) {
+      console.log("涓婁紶鎴愬姛");
+      // this.$emit('upload',res, file)
+      console.log(res, file);
+      //鎷兼帴鍑轰笂浼犵殑鍥剧墖鍦ㄦ湇鍔″櫒鐨勫畬鏁村湴鍧�
+      let imgUrl = res.data.url;
+      let type = imgUrl.substring(imgUrl.lastIndexOf(".") + 1);
+      console.log(type);
+      // 鑾峰彇瀵屾枃鏈粍浠跺疄渚�
+      let quill = this.$refs.customQuillEditor.quill;
+      // 鑾峰彇鍏夋爣鎵�鍦ㄤ綅缃�
+      let length = quill.getSelection().index;
+      // 鎻掑叆鍥剧墖||瑙嗛  res.info涓烘湇鍔″櫒杩斿洖鐨勫浘鐗囧湴鍧�
+      if (type == "mp4" || type == "MP4") {
+        window.jsValue = imgUrl;
+        quill.insertEmbed(length, "video", imgUrl);
+      } else {
+        quill.insertEmbed(length, "image", imgUrl);
+      }
+      // 璋冩暣鍏夋爣鍒版渶鍚�
+      quill.setSelection(length + 1);
+      //鍙栨秷涓婁紶鍔ㄧ敾
+      this.quillUpdateImg = false;
+    },
+    // 涓婁紶(鏂囦欢)鍥剧墖澶辫触
+    uploadEditorError(res, file) {
+      console.log(res);
+      console.log(file);
+      //椤甸潰鎻愮ず
+      this.$message.error("涓婁紶鍥剧墖澶辫触");
+      //鍙栨秷涓婁紶鍔ㄧ敾
+      this.quillUpdateImg = false;
+    },
+    //涓婁紶缁勪欢杩斿洖鐨勭粨鏋�
+    uploadResult: function (res) {
+      this.uploadUrlPath = res;
+    },
+    openContent: function () {
+      console.log(this.content);
     },
   },
 };
@@ -859,8 +870,80 @@
     font-size: 24px;
   }
 }
-// ::v-deep.el-form-item--medium .el-form-item__content {
-//   line-height: 36px;
-//   display: flex;
-// }
+.editor {
+  line-height: normal !important;
+  height: 400px;
+  margin-bottom: 50px;
+}
+.ql-snow .ql-tooltip[data-mode="link"]::before {
+  content: "璇疯緭鍏ラ摼鎺ュ湴鍧�:";
+}
+.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
+  border-right: 0px;
+  content: "淇濆瓨";
+  padding-right: 0px;
+}
+
+.ql-snow .ql-tooltip[data-mode="video"]::before {
+  content: "璇疯緭鍏ヨ棰戝湴鍧�:";
+}
+
+.ql-snow .ql-picker.ql-size .ql-picker-label::before,
+.ql-snow .ql-picker.ql-size .ql-picker-item::before {
+  content: "14px";
+}
+.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before,
+.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before {
+  content: "10px";
+}
+.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before,
+.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before {
+  content: "18px";
+}
+.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before,
+.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before {
+  content: "32px";
+}
+
+.ql-snow .ql-picker.ql-header .ql-picker-label::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item::before {
+  content: "鏂囨湰";
+}
+.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
+  content: "鏍囬1";
+}
+.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
+  content: "鏍囬2";
+}
+.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
+  content: "鏍囬3";
+}
+.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
+  content: "鏍囬4";
+}
+.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
+  content: "鏍囬5";
+}
+.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
+.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
+  content: "鏍囬6";
+}
+
+.ql-snow .ql-picker.ql-font .ql-picker-label::before,
+.ql-snow .ql-picker.ql-font .ql-picker-item::before {
+  content: "鏍囧噯瀛椾綋";
+}
+.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before,
+.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before {
+  content: "琛嚎瀛椾綋";
+}
+.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before,
+.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before {
+  content: "绛夊瀛椾綋";
+}
 </style>
diff --git a/src/views/knowledge/education/compilequer/video.js b/src/views/knowledge/education/compilequer/video.js
new file mode 100644
index 0000000..16f4978
--- /dev/null
+++ b/src/views/knowledge/education/compilequer/video.js
@@ -0,0 +1,71 @@
+import  { Quill }  from 'vue-quill-editor'
+
+// 婧愮爜涓槸import鐩存帴鍊掑叆锛岃繖閲岃鐢≦uill.import寮曞叆
+const BlockEmbed = Quill.import('blots/block/embed')
+// const Link = Quill.import('formats/link')
+
+const ATTRIBUTES = ['height', 'width']
+
+class Video extends BlockEmbed {
+    static create (value) {
+        const node = super.create(value)
+        // console.log("js鏂囦欢"+ window.jsValue)
+        // 娣诲姞video鏍囩鎵�闇�鐨勫睘鎬�
+        node.setAttribute('controls', 'controls') // 鎺у埗鎾斁鍣�
+        //鍒犻櫎鍘熺敓video鐨勬帶鍒舵潯鐨勪笅杞芥垨鑰呭叏灞忔寜閽殑鏂规硶
+        //<video controls controlsList='nofullscreen nodownload noremote footbar' ></video>
+        //涓嶇敤鍝釜鍦ㄤ笅闈㈠姞涓婂摢涓�
+        node.setAttribute('controlsList', 'nofullscreen') // 鎺у埗鍒犻櫎
+        node.setAttribute('type', 'video/mp4')
+        node.setAttribute('style', 'object-fit:fill;width: 100%;')
+        node.setAttribute('preload', 'auto')    // auto - 褰撻〉闈㈠姞杞藉悗杞藉叆鏁翠釜瑙嗛  meta - 褰撻〉闈㈠姞杞藉悗鍙浇鍏ュ厓鏁版嵁  none - 褰撻〉闈㈠姞杞藉悗涓嶈浇鍏ヨ棰�
+        node.setAttribute('playsinline', 'true')
+        node.setAttribute('x-webkit-airplay', 'allow')
+        // node.setAttribute('x5-video-player-type', 'h5') // 鍚敤H5鎾斁鍣�,鏄痺echat瀹夊崜鐗堢壒鎬�
+        node.setAttribute('x5-video-orientation', 'portraint') // 绔栧睆鎾斁 澹版槑浜唄5鎵嶈兘浣跨敤  鎾斁鍣ㄦ敮浠樼殑鏂瑰悜锛宭andscape妯睆锛宲ortraint绔栧睆锛岄粯璁ゅ�间负绔栧睆
+        node.setAttribute('x5-playsinline', 'true') // 鍏煎瀹夊崜 涓嶅叏灞忔挱鏀�
+        node.setAttribute('x5-video-player-fullscreen', 'true')    // 鍏ㄥ睆璁剧疆锛岃缃负 true 鏄槻姝㈡í灞�
+        node.setAttribute('src', window.jsValue)
+        return node
+    }
+
+    static formats (domNode) {
+        return ATTRIBUTES.reduce((formats, attribute) => {
+            if (domNode.hasAttribute(attribute)) {
+                formats[attribute] = domNode.getAttribute(attribute)
+            }
+            return formats
+        }, {})
+    }
+
+    // static sanitize (url) {
+    //
+    //      // eslint-disable-line import/no-named-as-default-member
+    // }
+
+    static value (domNode) {
+        return domNode.getAttribute('src')
+    }
+
+    format (name, value) {
+        if (ATTRIBUTES.indexOf(name) > -1) {
+            if (value) {
+                this.domNode.setAttribute(name, value)
+            } else {
+                this.domNode.removeAttribute(name)
+            }
+        } else {
+            super.format(name, value)
+        }
+    }
+
+    html () {
+        const { video } = this.value()
+        return `<a href="${video}">${video}</a>`
+    }
+}
+Video.blotName = 'video' // 杩欓噷涓嶇敤鏀癸紝妤间富涓嶇敤iframe锛岀洿鎺ユ浛鎹㈡帀鍘熸潵锛屽鏋滈渶瑕佷篃鍙互淇濈暀鍘熸潵鐨勶紝杩欓噷鐢ㄤ釜鏂扮殑blot
+Video.className = 'ql-video'
+Video.tagName = 'video' // 鐢╲ideo鏍囩鏇挎崲iframe
+
+export default Video
diff --git a/src/views/knowledge/education/index.vue b/src/views/knowledge/education/index.vue
index c837000..c29eb8a 100644
--- a/src/views/knowledge/education/index.vue
+++ b/src/views/knowledge/education/index.vue
@@ -25,12 +25,29 @@
           <el-tab-pane :label="`鍏ㄩ儴 (${numberlb})`"></el-tab-pane>
           <el-tab-pane
             class="tab-paness"
-            :key="item.name"
+            :key="item.title"
             v-for="(item, index) in editableTabs"
-            :label="item.title + ' (' + item.number + ')'"
-          ></el-tab-pane>
-
-          <el-tab-pane :label="`鏈垎缁�(${numberlbs})`"></el-tab-pane>
+          >
+            <span slot="label">
+              {{
+                item.title + " (" + item.number + ")"
+              }}&nbsp&nbsp&nbsp<el-popover
+                placement="top-start"
+                width="100"
+                trigger="hover"
+              >
+                <div style="text-align: center">
+                  <el-button type="text" @click="popoveramend(item)"
+                    >淇敼</el-button
+                  ><el-button type="text" @click="deletefenlei(item)"
+                    ><span style="color: rgb(173, 55, 55)"
+                      >鍒犻櫎</span
+                    ></el-button
+                  >
+                </div>
+                <i slot="reference" class="el-icon-share"></i> </el-popover
+            ></span>
+          </el-tab-pane>
         </el-tabs>
       </div>
     </div>
@@ -157,7 +174,7 @@
             <el-table
               v-loading="loading"
               :data="userList"
-              border="true"
+              border
               @selection-change="handleSelectionChange"
             >
               <el-table-column type="selection" width="50" align="center" />
@@ -366,16 +383,39 @@
       </div>
     </div>
     <!-- 娣诲姞绫诲埆寮规 -->
-    <el-dialog width="30%" :visible.sync="dialogFormVisible">
-      <el-form :model="sidecolumnform">
-        <el-form-item label="璇疯緭鍏ョ被鍒悕绉�">
-          <el-input v-model="form.name" autocomplete="off"></el-input>
+    <el-dialog
+      :title="amendtag ? '淇敼绫诲埆' : '鏂板绫诲埆'"
+      width="30%"
+      :visible.sync="dialogFormVisible"
+    >
+      <el-form :model="classifyform">
+        <el-form-item
+          :label="amendtag ? '璇疯緭鍏ユ柊鐨勭被鍒悕绉�' : '璇疯緭鍏ョ被鍒悕绉�'"
+        >
+          <el-input
+            v-model="classifyform.categoryname"
+            autocomplete="off"
+          ></el-input>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
         <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button>
       </div>
+    </el-dialog>
+    <!-- 鍒犻櫎绫诲埆纭妗� -->
+    <el-dialog title="璀﹀憡" :visible.sync="deleteVisible" width="40%">
+      <div style="font-size: 20px; color: rgb(247, 76, 76)">
+        鏄惁纭鍒犻櫎鍒嗙被锛歔<span>{{ deletefenl }}</span
+        >]?
+      </div>
+      <div style="font-size: 20px">
+        姝ゆ搷浣滀細灏嗚绫诲埆涓嬫墍鏈夋ā鍧楄浆绉昏嚦[鏈垎绫籡锛屾槸鍚︾户缁垹闄ゆ鍒嗙被锛�
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="deleteVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="deletefenlei">纭� 瀹�</el-button>
+      </span>
     </el-dialog>
     <!-- 浜岀淮鐮佸睍绀哄脊妗� -->
     <el-dialog width="30%" :visible.sync="goQRCodeVisible">
@@ -448,10 +488,17 @@
       numberlb: 22,
       numberlbs: 2,
       sidecolumnform: {}, //娣诲姞绫诲埆琛ㄥ崟
-      dialogFormVisible: false, //娣诲姞绫诲埆寮规
       goQRCodeVisible: false, //浜岀淮鐮佸脊妗�
       sidecolumnval: "", //绫诲埆鎼滅储
       propss: { multiple: true },
+      idds: "",
+      amendtag: false, //鏄惁淇敼绫诲埆
+      dialogFormVisible: false, //淇敼娣诲姞绫诲埆寮规
+      deleteVisible: false, //鍒嗙被鍒犻櫎寮规
+      deletefenl: "楂樿鍘�", //鍒犻櫎椤�
+      classifyform: {
+        categoryname: "",
+      }, //绫诲埆琛ㄥ崟
       optionss: [
         {
           value: 1,
@@ -598,6 +645,51 @@
     submitsidecolumn() {
       this.dialogFormVisible = false;
     },
+    // 淇敼鍒嗙被寮规
+    popoveramend(tagcategoryid) {
+      this.idds = tagcategoryid;
+      this.amendtag = true;
+      this.dialogFormVisible = true;
+    },
+    // 娣诲姞銆佷慨鏀圭被鍒�
+    submitsidecolumn() {
+      if (this.amendtag) {
+        this.classifyform.tagcategoryid = this.idds;
+        // toamendtagcategory(this.addDateRange(this.classifyform)).then(
+        //   (response) => {
+        //     console.log(response);
+        //     this.gitclasify();
+        //   }
+        // );
+      } else {
+        // addtagcategory(this.addDateRange(this.classifyform)).then(
+        //   (response) => {
+        //     console.log(response);
+        //     this.gitclasify();
+        //   }
+        // );
+      }
+      this.classifyform = {
+        categoryname: "",
+      };
+      this.idds = "";
+      this.dialogFormVisible = false;
+    },
+    //鍒犻櫎鍒嗙被
+    deletefenlei(row) {
+      if (this.deleteVisible) {
+        // deletetagcategory(this.idds).then((response) => {
+        //   console.log(response);
+        //   this.gitclasify();
+        // });
+        this.deleteVisible = false;
+        this.idds = "";
+      } else {
+        this.deleteVisible = true;
+        this.idds = row.tagcategoryid;
+        this.deletefenl = row.title;
+      }
+    },
     //鎼滅储绫诲埆
     sidecolumnss() {},
     // 鍒囨崲鍏变韩/鏈湴
diff --git a/src/views/knowledge/questionbank/index.vue b/src/views/knowledge/questionbank/index.vue
index c16345f..51b92df 100644
--- a/src/views/knowledge/questionbank/index.vue
+++ b/src/views/knowledge/questionbank/index.vue
@@ -4,7 +4,7 @@
       <!--鐢ㄦ埛鏁版嵁-->
       <el-col :span="24" :xs="24">
         <el-form
-          :model="queryParams"
+          :model="topqueryParams"
           ref="queryForm"
           size="small"
           :inline="true"
@@ -13,57 +13,45 @@
         >
           <el-form-item label="棰樼洰鍚嶇О" prop="userName">
             <el-input
-              v-model="queryParams.userName"
+              v-model="topqueryParams.userName"
               placeholder="璇疯緭鍏�"
               clearable
               style="width: 200px"
               @keyup.enter.native="handleQuery"
             />
           </el-form-item>
-          <el-form-item label="韬唤璇佸彿鐮�" prop="IDnumber">
-            <el-input
-              v-model="queryParams.IDnumber"
-              placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"
-              clearable
-              style="width: 250px"
-              @keyup.enter.native="handleQuery"
-            />
-          </el-form-item>
-          <el-form-item label="鑱旂郴鏂瑰紡" prop="phonenumber">
-            <el-input
-              v-model="queryParams.phonenumber"
-              placeholder="璇疯緭鍏ヨ仈绯绘柟寮�"
-              clearable
-              style="width: 280px"
-              @keyup.enter.native="handleQuery"
-            />
-          </el-form-item>
-          <el-row>
-            <el-form-item label="鎮h�呮爣绛�" prop="status">
-              <el-cascader
-                v-model="queryParams.status"
-                :options="optionss"
-                :props="propss"
-                clearable
-              ></el-cascader>
-            </el-form-item>
-          </el-row>
 
-          <!-- <el-form-item label="鍒涘缓鏃堕棿">
-              <el-date-picker
-                v-model="dateRange"
-                style="width: 240px"
-                value-format="yyyy-MM-dd"
-                type="daterange"
-                range-separator="-"
-                start-placeholder="寮�濮嬫棩鏈�"
-                end-placeholder="缁撴潫鏃ユ湡"
-              ></el-date-picker>
-            </el-form-item>
-            <el-form-item>
-              <el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">鎼滅储</el-button>
-              <el-button icon="el-icon-refresh" size="medium" @click="resetQuery">閲嶇疆</el-button>
-            </el-form-item> -->
+          <el-form-item label="棰樼洰鏍囩" prop="status">
+            <el-cascader
+              v-model="topqueryParams.tagid"
+              :options="optionss"
+              :props="propss"
+              clearable
+            ></el-cascader>
+          </el-form-item>
+          <el-form-item label="棰樼洰绫诲瀷" prop="status">
+            <el-select v-model="topqueryParams.topic" placeholder="璇烽�夋嫨">
+              <el-option
+                v-for="item in topicoptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item>
+            <el-button
+              type="primary"
+              icon="el-icon-search"
+              size="medium"
+              @click="handleQuery"
+              >鎼滅储</el-button
+            >
+            <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
+              >閲嶇疆</el-button
+            >
+          </el-form-item>
         </el-form>
 
         <el-row :gutter="10" class="mb8">
@@ -106,17 +94,6 @@
             <div class="documentf">
               <div class="document">
                 <el-button
-                  type="info"
-                  plain
-                  icon="el-icon-upload2"
-                  size="medium"
-                  @click="handleImport"
-                  v-hasPermi="['system:user:import']"
-                  >瀵煎叆</el-button
-                >
-              </div>
-              <div class="document">
-                <el-button
                   type="warning"
                   plain
                   icon="el-icon-download"
@@ -146,84 +123,57 @@
             align="center"
             key="userId"
             prop="userId"
-            v-if="columns[0].visible"
           />
+
           <el-table-column
-            label="濮撳悕"
+            label="棰樼洰"
             align="center"
             key="userName"
             prop="userName"
-            v-if="columns[1].visible"
             :show-overflow-tooltip="true"
           />
           <el-table-column
-            label="鎬у埆"
+            label="棰樼洰绫诲埆"
+            align="center"
+            key="types"
+            prop="types"
+          />
+          <el-table-column
+            label="鍒涘缓浜�"
             align="center"
             key="nickName"
             prop="nickName"
-            v-if="columns[2].visible"
-            :show-overflow-tooltip="true"
           />
           <el-table-column
-            label="鎮h�呮爣绛�"
-            align="center"
-            key="deptName"
-            prop="dept.deptName"
-            v-if="columns[3].visible"
-            :show-overflow-tooltip="true"
-          />
-          <el-table-column
-            label="璇佷欢绫诲瀷"
+            label="鏄惁蹇呭~"
             align="center"
             key="phonenumber"
             prop="phonenumber"
-            v-if="columns[4].visible"
-            width="120"
-          /><el-table-column
-            label="璇佷欢鍙风爜"
-            align="center"
-            key="phonenumber"
-            prop="phonenumber"
-            v-if="columns[4].visible"
             width="120"
           />
-          <el-table-column
-            label="骞撮緞"
-            align="center"
-            key="phonenumber"
-            prop="phonenumber"
-            v-if="columns[4].visible"
-            width="120"
-          />
-          <!-- <el-table-column
-              label="鐘舵��"
-              align="center"
-              key="status"
-              v-if="columns[5].visible"
-            >
-              <template slot-scope="scope">
-                <el-switch
-                  v-model="scope.row.status"
-                  active-value="0"
-                  inactive-value="1"
-                  @change="handleStatusChange(scope.row)"
-                ></el-switch>
-              </template>
-            </el-table-column> -->
+          <el-table-column label="鏄惁鍚敤" align="center" key="status">
+            <template slot-scope="scope">
+              <el-switch
+                v-model="scope.row.status"
+                active-value="0"
+                inactive-value="1"
+                @change="handleStatusChange(scope.row)"
+              ></el-switch>
+            </template>
+          </el-table-column>
 
           <el-table-column
-            label="鑱旂郴鏂瑰紡"
+            label="棰樼洰鏍囩"
             align="center"
-            key="phonenumber"
-            prop="phonenumber"
-            v-if="columns[4].visible"
+            key="topicnumber"
+            prop="topicnumber"
             width="120"
+            :show-overflow-tooltip="true"
           />
           <el-table-column
-            label="寤烘。鏃ユ湡"
+            label="鍒涘缓鏃ユ湡"
             align="center"
             prop="createTime"
-            v-if="columns[6].visible"
             width="160"
           >
             <template slot-scope="scope">
@@ -231,10 +181,9 @@
             </template>
           </el-table-column>
           <el-table-column
-            label="鏇存柊鏃ユ湡"
+            label="鏈�杩戞洿鏂版棩鏈�"
             align="center"
             prop="createTime"
-            v-if="columns[6].visible"
             width="160"
           >
             <template slot-scope="scope">
@@ -252,9 +201,17 @@
                 size="medium"
                 type="text"
                 icon="el-icon-edit"
-                @click="$router.push('/patient/patient/profile/')"
+                @click="Referencequestion(scope.row)"
                 v-hasPermi="['system:user:edit']"
-                >鏌ョ湅</el-button
+                >棰勮</el-button
+              >
+              <el-button
+                size="medium"
+                type="text"
+                icon="el-icon-edit"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['system:user:edit']"
+                >淇敼</el-button
               >
             </template>
           </el-table-column>
@@ -263,142 +220,112 @@
         <pagination
           v-show="total > 0"
           :total="total"
-          :page.sync="queryParams.pageNum"
-          :limit.sync="queryParams.pageSize"
+          :page.sync="topqueryParams.pageNum"
+          :limit.sync="topqueryParams.pageSize"
           @pagination="getList"
         />
       </el-col>
     </el-row>
 
-    <!-- 娣诲姞鎴栦慨鏀圭敤鎴烽厤缃璇濇 -->
-    <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
+    <!-- 娣诲姞鎴栦慨鏀归鐩厤缃璇濇 -->
+    <el-dialog
+      :title="title"
+      :visible.sync="addalteropen"
+      width="900px"
+      append-to-body
+    >
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="濮撳悕" prop="nickName">
+            <el-form-item label="棰樼洰鍚嶇О" prop="nickName">
               <el-input
                 v-model="form.nickName"
-                placeholder="璇疯緭鍏ュ鍚�"
+                placeholder="璇疯緭鍏�"
                 maxlength="30"
               />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="鎬у埆" prop="deptId">
-              <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
+            <el-form-item label="棰樼洰绫诲瀷" prop="deptId">
+              <el-select v-model="form.types" placeholder="璇烽�夋嫨">
                 <el-option
-                  v-for="dict in dict.type.sys_user_sex"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
+                  v-for="item in topicoptions"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
                 ></el-option>
               </el-select>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="12">
-            <el-form-item label="璇佷欢绫诲瀷" prop="phonenumber">
-              <el-input
-                v-model="form.phonenumber"
-                placeholder="璇烽�夋嫨璇佷欢绫诲瀷"
-                maxlength="11"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="璇佷欢鍙�" prop="email">
-              <el-input
-                v-model="form.email"
-                placeholder="璇疯緭鍏ヨ瘉浠跺彿"
-                maxlength="50"
-              />
-            </el-form-item>
-          </el-col>
+          <el-form-item label="绛旀閫夐」" prop="email">
+            <el-tag
+              :key="tag"
+              v-for="tag in dynamicTags"
+              closable
+              :disable-transitions="false"
+              @close="handleClose(tag)"
+            >
+              {{ tag }}
+            </el-tag>
+            <el-input
+              class="input-new-tag"
+              v-if="inputVisible"
+              v-model="inputValue"
+              ref="saveTagInput"
+              size="small"
+              @keyup.enter.native="handleInputConfirm"
+              @blur="handleInputConfirm"
+            >
+            </el-input>
+            <el-button
+              v-else
+              class="button-new-tag"
+              size="small"
+              @click="showInput"
+              >+ 鏂板閫夐」</el-button
+            >
+          </el-form-item>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="鏈汉鎵嬫満鍙�" prop="userName">
-              <el-input
-                v-model="form.userName"
-                placeholder="璇疯緭鍏ユ墜鏈哄彿"
-                maxlength="30"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="浜插睘鎵嬫満鍙�" prop="password">
-              <el-input
-                v-model="form.password"
-                placeholder="璇疯緭鍏ヤ翰灞炴墜鏈哄彿"
-                type="password"
-                maxlength="20"
-                show-password
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="鎮h�呮爣绛�">
-              <!-- <el-select v-model="form.sex" placeholder="璇烽�夋嫨"> -->
+            <el-form-item label="棰樼洰鏍囩" prop="email">
               <el-cascader
+                v-model="form.totagid"
                 :options="optionss"
                 :props="propss"
                 clearable
               ></el-cascader>
-              <!-- </el-select> -->
             </el-form-item>
           </el-col>
-          <!-- <el-col :span="12">
-              <el-form-item label="鐘舵��">
-                <el-radio-group v-model="form.status">
-                  <el-radio
-                    v-for="dict in dict.type.sys_normal_disable"
-                    :key="dict.value"
-                    :label="dict.value"
-                    >{{ dict.label }}</el-radio
-                  >
-                </el-radio-group>
-              </el-form-item>
-            </el-col> -->
         </el-row>
-        <!-- <el-row>
-            <el-col :span="12">
-              <el-form-item label="宀椾綅">
-                <el-select
-                  v-model="form.postIds"
-                  multiple
-                  placeholder="璇烽�夋嫨宀椾綅"
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="鏄惁鍚敤">
+              <el-radio-group v-model="form.qystatus">
+                <el-radio
+                  v-for="item in qyoptions"
+                  :key="item.value"
+                  :label="item.value"
+                  >{{ item.label }}</el-radio
                 >
-                  <el-option
-                    v-for="item in postOptions"
-                    :key="item.postId"
-                    :label="item.postName"
-                    :value="item.postId"
-                    :disabled="item.status == 1"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="12">
-              <el-form-item label="瑙掕壊">
-                <el-select
-                  v-model="form.roleIds"
-                  multiple
-                  placeholder="璇烽�夋嫨瑙掕壊"
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鏄惁蹇呭~">
+              <el-radio-group v-model="form.btstatus">
+                <el-radio
+                  v-for="item in btoptions"
+                  :key="item.value"
+                  :label="item.value"
+                  >{{ item.label }}</el-radio
                 >
-                  <el-option
-                    v-for="item in roleOptions"
-                    :key="item.roleId"
-                    :label="item.roleName"
-                    :value="item.roleId"
-                    :disabled="item.status == 1"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-          </el-row> -->
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+        </el-row>
         <el-row>
           <el-col :span="24">
             <el-form-item label="澶囨敞">
@@ -416,93 +343,52 @@
         <el-button @click="cancel">鍙� 娑�</el-button>
       </div>
     </el-dialog>
-
-    <!-- 鐢ㄦ埛瀵煎叆瀵硅瘽妗� -->
-    <el-dialog
-      :title="upload.title"
-      :visible.sync="upload.open"
-      width="70%"
-      append-to-body
-    >
-      <el-steps :active="dractive" simple>
-        <el-step title="涓婁紶瀵煎叆鏂囦欢" icon="el-icon-upload"></el-step>
-        <el-step title="瀵煎叆妫�鏌�" icon="el-icon-picture"></el-step>
-        <el-step title="瀵煎叆缁撴灉" icon="el-icon-picture"></el-step>
-      </el-steps>
-      <!-- 涓婁紶瀵煎叆鏂囦欢 -->
-      <div class="download" v-if="dractive == 1">
-        <el-upload
-          class="upload-demo"
-          ref="upload"
-          :limit="1"
-          accept=".xlsx, .xls"
-          :headers="upload.headers"
-          :action="upload.url + '?updateSupport=' + upload.updateSupport"
-          :disabled="upload.isUploading"
-          :on-progress="handleFileUploadProgress"
-          :on-success="handleFileSuccess"
-          :auto-upload="false"
-          drag
-        >
-          <i class="el-icon-upload"></i>
-          <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
-          <div class="el-upload__tip text-center" slot="tip">
-            <div class="el-upload__tip" slot="tip">
-              <el-checkbox v-model="upload.updateSupport" />
-              鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
-            </div>
-            <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span>
-            <el-link
-              type="primary"
-              :underline="false"
-              style="font-size: 24px; vertical-align: baseline"
-              @click="importTemplate"
-              >涓嬭浇妯℃澘</el-link
-            >
+    <!-- 棰樼洰棰勮寮规 -->
+    <el-dialog width="30%" title="棰樼洰棰勮" :visible.sync="previewVisible">
+      <div class="qrcode-dialo">
+        <!-- 鍗曢�� -->
+        <div class="topic-dev" v-if="previewtype == 1">
+          <div class="dev-text">
+            [鍗曢�塢&nbsp&nbsp<span>{{ previewvalue.username }}</span>
           </div>
-        </el-upload>
-      </div>
-      <!-- 瀵煎叆妫�鏌� -->
-      <div class="uploading" v-else-if="dractive == 2">
-        <el-table :data="uploadingData" style="width: 100%">
-          <el-table-column prop="serial" label="搴忓彿"> </el-table-column>
-          <el-table-column prop="name" label="濮撳悕"> </el-table-column>
-          <el-table-column prop="sex" label="鎬у埆"> </el-table-column>
-          <el-table-column prop="certificate" label="璇佷欢绫诲瀷">
-          </el-table-column>
-          <el-table-column prop="certificatenum" label="璇佷欢鍙风爜">
-          </el-table-column>
-          <el-table-column prop="goday" label="鍑虹敓鏃ユ湡"> </el-table-column>
-          <el-table-column prop="menum" label="鏈汉鑱旂郴鏂瑰紡"> </el-table-column>
-          <el-table-column prop="younum" label="浜插睘鑱旂郴鏂瑰紡">
-          </el-table-column>
-          <el-table-column prop="tag" label="鎮h�呮爣绛�"> </el-table-column>
-          <el-table-column prop="erry" label="閿欒鍘熷洜"> </el-table-column>
-        </el-table>
-        <pagination
-          v-show="total > 0"
-          :total="total"
-          :page.sync="queryParams.pageNum"
-          :limit.sync="queryParams.pageSize"
-          @pagination="geterryList"
-        />
-      </div>
-      <!-- 瀹屾垚 -->
-      <div class="drexamine" v-else-if="dractive == 3">
-        <img
-          src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"
-        />
-        <p>瀵煎叆鎮h�呮垚鍔燂紒</p>
-        <p>鏈鍏辫瀵煎叆{{ ImportQuantity }}浣嶆偅鑰�</p>
-      </div>
-
-      <div slot="footer" class="dialog-footer" v-if="dractive == 3">
-        <!-- <el-button type="primary" @click="submitFileForm">涓嬩竴姝�</el-button> -->
-        <el-button @click="submitclose">瀹屾垚</el-button>
-      </div>
-      <div slot="footer" v-else>
-        <el-button type="primary" @click="submitFileForm">涓嬩竴姝�</el-button>
-        <el-button @click="submitclose">鍙� 娑�</el-button>
+          <div class="dev-xx">
+            <el-radio-group v-model="radio">
+              <el-radio
+                v-for="(items, index) in dynamicTags"
+                :key="index"
+                :label="index"
+                >{{ items }}</el-radio
+              >
+            </el-radio-group>
+          </div>
+        </div>
+        <!-- 澶氶�� -->
+        <div class="topic-dev" v-else-if="previewtype == 2">
+          <div class="dev-text">
+            [澶氶�塢&nbsp&nbsp<span>{{ previewvalue.username }}</span>
+          </div>
+          <div class="dev-xx">
+            <el-checkbox-group v-model="radios">
+              <el-checkbox
+                v-for="(items, index) in dynamicTags"
+                :key="index"
+                :label="index"
+              >
+                {{ items }}
+              </el-checkbox>
+            </el-checkbox-group>
+          </div>
+        </div>
+        <!-- 濉┖ -->
+        <div class="topic-dev" v-if="previewtype == 3">
+          <div class="dev-text">
+            [濉┖]&nbsp&nbsp<span>{{ previewvalue.username }}</span>
+          </div>
+          <div class="dev-xx">
+            <el-input placeholder="璇疯緭鍏ョ瓟妗�" v-model="radioas" clearable>
+            </el-input>
+          </div>
+        </div>
       </div>
     </el-dialog>
   </div>
@@ -517,9 +403,7 @@
   updateUser,
   resetUserPwd,
   changeUserStatus,
-  deptTreeSelect,
 } from "@/api/system/user";
-import { getToken } from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 
@@ -545,10 +429,8 @@
       userList: null,
       // 寮瑰嚭灞傛爣棰�
       title: "",
-      // 閮ㄩ棬鏍戦�夐」
-      deptOptions: undefined,
-      // 鏄惁鏄剧ず寮瑰嚭灞�
-      open: false,
+      // 鏄惁鏄剧ず淇敼銆佹坊鍔犲脊鍑哄眰
+      addalteropen: false,
       // 閮ㄩ棬鍚嶇О
       deptName: undefined,
       // 榛樿瀵嗙爜
@@ -559,21 +441,39 @@
       postOptions: [],
       // 瑙掕壊閫夐」
       roleOptions: [],
+      dynamicTags: ["閫夐」涓�", "閫夐」浜�", "閫夐」涓�"], //閫夐」
+      inputVisible: false,
+      inputValue: "",
+      previewVisible: false, //棰樼洰棰勮寮规
+      radio: "",
+      radios: [],
+      previewtype: 2, //棰勮棰樼洰绫诲瀷
+      total: 0, // 鎬绘潯鏁�
+      ImportQuantity: 999, //瀵奸鐩暟閲�
+      //棰勮棰樼洰淇℃伅
+      previewvalue: {
+        username: "杩欎釜鍖荤敓瀵逛綘鎬庝箞鏍�",
+      },
       // 琛ㄥ崟鍙傛暟
-      form: {},
+      form: {
+        phonenumber: "",
+        totagid: "",
+        types: "",
+        nickName: "",
+        qystatus: "",
+        btstatus: "",
+      },
       //瀵煎叆杩涘害
       dractive: 1,
       // 瀵煎叆灞曠ず琛ㄥ崟
       uploadingData: {},
-      total: 0, // 鎬绘潯鏁�
-      ImportQuantity: 999, //瀵煎叆鎮h�呮暟閲�
       // 鏌ヨ鍙傛暟
-      queryParams: {
+      topqueryParams: {
         pageNum: 1,
         pageSize: 10,
-        jobName: undefined,
-        jobGroup: undefined,
-        status: undefined,
+        userName: undefined,
+        tagid: undefined,
+        topic: undefined,
       },
       propss: { multiple: true },
       optionss: [
@@ -594,44 +494,39 @@
           label: "鍏椋掗",
         },
       ],
-      defaultProps: {
-        children: "children",
-        label: "label",
-      },
-      // 鐢ㄦ埛瀵煎叆鍙傛暟
-      upload: {
-        // 鏄惁鏄剧ず寮瑰嚭灞傦紙鐢ㄦ埛瀵煎叆锛�
-        open: false,
-        // 寮瑰嚭灞傛爣棰橈紙鐢ㄦ埛瀵煎叆锛�
-        title: "",
-        // 鏄惁绂佺敤涓婁紶
-        isUploading: false,
-        // 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
-        updateSupport: 0,
-        // 璁剧疆涓婁紶鐨勮姹傚ご閮�
-        headers: { Authorization: "Bearer " + getToken() },
-        // 涓婁紶鐨勫湴鍧�
-        url: process.env.VUE_APP_BASE_API + "/system/user/importData",
-      },
-      // 鏌ヨ鍙傛暟
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        userName: undefined,
-        phonenumber: undefined,
-        status: undefined,
-        deptId: undefined,
-        IDnumber: undefined,
-      },
-      // 鍒椾俊鎭�
-      columns: [
-        { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true },
-        { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true },
-        { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true },
-        { key: 3, label: `閮ㄩ棬`, visible: true },
-        { key: 4, label: `鎵嬫満鍙风爜`, visible: true },
-        { key: 5, label: `鐘舵�乣, visible: true },
-        { key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
+      qyoptions: [
+        {
+          value: 1,
+          label: "鍚敤",
+        },
+        {
+          value: 2,
+          label: "鍏抽棴",
+        },
+      ],
+      btoptions: [
+        {
+          value: 1,
+          label: "蹇呭~",
+        },
+        {
+          value: 2,
+          label: "闈炲繀濉�",
+        },
+      ],
+      topicoptions: [
+        {
+          value: 1,
+          label: "鍗曢��",
+        },
+        {
+          value: 2,
+          label: "澶氶��",
+        },
+        {
+          value: 3,
+          label: "濉┖",
+        },
       ],
       // 琛ㄥ崟鏍¢獙
       rules: {
@@ -681,24 +576,18 @@
       },
     };
   },
-  watch: {
-    // 鏍规嵁鍚嶇О绛涢�夐儴闂ㄦ爲
-    deptName(val) {
-      this.$refs.tree.filter(val);
-    },
-  },
+  watch: {},
   created() {
     this.getList();
-    this.getDeptTree();
     this.getConfigKey("sys.user.initPassword").then((response) => {
       this.initPassword = response.msg;
     });
   },
   methods: {
-    /** 鏌ヨ鐢ㄦ埛鍒楄〃 */
+    /** 鏌ヨ棰樼洰鍒楄〃 */
     getList() {
       this.loading = true;
-      listUser(this.addDateRange(this.queryParams, this.dateRange)).then(
+      listUser(this.addDateRange(this.topqueryParams, this.dateRange)).then(
         (response) => {
           this.userList = response.rows;
           this.total = response.total;
@@ -706,32 +595,12 @@
         }
       );
     },
-    // 鏌ヨ瀵煎叆灞曠ず鍒楄〃
-    geterryList() {
-      this.loading = true;
-      listJob(this.queryParams).then((response) => {
-        this.jobList = 1;
-        this.total = 1;
-        this.loading = false;
-      });
+    // 鏌ョ湅棰樼洰璇︽儏
+    Referencequestion(row) {
+      this.previewVisible = true;
     },
-    /** 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋� */
-    getDeptTree() {
-      deptTreeSelect().then((response) => {
-        this.deptOptions = response.data;
-      });
-    },
-    // 绛涢�夎妭鐐�
-    filterNode(value, data) {
-      if (!value) return true;
-      return data.label.indexOf(value) !== -1;
-    },
-    // 鑺傜偣鍗曞嚮浜嬩欢
-    handleNodeClick(data) {
-      this.queryParams.deptId = data.id;
-      this.handleQuery();
-    },
-    // 鐢ㄦ埛鐘舵�佷慨鏀�
+
+    // 棰樼洰鐘舵�佷慨鏀�
     handleStatusChange(row) {
       let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
       this.$modal
@@ -748,7 +617,7 @@
     },
     // 鍙栨秷鎸夐挳
     cancel() {
-      this.open = false;
+      this.addalteropen = false;
       this.reset();
     },
     // 琛ㄥ崟閲嶇疆
@@ -771,14 +640,14 @@
     },
     /** 鎼滅储鎸夐挳鎿嶄綔 */
     handleQuery() {
-      this.queryParams.pageNum = 1;
+      this.topqueryParams.pageNum = 1;
       this.getList();
     },
     /** 閲嶇疆鎸夐挳鎿嶄綔 */
     resetQuery() {
       this.dateRange = [];
       this.resetForm("queryForm");
-      this.queryParams.deptId = undefined;
+      this.topqueryParams.deptId = undefined;
       this.$refs.tree.setCurrentKey(null);
       this.handleQuery();
     },
@@ -788,18 +657,25 @@
       this.single = selection.length != 1;
       this.multiple = !selection.length;
     },
-    // 鏇村鎿嶄綔瑙﹀彂
-    handleCommand(command, row) {
-      switch (command) {
-        case "handleResetPwd":
-          this.handleResetPwd(row);
-          break;
-        case "handleAuthRole":
-          this.handleAuthRole(row);
-          break;
-        default:
-          break;
+    //鍒犻櫎閫夐」
+    handleClose(tag) {
+      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
+    },
+    //瑙﹀彂鏂板杈撳叆
+    showInput() {
+      this.inputVisible = true;
+      this.$nextTick((_) => {
+        this.$refs.saveTagInput.$refs.input.focus();
+      });
+    },
+    //鑾峰彇澶卞幓鐒︾偣瑙﹀彂
+    handleInputConfirm() {
+      let inputValue = this.inputValue;
+      if (inputValue) {
+        this.dynamicTags.push(inputValue);
       }
+      this.inputVisible = false;
+      this.inputValue = "";
     },
     /** 鏂板鎸夐挳鎿嶄綔 */
     handleAdd() {
@@ -807,8 +683,8 @@
       getUser().then((response) => {
         this.postOptions = response.posts;
         this.roleOptions = response.roles;
-        this.open = true;
-        this.title = "鏂板鎮h��";
+        this.addalteropen = true;
+        this.title = "鏂板棰樼洰";
         this.form.password = this.initPassword;
       });
     },
@@ -822,7 +698,7 @@
         this.roleOptions = response.roles;
         this.$set(this.form, "postIds", response.postIds);
         this.$set(this.form, "roleIds", response.roleIds);
-        this.open = true;
+        this.addalteropen = true;
         this.title = "淇敼鐢ㄦ埛";
         this.form.password = "";
       });
@@ -843,11 +719,7 @@
         })
         .catch(() => {});
     },
-    /** 鍒嗛厤瑙掕壊鎿嶄綔 */
-    handleAuthRole: function (row) {
-      const userId = row.userId;
-      this.$router.push("/system/user-auth/role/" + userId);
-    },
+
     /** 鎻愪氦鎸夐挳 */
     submitForm: function () {
       this.$refs["form"].validate((valid) => {
@@ -887,55 +759,10 @@
       this.download(
         "system/user/export",
         {
-          ...this.queryParams,
+          ...this.topqueryParams,
         },
         `user_${new Date().getTime()}.xlsx`
       );
-    },
-    /** 瀵煎叆鎸夐挳鎿嶄綔 */
-    handleImport() {
-      this.upload.title = "鐢ㄦ埛瀵煎叆";
-      this.upload.open = true;
-    },
-    /** 涓嬭浇妯℃澘鎿嶄綔 */
-    importTemplate() {
-      this.download(
-        "system/user/importTemplate",
-        {},
-        `user_template_${new Date().getTime()}.xlsx`
-      );
-    },
-    // 鏂囦欢涓婁紶涓鐞�
-    handleFileUploadProgress(event, file, fileList) {
-      this.upload.isUploading = true;
-    },
-    // 鏂囦欢涓婁紶鎴愬姛澶勭悊
-    handleFileSuccess(response, file, fileList) {
-      this.upload.open = false;
-      this.upload.isUploading = false;
-      this.$refs.upload.clearFiles();
-      this.$alert(
-        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
-          response.msg +
-          "</div>",
-        "瀵煎叆缁撴灉",
-        { dangerouslyUseHTMLString: true }
-      );
-      this.getList();
-    },
-    // 鎻愪氦涓婁紶鏂囦欢
-    submitFileForm() {
-      // 涓婁紶
-      if (this.dractive == 1) {
-        this.$refs.upload.submit();
-        this.dractive++;
-      } else {
-        this.dractive++;
-      }
-    },
-    submitclose() {
-      this.upload.open = false;
-      this.dractive = 1;
     },
   },
 };
@@ -973,6 +800,21 @@
   -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
     0 0 6px 0 rgba(0, 0, 0, 0.04);
 }
+.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;
+}
 .drexamine {
   display: flex;
   align-items: center;
@@ -984,4 +826,31 @@
     height: 100px;
   }
 }
+.qrcode-dialo {
+  // text-align: center;
+  //   display: flex;
+  margin: 20px;
+  padding: 30px;
+  background: #edf1f7;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+  .topic-dev {
+    margin-bottom: 25px;
+    font-size: 20px !important;
+    .dev-text {
+      margin-bottom: 10px;
+    }
+  }
+}
+::v-deep.el-radio-group {
+  span {
+    font-size: 24px;
+  }
+}
+::v-deep.el-checkbox-group {
+  span {
+    font-size: 24px;
+  }
+}
 </style>
diff --git a/src/views/knowledge/questionnaire/compilequer/index.vue b/src/views/knowledge/questionnaire/compilequer/index.vue
index d5bc5ff..03e8202 100644
--- a/src/views/knowledge/questionnaire/compilequer/index.vue
+++ b/src/views/knowledge/questionnaire/compilequer/index.vue
@@ -463,28 +463,28 @@
         ],
         desc: [{ required: true, message: "璇峰~鍐欐椿鍔ㄥ舰寮�", trigger: "blur" }],
       },
-      options: [
-        {
-          value: "閫夐」1",
-          label: "榛勯噾绯�",
-        },
-        {
-          value: "閫夐」2",
-          label: "鍙岀毊濂�",
-        },
-        {
-          value: "閫夐」3",
-          label: "铓典粩鐓�",
-        },
-        {
-          value: "閫夐」4",
-          label: "榫欓』闈�",
-        },
-        {
-          value: "閫夐」5",
-          label: "鍖椾含鐑ら腑",
-        },
-      ],
+      // options: [
+      //   {
+      //     value: "閫夐」1",
+      //     label: "榛勯噾绯�",
+      //   },
+      //   {
+      //     value: "閫夐」2",
+      //     label: "鍙岀毊濂�",
+      //   },
+      //   {
+      //     value: "閫夐」3",
+      //     label: "铓典粩鐓�",
+      //   },
+      //   {
+      //     value: "閫夐」4",
+      //     label: "榫欓』闈�",
+      //   },
+      //   {
+      //     value: "閫夐」5",
+      //     label: "鍖椾含鐑ら腑",
+      //   },
+      // ],
       options: [
         {
           value: "zhinan",
@@ -760,21 +760,21 @@
           sdadd: ["sss", "ssccss", "ssaas", "ss"],
         },
       ],
-      options: [
-        {
-          value: "閫夐」1",
-          label: "鍗曢��",
-        },
-        {
-          value: "閫夐」2",
-          label: "澶氶��",
-          disabled: true,
-        },
-        {
-          value: "閫夐」3",
-          label: "濉┖",
-        },
-      ],
+      // options: [
+      //   {
+      //     value: "閫夐」1",
+      //     label: "鍗曢��",
+      //   },
+      //   {
+      //     value: "閫夐」2",
+      //     label: "澶氶��",
+      //     disabled: true,
+      //   },
+      //   {
+      //     value: "閫夐」3",
+      //     label: "濉┖",
+      //   },
+      // ],
       addvalue: "娣诲姞棰樼洰",
       // 棰樼洰琛ㄦ牸鏁版嵁
       userList: [
diff --git a/src/views/knowledge/questionnaire/index.vue b/src/views/knowledge/questionnaire/index.vue
index 824de78..9290e98 100644
--- a/src/views/knowledge/questionnaire/index.vue
+++ b/src/views/knowledge/questionnaire/index.vue
@@ -25,12 +25,29 @@
           <el-tab-pane :label="`鍏ㄩ儴 (${numberlb})`"></el-tab-pane>
           <el-tab-pane
             class="tab-paness"
-            :key="item.name"
+            :key="item.title"
             v-for="(item, index) in editableTabs"
-            :label="item.title + ' (' + item.number + ')'"
-          ></el-tab-pane>
-
-          <el-tab-pane :label="`鏈垎缁�(${numberlbs})`"></el-tab-pane>
+          >
+            <span slot="label">
+              {{
+                item.title + " (" + item.number + ")"
+              }}&nbsp&nbsp&nbsp<el-popover
+                placement="top-start"
+                width="100"
+                trigger="hover"
+              >
+                <div style="text-align: center">
+                  <el-button type="text" @click="popoveramend(item)"
+                    >淇敼</el-button
+                  ><el-button type="text" @click="deletefenlei(item)"
+                    ><span style="color: rgb(173, 55, 55)"
+                      >鍒犻櫎</span
+                    ></el-button
+                  >
+                </div>
+                <i slot="reference" class="el-icon-share"></i> </el-popover
+            ></span>
+          </el-tab-pane>
         </el-tabs>
       </div>
     </div>
@@ -344,16 +361,39 @@
       </div>
     </div>
     <!-- 娣诲姞绫诲埆寮规 -->
-    <el-dialog width="30%" :visible.sync="dialogFormVisible">
-      <el-form :model="sidecolumnform">
-        <el-form-item label="璇疯緭鍏ョ被鍒悕绉�">
-          <el-input v-model="form.name" autocomplete="off"></el-input>
+    <el-dialog
+      :title="amendtag ? '淇敼绫诲埆' : '鏂板绫诲埆'"
+      width="30%"
+      :visible.sync="dialogFormVisible"
+    >
+      <el-form :model="classifyform">
+        <el-form-item
+          :label="amendtag ? '璇疯緭鍏ユ柊鐨勭被鍒悕绉�' : '璇疯緭鍏ョ被鍒悕绉�'"
+        >
+          <el-input
+            v-model="classifyform.categoryname"
+            autocomplete="off"
+          ></el-input>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
         <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button>
       </div>
+    </el-dialog>
+    <!-- 鍒犻櫎绫诲埆纭妗� -->
+    <el-dialog title="璀﹀憡" :visible.sync="deleteVisible" width="40%">
+      <div style="font-size: 20px; color: rgb(247, 76, 76)">
+        鏄惁纭鍒犻櫎鍒嗙被锛歔<span>{{ deletefenl }}</span
+        >]?
+      </div>
+      <div style="font-size: 20px">
+        姝ゆ搷浣滀細灏嗚绫诲埆涓嬫墍鏈夋ā鍧楄浆绉昏嚦[鏈垎绫籡锛屾槸鍚︾户缁垹闄ゆ鍒嗙被锛�
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="deleteVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="deletefenlei">纭� 瀹�</el-button>
+      </span>
     </el-dialog>
     <!-- 浜岀淮鐮佸睍绀哄脊妗� -->
     <el-dialog width="30%" :visible.sync="goQRCodeVisible">
@@ -425,10 +465,17 @@
       numberlb: 22,
       numberlbs: 2,
       sidecolumnform: {}, //娣诲姞绫诲埆琛ㄥ崟
-      dialogFormVisible: false, //娣诲姞绫诲埆寮规
       goQRCodeVisible: false, //浜岀淮鐮佸脊妗�
       sidecolumnval: "", //绫诲埆鎼滅储
       propss: { multiple: true },
+      idds: "",
+      amendtag: false, //鏄惁淇敼绫诲埆
+      dialogFormVisible: false, //淇敼娣诲姞绫诲埆寮规
+      deleteVisible: false, //鍒嗙被鍒犻櫎寮规
+      deletefenl: "楂樿鍘�", //鍒犻櫎椤�
+      classifyform: {
+        categoryname: "",
+      }, //绫诲埆琛ㄥ崟
       optionss: [
         {
           value: 1,
@@ -558,10 +605,45 @@
       //   console.log(rows);
       //   this.list = rows;
     },
-    // 娣诲姞绫诲埆
+    // 娣诲姞銆佷慨鏀圭被鍒�
     submitsidecolumn() {
+      if (this.amendtag) {
+        this.classifyform.tagcategoryid = this.idds;
+        // toamendtagcategory(this.addDateRange(this.classifyform)).then(
+        //   (response) => {
+        //     console.log(response);
+        //     this.gitclasify();
+        //   }
+        // );
+      } else {
+        // addtagcategory(this.addDateRange(this.classifyform)).then(
+        //   (response) => {
+        //     console.log(response);
+        //     this.gitclasify();
+        //   }
+        // );
+      }
+      this.classifyform = {
+        categoryname: "",
+      };
+      this.idds = "";
       this.dialogFormVisible = false;
     },
+    //鍒犻櫎鍒嗙被
+    deletefenlei(row) {
+      if (this.deleteVisible) {
+        // deletetagcategory(this.idds).then((response) => {
+        //   console.log(response);
+        //   this.gitclasify();
+        // });
+        this.deleteVisible = false;
+        this.idds = "";
+      } else {
+        this.deleteVisible = true;
+        this.idds = row.tagcategoryid;
+        this.deletefenl = row.title;
+      }
+    },
     //鎼滅储绫诲埆
     sidecolumnss() {},
     // 鍒囨崲鍏变韩/鏈湴
diff --git a/src/views/patient/patient/index.vue b/src/views/patient/patient/index.vue
index 487ba90..34442e1 100644
--- a/src/views/patient/patient/index.vue
+++ b/src/views/patient/patient/index.vue
@@ -1,32 +1,6 @@
 <template>
   <div class="app-container">
     <el-row :gutter="20">
-      <!--閮ㄩ棬鏁版嵁-->
-      <!-- <el-col :span="4" :xs="24">
-        <div class="head-container">
-          <el-input
-            v-model="deptName"
-            placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"
-            clearable
-            size="small"
-            prefix-icon="el-icon-search"
-            style="margin-bottom: 20px"
-          />
-        </div>
-        <div class="head-container">
-          <el-tree
-            :data="deptOptions"
-            :props="defaultProps"
-            :expand-on-click-node="false"
-            :filter-node-method="filterNode"
-            ref="tree"
-            node-key="id"
-            default-expand-all
-            highlight-current
-            @node-click="handleNodeClick"
-          />
-        </div>
-      </el-col> -->
       <!--鐢ㄦ埛鏁版嵁-->
       <el-col :span="24" :xs="24">
         <el-form
@@ -37,27 +11,27 @@
           v-show="showSearch"
           label-width="98px"
         >
-          <el-form-item label="濮撳悕" prop="userName">
+          <el-form-item label="濮撳悕" prop="name">
             <el-input
-              v-model="queryParams.userName"
+              v-model="queryParams.name"
               placeholder="璇疯緭鍏ュ鍚�"
               clearable
               style="width: 200px"
               @keyup.enter.native="handleQuery"
             />
           </el-form-item>
-          <el-form-item label="韬唤璇佸彿鐮�" prop="IDnumber">
+          <el-form-item label="韬唤璇佸彿鐮�" prop="iccardno">
             <el-input
-              v-model="queryParams.IDnumber"
+              v-model="queryParams.iccardno"
               placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"
               clearable
               style="width: 250px"
               @keyup.enter.native="handleQuery"
             />
           </el-form-item>
-          <el-form-item label="鑱旂郴鏂瑰紡" prop="phonenumber">
+          <el-form-item label="鑱旂郴鏂瑰紡" prop="telcode">
             <el-input
-              v-model="queryParams.phonenumber"
+              v-model="queryParams.telcode"
               placeholder="璇疯緭鍏ヨ仈绯绘柟寮�"
               clearable
               style="width: 280px"
@@ -65,31 +39,37 @@
             />
           </el-form-item>
           <el-row>
-            <el-form-item label="鎮h�呮爣绛�" prop="status">
-              <el-cascader
-                v-model="queryParams.status"
-                :options="optionss"
-                :props="propss"
-                clearable
-              ></el-cascader>
+            <el-form-item label="鎮h�呮爣绛�" prop="tagId">
+              <el-select
+                v-model="queryParams.tagIds"
+                multiple
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in optionstag"
+                  :key="item.tagid"
+                  :label="item.tagname"
+                  :value="item.tagid"
+                >
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item>
+              <el-button
+                type="primary"
+                icon="el-icon-search"
+                size="medium"
+                @click="handleQuery"
+                >鎼滅储</el-button
+              >
+              <el-button
+                icon="el-icon-refresh"
+                size="medium"
+                @click="resetQuery"
+                >閲嶇疆</el-button
+              >
             </el-form-item>
           </el-row>
-
-          <!-- <el-form-item label="鍒涘缓鏃堕棿">
-            <el-date-picker
-              v-model="dateRange"
-              style="width: 240px"
-              value-format="yyyy-MM-dd"
-              type="daterange"
-              range-separator="-"
-              start-placeholder="寮�濮嬫棩鏈�"
-              end-placeholder="缁撴潫鏃ユ湡"
-            ></el-date-picker>
-          </el-form-item>
-          <el-form-item>
-            <el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">鎼滅储</el-button>
-            <el-button icon="el-icon-refresh" size="medium" @click="resetQuery">閲嶇疆</el-button>
-          </el-form-item> -->
         </el-form>
 
         <el-row :gutter="10" class="mb8">
@@ -156,11 +136,6 @@
           </el-col>
           <!-- <el-col :span="1.5"> </el-col> -->
         </el-row>
-        <!-- <right-toolbar
-          :showSearch.sync="showSearch"
-          @queryTable="getList"
-          :columns="columns"
-        ></right-toolbar> -->
         <el-table
           v-loading="loading"
           :data="userList"
@@ -170,65 +145,60 @@
           <el-table-column
             label="搴忓彿"
             align="center"
-            key="userId"
-            prop="userId"
+            key="patid"
+            prop="patid"
           />
-          <el-table-column
-            label="濮撳悕"
-            align="center"
-            key="userName"
-            prop="userName"
-            :show-overflow-tooltip="true"
-          />
-          <el-table-column
-            label="鎬у埆"
-            align="center"
-            key="nickName"
-            prop="nickName"
-            :show-overflow-tooltip="true"
-          />
+          <el-table-column label="濮撳悕" align="center" key="name" prop="name" />
+          <el-table-column label="鎬у埆" align="center" key="sex" prop="sex">
+            <template slot-scope="scope">
+              <span>{{ scope.row.sex == 1 ? "鐢�" : "濂�" }}</span>
+            </template>
+          </el-table-column>
           <el-table-column
             label="鎮h�呮爣绛�"
             align="center"
-            key="deptName"
-            prop="dept.deptName"
+            key="tagList"
+            prop="tagList"
+            width="160"
             :show-overflow-tooltip="true"
-          />
+          >
+            <template slot-scope="scope">
+              <span v-for="item in scope.row.tagList">{{ item }} </span>
+            </template>
+          </el-table-column>
           <el-table-column
             label="璇佷欢绫诲瀷"
             align="center"
-            key="phonenumber"
-            prop="phonenumber"
+            key="iccardtype"
+            prop="iccardtype"
             width="120"
           /><el-table-column
             label="璇佷欢鍙风爜"
             align="center"
-            key="phonenumber"
-            prop="phonenumber"
-            width="120"
+            key="iccardno"
+            prop="iccardno"
+            width="190"
           />
           <el-table-column
             label="骞撮緞"
             align="center"
-            key="phonenumber"
-            prop="phonenumber"
-            v-if="columns[4].visible"
+            key="age"
+            prop="age"
             width="120"
           />
 
           <el-table-column
             label="鑱旂郴鏂瑰紡"
             align="center"
-            key="phonenumber"
-            prop="phonenumber"
-            v-if="columns[4].visible"
+            key="telcode"
+            prop="telcode"
             width="120"
           />
           <el-table-column
             label="寤烘。鏃ユ湡"
             align="center"
-            prop="createTime"
-            v-if="columns[6].visible"
+            key="archivetime"
+            prop="archivetime"
             width="160"
           >
             <template slot-scope="scope">
@@ -238,8 +208,7 @@
           <el-table-column
             label="鏇存柊鏃ユ湡"
             align="center"
-            prop="createTime"
-            v-if="columns[6].visible"
+            prop="updateTime"
             width="160"
           >
             <template slot-scope="scope">
@@ -252,14 +221,29 @@
             width="160"
             class-name="small-padding fixed-width"
           >
-            <template slot-scope="scope" v-if="scope.row.userId !== 1">
+            <template slot-scope="scope">
               <el-button
                 size="medium"
                 type="text"
-                icon="el-icon-edit"
-                @click="$router.push('/patient/patient/profile/')"
+                @click="
+                  $router.push({
+                    path: '/patient/patient/profile/',
+                    query: { id: scope.row.patid },
+                  })
+                "
                 v-hasPermi="['system:user:edit']"
-                >鏌ョ湅</el-button
+                ><span class="button-textsc"
+                  ><i class="el-icon-zoom-in"></i>鏌ョ湅</span
+                ></el-button
+              >
+              <el-button
+                size="medium"
+                type="text"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['system:user:edit']"
+                ><span class="button-textxg"
+                  ><i class="el-icon-edit"></i>淇敼</span
+                ></el-button
               >
             </template>
           </el-table-column>
@@ -276,20 +260,24 @@
     </el-row>
 
     <!-- 娣诲姞鎴栦慨鏀圭敤鎴烽厤缃璇濇 -->
-    <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
+    <el-dialog
+      :title="amendtag ? '淇敼鎮h�呬俊鎭�' : '鏂板鎮h��'"
+      :visible.sync="Labelchange"
+      width="900px"
+    >
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="濮撳悕" prop="nickName">
+            <el-form-item label="濮撳悕" prop="name">
               <el-input
-                v-model="form.nickName"
+                v-model="form.name"
                 placeholder="璇疯緭鍏ュ鍚�"
                 maxlength="30"
               />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="鎬у埆" prop="deptId">
+            <el-form-item label="鎬у埆" prop="sex">
               <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
                 <el-option
                   v-for="dict in dict.type.sys_user_sex"
@@ -303,18 +291,21 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="璇佷欢绫诲瀷" prop="phonenumber">
-              <el-input
-                v-model="form.phonenumber"
-                placeholder="璇烽�夋嫨璇佷欢绫诲瀷"
-                maxlength="11"
-              />
+            <el-form-item label="璇佷欢绫诲瀷" prop="iccardtype">
+              <el-select v-model="form.iccardtype" placeholder="璇烽�夋嫨鎬у埆">
+                <el-option
+                  v-for="item in paperstypes"
+                  :key="item.papersname"
+                  :label="item.papersname"
+                  :value="item.papersname"
+                ></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="璇佷欢鍙�" prop="email">
+            <el-form-item label="璇佷欢鍙�" prop="iccardno">
               <el-input
-                v-model="form.email"
+                v-model="form.iccardno"
                 placeholder="璇疯緭鍏ヨ瘉浠跺彿"
                 maxlength="50"
               />
@@ -323,18 +314,18 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="鏈汉鎵嬫満鍙�" prop="userName">
+            <el-form-item label="鏈汉鎵嬫満鍙�" prop="telcode">
               <el-input
-                v-model="form.userName"
+                v-model="form.telcode"
                 placeholder="璇疯緭鍏ユ墜鏈哄彿"
                 maxlength="30"
               />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="浜插睘鎵嬫満鍙�" prop="password">
+            <el-form-item label="浜插睘鎵嬫満鍙�" prop="relativetelcode">
               <el-input
-                v-model="form.password"
+                v-model="form.relativetelcode"
                 placeholder="璇疯緭鍏ヤ翰灞炴墜鏈哄彿"
                 type="password"
                 maxlength="20"
@@ -345,65 +336,30 @@
         </el-row>
         <el-row>
           <el-col :span="12">
+            <el-form-item label="骞撮緞" prop="age">
+              <el-input
+                v-model="form.age"
+                placeholder="璇疯緭鍏ュ勾榫�"
+                maxlength="30"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
             <el-form-item label="鎮h�呮爣绛�">
               <!-- <el-select v-model="form.sex" placeholder="璇烽�夋嫨"> -->
-              <el-cascader
-                :options="optionss"
-                :props="propss"
-                clearable
-              ></el-cascader>
+              <el-select v-model="form.tagList" multiple placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in optionstag"
+                  :key="item.tagid"
+                  :label="item.tagname"
+                  :value="item.tagid"
+                >
+                </el-option>
+              </el-select>
               <!-- </el-select> -->
             </el-form-item>
           </el-col>
-          <!-- <el-col :span="12">
-            <el-form-item label="鐘舵��">
-              <el-radio-group v-model="form.status">
-                <el-radio
-                  v-for="dict in dict.type.sys_normal_disable"
-                  :key="dict.value"
-                  :label="dict.value"
-                  >{{ dict.label }}</el-radio
-                >
-              </el-radio-group>
-            </el-form-item>
-          </el-col> -->
         </el-row>
-        <!-- <el-row>
-          <el-col :span="12">
-            <el-form-item label="宀椾綅">
-              <el-select
-                v-model="form.postIds"
-                multiple
-                placeholder="璇烽�夋嫨宀椾綅"
-              >
-                <el-option
-                  v-for="item in postOptions"
-                  :key="item.postId"
-                  :label="item.postName"
-                  :value="item.postId"
-                  :disabled="item.status == 1"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="瑙掕壊">
-              <el-select
-                v-model="form.roleIds"
-                multiple
-                placeholder="璇烽�夋嫨瑙掕壊"
-              >
-                <el-option
-                  v-for="item in roleOptions"
-                  :key="item.roleId"
-                  :label="item.roleName"
-                  :value="item.roleId"
-                  :disabled="item.status == 1"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row> -->
         <el-row>
           <el-col :span="24">
             <el-form-item label="澶囨敞">
@@ -515,8 +471,6 @@
 
 <script>
 import {
-  listUser,
-  getUser,
   delUser,
   addUser,
   updateUser,
@@ -524,7 +478,16 @@
   changeUserStatus,
   deptTreeSelect,
 } from "@/api/system/user";
-import { listpatient } from "@/api/patient/homepage";
+import {
+  listpatient,
+  messagelistpatient,
+  alterpatient,
+  addpatient,
+  deletepatient,
+  Exporterrorpatient,
+} from "@/api/patient/homepage";
+import { listtag } from "@/api/system/label";
+
 import { getToken } from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
@@ -559,47 +522,35 @@
       deptName: undefined,
       // 榛樿瀵嗙爜
       initPassword: undefined,
+      amendtag: false, //鏄惁淇敼
       // 鏃ユ湡鑼冨洿
       dateRange: [],
-      // 宀椾綅閫夐」
-      postOptions: [],
-      // 瑙掕壊閫夐」
-      roleOptions: [],
+      paperstypes: [
+        { papersname: "韬唤璇�" },
+        { papersname: "鎶ょ収" },
+        { papersname: "涓浗娓境灞呮皯韬唤璇�" },
+        { papersname: "涓浗鍙版咕灞呮皯韬唤璇�" },
+      ],
       // 琛ㄥ崟鍙傛暟
-      form: {},
+      form: {
+        name: "",
+        age: "",
+        sex: "",
+        tagList: [],
+        iccardno: "",
+        telcode: "",
+        iccardtype: "",
+        relativetelcode: "",
+      },
       //瀵煎叆杩涘害
       dractive: 1,
       // 瀵煎叆灞曠ず琛ㄥ崟
       uploadingData: {},
       total: 0, // 鎬绘潯鏁�
       ImportQuantity: 999, //瀵煎叆鎮h�呮暟閲�
-      // 鏌ヨ鍙傛暟
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        jobName: undefined,
-        jobGroup: undefined,
-        status: undefined,
-      },
+      Labelchange: false, //淇敼鏂板寮圭獥
       propss: { multiple: true },
-      optionss: [
-        {
-          value: 1,
-          label: "涓滃崡",
-        },
-        {
-          value: 2,
-          label: "瑗垮寳",
-        },
-        {
-          value: 3,
-          label: "浠ㄤ花浠�",
-        },
-        {
-          value: 4,
-          label: "鍏椋掗",
-        },
-      ],
+      optionstag: [], //鏍囩鍒楄〃
       defaultProps: {
         children: "children",
         label: "label",
@@ -622,69 +573,58 @@
       // 鏌ヨ鍙傛暟
       queryParams: {
         pageNum: 1,
-        name: "鐜嬪ぇ",
         pageSize: 10,
-        userName: undefined,
-        phonenumber: undefined,
+        iccardno: undefined,
+        name: undefined,
         status: undefined,
-        deptId: undefined,
-        IDnumber: undefined,
+        tagIds: undefined,
+        telcode: undefined,
       },
-      // 鍒椾俊鎭�
-      columns: [
-        { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true },
-        { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true },
-        { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true },
-        { key: 3, label: `閮ㄩ棬`, visible: true },
-        { key: 4, label: `鎵嬫満鍙风爜`, visible: true },
-        { key: 5, label: `鐘舵�乣, visible: true },
-        { key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
-      ],
       // 琛ㄥ崟鏍¢獙
       rules: {
-        userName: [
-          { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
-          {
-            min: 2,
-            max: 20,
-            message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
-            trigger: "blur",
-          },
-        ],
-        nickName: [
-          { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" },
-        ],
-        password: [
-          { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
-          {
-            min: 5,
-            max: 20,
-            message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
-            trigger: "blur",
-          },
-        ],
-        email: [
-          {
-            type: "email",
-            message: "璇疯緭鍏ユ纭殑閭鍦板潃",
-            trigger: ["blur", "change"],
-          },
-        ],
-        phonenumber: [
-          {
-            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
-            message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
-            trigger: "blur",
-          },
-        ],
-        IDnumber: [
-          {
-            pattern:
-              /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
-            message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�",
-            trigger: "blur",
-          },
-        ],
+        // userName: [
+        //   { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+        //   {
+        //     min: 2,
+        //     max: 20,
+        //     message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
+        //     trigger: "blur",
+        //   },
+        // ],
+        // nickName: [
+        //   { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" },
+        // ],
+        // password: [
+        //   { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
+        //   {
+        //     min: 5,
+        //     max: 20,
+        //     message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+        //     trigger: "blur",
+        //   },
+        // ],
+        // email: [
+        //   {
+        //     type: "email",
+        //     message: "璇疯緭鍏ユ纭殑閭鍦板潃",
+        //     trigger: ["blur", "change"],
+        //   },
+        // ],
+        // phonenumber: [
+        //   {
+        //     pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+        //     message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+        //     trigger: "blur",
+        //   },
+        // ],
+        // IDnumber: [
+        //   {
+        //     pattern:
+        //       /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
+        //     message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�",
+        //     trigger: "blur",
+        //   },
+        // ],
       },
     };
   },
@@ -696,6 +636,7 @@
   },
   created() {
     this.getList();
+    this.gettabList();
     this.getDeptTree();
     this.getConfigKey("sys.user.initPassword").then((response) => {
       this.initPassword = response.msg;
@@ -705,11 +646,19 @@
     /** 鏌ヨ鎮h�呭垪琛� */
     getList() {
       this.loading = true;
-      listUser(this.queryParams).then((response) => {
+      messagelistpatient(this.queryParams).then((response) => {
         console.log(response);
         this.userList = response.rows;
         this.total = response.total;
         this.loading = false;
+      });
+    },
+    /** 鏌ヨ鏍囩鍒楄〃 */
+    gettabList() {
+      const queryParams = {};
+      listtag(this.addDateRange(queryParams)).then((response) => {
+        console.log(response);
+        this.optionstag = response.rows;
       });
     },
     // 鏌ヨ瀵煎叆灞曠ず鍒楄〃
@@ -760,20 +709,16 @@
     // 琛ㄥ崟閲嶇疆
     reset() {
       this.form = {
-        userId: undefined,
-        deptId: undefined,
-        userName: undefined,
-        nickName: undefined,
-        password: undefined,
-        phonenumber: undefined,
-        email: undefined,
-        sex: undefined,
-        status: "0",
-        remark: undefined,
-        postIds: [],
-        roleIds: [],
+        name: "",
+        age: "",
+        sex: "",
+        tagList: [],
+        iccardno: "",
+        telcode: "",
+        iccardtype: "",
+        relativetelcode: "",
       };
-      this.resetForm("form");
+      // this.resetForm("form");
     },
     /** 鎼滅储鎸夐挳鎿嶄綔 */
     handleQuery() {
@@ -784,54 +729,47 @@
     resetQuery() {
       this.dateRange = [];
       this.resetForm("queryForm");
-      this.queryParams.deptId = undefined;
       this.$refs.tree.setCurrentKey(null);
       this.handleQuery();
     },
     // 澶氶�夋閫変腑鏁版嵁
     handleSelectionChange(selection) {
-      this.ids = selection.map((item) => item.userId);
+      this.ids = selection.map((item) => item.patid);
       this.single = selection.length != 1;
       this.multiple = !selection.length;
     },
-    // 鏇村鎿嶄綔瑙﹀彂
-    handleCommand(command, row) {
-      switch (command) {
-        case "handleResetPwd":
-          this.handleResetPwd(row);
-          break;
-        case "handleAuthRole":
-          this.handleAuthRole(row);
-          break;
-        default:
-          break;
-      }
-    },
+
     /** 鏂板鎸夐挳鎿嶄綔 */
     handleAdd() {
       this.reset();
-      getUser().then((response) => {
-        this.postOptions = response.posts;
-        this.roleOptions = response.roles;
-        this.open = true;
-        this.title = "鏂板鎮h��";
-        this.form.password = this.initPassword;
-      });
+      this.Labelchange = true;
     },
     /** 淇敼鎸夐挳鎿嶄綔 */
     handleUpdate(row) {
+      this.amendtag = true;
+      this.Labelchange = true;
+    },
+    //淇敼/鏂板鎮h��
+    updatevaluedate() {
+      if (this.amendtag) {
+        this.form.tagcategoryid = this.idds;
+        // toamendtagcategory(this.addDateRange(this.classifyform)).then(
+        //   (response) => {
+        //     console.log(response);
+        //     this.gitclasify();
+        //   }
+        // );
+      } else {
+        // addtagcategory(this.addDateRange(this.classifyform)).then(
+        //   (response) => {
+        //     console.log(response);
+        //     this.gitclasify();
+        //   }
+        // );
+      }
       this.reset();
-      const userId = row.userId || this.ids;
-      getUser(userId).then((response) => {
-        this.form = response.data;
-        this.postOptions = response.posts;
-        this.roleOptions = response.roles;
-        this.$set(this.form, "postIds", response.postIds);
-        this.$set(this.form, "roleIds", response.roleIds);
-        this.open = true;
-        this.title = "淇敼鐢ㄦ埛";
-        this.form.password = "";
-      });
+      // this.idds = "";
+      this.Labelchange = false;
     },
     /** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */
     handleResetPwd(row) {
@@ -854,26 +792,7 @@
       const userId = row.userId;
       this.$router.push("/system/user-auth/role/" + userId);
     },
-    /** 鎻愪氦鎸夐挳 */
-    submitForm: function () {
-      this.$refs["form"].validate((valid) => {
-        if (valid) {
-          if (this.form.userId != undefined) {
-            updateUser(this.form).then((response) => {
-              this.$modal.msgSuccess("淇敼鎴愬姛");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addUser(this.form).then((response) => {
-              this.$modal.msgSuccess("鏂板鎴愬姛");
-              this.open = false;
-              this.getList();
-            });
-          }
-        }
-      });
-    },
+
     /** 鍒犻櫎鎸夐挳鎿嶄綔 */
     handleDelete(row) {
       const userIds = row.userId || this.ids;
@@ -990,4 +909,7 @@
     height: 100px;
   }
 }
+.button-textsc {
+  color: #28cfe6;
+}
 </style>
diff --git a/src/views/repositoryai/intention/index.vue b/src/views/repositoryai/intention/index.vue
new file mode 100644
index 0000000..bba76ed
--- /dev/null
+++ b/src/views/repositoryai/intention/index.vue
@@ -0,0 +1,863 @@
+<template>
+  <div class="Questionnairemanagement">
+    <!-- 宸︿晶鏍� -->
+    <div class="sidecolumn">
+      <div class="sidecolumn-top">
+        <div class="top-wj">鎰忓浘绫诲瀷</div>
+        <div class="top-tj" @click="dialogFormVisible = true">+娣诲姞</div>
+      </div>
+      <div class="center-ss">
+        <el-input
+          placeholder="璇疯緭鍏ュ唴瀹�"
+          v-model="sidecolumnval"
+          class="input-with-select"
+          size="medium "
+        >
+          <el-button
+            @click="sidecolumnss"
+            slot="append"
+            icon="el-icon-search"
+          ></el-button>
+        </el-input>
+      </div>
+      <div class="bottom-fl">
+        <el-tabs tab-position="right">
+          <el-tab-pane :label="`鍏ㄩ儴 (${numberlb})`"></el-tab-pane>
+          <el-tab-pane
+            class="tab-paness"
+            :key="item.title"
+            v-for="(item, index) in editableTabs"
+          >
+            <span slot="label">
+              {{
+                item.title + " (" + item.number + ")"
+              }}&nbsp&nbsp&nbsp<el-popover
+                placement="top-start"
+                width="100"
+                trigger="hover"
+              >
+                <div style="text-align: center">
+                  <el-button type="text" @click="popoveramend(item)"
+                    >淇敼</el-button
+                  ><el-button type="text" @click="deletefenlei(item)"
+                    ><span style="color: rgb(173, 55, 55)"
+                      >鍒犻櫎</span
+                    ></el-button
+                  >
+                </div>
+                <i slot="reference" class="el-icon-share"></i> </el-popover
+            ></span>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
+    </div>
+    <!-- 鍙充晶鏁版嵁 -->
+    <div class="leftvlue">
+      <div class="leftvlue-top">
+        <el-tabs v-model="topactiveName" @tab-click="tophandleClick">
+          <el-tab-pane name="Local">
+            <span class="mulsz" slot="label">鏈湴鎰忓浘搴� </span>
+          </el-tab-pane>
+          <el-tab-pane name="sharing">
+            <span class="mulsz" slot="label">鍏变韩鎰忓浘搴� </span>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
+      <div class="leftvlue-bg">
+        <el-row :gutter="20">
+          <!--鐢ㄦ埛鏁版嵁-->
+          <el-col :span="24" :xs="24">
+            <el-form
+              :model="queryParams"
+              ref="queryForm"
+              size="small"
+              :inline="true"
+              v-show="showSearch"
+              label-width="98px"
+            >
+              <el-form-item label="鎰忓浘鍚嶇О" prop="userName">
+                <el-input
+                  v-model="queryParams.userName"
+                  placeholder="璇疯緭鍏�"
+                  clearable
+                  style="width: 200px"
+                  @keyup.enter.native="handleQuery"
+                />
+              </el-form-item>
+              <el-form-item label="閫傜敤鐤剧梾" prop="status">
+                <el-cascader
+                  v-model="queryParams.status"
+                  :options="optionss"
+                  :props="propss"
+                  clearable
+                ></el-cascader>
+              </el-form-item>
+
+              <el-form-item>
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="medium"
+                  @click="handleQuery"
+                  >鎼滅储</el-button
+                >
+                <el-button
+                  icon="el-icon-refresh"
+                  size="medium"
+                  @click="resetQuery"
+                  >閲嶇疆</el-button
+                >
+              </el-form-item>
+            </el-form>
+
+            <el-row :gutter="10" class="mb8">
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  plain
+                  icon="el-icon-plus"
+                  size="medium"
+                  @click="handleAdd"
+                  v-hasPermi="['system:user:add']"
+                  >鏂板</el-button
+                >
+              </el-col>
+
+              <el-col :span="1.5">
+                <el-button
+                  type="danger"
+                  plain
+                  icon="el-icon-delete"
+                  size="medium"
+                  :disabled="multiple"
+                  @click="handleDelete"
+                  v-hasPermi="['system:user:remove']"
+                  >鍒犻櫎</el-button
+                >
+              </el-col>
+
+              <!-- <el-col :span="1.5"> </el-col> -->
+            </el-row>
+            <!-- <right-toolbar
+          :showSearch.sync="showSearch"
+          @queryTable="getList"
+          :columns="columns"
+        ></right-toolbar> -->
+            <el-table
+              v-loading="loading"
+              :data="userList"
+              :border="true"
+              @selection-change="handleSelectionChange"
+            >
+              <el-table-column type="selection" width="50" align="center" />
+              <el-table-column
+                label="搴忓彿"
+                align="center"
+                key="userId"
+                prop="userId"
+                v-if="columns[0].visible"
+              />
+              <el-table-column
+                label="鎰忓浘鍚嶇О"
+                align="center"
+                key="userName"
+                prop="userName"
+                v-if="columns[1].visible"
+                :show-overflow-tooltip="true"
+              />
+              <el-table-column
+                label="鐗堟湰"
+                align="center"
+                key="nickName"
+                prop="nickName"
+                v-if="columns[2].visible"
+                :show-overflow-tooltip="true"
+              />
+
+              <el-table-column
+                label="閫傜敤鐤剧梾"
+                align="center"
+                key="aphonenumber"
+                prop="aphonenumber"
+                v-if="columns[4].visible"
+                width="120"
+              /><el-table-column
+                label="鎰忓浘鎻忚堪"
+                align="center"
+                key="bphonenumber"
+                prop="bphonenumber"
+                v-if="columns[4].visible"
+                width="120"
+              />
+              <el-table-column
+                label="鏈�杩戠紪杈�"
+                align="center"
+                key="cphonenumber"
+                prop="cphonenumber"
+                v-if="columns[4].visible"
+                width="120"
+              />
+
+              <el-table-column
+                label="鎿嶄綔"
+                align="center"
+                width="300"
+                class-name="small-padding fixed-width"
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="goQRCode(scope.row)"
+                    v-hasPermi="['system:user:edit']"
+                  >
+                    <span class="button-text"
+                      ><i class="el-icon-edit"></i>浜岀淮鐮�</span
+                    ></el-button
+                  >
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="ViewQuestionnaire(scope.row)"
+                    v-hasPermi="['system:user:edit']"
+                    ><span class="button-textck"
+                      ><i class="el-icon-edit"></i>鏌ョ湅</span
+                    ></el-button
+                  >
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="handleUpdate(scope.row)"
+                    v-hasPermi="['system:user:edit']"
+                    ><span class="button-textxg"
+                      ><i class="el-icon-edit"></i>淇敼</span
+                    ></el-button
+                  >
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="handleDelete(scope.row)"
+                    v-hasPermi="['system:user:remove']"
+                    ><span class="button-textsc"
+                      ><i class="el-icon-edit"></i>鍒犻櫎</span
+                    ></el-button
+                  >
+                </template>
+              </el-table-column>
+            </el-table>
+
+            <pagination
+              v-show="total > 0"
+              :total="total"
+              :page.sync="queryParams.pageNum"
+              :limit.sync="queryParams.pageSize"
+              @pagination="getList"
+            />
+          </el-col>
+        </el-row>
+
+        <!-- 娣诲姞鎴栦慨鏀规剰鍥鹃厤缃璇濇 -->
+        <el-dialog
+          :title="title"
+          :visible.sync="open"
+          width="900px"
+          append-to-body
+        >
+          <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="濮撳悕" prop="nickName">
+                  <el-input
+                    v-model="form.nickName"
+                    placeholder="璇疯緭鍏ュ鍚�"
+                    maxlength="30"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鎬у埆" prop="deptId">
+                  <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
+                    <el-option
+                      v-for="dict in dict.type.sys_user_sex"
+                      :key="dict.value"
+                      :label="dict.label"
+                      :value="dict.value"
+                    ></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="璇佷欢绫诲瀷" prop="phonenumber">
+                  <el-input
+                    v-model="form.phonenumber"
+                    placeholder="璇烽�夋嫨璇佷欢绫诲瀷"
+                    maxlength="11"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="璇佷欢鍙�" prop="email">
+                  <el-input
+                    v-model="form.email"
+                    placeholder="璇疯緭鍏ヨ瘉浠跺彿"
+                    maxlength="50"
+                  />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="鏈汉鎵嬫満鍙�" prop="userName">
+                  <el-input
+                    v-model="form.userName"
+                    placeholder="璇疯緭鍏ユ墜鏈哄彿"
+                    maxlength="30"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="浜插睘鎵嬫満鍙�" prop="password">
+                  <el-input
+                    v-model="form.password"
+                    placeholder="璇疯緭鍏ヤ翰灞炴墜鏈哄彿"
+                    type="password"
+                    maxlength="20"
+                    show-password
+                  />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="鎮h�呮爣绛�">
+                  <el-cascader
+                    :options="optionss"
+                    :props="propss"
+                    clearable
+                  ></el-cascader>
+                </el-form-item>
+              </el-col>
+            </el-row>
+
+            <el-row>
+              <el-col :span="24">
+                <el-form-item label="澶囨敞">
+                  <el-input
+                    v-model="form.remark"
+                    type="textarea"
+                    placeholder="璇疯緭鍏ュ唴瀹�"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+          <div slot="footer" class="dialog-footer">
+            <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+            <el-button @click="cancel">鍙� 娑�</el-button>
+          </div>
+        </el-dialog>
+      </div>
+    </div>
+    <!-- 娣诲姞绫诲埆寮规 -->
+    <el-dialog
+      :title="amendtag ? '淇敼绫诲埆' : '鏂板绫诲埆'"
+      width="30%"
+      :visible.sync="dialogFormVisible"
+    >
+      <el-form :model="classifyform">
+        <el-form-item
+          :label="amendtag ? '璇疯緭鍏ユ柊鐨勭被鍒悕绉�' : '璇疯緭鍏ョ被鍒悕绉�'"
+        >
+          <el-input
+            v-model="classifyform.categoryname"
+            autocomplete="off"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button>
+      </div>
+    </el-dialog>
+    <!-- 鍒犻櫎绫诲埆纭妗� -->
+    <el-dialog title="璀﹀憡" :visible.sync="deleteVisible" width="40%">
+      <div style="font-size: 20px; color: rgb(247, 76, 76)">
+        鏄惁纭鍒犻櫎鍒嗙被锛歔<span>{{ deletefenl }}</span
+        >]?
+      </div>
+      <div style="font-size: 20px">
+        姝ゆ搷浣滀細灏嗚绫诲埆涓嬫墍鏈夋ā鍧楄浆绉昏嚦[鏈垎绫籡锛屾槸鍚︾户缁垹闄ゆ鍒嗙被锛�
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="deleteVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="deletefenlei">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <!-- 浜岀淮鐮佸睍绀哄脊妗� -->
+    <el-dialog width="30%" :visible.sync="goQRCodeVisible">
+      <div class="qrcode-dialo">
+        <div class="qrcode-text">
+          {{ namequestionnaire }}<span>{{ haoquestionnaire }}</span>
+        </div>
+        <div class="qrcode-img"></div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  listUser,
+  getUser,
+  delUser,
+  addUser,
+  updateUser,
+} from "@/api/system/user";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+export default {
+  name: "questionnaire",
+  dicts: ["sys_normal_disable", "sys_user_sex"],
+  components: { Treeselect },
+  data() {
+    return {
+      topactiveName: "Local", //椤堕儴閫夋嫨
+      // 閬僵灞�
+      loading: false,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      namequestionnaire: "",
+      haoquestionnaire: "",
+      idds: "",
+      amendtag: false, //鏄惁淇敼绫诲埆
+      dialogFormVisible: false, //淇敼娣诲姞绫诲埆寮规
+      deleteVisible: false, //鍒嗙被鍒犻櫎寮规
+      deletefenl: "楂樿鍘�", //鍒犻櫎椤�
+      classifyform: {
+        categoryname: "",
+      }, //绫诲埆琛ㄥ崟
+      // 琛ㄦ牸鏁版嵁
+      userList: [
+        {
+          userid: 1,
+          userName: "涓夊彿鎰忓浘",
+          nickName: "1.2.4",
+          aphonenumber: "鍏宠妭鐐庣棁",
+          bphonenumber: "寰堟",
+          cphonenumber: "2022-12-12 ",
+        },
+      ],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏃ユ湡鑼冨洿
+      dateRange: [],
+      // 宀椾綅閫夐」
+      postOptions: [],
+      // 瑙掕壊閫夐」
+      roleOptions: [],
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      numberlb: 22,
+      numberlbs: 2,
+      sidecolumnform: {}, //娣诲姞绫诲埆琛ㄥ崟
+      dialogFormVisible: false, //娣诲姞绫诲埆寮规
+      goQRCodeVisible: false, //浜岀淮鐮佸脊妗�
+      sidecolumnval: "", //绫诲埆鎼滅储
+      propss: { multiple: true },
+      optionss: [
+        {
+          value: 1,
+          label: "涓滃崡",
+        },
+        {
+          value: 2,
+          label: "瑗垮寳",
+        },
+        {
+          value: 3,
+          label: "浠ㄤ花浠�",
+        },
+        {
+          value: 4,
+          label: "鍏椋掗",
+        },
+      ],
+      //绫诲埆鍒楄〃
+      editableTabs: [
+        {
+          title: "鎰忓浘鍒嗙被涓�",
+          number: "1",
+        },
+        {
+          title: "鎰忓浘鍒嗙被浜�",
+          number: "2",
+        },
+        {
+          title: "鎰忓浘鍒嗙被涓�",
+          number: "2",
+        },
+        {
+          title: "鎰忓浘鍒嗙被鍥�",
+          number: "2",
+        },
+        {
+          title: "鎰忓浘鍒嗙被浜�",
+          number: "2",
+        },
+      ],
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        userName: undefined,
+        phonenumber: undefined,
+        status: undefined,
+        deptId: undefined,
+        IDnumber: undefined,
+      },
+      // 鍒椾俊鎭�
+      columns: [
+        { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true },
+        { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true },
+        { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true },
+        { key: 3, label: `閮ㄩ棬`, visible: true },
+        { key: 4, label: `鎵嬫満鍙风爜`, visible: true },
+        { key: 5, label: `鐘舵�乣, visible: true },
+        { key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
+      ],
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        userName: [
+          { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+          {
+            min: 2,
+            max: 20,
+            message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
+            trigger: "blur",
+          },
+        ],
+        nickName: [
+          { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" },
+        ],
+        password: [
+          { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
+          {
+            min: 5,
+            max: 20,
+            message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+            trigger: "blur",
+          },
+        ],
+        email: [
+          {
+            type: "email",
+            message: "璇疯緭鍏ユ纭殑閭鍦板潃",
+            trigger: ["blur", "change"],
+          },
+        ],
+        phonenumber: [
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+            trigger: "blur",
+          },
+        ],
+        IDnumber: [
+          {
+            pattern:
+              /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
+            message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�",
+            trigger: "blur",
+          },
+        ],
+      },
+    };
+  },
+  watch: {},
+  created() {
+    this.getList();
+  },
+
+  methods: {
+    /** 鏌ヨ鐢ㄦ埛鍒楄〃 */
+    getList() {
+      //   this.loading = true;
+      listUser().then((response) => {
+        console.log(response);
+        console.log(this.userList);
+      });
+    },
+    // 娣诲姞銆佷慨鏀圭被鍒�
+    submitsidecolumn() {
+      if (this.amendtag) {
+        this.classifyform.tagcategoryid = this.idds;
+        // toamendtagcategory(this.addDateRange(this.classifyform)).then(
+        //   (response) => {
+        //     console.log(response);
+        //     this.gitclasify();
+        //   }
+        // );
+      } else {
+        // addtagcategory(this.addDateRange(this.classifyform)).then(
+        //   (response) => {
+        //     console.log(response);
+        //     this.gitclasify();
+        //   }
+        // );
+      }
+      this.classifyform = {
+        categoryname: "",
+      };
+      this.idds = "";
+      this.dialogFormVisible = false;
+    },
+    //鍒犻櫎鍒嗙被
+    deletefenlei(row) {
+      if (this.deleteVisible) {
+        // deletetagcategory(this.idds).then((response) => {
+        //   console.log(response);
+        //   this.gitclasify();
+        // });
+        this.deleteVisible = false;
+        this.idds = "";
+      } else {
+        this.deleteVisible = true;
+        this.idds = row.tagcategoryid;
+        this.deletefenl = row.title;
+      }
+    },
+    //鎼滅储绫诲埆
+    sidecolumnss() {},
+    // 鍒囨崲鍏变韩/鏈湴
+    tophandleClick() {},
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    goQRCode(row) {
+      this.goQRCodeVisible = true;
+      this.namequestionnaire = row.userName;
+      this.haoquestionnaire = row.nickName;
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        userId: undefined,
+        deptId: undefined,
+        userName: undefined,
+        nickName: undefined,
+        password: undefined,
+        phonenumber: undefined,
+        email: undefined,
+        sex: undefined,
+        status: "0",
+        remark: undefined,
+        postIds: [],
+        roleIds: [],
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.queryParams.deptId = undefined;
+      this.$refs.tree.setCurrentKey(null);
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.userId);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.$router.push({
+        path: "/knowledge/questionnaire/compilequer/",
+      });
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.$router.push({
+        path: "/knowledge/questionnaire/compilequer/",
+        query: { id: "1" },
+      });
+    },
+    // 鏌ョ湅鎰忓浘
+    ViewQuestionnaire() {
+      this.$router.push({
+        path: "/knowledge/questionnaire/examine/",
+        query: { id: "1" },
+      });
+    },
+    // 淇敼鍒嗙被寮规
+    popoveramend(tagcategoryid) {
+      this.idds = tagcategoryid;
+      this.amendtag = true;
+      this.dialogFormVisible = true;
+    },
+
+    /** 鏇存柊/淇敼鎻愪氦鎸夐挳 */
+    submitForm: function () {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          if (this.form.userId != undefined) {
+            updateUser(this.form).then((response) => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addUser(this.form).then((response) => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const userIds = row.userId || this.ids;
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
+        .then(function () {
+          return delUser(userIds);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        })
+        .catch(() => {});
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.Questionnairemanagement {
+  display: flex;
+}
+.sidecolumn {
+  width: 300px;
+  min-height: 100vh;
+  text-align: center;
+  //   display: flex;
+  margin-top: 20px;
+  margin: 20px;
+  padding: 30px;
+  background: #edf1f7;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+  .sidecolumn-top {
+    display: flex;
+    justify-content: space-between;
+    .top-wj {
+      font-size: 20px;
+    }
+    .top-tj {
+      font-size: 18px;
+
+      color: rgb(0, 89, 255);
+      cursor: pointer;
+    }
+  }
+  .center-ss {
+    margin-top: 30px;
+    .input-with-select {
+      height: 40px !important;
+    }
+  }
+  .bottom-fl {
+    margin-top: 30px;
+    display: center !important;
+  }
+}
+.qrcode-dialo {
+  text-align: center;
+  //   display: flex;
+  margin: 20px;
+  padding: 30px;
+  background: #edf1f7;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+  .qrcode-text {
+    font-size: 20px;
+    span {
+      margin-left: 20px;
+    }
+  }
+  .qrcode-img {
+    width: 300px;
+    height: 400px;
+  }
+}
+::v-deep.el-tabs--left,
+.el-tabs--right {
+  overflow: hidden;
+  align-items: center;
+  display: flex;
+}
+::v-deep.el-input--medium .el-input__inner {
+  height: 40px !important;
+}
+::v-deep.el-tabs--right .el-tabs__active-bar.is-right {
+  height: 40px;
+  width: 5px;
+  left: 0;
+}
+::v-deep.el-tabs--right .el-tabs__item.is-right {
+  display: block;
+  font-size: 20px;
+}
+.leftvlue {
+  //   display: flex;
+  //   flex: 1;
+  width: 80%;
+  margin-top: 20px;
+  //   margin: 20px;
+  padding: 30px;
+  background: #ffff;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+  .mulsz {
+    font-size: 20px;
+  }
+}
+.button-text {
+  color: rgb(70, 204, 238);
+}
+.button-textck {
+  color: rgb(39, 167, 67);
+}
+.button-textxg {
+  color: rgb(35, 81, 233);
+}
+.button-textsc {
+  color: rgb(235, 23, 23);
+}
+</style>
diff --git a/src/views/repositoryai/templateku/index.vue b/src/views/repositoryai/templateku/index.vue
new file mode 100644
index 0000000..76e8a51
--- /dev/null
+++ b/src/views/repositoryai/templateku/index.vue
@@ -0,0 +1,17 @@
+<template>
+  <div>闅忚妯$増</div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {};
+  },
+
+  created() {},
+
+  methods: {},
+};
+</script>
+
+<style lang="scss" scoped></style>
diff --git a/src/views/repositoryai/verbaltrick/index.vue b/src/views/repositoryai/verbaltrick/index.vue
new file mode 100644
index 0000000..ef7032a
--- /dev/null
+++ b/src/views/repositoryai/verbaltrick/index.vue
@@ -0,0 +1,863 @@
+<template>
+  <div class="Questionnairemanagement">
+    <!-- 宸︿晶鏍� -->
+    <div class="sidecolumn">
+      <div class="sidecolumn-top">
+        <div class="top-wj">璇濇湳绫诲瀷</div>
+        <div class="top-tj" @click="dialogFormVisible = true">+娣诲姞</div>
+      </div>
+      <div class="center-ss">
+        <el-input
+          placeholder="璇疯緭鍏ュ唴瀹�"
+          v-model="sidecolumnval"
+          class="input-with-select"
+          size="medium "
+        >
+          <el-button
+            @click="sidecolumnss"
+            slot="append"
+            icon="el-icon-search"
+          ></el-button>
+        </el-input>
+      </div>
+      <div class="bottom-fl">
+        <el-tabs tab-position="right">
+          <el-tab-pane :label="`鍏ㄩ儴 (${numberlb})`"></el-tab-pane>
+          <el-tab-pane
+            class="tab-paness"
+            :key="item.title"
+            v-for="(item, index) in editableTabs"
+          >
+            <span slot="label">
+              {{
+                item.title + " (" + item.number + ")"
+              }}&nbsp&nbsp&nbsp<el-popover
+                placement="top-start"
+                width="100"
+                trigger="hover"
+              >
+                <div style="text-align: center">
+                  <el-button type="text" @click="popoveramend(item)"
+                    >淇敼</el-button
+                  ><el-button type="text" @click="deletefenlei(item)"
+                    ><span style="color: rgb(173, 55, 55)"
+                      >鍒犻櫎</span
+                    ></el-button
+                  >
+                </div>
+                <i slot="reference" class="el-icon-share"></i> </el-popover
+            ></span>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
+    </div>
+    <!-- 鍙充晶鏁版嵁 -->
+    <div class="leftvlue">
+      <div class="leftvlue-top">
+        <el-tabs v-model="topactiveName" @tab-click="tophandleClick">
+          <el-tab-pane name="Local">
+            <span class="mulsz" slot="label">鏈湴璇濇湳搴� </span>
+          </el-tab-pane>
+          <el-tab-pane name="sharing">
+            <span class="mulsz" slot="label">鍏变韩璇濇湳搴� </span>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
+      <div class="leftvlue-bg">
+        <el-row :gutter="20">
+          <!--鐢ㄦ埛鏁版嵁-->
+          <el-col :span="24" :xs="24">
+            <el-form
+              :model="queryParams"
+              ref="queryForm"
+              size="small"
+              :inline="true"
+              v-show="showSearch"
+              label-width="98px"
+            >
+              <el-form-item label="璇濇湳鍚嶇О" prop="userName">
+                <el-input
+                  v-model="queryParams.userName"
+                  placeholder="璇疯緭鍏�"
+                  clearable
+                  style="width: 200px"
+                  @keyup.enter.native="handleQuery"
+                />
+              </el-form-item>
+              <el-form-item label="閫傜敤鐤剧梾" prop="status">
+                <el-cascader
+                  v-model="queryParams.status"
+                  :options="optionss"
+                  :props="propss"
+                  clearable
+                ></el-cascader>
+              </el-form-item>
+
+              <el-form-item>
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="medium"
+                  @click="handleQuery"
+                  >鎼滅储</el-button
+                >
+                <el-button
+                  icon="el-icon-refresh"
+                  size="medium"
+                  @click="resetQuery"
+                  >閲嶇疆</el-button
+                >
+              </el-form-item>
+            </el-form>
+
+            <el-row :gutter="10" class="mb8">
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  plain
+                  icon="el-icon-plus"
+                  size="medium"
+                  @click="handleAdd"
+                  v-hasPermi="['system:user:add']"
+                  >鏂板</el-button
+                >
+              </el-col>
+
+              <el-col :span="1.5">
+                <el-button
+                  type="danger"
+                  plain
+                  icon="el-icon-delete"
+                  size="medium"
+                  :disabled="multiple"
+                  @click="handleDelete"
+                  v-hasPermi="['system:user:remove']"
+                  >鍒犻櫎</el-button
+                >
+              </el-col>
+
+              <!-- <el-col :span="1.5"> </el-col> -->
+            </el-row>
+            <!-- <right-toolbar
+          :showSearch.sync="showSearch"
+          @queryTable="getList"
+          :columns="columns"
+        ></right-toolbar> -->
+            <el-table
+              v-loading="loading"
+              :data="userList"
+              :border="true"
+              @selection-change="handleSelectionChange"
+            >
+              <el-table-column type="selection" width="50" align="center" />
+              <el-table-column
+                label="搴忓彿"
+                align="center"
+                key="userId"
+                prop="userId"
+                v-if="columns[0].visible"
+              />
+              <el-table-column
+                label="璇濇湳鍚嶇О"
+                align="center"
+                key="userName"
+                prop="userName"
+                v-if="columns[1].visible"
+                :show-overflow-tooltip="true"
+              />
+              <el-table-column
+                label="鐗堟湰"
+                align="center"
+                key="nickName"
+                prop="nickName"
+                v-if="columns[2].visible"
+                :show-overflow-tooltip="true"
+              />
+
+              <el-table-column
+                label="閫傜敤鐤剧梾"
+                align="center"
+                key="aphonenumber"
+                prop="aphonenumber"
+                v-if="columns[4].visible"
+                width="120"
+              /><el-table-column
+                label="璇濇湳鎻忚堪"
+                align="center"
+                key="bphonenumber"
+                prop="bphonenumber"
+                v-if="columns[4].visible"
+                width="120"
+              />
+              <el-table-column
+                label="鏈�杩戠紪杈�"
+                align="center"
+                key="cphonenumber"
+                prop="cphonenumber"
+                v-if="columns[4].visible"
+                width="120"
+              />
+
+              <el-table-column
+                label="鎿嶄綔"
+                align="center"
+                width="300"
+                class-name="small-padding fixed-width"
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="goQRCode(scope.row)"
+                    v-hasPermi="['system:user:edit']"
+                  >
+                    <span class="button-text"
+                      ><i class="el-icon-edit"></i>浜岀淮鐮�</span
+                    ></el-button
+                  >
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="ViewQuestionnaire(scope.row)"
+                    v-hasPermi="['system:user:edit']"
+                    ><span class="button-textck"
+                      ><i class="el-icon-edit"></i>鏌ョ湅</span
+                    ></el-button
+                  >
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="handleUpdate(scope.row)"
+                    v-hasPermi="['system:user:edit']"
+                    ><span class="button-textxg"
+                      ><i class="el-icon-edit"></i>淇敼</span
+                    ></el-button
+                  >
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="handleDelete(scope.row)"
+                    v-hasPermi="['system:user:remove']"
+                    ><span class="button-textsc"
+                      ><i class="el-icon-edit"></i>鍒犻櫎</span
+                    ></el-button
+                  >
+                </template>
+              </el-table-column>
+            </el-table>
+
+            <pagination
+              v-show="total > 0"
+              :total="total"
+              :page.sync="queryParams.pageNum"
+              :limit.sync="queryParams.pageSize"
+              @pagination="getList"
+            />
+          </el-col>
+        </el-row>
+
+        <!-- 娣诲姞鎴栦慨鏀硅瘽鏈厤缃璇濇 -->
+        <el-dialog
+          :title="title"
+          :visible.sync="open"
+          width="900px"
+          append-to-body
+        >
+          <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="濮撳悕" prop="nickName">
+                  <el-input
+                    v-model="form.nickName"
+                    placeholder="璇疯緭鍏ュ鍚�"
+                    maxlength="30"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鎬у埆" prop="deptId">
+                  <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
+                    <el-option
+                      v-for="dict in dict.type.sys_user_sex"
+                      :key="dict.value"
+                      :label="dict.label"
+                      :value="dict.value"
+                    ></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="璇佷欢绫诲瀷" prop="phonenumber">
+                  <el-input
+                    v-model="form.phonenumber"
+                    placeholder="璇烽�夋嫨璇佷欢绫诲瀷"
+                    maxlength="11"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="璇佷欢鍙�" prop="email">
+                  <el-input
+                    v-model="form.email"
+                    placeholder="璇疯緭鍏ヨ瘉浠跺彿"
+                    maxlength="50"
+                  />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="鏈汉鎵嬫満鍙�" prop="userName">
+                  <el-input
+                    v-model="form.userName"
+                    placeholder="璇疯緭鍏ユ墜鏈哄彿"
+                    maxlength="30"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="浜插睘鎵嬫満鍙�" prop="password">
+                  <el-input
+                    v-model="form.password"
+                    placeholder="璇疯緭鍏ヤ翰灞炴墜鏈哄彿"
+                    type="password"
+                    maxlength="20"
+                    show-password
+                  />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="鎮h�呮爣绛�">
+                  <el-cascader
+                    :options="optionss"
+                    :props="propss"
+                    clearable
+                  ></el-cascader>
+                </el-form-item>
+              </el-col>
+            </el-row>
+
+            <el-row>
+              <el-col :span="24">
+                <el-form-item label="澶囨敞">
+                  <el-input
+                    v-model="form.remark"
+                    type="textarea"
+                    placeholder="璇疯緭鍏ュ唴瀹�"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+          <div slot="footer" class="dialog-footer">
+            <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+            <el-button @click="cancel">鍙� 娑�</el-button>
+          </div>
+        </el-dialog>
+      </div>
+    </div>
+    <!-- 娣诲姞绫诲埆寮规 -->
+    <el-dialog
+      :title="amendtag ? '淇敼绫诲埆' : '鏂板绫诲埆'"
+      width="30%"
+      :visible.sync="dialogFormVisible"
+    >
+      <el-form :model="classifyform">
+        <el-form-item
+          :label="amendtag ? '璇疯緭鍏ユ柊鐨勭被鍒悕绉�' : '璇疯緭鍏ョ被鍒悕绉�'"
+        >
+          <el-input
+            v-model="classifyform.categoryname"
+            autocomplete="off"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button>
+      </div>
+    </el-dialog>
+    <!-- 鍒犻櫎绫诲埆纭妗� -->
+    <el-dialog title="璀﹀憡" :visible.sync="deleteVisible" width="40%">
+      <div style="font-size: 20px; color: rgb(247, 76, 76)">
+        鏄惁纭鍒犻櫎鍒嗙被锛歔<span>{{ deletefenl }}</span
+        >]?
+      </div>
+      <div style="font-size: 20px">
+        姝ゆ搷浣滀細灏嗚绫诲埆涓嬫墍鏈夋ā鍧楄浆绉昏嚦[鏈垎绫籡锛屾槸鍚︾户缁垹闄ゆ鍒嗙被锛�
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="deleteVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="deletefenlei">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <!-- 浜岀淮鐮佸睍绀哄脊妗� -->
+    <el-dialog width="30%" :visible.sync="goQRCodeVisible">
+      <div class="qrcode-dialo">
+        <div class="qrcode-text">
+          {{ namequestionnaire }}<span>{{ haoquestionnaire }}</span>
+        </div>
+        <div class="qrcode-img"></div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  listUser,
+  getUser,
+  delUser,
+  addUser,
+  updateUser,
+} from "@/api/system/user";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+export default {
+  name: "questionnaire",
+  dicts: ["sys_normal_disable", "sys_user_sex"],
+  components: { Treeselect },
+  data() {
+    return {
+      topactiveName: "Local", //椤堕儴閫夋嫨
+      // 閬僵灞�
+      loading: false,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      namequestionnaire: "",
+      haoquestionnaire: "",
+      idds: "",
+      amendtag: false, //鏄惁淇敼绫诲埆
+      dialogFormVisible: false, //淇敼娣诲姞绫诲埆寮规
+      deleteVisible: false, //鍒嗙被鍒犻櫎寮规
+      deletefenl: "楂樿鍘�", //鍒犻櫎椤�
+      classifyform: {
+        categoryname: "",
+      }, //绫诲埆琛ㄥ崟
+      // 琛ㄦ牸鏁版嵁
+      userList: [
+        {
+          userid: 1,
+          userName: "涓夊彿璇濇湳",
+          nickName: "1.2.4",
+          aphonenumber: "鍏宠妭鐐庣棁",
+          bphonenumber: "寰堟",
+          cphonenumber: "2022-12-12 ",
+        },
+      ],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏃ユ湡鑼冨洿
+      dateRange: [],
+      // 宀椾綅閫夐」
+      postOptions: [],
+      // 瑙掕壊閫夐」
+      roleOptions: [],
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      numberlb: 22,
+      numberlbs: 2,
+      sidecolumnform: {}, //娣诲姞绫诲埆琛ㄥ崟
+      dialogFormVisible: false, //娣诲姞绫诲埆寮规
+      goQRCodeVisible: false, //浜岀淮鐮佸脊妗�
+      sidecolumnval: "", //绫诲埆鎼滅储
+      propss: { multiple: true },
+      optionss: [
+        {
+          value: 1,
+          label: "涓滃崡",
+        },
+        {
+          value: 2,
+          label: "瑗垮寳",
+        },
+        {
+          value: 3,
+          label: "浠ㄤ花浠�",
+        },
+        {
+          value: 4,
+          label: "鍏椋掗",
+        },
+      ],
+      //绫诲埆鍒楄〃
+      editableTabs: [
+        {
+          title: "璇濇湳鍒嗙被涓�",
+          number: "1",
+        },
+        {
+          title: "璇濇湳鍒嗙被浜�",
+          number: "2",
+        },
+        {
+          title: "璇濇湳鍒嗙被涓�",
+          number: "2",
+        },
+        {
+          title: "璇濇湳鍒嗙被鍥�",
+          number: "2",
+        },
+        {
+          title: "璇濇湳鍒嗙被浜�",
+          number: "2",
+        },
+      ],
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        userName: undefined,
+        phonenumber: undefined,
+        status: undefined,
+        deptId: undefined,
+        IDnumber: undefined,
+      },
+      // 鍒椾俊鎭�
+      columns: [
+        { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true },
+        { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true },
+        { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true },
+        { key: 3, label: `閮ㄩ棬`, visible: true },
+        { key: 4, label: `鎵嬫満鍙风爜`, visible: true },
+        { key: 5, label: `鐘舵�乣, visible: true },
+        { key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
+      ],
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        userName: [
+          { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+          {
+            min: 2,
+            max: 20,
+            message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
+            trigger: "blur",
+          },
+        ],
+        nickName: [
+          { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" },
+        ],
+        password: [
+          { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
+          {
+            min: 5,
+            max: 20,
+            message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+            trigger: "blur",
+          },
+        ],
+        email: [
+          {
+            type: "email",
+            message: "璇疯緭鍏ユ纭殑閭鍦板潃",
+            trigger: ["blur", "change"],
+          },
+        ],
+        phonenumber: [
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+            trigger: "blur",
+          },
+        ],
+        IDnumber: [
+          {
+            pattern:
+              /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
+            message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�",
+            trigger: "blur",
+          },
+        ],
+      },
+    };
+  },
+  watch: {},
+  created() {
+    this.getList();
+  },
+
+  methods: {
+    /** 鏌ヨ鐢ㄦ埛鍒楄〃 */
+    getList() {
+      //   this.loading = true;
+      listUser().then((response) => {
+        console.log(response);
+        console.log(this.userList);
+      });
+    },
+    // 娣诲姞銆佷慨鏀圭被鍒�
+    submitsidecolumn() {
+      if (this.amendtag) {
+        this.classifyform.tagcategoryid = this.idds;
+        // toamendtagcategory(this.addDateRange(this.classifyform)).then(
+        //   (response) => {
+        //     console.log(response);
+        //     this.gitclasify();
+        //   }
+        // );
+      } else {
+        // addtagcategory(this.addDateRange(this.classifyform)).then(
+        //   (response) => {
+        //     console.log(response);
+        //     this.gitclasify();
+        //   }
+        // );
+      }
+      this.classifyform = {
+        categoryname: "",
+      };
+      this.idds = "";
+      this.dialogFormVisible = false;
+    },
+    //鍒犻櫎鍒嗙被
+    deletefenlei(row) {
+      if (this.deleteVisible) {
+        // deletetagcategory(this.idds).then((response) => {
+        //   console.log(response);
+        //   this.gitclasify();
+        // });
+        this.deleteVisible = false;
+        this.idds = "";
+      } else {
+        this.deleteVisible = true;
+        this.idds = row.tagcategoryid;
+        this.deletefenl = row.title;
+      }
+    },
+    //鎼滅储绫诲埆
+    sidecolumnss() {},
+    // 鍒囨崲鍏变韩/鏈湴
+    tophandleClick() {},
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    goQRCode(row) {
+      this.goQRCodeVisible = true;
+      this.namequestionnaire = row.userName;
+      this.haoquestionnaire = row.nickName;
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        userId: undefined,
+        deptId: undefined,
+        userName: undefined,
+        nickName: undefined,
+        password: undefined,
+        phonenumber: undefined,
+        email: undefined,
+        sex: undefined,
+        status: "0",
+        remark: undefined,
+        postIds: [],
+        roleIds: [],
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.queryParams.deptId = undefined;
+      this.$refs.tree.setCurrentKey(null);
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.userId);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.$router.push({
+        path: "/knowledge/questionnaire/compilequer/",
+      });
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.$router.push({
+        path: "/knowledge/questionnaire/compilequer/",
+        query: { id: "1" },
+      });
+    },
+    // 鏌ョ湅璇濇湳
+    ViewQuestionnaire() {
+      this.$router.push({
+        path: "/knowledge/questionnaire/examine/",
+        query: { id: "1" },
+      });
+    },
+    // 淇敼鍒嗙被寮规
+    popoveramend(tagcategoryid) {
+      this.idds = tagcategoryid;
+      this.amendtag = true;
+      this.dialogFormVisible = true;
+    },
+
+    /** 鏇存柊/淇敼鎻愪氦鎸夐挳 */
+    submitForm: function () {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          if (this.form.userId != undefined) {
+            updateUser(this.form).then((response) => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addUser(this.form).then((response) => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const userIds = row.userId || this.ids;
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
+        .then(function () {
+          return delUser(userIds);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        })
+        .catch(() => {});
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.Questionnairemanagement {
+  display: flex;
+}
+.sidecolumn {
+  width: 300px;
+  min-height: 100vh;
+  text-align: center;
+  //   display: flex;
+  margin-top: 20px;
+  margin: 20px;
+  padding: 30px;
+  background: #edf1f7;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+  .sidecolumn-top {
+    display: flex;
+    justify-content: space-between;
+    .top-wj {
+      font-size: 20px;
+    }
+    .top-tj {
+      font-size: 18px;
+
+      color: rgb(0, 89, 255);
+      cursor: pointer;
+    }
+  }
+  .center-ss {
+    margin-top: 30px;
+    .input-with-select {
+      height: 40px !important;
+    }
+  }
+  .bottom-fl {
+    margin-top: 30px;
+    display: center !important;
+  }
+}
+.qrcode-dialo {
+  text-align: center;
+  //   display: flex;
+  margin: 20px;
+  padding: 30px;
+  background: #edf1f7;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+  .qrcode-text {
+    font-size: 20px;
+    span {
+      margin-left: 20px;
+    }
+  }
+  .qrcode-img {
+    width: 300px;
+    height: 400px;
+  }
+}
+::v-deep.el-tabs--left,
+.el-tabs--right {
+  overflow: hidden;
+  align-items: center;
+  display: flex;
+}
+::v-deep.el-input--medium .el-input__inner {
+  height: 40px !important;
+}
+::v-deep.el-tabs--right .el-tabs__active-bar.is-right {
+  height: 40px;
+  width: 5px;
+  left: 0;
+}
+::v-deep.el-tabs--right .el-tabs__item.is-right {
+  display: block;
+  font-size: 20px;
+}
+.leftvlue {
+  //   display: flex;
+  //   flex: 1;
+  width: 80%;
+  margin-top: 20px;
+  //   margin: 20px;
+  padding: 30px;
+  background: #ffff;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+  .mulsz {
+    font-size: 20px;
+  }
+}
+.button-text {
+  color: rgb(70, 204, 238);
+}
+.button-textck {
+  color: rgb(39, 167, 67);
+}
+.button-textxg {
+  color: rgb(35, 81, 233);
+}
+.button-textsc {
+  color: rgb(235, 23, 23);
+}
+</style>
diff --git a/src/views/system/label/index.vue b/src/views/system/label/index.vue
index a5f3a42..2f291ed 100644
--- a/src/views/system/label/index.vue
+++ b/src/views/system/label/index.vue
@@ -14,7 +14,7 @@
           size="medium "
         >
           <el-button
-            @click="sidecolumnss"
+            @click="gitclasify"
             slot="append"
             icon="el-icon-search"
           ></el-button>
@@ -22,7 +22,7 @@
       </div>
       <div class="bottom-fl">
         <el-tabs tab-position="right">
-          <el-tab-pane :label="`鍏ㄩ儴 (${numberlb})`"></el-tab-pane>
+          <el-tab-pane :label="`鍏ㄩ儴 (${total})`"></el-tab-pane>
           <el-tab-pane
             class="tab-paness"
             :key="item.name"
@@ -30,15 +30,18 @@
           >
             <span slot="label">
               {{
-                item.title + " (" + item.number + ")"
+                item.categoryname + " (" + item.tagNum + ")"
               }}&nbsp&nbsp&nbsp<el-popover
                 placement="top-start"
                 width="100"
                 trigger="hover"
               >
                 <div style="text-align: center">
-                  <el-button type="text" @click="popoveramend">淇敼</el-button
-                  ><el-button type="text" @click="deleteVisible = true"
+                  <el-button
+                    type="text"
+                    @click="popoveramend(item.tagcategoryid)"
+                    >淇敼</el-button
+                  ><el-button type="text" @click="deletefenlei(item)"
                     ><span style="color: rgb(173, 55, 55)"
                       >鍒犻櫎</span
                     ></el-button
@@ -47,8 +50,6 @@
                 <i slot="reference" class="el-icon-share"></i> </el-popover
             ></span>
           </el-tab-pane>
-
-          <el-tab-pane :label="`鏈垎缁�(${numberlbs})`"></el-tab-pane>
         </el-tabs>
       </div>
     </div>
@@ -57,7 +58,7 @@
       <div class="leftvlue-top"></div>
       <div class="leftvlue-bg">
         <el-row :gutter="20">
-          <!--鐢ㄦ埛鏁版嵁-->
+          <!--鏍囩鏁版嵁-->
           <el-col :span="24" :xs="24">
             <el-form
               :model="queryParams"
@@ -69,7 +70,7 @@
             >
               <el-form-item label="鏍囩鍚嶇О" prop="userName">
                 <el-input
-                  v-model="queryParams.userName"
+                  v-model="queryParams.tagname"
                   placeholder="璇疯緭鍏�"
                   clearable
                   style="width: 200px"
@@ -101,7 +102,7 @@
                   plain
                   icon="el-icon-plus"
                   size="medium"
-                  @click="lstamendtagVisible = true"
+                  @click="addladeltag"
                   v-hasPermi="['system:user:add']"
                   >鏂板</el-button
                 >
@@ -118,6 +119,21 @@
                   v-hasPermi="['system:user:remove']"
                   >鍒犻櫎</el-button
                 >
+              </el-col>
+              <el-col :span="1.5">
+                <div class="documentf">
+                  <div class="document">
+                    <el-button
+                      type="warning"
+                      plain
+                      icon="el-icon-download"
+                      size="medium"
+                      @click="handleExport"
+                      v-hasPermi="['system:user:export']"
+                      >瀵煎嚭</el-button
+                    >
+                  </div>
+                </div>
               </el-col>
 
               <!-- <el-col :span="1.5"> </el-col> -->
@@ -137,41 +153,51 @@
               <el-table-column
                 label="搴忓彿"
                 align="center"
-                key="userId"
-                prop="userId"
+                key="tagid"
+                prop="tagid"
               />
               <el-table-column
                 label="鏍囩鍚嶇О"
                 align="center"
-                key="userName"
-                prop="userName"
+                key="tagname"
+                prop="tagname"
                 :show-overflow-tooltip="true"
               />
               <el-table-column
                 label="鏈�杩戠紪杈�"
                 align="center"
-                key="nickName"
-                prop="nickName"
-                :show-overflow-tooltip="true"
-              />
+                key="updateTime"
+                prop="updateTime"
+              >
+                <template slot-scope="scope">
+                  <span
+                    >{{ scope.row.updateBy }}
+                    <p>{{ scope.row.updateTime }}</p></span
+                  >
+                </template>
+              </el-table-column>
 
               <el-table-column
                 label="鏍囩鎻忚堪"
                 align="center"
-                key="aphonenumber"
-                prop="aphonenumber"
+                key="tagdescription"
+                prop="tagdescription"
                 width="120"
-              />
+              >
+              </el-table-column>
               <el-table-column
                 label="鐘舵��"
                 align="center"
-                key="aphonenumbers"
-                prop="aphonenumbers"
+                key="isupload"
+                prop="isupload"
                 width="120"
               >
                 <template slot-scope="scope">
                   <el-switch
-                    v-model="scope.row.delivery"
+                    v-model="scope.row.isupload"
+                    :active-value="1"
+                    :inactive-value="0"
+                    active-color="#13ce66"
                     @change="handleStatusChange(scope.row)"
                   ></el-switch>
                 </template>
@@ -223,12 +249,12 @@
       width="30%"
       :visible.sync="dialogFormVisible"
     >
-      <el-form :model="sidecolumnform">
+      <el-form :model="classifyform">
         <el-form-item
           :label="amendtag ? '璇疯緭鍏ユ柊鐨勭被鍒悕绉�' : '璇疯緭鍏ョ被鍒悕绉�'"
         >
           <el-input
-            v-model="sidecolumnform.classesname"
+            v-model="classifyform.categoryname"
             autocomplete="off"
           ></el-input>
         </el-form-item>
@@ -249,9 +275,7 @@
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="deleteVisible = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="deleteVisible = false"
-          >纭� 瀹�</el-button
-        >
+        <el-button type="primary" @click="deletefenlei">纭� 瀹�</el-button>
       </span>
     </el-dialog>
     <!-- 淇敼/娣诲姞鏍囩寮规 -->
@@ -262,20 +286,39 @@
     >
       <el-form ref="form" :model="tagform" label-width="80px">
         <el-form-item label="鏍囩鍚嶇О">
-          <el-input v-model="tagform.name"></el-input>
+          <el-input v-model="tagform.tagname"></el-input>
+        </el-form-item>
+        <el-form-item label="鏍囩鎻忚堪">
+          <el-select
+            v-model="tagform.tagcategoryid"
+            placeholder="璇烽�夋嫨鏍囩鍒嗙被"
+          >
+            <el-option
+              v-for="item in editableTabs"
+              :key="item.tagcategoryid"
+              :label="item.categoryname"
+              :value="item.tagcategoryid"
+            >
+            </el-option>
+          </el-select>
         </el-form-item>
 
         <el-form-item label="鏄惁鍚敤">
-          <el-switch v-model="tagform.delivery"></el-switch>
+          <el-switch
+            v-model="tagform.isupload"
+            :active-value="1"
+            :inactive-value="0"
+            active-color="#13ce66"
+          ></el-switch>
         </el-form-item>
 
         <el-form-item label="鏍囩鎻忚堪">
-          <el-input type="textarea" v-model="tagform.desc"></el-input>
+          <el-input type="textarea" v-model="tagform.tagdescription"></el-input>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="lstamendtagVisible = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button>
+        <el-button type="primary" @click="Maintenancetag">纭� 瀹�</el-button>
       </div>
     </el-dialog>
   </div>
@@ -283,13 +326,18 @@
 
 <script>
 import {
-  listUser,
-  getUser,
-  delUser,
-  addUser,
-  updateUser,
-} from "@/api/system/user";
-import { getToken } from "@/utils/auth";
+  toamendtag,
+  addapitag,
+  detailstag,
+  deletetag,
+  changetagcategory,
+  toamendtagcategory,
+  addtagcategory,
+  deletetagcategory,
+  listtag,
+  tagclassifylist,
+} from "@/api/system/label";
+
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 export default {
@@ -309,6 +357,7 @@
       multiple: true,
       // 鏄剧ず鎼滅储鏉′欢
       showSearch: true,
+      idds: "", //鍒嗙被id
       // 鎬绘潯鏁�
       total: 0,
       amendtag: false, //鏄惁淇敼绫诲埆
@@ -318,23 +367,16 @@
       deletefenl: "楂樿鍘�", //鍒犻櫎椤�
       //淇敼娣诲姞鏍囩寮规鏁版嵁
       tagform: {
-        delivery: "",
-        name: "",
-        desc: "",
+        isupload: "",
+        tagname: "",
+        tagcategoryid: "",
+        tagdescription: "",
+      },
+      classifyform: {
+        categoryname: "",
       },
       // 鏍囩琛ㄦ牸鏁版嵁
-      userList: [
-        {
-          userId: 1,
-          userName: "涓夊彿",
-          nickName: "1.2.4",
-          aphonenumber: "鍏宠妭鐐庣棁",
-          delivery: true,
-          aphonenumbers: "",
-          bphonenumber: "寰堟",
-          cphonenumber: "2022-12-12 ",
-        },
-      ],
+      userList: [],
       // 寮瑰嚭灞傛爣棰�
       title: "",
       // 鏄惁鏄剧ず寮瑰嚭灞�
@@ -347,16 +389,16 @@
       roleOptions: [],
       // 琛ㄥ崟鍙傛暟
       form: {},
+      forms: {
+        name: "",
+      },
       numberlb: 22,
-      numberlbs: 2,
-      sidecolumnform: {
-        classesname: "",
-      }, //娣诲姞绫诲埆琛ㄥ崟
       dialogFormVisible: false, //娣诲姞銆佷慨鏀圭被鍒脊妗�
       lstamendtagVisible: false, //娣诲姞銆佷慨鏀规爣绛惧脊妗�
       goQRCodeVisible: false, //浜岀淮鐮佸脊妗�
       sidecolumnval: "", //绫诲埆鎼滅储
       propss: { multiple: true },
+      topqueryParams: {}, //瀵煎嚭绛涢�夋潯浠�
       optionss: [
         {
           value: 1,
@@ -394,117 +436,186 @@
           number: "2",
         },
       ],
-      // 鏌ヨ鍙傛暟
+      // 鏌ヨ鏍囩鍒楄〃鍙傛暟
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        userName: undefined,
-        phonenumber: undefined,
-        status: undefined,
-        deptId: undefined,
-        IDnumber: undefined,
+        tagname: undefined,
+        tagdescription: undefined,
       },
       // 鍒椾俊鎭�
       columns: [
-        { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true },
-        { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true },
-        { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true },
+        { key: 0, label: `鏍囩缂栧彿`, visible: true },
+        { key: 1, label: `鏍囩鍚嶇О`, visible: true },
+        { key: 2, label: `鏍囩鏄电О`, visible: true },
         { key: 3, label: `閮ㄩ棬`, visible: true },
         { key: 4, label: `鎵嬫満鍙风爜`, visible: true },
         { key: 5, label: `鐘舵�乣, visible: true },
         { key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
       ],
       // 琛ㄥ崟鏍¢獙
-      rules: {
-        userName: [
-          { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
-          {
-            min: 2,
-            max: 20,
-            message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
-            trigger: "blur",
-          },
-        ],
-        nickName: [
-          { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" },
-        ],
-        password: [
-          { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
-          {
-            min: 5,
-            max: 20,
-            message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
-            trigger: "blur",
-          },
-        ],
-        email: [
-          {
-            type: "email",
-            message: "璇疯緭鍏ユ纭殑閭鍦板潃",
-            trigger: ["blur", "change"],
-          },
-        ],
-        phonenumber: [
-          {
-            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
-            message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
-            trigger: "blur",
-          },
-        ],
-        IDnumber: [
-          {
-            pattern:
-              /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
-            message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�",
-            trigger: "blur",
-          },
-        ],
-      },
+      // rules: {
+      //   userName: [
+      //     { required: true, message: "鏍囩鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+      //     {
+      //       min: 2,
+      //       max: 20,
+      //       message: "鏍囩鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
+      //       trigger: "blur",
+      //     },
+      //   ],
+      //   nickName: [
+      //     { required: true, message: "鏍囩鏄电О涓嶈兘涓虹┖", trigger: "blur" },
+      //   ],
+      //   password: [
+      //     { required: true, message: "鏍囩瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
+      //     {
+      //       min: 5,
+      //       max: 20,
+      //       message: "鏍囩瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+      //       trigger: "blur",
+      //     },
+      //   ],
+      //   email: [
+      //     {
+      //       type: "email",
+      //       message: "璇疯緭鍏ユ纭殑閭鍦板潃",
+      //       trigger: ["blur", "change"],
+      //     },
+      //   ],
+      //   phonenumber: [
+      //     {
+      //       pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+      //       message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+      //       trigger: "blur",
+      //     },
+      //   ],
+      //   IDnumber: [
+      //     {
+      //       pattern:
+      //         /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
+      //       message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�",
+      //       trigger: "blur",
+      //     },
+      //   ],
+      // },
     };
   },
   watch: {},
   created() {
     this.getList();
+    this.gitclasify();
   },
 
   methods: {
-    /** 鏌ヨ鐢ㄦ埛鍒楄〃 */
+    /** 鏌ヨ鏍囩鍒楄〃 */
     getList() {
-      //   this.loading = true;
-      listUser().then((response) => {
+      listtag(this.addDateRange(this.queryParams)).then((response) => {
         console.log(response);
-        // this.userList = response.data;
-        // this.total = response.total;
-        // this.loading = false;
-        console.log(this.userList);
+        this.total = response.total;
+        this.userList = response.rows;
       });
-      //   const { rows } = await listUser();
-      //   console.log(rows);
-      //   this.list = rows;
     },
-    // 娣诲姞绫诲埆
-    submitsidecolumn() {
-      this.dialogFormVisible = false;
+    /** 淇敼鏍囩 */
+    handleUpdate(row) {
+      console.log(row, "淇敼鏍囩");
+      this.lstamendtagVisible = true;
+      this.lstamendtag = true;
       this.tagform = {
-        delivery: "",
-        name: "",
-        desc: "",
+        isupload: row.isupload,
+        tagname: row.tagname,
+        tagcategoryid: row.tagcategoryid,
+        tagdescription: row.tagdescription,
+        tagid: row.tagid,
       };
     },
-    // 淇敼寮规
-    popoveramend() {
+    addladeltag() {
+      this.lstamendtagVisible = true;
+      this.lstamendtag = false;
+      this.tagform = {
+        isupload: "",
+        tagname: "",
+        tagcategoryid: "",
+        tagdescription: "",
+        tagid: "",
+      };
+    },
+    // 娣诲姞/淇敼鏍囩
+    Maintenancetag() {
+      if (this.lstamendtag) {
+        toamendtag(this.addDateRange(this.tagform)).then((response) => {
+          console.log(response);
+          this.getList();
+        });
+      } else {
+        addapitag(this.addDateRange(this.tagform)).then((response) => {
+          console.log(response);
+          this.getList();
+        });
+      }
+      this.tagform = {
+        isupload: "",
+        tagname: "",
+        tagcategoryid: "",
+        tagdescription: "",
+        tagid: "",
+      };
+    },
+
+    // 鑾峰彇鏍囩鍒嗙被
+    gitclasify() {
+      tagclassifylist(this.addDateRange(this.forms)).then((response) => {
+        console.log(response);
+        this.numberlb = response.total;
+        this.editableTabs = response.rows;
+      });
+    },
+    // 娣诲姞/淇敼绫诲埆
+    submitsidecolumn() {
+      if (this.amendtag) {
+        this.classifyform.tagcategoryid = this.idds;
+        toamendtagcategory(this.addDateRange(this.classifyform)).then(
+          (response) => {
+            console.log(response);
+            this.gitclasify();
+          }
+        );
+      } else {
+        addtagcategory(this.addDateRange(this.classifyform)).then(
+          (response) => {
+            console.log(response);
+            this.gitclasify();
+          }
+        );
+      }
+      this.classifyform = {
+        categoryname: "",
+      };
+      this.idds = "";
+      this.dialogFormVisible = false;
+    },
+    //鍒犻櫎鍒嗙被
+    deletefenlei(row) {
+      if (this.deleteVisible) {
+        deletetagcategory(this.idds).then((response) => {
+          console.log(response);
+          this.gitclasify();
+        });
+        this.deleteVisible = false;
+        this.idds = "";
+      } else {
+        this.deleteVisible = true;
+        this.idds = row.tagcategoryid;
+        this.deletefenl = row.categoryname;
+      }
+    },
+    // 淇敼鍒嗙被寮规
+    popoveramend(tagcategoryid) {
+      this.idds = tagcategoryid;
       this.amendtag = true;
       this.dialogFormVisible = true;
     },
-    //鎼滅储绫诲埆
-    sidecolumnss() {},
-    // 鍒囨崲鍏变韩/鏈湴
-    tophandleClick() {},
-    // 鍙栨秷鎸夐挳
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
+
     // 琛ㄥ崟閲嶇疆
     reset() {
       this.form = {
@@ -523,19 +634,20 @@
       };
       this.resetForm("form");
     },
-    // 鐢ㄦ埛鐘舵�佷慨鏀�
+    // 鏍囩鐘舵�佷慨鏀�
     handleStatusChange(row) {
-      let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
+      console.log(row.isupload);
+      let text = row.isupload === "0" ? "鍚敤" : "鍋滅敤";
       this.$modal
-        .confirm('纭瑕�"' + text + '""' + row.userName + '"鏍囩鍚楋紵')
+        .confirm('纭瑕�"' + text + '""' + row.tagname + '"鏍囩鍚楋紵')
         .then(function () {
-          // return changeUserStatus(row.userId, row.status);
+          return changetagcategory(row.tagid, row.isupload);
         })
         .then(() => {
           this.$modal.msgSuccess(text + "鎴愬姛");
         })
         .catch(function () {
-          row.status = row.status === "0" ? "1" : "0";
+          row.isupload = row.isupload === "0" ? "1" : "0";
         });
     },
     /** 鎼滅储鎸夐挳鎿嶄綔 */
@@ -547,74 +659,47 @@
     resetQuery() {
       this.dateRange = [];
       this.resetForm("queryForm");
-      this.queryParams.deptId = undefined;
+      this.queryParams.tagname = "";
       this.$refs.tree.setCurrentKey(null);
       this.handleQuery();
     },
     // 澶氶�夋閫変腑鏁版嵁
     handleSelectionChange(selection) {
-      this.ids = selection.map((item) => item.userId);
+      this.ids = selection.map((item) => item.tagid);
       this.single = selection.length != 1;
       this.multiple = !selection.length;
     },
-    /** 淇敼鏍囩 */
-    handleUpdate(row) {
-      console.log(row, "淇敼鏍囩");
-      this.lstamendtagVisible = true;
-      this.lstamendtag = true;
-      this.tagform = {
-        delivery: row.delivery,
-        name: row.userName,
-        desc: row.bphonenumber,
-      };
-    },
-    // 鏌ョ湅闂嵎
-    ViewQuestionnaire() {
-      this.$router.push({
-        path: "/knowledge/questionnaire/examine/",
-        query: { id: "1" },
-      });
-    },
 
-    /** 鏇存柊/淇敼鎻愪氦鎸夐挳 */
-    submitForm: function () {
-      this.$refs["form"].validate((valid) => {
-        if (valid) {
-          if (this.form.userId != undefined) {
-            updateUser(this.form).then((response) => {
-              this.$modal.msgSuccess("淇敼鎴愬姛");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addUser(this.form).then((response) => {
-              this.$modal.msgSuccess("鏂板鎴愬姛");
-              this.open = false;
-              this.getList();
-            });
-          }
-        }
-      });
-    },
     /** 鍒犻櫎鎸夐挳鎿嶄綔 */
     handleDelete(row) {
       console.log(row, "鍒犻櫎寮圭獥");
-      const userIds = row.userId || this.ids;
-      const aphonenumber = row.aphonenumber;
+      const tagids = row.tagid || this.ids;
+      console.log(tagids);
+      const tagname = row.tagname;
       this.$modal
         .confirm(
-          aphonenumber
-            ? '鏄惁纭鍒犻櫎鏍囩鍚嶇О涓�"' + aphonenumber + '"鐨勬暟鎹」锛�'
+          tagname
+            ? '鏄惁纭鍒犻櫎鏍囩鍚嶇О涓�"' + tagname + '"鐨勬暟鎹」锛�'
             : "鏄惁纭鍒犻櫎閫変腑鐨勬暟鎹」锛�"
         )
         .then(function () {
-          return delUser(userIds);
+          return deletetag(tagids);
         })
         .then(() => {
           this.getList();
           this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
         })
         .catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download(
+        "base/tag/export",
+        {
+          ...this.topqueryParams,
+        },
+        `user_${new Date().getTime()}.xlsx`
+      );
     },
   },
 };
@@ -715,6 +800,14 @@
     font-size: 20px;
   }
 }
+.document {
+  width: 100px;
+  height: 50px;
+}
+.documentf {
+  display: flex;
+  justify-content: flex-end;
+}
 .button-text {
   color: rgb(70, 204, 238);
 }
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index ae87fe4..6f1d6d2 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -29,7 +29,14 @@
       </el-col>
       <!--鐢ㄦ埛鏁版嵁-->
       <el-col :span="20" :xs="24">
-        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form
+          :model="queryParams"
+          ref="queryForm"
+          size="small"
+          :inline="true"
+          v-show="showSearch"
+          label-width="68px"
+        >
           <el-form-item label="鐢ㄦ埛鍚嶇О" prop="userName">
             <el-input
               v-model="queryParams.userName"
@@ -75,8 +82,16 @@
             ></el-date-picker>
           </el-form-item>
           <el-form-item>
-            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
-            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+            <el-button
+              type="primary"
+              icon="el-icon-search"
+              size="mini"
+              @click="handleQuery"
+              >鎼滅储</el-button
+            >
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+              >閲嶇疆</el-button
+            >
           </el-form-item>
         </el-form>
 
@@ -89,7 +104,8 @@
               size="mini"
               @click="handleAdd"
               v-hasPermi="['system:user:add']"
-            >鏂板</el-button>
+              >鏂板</el-button
+            >
           </el-col>
           <el-col :span="1.5">
             <el-button
@@ -100,7 +116,8 @@
               :disabled="single"
               @click="handleUpdate"
               v-hasPermi="['system:user:edit']"
-            >淇敼</el-button>
+              >淇敼</el-button
+            >
           </el-col>
           <el-col :span="1.5">
             <el-button
@@ -111,7 +128,8 @@
               :disabled="multiple"
               @click="handleDelete"
               v-hasPermi="['system:user:remove']"
-            >鍒犻櫎</el-button>
+              >鍒犻櫎</el-button
+            >
           </el-col>
           <el-col :span="1.5">
             <el-button
@@ -121,7 +139,8 @@
               size="mini"
               @click="handleImport"
               v-hasPermi="['system:user:import']"
-            >瀵煎叆</el-button>
+              >瀵煎叆</el-button
+            >
           </el-col>
           <el-col :span="1.5">
             <el-button
@@ -131,19 +150,67 @@
               size="mini"
               @click="handleExport"
               v-hasPermi="['system:user:export']"
-            >瀵煎嚭</el-button>
+              >瀵煎嚭</el-button
+            >
           </el-col>
-          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
+          <right-toolbar
+            :showSearch.sync="showSearch"
+            @queryTable="getList"
+            :columns="columns"
+          ></right-toolbar>
         </el-row>
 
-        <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
+        <el-table
+          v-loading="loading"
+          :data="userList"
+          @selection-change="handleSelectionChange"
+        >
           <el-table-column type="selection" width="50" align="center" />
-          <el-table-column label="鐢ㄦ埛缂栧彿" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
-          <el-table-column label="鐢ㄦ埛鍚嶇О" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
-          <el-table-column label="鐢ㄦ埛鏄电О" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
-          <el-table-column label="閮ㄩ棬" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
-          <el-table-column label="鎵嬫満鍙风爜" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
-          <el-table-column label="鐘舵��" align="center" key="status" v-if="columns[5].visible">
+          <el-table-column
+            label="鐢ㄦ埛缂栧彿"
+            align="center"
+            key="userId"
+            prop="userId"
+            v-if="columns[0].visible"
+          />
+          <el-table-column
+            label="鐢ㄦ埛鍚嶇О"
+            align="center"
+            key="userName"
+            prop="userName"
+            v-if="columns[1].visible"
+            :show-overflow-tooltip="true"
+          />
+          <el-table-column
+            label="鐢ㄦ埛鏄电О"
+            align="center"
+            key="nickName"
+            prop="nickName"
+            v-if="columns[2].visible"
+            :show-overflow-tooltip="true"
+          />
+          <el-table-column
+            label="閮ㄩ棬"
+            align="center"
+            key="deptName"
+            prop="dept.deptName"
+            v-if="columns[3].visible"
+            :show-overflow-tooltip="true"
+          />
+          <el-table-column
+            label="鎵嬫満鍙风爜"
+            align="center"
+            key="phonenumber"
+            prop="phonenumber"
+            v-if="columns[4].visible"
+            width="120"
+          />
+          <el-table-column
+            label="鐘舵��"
+            align="center"
+            key="status"
+            v-if="columns[5].visible"
+          >
             <template slot-scope="scope">
               <el-switch
                 v-model="scope.row.status"
@@ -153,7 +220,13 @@
               ></el-switch>
             </template>
           </el-table-column>
-          <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" v-if="columns[6].visible" width="160">
+          <el-table-column
+            label="鍒涘缓鏃堕棿"
+            align="center"
+            prop="createTime"
+            v-if="columns[6].visible"
+            width="160"
+          >
             <template slot-scope="scope">
               <span>{{ parseTime(scope.row.createTime) }}</span>
             </template>
@@ -171,21 +244,37 @@
                 icon="el-icon-edit"
                 @click="handleUpdate(scope.row)"
                 v-hasPermi="['system:user:edit']"
-              >淇敼</el-button>
+                >淇敼</el-button
+              >
               <el-button
                 size="mini"
                 type="text"
                 icon="el-icon-delete"
                 @click="handleDelete(scope.row)"
                 v-hasPermi="['system:user:remove']"
-              >鍒犻櫎</el-button>
-              <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']">
-                <el-button size="mini" type="text" icon="el-icon-d-arrow-right">鏇村</el-button>
+                >鍒犻櫎</el-button
+              >
+              <el-dropdown
+                size="mini"
+                @command="(command) => handleCommand(command, scope.row)"
+                v-hasPermi="['system:user:resetPwd', 'system:user:edit']"
+              >
+                <el-button size="mini" type="text" icon="el-icon-d-arrow-right"
+                  >鏇村</el-button
+                >
                 <el-dropdown-menu slot="dropdown">
-                  <el-dropdown-item command="handleResetPwd" icon="el-icon-key"
-                    v-hasPermi="['system:user:resetPwd']">閲嶇疆瀵嗙爜</el-dropdown-item>
-                  <el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check"
-                    v-hasPermi="['system:user:edit']">鍒嗛厤瑙掕壊</el-dropdown-item>
+                  <el-dropdown-item
+                    command="handleResetPwd"
+                    icon="el-icon-key"
+                    v-hasPermi="['system:user:resetPwd']"
+                    >閲嶇疆瀵嗙爜</el-dropdown-item
+                  >
+                  <el-dropdown-item
+                    command="handleAuthRole"
+                    icon="el-icon-circle-check"
+                    v-hasPermi="['system:user:edit']"
+                    >鍒嗛厤瑙掕壊</el-dropdown-item
+                  >
                 </el-dropdown-menu>
               </el-dropdown>
             </template>
@@ -193,7 +282,7 @@
         </el-table>
 
         <pagination
-          v-show="total>0"
+          v-show="total > 0"
           :total="total"
           :page.sync="queryParams.pageNum"
           :limit.sync="queryParams.pageSize"
@@ -208,36 +297,71 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="鐢ㄦ埛鏄电О" prop="nickName">
-              <el-input v-model="form.nickName" placeholder="璇疯緭鍏ョ敤鎴锋樀绉�" maxlength="30" />
+              <el-input
+                v-model="form.nickName"
+                placeholder="璇疯緭鍏ョ敤鎴锋樀绉�"
+                maxlength="30"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="褰掑睘閮ㄩ棬" prop="deptId">
-              <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="璇烽�夋嫨褰掑睘閮ㄩ棬" />
+              <treeselect
+                v-model="form.deptId"
+                :options="deptOptions"
+                :show-count="true"
+                placeholder="璇烽�夋嫨褰掑睘閮ㄩ棬"
+              />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
             <el-form-item label="鎵嬫満鍙风爜" prop="phonenumber">
-              <el-input v-model="form.phonenumber" placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" maxlength="11" />
+              <el-input
+                v-model="form.phonenumber"
+                placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�"
+                maxlength="11"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="閭" prop="email">
-              <el-input v-model="form.email" placeholder="璇疯緭鍏ラ偖绠�" maxlength="50" />
+              <el-input
+                v-model="form.email"
+                placeholder="璇疯緭鍏ラ偖绠�"
+                maxlength="50"
+              />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item v-if="form.userId == undefined" label="鐢ㄦ埛鍚嶇О" prop="userName">
-              <el-input v-model="form.userName" placeholder="璇疯緭鍏ョ敤鎴峰悕绉�" maxlength="30" />
+            <el-form-item
+              v-if="form.userId == undefined"
+              label="鐢ㄦ埛鍚嶇О"
+              prop="userName"
+            >
+              <el-input
+                v-model="form.userName"
+                placeholder="璇疯緭鍏ョ敤鎴峰悕绉�"
+                maxlength="30"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item v-if="form.userId == undefined" label="鐢ㄦ埛瀵嗙爜" prop="password">
-              <el-input v-model="form.password" placeholder="璇疯緭鍏ョ敤鎴峰瘑鐮�" type="password" maxlength="20" show-password/>
+            <el-form-item
+              v-if="form.userId == undefined"
+              label="鐢ㄦ埛瀵嗙爜"
+              prop="password"
+            >
+              <el-input
+                v-model="form.password"
+                placeholder="璇疯緭鍏ョ敤鎴峰瘑鐮�"
+                type="password"
+                maxlength="20"
+                show-password
+              />
             </el-form-item>
           </el-col>
         </el-row>
@@ -261,7 +385,8 @@
                   v-for="dict in dict.type.sys_normal_disable"
                   :key="dict.value"
                   :label="dict.value"
-                >{{dict.label}}</el-radio>
+                  >{{ dict.label }}</el-radio
+                >
               </el-radio-group>
             </el-form-item>
           </el-col>
@@ -269,7 +394,11 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="宀椾綅">
-              <el-select v-model="form.postIds" multiple placeholder="璇烽�夋嫨宀椾綅">
+              <el-select
+                v-model="form.postIds"
+                multiple
+                placeholder="璇烽�夋嫨宀椾綅"
+              >
                 <el-option
                   v-for="item in postOptions"
                   :key="item.postId"
@@ -282,7 +411,11 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="瑙掕壊">
-              <el-select v-model="form.roleIds" multiple placeholder="璇烽�夋嫨瑙掕壊">
+              <el-select
+                v-model="form.roleIds"
+                multiple
+                placeholder="璇烽�夋嫨瑙掕壊"
+              >
                 <el-option
                   v-for="item in roleOptions"
                   :key="item.roleId"
@@ -297,7 +430,11 @@
         <el-row>
           <el-col :span="24">
             <el-form-item label="澶囨敞">
-              <el-input v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
+              <el-input
+                v-model="form.remark"
+                type="textarea"
+                placeholder="璇疯緭鍏ュ唴瀹�"
+              ></el-input>
             </el-form-item>
           </el-col>
         </el-row>
@@ -309,7 +446,12 @@
     </el-dialog>
 
     <!-- 鐢ㄦ埛瀵煎叆瀵硅瘽妗� -->
-    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+    <el-dialog
+      :title="upload.title"
+      :visible.sync="upload.open"
+      width="400px"
+      append-to-body
+    >
       <el-upload
         ref="upload"
         :limit="1"
@@ -326,10 +468,17 @@
         <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
         <div class="el-upload__tip text-center" slot="tip">
           <div class="el-upload__tip" slot="tip">
-            <el-checkbox v-model="upload.updateSupport" /> 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
+            <el-checkbox v-model="upload.updateSupport" />
+            鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
           </div>
           <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span>
-          <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">涓嬭浇妯℃澘</el-link>
+          <el-link
+            type="primary"
+            :underline="false"
+            style="font-size: 12px; vertical-align: baseline"
+            @click="importTemplate"
+            >涓嬭浇妯℃澘</el-link
+          >
         </div>
       </el-upload>
       <div slot="footer" class="dialog-footer">
@@ -341,14 +490,23 @@
 </template>
 
 <script>
-import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user";
+import {
+  listUser,
+  getUser,
+  delUser,
+  addUser,
+  updateUser,
+  resetUserPwd,
+  changeUserStatus,
+  deptTreeSelect,
+} from "@/api/system/user";
 import { getToken } from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 
 export default {
   name: "User",
-  dicts: ['sys_normal_disable', 'sys_user_sex'],
+  dicts: ["sys_normal_disable", "sys_user_sex"],
   components: { Treeselect },
   data() {
     return {
@@ -386,7 +544,7 @@
       form: {},
       defaultProps: {
         children: "children",
-        label: "label"
+        label: "label",
       },
       // 鐢ㄦ埛瀵煎叆鍙傛暟
       upload: {
@@ -401,7 +559,7 @@
         // 璁剧疆涓婁紶鐨勮姹傚ご閮�
         headers: { Authorization: "Bearer " + getToken() },
         // 涓婁紶鐨勫湴鍧�
-        url: process.env.VUE_APP_BASE_API + "/system/user/importData"
+        url: process.env.VUE_APP_BASE_API + "/system/user/importData",
       },
       // 鏌ヨ鍙傛暟
       queryParams: {
@@ -410,7 +568,7 @@
         userName: undefined,
         phonenumber: undefined,
         status: undefined,
-        deptId: undefined
+        deptId: undefined,
       },
       // 鍒椾俊鎭�
       columns: [
@@ -420,48 +578,58 @@
         { key: 3, label: `閮ㄩ棬`, visible: true },
         { key: 4, label: `鎵嬫満鍙风爜`, visible: true },
         { key: 5, label: `鐘舵�乣, visible: true },
-        { key: 6, label: `鍒涘缓鏃堕棿`, visible: true }
+        { key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
       ],
       // 琛ㄥ崟鏍¢獙
       rules: {
         userName: [
           { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
-          { min: 2, max: 20, message: '鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿', trigger: 'blur' }
+          {
+            min: 2,
+            max: 20,
+            message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
+            trigger: "blur",
+          },
         ],
         nickName: [
-          { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" }
+          { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" },
         ],
         password: [
           { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
-          { min: 5, max: 20, message: '鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿', trigger: 'blur' }
+          {
+            min: 5,
+            max: 20,
+            message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+            trigger: "blur",
+          },
         ],
         email: [
           {
             type: "email",
             message: "璇疯緭鍏ユ纭殑閭鍦板潃",
-            trigger: ["blur", "change"]
-          }
+            trigger: ["blur", "change"],
+          },
         ],
         phonenumber: [
           {
             pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
             message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
-            trigger: "blur"
-          }
-        ]
-      }
+            trigger: "blur",
+          },
+        ],
+      },
     };
   },
   watch: {
     // 鏍规嵁鍚嶇О绛涢�夐儴闂ㄦ爲
     deptName(val) {
       this.$refs.tree.filter(val);
-    }
+    },
   },
   created() {
     this.getList();
     this.getDeptTree();
-    this.getConfigKey("sys.user.initPassword").then(response => {
+    this.getConfigKey("sys.user.initPassword").then((response) => {
       this.initPassword = response.msg;
     });
   },
@@ -469,7 +637,9 @@
     /** 鏌ヨ鐢ㄦ埛鍒楄〃 */
     getList() {
       this.loading = true;
-      listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+      console.log(this.queryParams);
+      listUser(this.addDateRange(this.queryParams, this.dateRange)).then(
+        (response) => {
           this.userList = response.rows;
           this.total = response.total;
           this.loading = false;
@@ -478,7 +648,7 @@
     },
     /** 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋� */
     getDeptTree() {
-      deptTreeSelect().then(response => {
+      deptTreeSelect().then((response) => {
         this.deptOptions = response.data;
       });
     },
@@ -495,13 +665,17 @@
     // 鐢ㄦ埛鐘舵�佷慨鏀�
     handleStatusChange(row) {
       let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
-      this.$modal.confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵').then(function() {
-        return changeUserStatus(row.userId, row.status);
-      }).then(() => {
-        this.$modal.msgSuccess(text + "鎴愬姛");
-      }).catch(function() {
-        row.status = row.status === "0" ? "1" : "0";
-      });
+      this.$modal
+        .confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵')
+        .then(function () {
+          return changeUserStatus(row.userId, row.status);
+        })
+        .then(() => {
+          this.$modal.msgSuccess(text + "鎴愬姛");
+        })
+        .catch(function () {
+          row.status = row.status === "0" ? "1" : "0";
+        });
     },
     // 鍙栨秷鎸夐挳
     cancel() {
@@ -522,7 +696,7 @@
         status: "0",
         remark: undefined,
         postIds: [],
-        roleIds: []
+        roleIds: [],
       };
       this.resetForm("form");
     },
@@ -541,7 +715,7 @@
     },
     // 澶氶�夋閫変腑鏁版嵁
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.userId);
+      this.ids = selection.map((item) => item.userId);
       this.single = selection.length != 1;
       this.multiple = !selection.length;
     },
@@ -561,7 +735,7 @@
     /** 鏂板鎸夐挳鎿嶄綔 */
     handleAdd() {
       this.reset();
-      getUser().then(response => {
+      getUser().then((response) => {
         this.postOptions = response.posts;
         this.roleOptions = response.roles;
         this.open = true;
@@ -573,7 +747,7 @@
     handleUpdate(row) {
       this.reset();
       const userId = row.userId || this.ids;
-      getUser(userId).then(response => {
+      getUser(userId).then((response) => {
         this.form = response.data;
         this.postOptions = response.posts;
         this.roleOptions = response.roles;
@@ -591,30 +765,32 @@
         cancelButtonText: "鍙栨秷",
         closeOnClickModal: false,
         inputPattern: /^.{5,20}$/,
-        inputErrorMessage: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿"
-      }).then(({ value }) => {
-          resetUserPwd(row.userId, value).then(response => {
+        inputErrorMessage: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+      })
+        .then(({ value }) => {
+          resetUserPwd(row.userId, value).then((response) => {
             this.$modal.msgSuccess("淇敼鎴愬姛锛屾柊瀵嗙爜鏄細" + value);
           });
-        }).catch(() => {});
+        })
+        .catch(() => {});
     },
     /** 鍒嗛厤瑙掕壊鎿嶄綔 */
-    handleAuthRole: function(row) {
+    handleAuthRole: function (row) {
       const userId = row.userId;
       this.$router.push("/system/user-auth/role/" + userId);
     },
     /** 鎻愪氦鎸夐挳 */
-    submitForm: function() {
-      this.$refs["form"].validate(valid => {
+    submitForm: function () {
+      this.$refs["form"].validate((valid) => {
         if (valid) {
           if (this.form.userId != undefined) {
-            updateUser(this.form).then(response => {
+            updateUser(this.form).then((response) => {
               this.$modal.msgSuccess("淇敼鎴愬姛");
               this.open = false;
               this.getList();
             });
           } else {
-            addUser(this.form).then(response => {
+            addUser(this.form).then((response) => {
               this.$modal.msgSuccess("鏂板鎴愬姛");
               this.open = false;
               this.getList();
@@ -626,18 +802,26 @@
     /** 鍒犻櫎鎸夐挳鎿嶄綔 */
     handleDelete(row) {
       const userIds = row.userId || this.ids;
-      this.$modal.confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�').then(function() {
-        return delUser(userIds);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-      }).catch(() => {});
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
+        .then(function () {
+          return delUser(userIds);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        })
+        .catch(() => {});
     },
     /** 瀵煎嚭鎸夐挳鎿嶄綔 */
     handleExport() {
-      this.download('system/user/export', {
-        ...this.queryParams
-      }, `user_${new Date().getTime()}.xlsx`)
+      this.download(
+        "system/user/export",
+        {
+          ...this.queryParams,
+        },
+        `user_${new Date().getTime()}.xlsx`
+      );
     },
     /** 瀵煎叆鎸夐挳鎿嶄綔 */
     handleImport() {
@@ -646,8 +830,11 @@
     },
     /** 涓嬭浇妯℃澘鎿嶄綔 */
     importTemplate() {
-      this.download('system/user/importTemplate', {
-      }, `user_template_${new Date().getTime()}.xlsx`)
+      this.download(
+        "system/user/importTemplate",
+        {},
+        `user_template_${new Date().getTime()}.xlsx`
+      );
     },
     // 鏂囦欢涓婁紶涓鐞�
     handleFileUploadProgress(event, file, fileList) {
@@ -658,13 +845,19 @@
       this.upload.open = false;
       this.upload.isUploading = false;
       this.$refs.upload.clearFiles();
-      this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "瀵煎叆缁撴灉", { dangerouslyUseHTMLString: true });
+      this.$alert(
+        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+          response.msg +
+          "</div>",
+        "瀵煎叆缁撴灉",
+        { dangerouslyUseHTMLString: true }
+      );
       this.getList();
     },
     // 鎻愪氦涓婁紶鏂囦欢
     submitFileForm() {
       this.$refs.upload.submit();
-    }
-  }
+    },
+  },
 };
-</script>
\ No newline at end of file
+</script>
diff --git a/vue.config.js b/vue.config.js
index 58d5a8b..311eeab 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -35,8 +35,8 @@
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        target1: `http://116.62.18.175:8080`,
-        target: `http://localhost:8080`,
+        target1: `http://192.168.1.4:8080`,
+        target: `http://192.168.1.4:8080`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''

--
Gitblit v1.9.3