From d9a869193fb1eeeabd8a3afbb5341a187684c3d0 Mon Sep 17 00:00:00 2001
From: heimawl <1785969728@qq.com>
Date: 星期一, 19 六月 2023 15:37:23 +0800
Subject: [PATCH] 完成标签管理模块数据交互

---
 src/views/system/user/index.vue                     |  383 ++++++++++++----
 vue.config.js                                       |    2 
 src/views/knowledge/education/compilequer/video.js  |   71 +++
 src/main.js                                         |   30 
 src/views/system/label/index.vue                    |  405 ++++++++++-------
 package.json                                        |    2 
 src/views/knowledge/education/index.vue             |    2 
 src/api/system/label.js                             |   55 ++
 src/views/knowledge/education/compilequer/index.vue |  389 ++++++++++------
 9 files changed, 904 insertions(+), 435 deletions(-)

diff --git a/package.json b/package.json
index 9de619d..a3e8e13 100644
--- a/package.json
+++ b/package.json
@@ -47,12 +47,14 @@
     "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",
diff --git a/src/api/system/label.js b/src/api/system/label.js
index d036a8a..2ec7c9e 100644
--- a/src/api/system/label.js
+++ b/src/api/system/label.js
@@ -9,6 +9,26 @@
     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
+  })
+};
 // 鏂板鏍囩
 export function addapitag(data) {
     return request({
@@ -17,6 +37,15 @@
       data: data
     })
   };
+  // 鏂板鏍囩绫诲埆
+export function addtagcategory(data) {
+  return request({
+    url: '/system/tagcategory',
+    method: 'post',
+    data: data
+  })
+};
+
 
 /**
  * 
@@ -38,12 +67,24 @@
    * 鍒犻櫎鏍囩
    * @returns 
    */
-export function deletetag(tagid) {
+export function deletetag(tagids) {
     return request({
-      url: '/base/tag/' + tagid,
+      url: '/base/tag/' + tagids,
       method: 'delete',
     })
   };
+    /**
+   * 
+   * @param {鏍囩id} tagid 
+   * 鍒犻櫎鏍囩鍒嗙被
+   * @returns 
+   */
+export function deletetagcategory(tagid) {
+  return request({
+    url: '/system/tagcategory/' + tagid,
+    method: 'delete',
+  })
+};
   /**
    * 
    * @param {*} data 
@@ -63,11 +104,11 @@
    * 鏌ヨ鏍囩鍒楄〃
    * @returns 
    */
-export function listtag(query) {
+export function listtag(data) {
     return request({
       url: '/base/tag/list',
-      method: 'get',
-      params: query
+      method: 'post',
+      data: data
     })
   };
   /**
@@ -75,10 +116,10 @@
    * 鑾峰彇鏍囩鍒嗙被鍒楄〃
    * @returns
    */
-  export function tagclassifylist(data) {
+  export function tagclassifylist(params) {
     return request({
       url: '/system/tagcategory/baseTagCategoryByName',
       method: 'post',
-      data: data
+      params: params,
     })
   };
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
index 24ff4bc..3bb7dce 100644
--- a/src/main.js
+++ b/src/main.js
@@ -15,16 +15,30 @@
 import plugins from './plugins' // plugins
 import { download } from '@/utils/request'
  //寮曞叆quill-editor缂栬緫鍣�
-//  import VueQuillEditor from 'vue-quill-editor'
-//  import 'quill/dist/quill.core.css'
-//  import 'quill/dist/quill.snow.css'
-//  import 'quill/dist/quill.bubble.css'
+ 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 * as Quill from 'quill'
-//  import { ImageDrop } from 'quill-image-drop-module'
-//  Quill.register('modules/imageDrop', ImageDrop)
+//  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缂栬緫鍣ㄨ皟鏁村浘鐗囧昂瀵�
-//  import ImageResize from 'quill-image-resize-module'
 //  Quill.register('modules/imageResize', ImageResize)
 
 import './assets/icons' // icon
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..a04026a 100644
--- a/src/views/knowledge/education/index.vue
+++ b/src/views/knowledge/education/index.vue
@@ -157,7 +157,7 @@
             <el-table
               v-loading="loading"
               :data="userList"
-              border="true"
+              border
               @selection-change="handleSelectionChange"
             >
               <el-table-column type="selection" width="50" align="center" />
diff --git a/src/views/system/label/index.vue b/src/views/system/label/index.vue
index a991d82..7419008 100644
--- a/src/views/system/label/index.vue
+++ b/src/views/system/label/index.vue
@@ -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>
@@ -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
                 >
@@ -152,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>
@@ -238,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>
@@ -264,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>
     <!-- 淇敼/娣诲姞鏍囩寮规 -->
@@ -277,38 +286,55 @@
     >
       <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>
 </template>
 
 <script>
-import {
-  listUser,
-  getUser,
-  delUser,
-  addUser,
-  updateUser,
-} from "@/api/system/user";
+import { addUser, updateUser } from "@/api/system/user";
 import {
   toamendtag,
   addapitag,
   detailstag,
   deletetag,
+  changetagcategory,
+  toamendtagcategory,
+  addtagcategory,
+  deletetagcategory,
   listtag,
   tagclassifylist,
 } from "@/api/system/label";
@@ -332,6 +358,7 @@
       multiple: true,
       // 鏄剧ず鎼滅储鏉′欢
       showSearch: true,
+      idds: "", //鍒嗙被id
       // 鎬绘潯鏁�
       total: 0,
       amendtag: false, //鏄惁淇敼绫诲埆
@@ -341,23 +368,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: "",
       // 鏄惁鏄剧ず寮瑰嚭灞�
@@ -370,11 +390,10 @@
       roleOptions: [],
       // 琛ㄥ崟鍙傛暟
       form: {},
+      forms: {
+        name: "",
+      },
       numberlb: 22,
-      numberlbs: 2,
-      sidecolumnform: {
-        classesname: "",
-      }, //娣诲姞绫诲埆琛ㄥ崟
       dialogFormVisible: false, //娣诲姞銆佷慨鏀圭被鍒脊妗�
       lstamendtagVisible: false, //娣诲姞銆佷慨鏀规爣绛惧脊妗�
       goQRCodeVisible: false, //浜岀淮鐮佸脊妗�
@@ -418,15 +437,12 @@
           number: "2",
         },
       ],
-      // 鏌ヨ鍙傛暟
+      // 鏌ヨ鏍囩鍒楄〃鍙傛暟
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        userName: undefined,
-        phonenumber: undefined,
-        status: undefined,
-        deptId: undefined,
-        IDnumber: undefined,
+        tagname: undefined,
+        tagdescription: undefined,
       },
       // 鍒椾俊鎭�
       columns: [
@@ -439,51 +455,51 @@
         { 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: {},
@@ -495,47 +511,112 @@
   methods: {
     /** 鏌ヨ鏍囩鍒楄〃 */
     getList() {
-      //   this.loading = true;
-      let forms = {};
-      forms.name = this.sidecolumnval;
-      listtag(forms).then((response) => {
+      listtag(this.addDateRange(this.queryParams)).then((response) => {
         console.log(response);
-      });
-      listUser().then((response) => {
-        console.log(response);
-
-        console.log(this.userList);
+        this.total = response.total;
+        this.userList = response.rows;
       });
     },
-    // 鑾峰彇鏍囩鍒嗙被
-    gitclasify() {
-      let forms = {};
-      forms.name = this.sidecolumnval;
-      tagclassifylist(forms).then((response) => {
-        console.log(response);
-      });
-    },
-    // 娣诲姞绫诲埆
-    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;
     },
-    // 鍒囨崲鍏变韩/鏈湴
-    tophandleClick() {},
-    // 鍙栨秷鎸夐挳
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
+
     // 琛ㄥ崟閲嶇疆
     reset() {
       this.form = {
@@ -556,17 +637,18 @@
     },
     // 鏍囩鐘舵�佷慨鏀�
     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";
         });
     },
     /** 鎼滅储鎸夐挳鎿嶄綔 */
@@ -578,33 +660,15 @@
     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" },
-      });
     },
 
     /** 鏇存柊/淇敼鎻愪氦鎸夐挳 */
@@ -630,16 +694,17 @@
     /** 鍒犻櫎鎸夐挳鎿嶄綔 */
     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();
@@ -650,7 +715,7 @@
     /** 瀵煎嚭鎸夐挳鎿嶄綔 */
     handleExport() {
       this.download(
-        "basetag/export",
+        "base/tag/export",
         {
           ...this.topqueryParams,
         },
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 77b3f39..311eeab 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -36,7 +36,7 @@
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
         target1: `http://192.168.1.4:8080`,
-        target: `http://localhost:8080`,
+        target: `http://192.168.1.4:8080`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''

--
Gitblit v1.9.3