Kaynağa Gözat

机构管理增加 管理员可分配权限

dusenyao 3 yıl önce
ebeveyn
işleme
628486cfef

+ 31 - 43
.eslintrc.js

@@ -1,56 +1,50 @@
 module.exports = {
-  root: true,
+  // 如果是SSR项目,则需要配置 node:true
+  // root: true,
 
+  // 为什么是这样的parser配置?https://eslint.vuejs.org/user-guide/#how-to-use-a-custom-parser
+  parser: 'vue-eslint-parser',
   parserOptions: {
-    parser: 'babel-eslint',
-    sourceType: 'module'
+    parser: '@babel/eslint-parser',
+    sourceType: 'module',
+    ecmaVersion: 7,
+    ecmaFeatures: {
+      impliedStrict: true
+    }
   },
 
   env: {
     node: true,
-    browser: true,
-    es6: true
+    browser: true
   },
 
   extends: [
+    'eslint:recommended',
     'plugin:vue/essential',
     'plugin:vue/strongly-recommended',
     'plugin:vue/recommended',
-    'eslint:recommended',
-    '@vue/prettier'
+    '@vue/eslint-config-prettier'
+  ],
+
+  plugins: [
+    // 注意这里不能配置 html 选项,为什么?https://eslint.vuejs.org/user-guide/#why-doesn-t-it-work-on-vue-files
+    'vue',
+    'prettier'
   ],
 
   rules: {
     'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
     'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
-    'prettier/prettier': [
-      'error',
-      {
-        tabWidth: 2,
-        useTabs: false,
-        semi: true,
-        singleQuote: true,
-        trailingComma: 'none',
-        endOfLine: 'auto',
-        bracketSpacing: true,
-        arrowParens: 'avoid',
-        printWidth: 120
-      }
-    ],
+    'vue/multi-word-component-names': 0,
     'vue/max-attributes-per-line': [
       2,
       {
-        singleline: 10,
+        singleline: 8,
         multiline: {
-          max: 1,
-          allowFirstLine: false
+          max: 1
         }
       }
     ],
-    'vue/singleline-html-element-content-newline': 'off',
-    'vue/multiline-html-element-content-newline': 'off',
-    'vue/name-property-casing': ['error', 'PascalCase'],
-    'vue/no-v-html': 'off',
     'accessor-pairs': 2,
     'arrow-spacing': [
       2,
@@ -85,7 +79,7 @@ module.exports = {
     curly: [2, 'multi-line'],
     'dot-location': [2, 'property'],
     'eol-last': 2,
-    eqeqeq: [1, 'always'],
+    eqeqeq: [2, 'always'],
     'generator-star-spacing': [
       2,
       {
@@ -148,13 +142,7 @@ module.exports = {
         defaultAssignment: false
       }
     ],
-    'no-unused-vars': [
-      1,
-      {
-        vars: 'all',
-        args: 'none'
-      }
-    ],
+    'no-unused-vars': [1],
     'no-useless-computed-key': 2,
     'no-useless-constructor': 2,
     'no-whitespace-before-property': 2,
@@ -226,7 +214,11 @@ module.exports = {
     'no-empty': 1,
     'no-eq-null': 2,
     'no-extend-native': 2,
+    'no-multi-assign': 1,
+    'no-negated-condition': 2,
+    'no-duplicate-imports': 2,
     'no-extra-bind': 2,
+    'no-tabs': 2,
     'no-extra-parens': [2, 'functions'],
     'no-floating-decimal': 2,
     'no-implicit-coercion': 1,
@@ -259,6 +251,8 @@ module.exports = {
     'no-useless-call': 2,
     'no-void': 2,
     'no-var': 2,
+    'prefer-rest-params': 2,
+    'prefer-template': 2,
     'no-warning-comments': [
       1,
       {
@@ -271,14 +265,8 @@ module.exports = {
     'computed-property-spacing': [1, 'never'],
     'consistent-return': 0,
     'default-case': 1,
-    'dot-notation': [
-      0,
-      {
-        allowKeywords: true
-      }
-    ],
     'func-names': 1,
-    'func-style': [0, 'declaration'],
+    'func-style': 0,
     'guard-for-in': 0,
     'id-length': 0,
     'init-declarations': 1,

+ 11 - 0
.prettierrc.js

@@ -0,0 +1,11 @@
+module.exports = {
+  tabWidth: 2,
+  useTabs: false,
+  semi: true,
+  singleQuote: true,
+  trailingComma: 'none',
+  endOfLine: 'auto',
+  bracketSpacing: true,
+  arrowParens: 'avoid',
+  printWidth: 120
+};

Dosya farkı çok büyük olduğundan ihmal edildi
+ 23587 - 22
package-lock.json


+ 34 - 33
package.json

@@ -10,53 +10,54 @@
     "lint:css": "stylelint **/*.{html,vue,css,sass,scss,less}"
   },
   "dependencies": {
-    "axios": "^0.21.4",
-    "core-js": "^3.17.2",
+    "axios": "^0.24.0",
+    "core-js": "^3.20.3",
     "element-ui": "^2.15.6",
-    "js-cookie": "^2.2.1",
+    "js-cookie": "^3.0.1",
     "normalize.css": "^8.0.1",
     "nprogress": "^0.2.0",
-    "vue": "^2.6.12",
-    "vue-router": "^3.5.1",
+    "vue": "^2.6.14",
+    "vue-router": "^3.5.3",
     "vuex": "^3.6.2"
   },
   "devDependencies": {
-    "@babel/core": "^7.14.3",
-    "@babel/preset-env": "^7.14.2",
-    "@vue/cli-plugin-babel": "~4.5.13",
-    "@vue/cli-plugin-eslint": "~4.5.13",
-    "@vue/cli-plugin-router": "~4.5.13",
-    "@vue/cli-plugin-unit-jest": "^4.5.13",
-    "@vue/cli-plugin-vuex": "~4.5.13",
-    "@vue/cli-service": "~4.5.13",
-    "@vue/eslint-config-prettier": "^6.0.0",
-    "@vue/test-utils": "^1.2.0",
-    "babel-eslint": "^10.1.0",
-    "babel-jest": "^26.6.3",
-    "babel-loader": "^8.2.2",
+    "@babel/core": "^7.16.7",
+    "@babel/eslint-parser": "^7.16.5",
+    "@babel/preset-env": "^7.16.8",
+    "@rushstack/eslint-patch": "^1.1.0",
+    "@vue/cli-plugin-babel": "~4.5.15",
+    "@vue/cli-plugin-eslint": "~4.5.15",
+    "@vue/cli-plugin-router": "~4.5.15",
+    "@vue/cli-plugin-unit-jest": "^4.5.15",
+    "@vue/cli-plugin-vuex": "~4.5.15",
+    "@vue/cli-service": "~4.5.15",
+    "@vue/eslint-config-prettier": "^7.0.0",
+    "@vue/test-utils": "^1.3.0",
+    "babel-jest": "^27.4.6",
+    "babel-loader": "^8.2.3",
     "babel-plugin-dynamic-import-node": "^2.3.3",
-    "eslint": "^7.26.0",
-    "eslint-plugin-prettier": "^3.4.1",
-    "eslint-plugin-vue": "^7.9.0",
+    "eslint": "^7.32.0",
+    "eslint-plugin-prettier": "^4.0.0",
+    "eslint-plugin-vue": "^8.3.0",
     "html-webpack-plugin": "^5.3.1",
-    "prettier": "2.3.2",
-    "sass": "^1.32.13",
+    "postcss": "^8.4.5",
+    "postcss-html": "^1.3.0",
+    "prettier": "2.5.1",
+    "sass": "^1.48.0",
     "sass-loader": "^10.2.0",
     "script-ext-html-webpack-plugin": "^2.1.5",
-    "postcss": "^8.3.11",
-    "postcss-html": "^1.2.0",
     "stylelint": "^14.0.1",
     "stylelint-config-prettier": "^9.0.3",
-    "stylelint-config-recess-order": "^2.5.0",
-    "stylelint-config-recommended-vue": "^1.0.0",
+    "stylelint-config-recess-order": "^3.0.0",
+    "stylelint-config-recommended-vue": "^1.1.0",
     "stylelint-config-sass-guidelines": "^9.0.1",
-    "stylelint-config-standard-scss": "^2.0.1",
-    "stylelint-declaration-block-no-ignored-properties": "^2.4.0",
+    "stylelint-config-standard-scss": "^3.0.0",
+    "stylelint-declaration-block-no-ignored-properties": "^2.5.0",
     "stylelint-webpack-plugin": "^3.1.0",
-    "svg-sprite-loader": "^6.0.9",
-    "svgo": "^2.5.0",
-    "vue-loader": "^15.9.7",
-    "vue-template-compiler": "^2.6.12"
+    "svg-sprite-loader": "^6.0.11",
+    "svgo": "^2.8.0",
+    "vue-loader": "^15.9.8",
+    "vue-template-compiler": "^2.6.14"
   },
   "browserslist": [
     "> 1%",

+ 30 - 0
src/api/org.js

@@ -59,3 +59,33 @@ export function UpdateOrg(data) {
     data
   });
 }
+
+/**
+ * 为机构管理员设置可分配的权限
+ * @param {Object} data
+ */
+export function SetDistributablePopedom_OrgManager(data) {
+  let params = getRequestParameter('popedom_manager-SetDistributablePopedom_OrgManager');
+
+  return request({
+    method: 'post',
+    url: process.env.VUE_APP_FileServer,
+    params,
+    data
+  });
+}
+
+/**
+ * 得到机构管理员可分配的权限列表
+ * @param {Object} data
+ */
+export function GetDistributablePopedomList_OrgManager(data) {
+  let params = getRequestParameter('popedom_manager-GetDistributablePopedomList_OrgManager');
+
+  return request({
+    method: 'post',
+    url: process.env.VUE_APP_FileServer,
+    params,
+    data
+  });
+}

+ 1 - 1
src/api/user.js

@@ -7,7 +7,7 @@ import { request, getRequestParameter } from '@/utils/request';
 export function login(data) {
   return request({
     method: 'post',
-    url: process.env.VUE_APP_FileServer + '?MethodName=login_control-Login',
+    url: `${process.env.VUE_APP_FileServer}?MethodName=login_control-Login`,
     data
   });
 }

+ 3 - 3
src/components/ResetPassword.vue

@@ -35,10 +35,10 @@ export default {
   },
   data() {
     const validateConfirm = (rule, value, callback) => {
-      if (value !== this.form.password) {
-        callback(new Error('新密码与确认密码不一致'));
-      } else {
+      if (value === this.form.password) {
         callback();
+      } else {
+        callback(new Error('新密码与确认密码不一致'));
       }
     };
 

+ 3 - 4
src/layouts/components/LayoutHeader.vue

@@ -58,10 +58,9 @@ export default {
     routerList() {
       let is_inner = this.$store.state.user.is_inner === 'true';
       let popedomList = this.$store.state.user.popedom_code_list;
-      if (popedomList === undefined) {
-        popedomList = [];
-      }
-      let list = [
+      if (popedomList === undefined) popedomList = [];
+
+      const list = [
         {
           path: '/org_manager',
           name: '机构管理',

+ 3 - 3
src/layouts/components/UpdatePassword.vue

@@ -32,10 +32,10 @@ import { UpdateMyPassword } from '@/api/user';
 export default {
   data() {
     const confirmPassword = (rule, value, callback) => {
-      if (this.passwordForm.password_new !== value) {
-        callback(new Error('新密码与确认密码不一致'));
-      } else {
+      if (this.passwordForm.password_new === value) {
         callback();
+      } else {
+        callback(new Error('新密码与确认密码不一致'));
       }
     };
 

+ 1 - 1
src/permission.js

@@ -19,7 +19,7 @@ router.beforeEach(async (to, from, next) => {
     } else {
       next();
     }
-  } else if (whiteList.indexOf(to.path) !== -1) {
+  } else if (whiteList.includes(to.path)) {
     // 在登录白名单中,直接进入
     next();
   } else {

+ 0 - 9
src/styles/index.scss

@@ -38,15 +38,6 @@ a:hover {
   cursor: pointer;
 }
 
-a:focus,
-a:active {
-  outline: none;
-}
-
-div:focus {
-  outline: none;
-}
-
 .container {
   width: 1000px;
   height: 100%;

+ 2 - 4
src/utils/auth.js

@@ -42,9 +42,7 @@ export function setUserInfo(data) {
 
 export function removeSessionID() {
   for (let i = 0; i < userInfoList.length; i++) {
-    const key = userInfoList[i];
-
-    Cookies.remove(key);
+    Cookies.remove(userInfoList[i]);
   }
 }
 
@@ -58,7 +56,7 @@ export function getConfig() {
 }
 
 export function setConfig(val) {
-  return Cookies.set(ConfigKey, val);
+  return Cookies.set(ConfigKey, JSON.stringify(val));
 }
 
 export function removeConfig() {

+ 1 - 3
src/utils/validate.js

@@ -1,6 +1,4 @@
 export function validNull(str) {
   let data = str && str !== '' ? str.trim() : '';
-  if (data) {
-    return true;
-  }
+  return Boolean(data);
 }

+ 2 - 4
src/views/account_manager/index.vue

@@ -110,16 +110,14 @@ export default {
       this.queryAccountList();
     },
     queryAccountList() {
-      let data = {
+      pageQueryUserList({
         user_name: this.user_name,
         real_name: this.real_name,
         page_capacity: this.page_capacity,
         cur_page: this.cur_page,
         org_id: this.org_id,
         user_type: this.user_type
-      };
-      pageQueryUserList(data).then(response => {
-        let { cur_page, user_list, total_count } = response;
+      }).then(({ cur_page, user_list, total_count }) => {
         this.cur_page = cur_page;
         this.user_list = user_list;
         this.total_count = total_count;

+ 1 - 1
src/views/login/index.vue

@@ -65,7 +65,7 @@ export default {
   name: 'Login',
   data() {
     const validateUsername = (rule, value, callback) => {
-      if (!value) {
+      if (value.length < 0) {
         callback(new Error('用户名不能为空!'));
       } else {
         callback();

+ 3 - 3
src/views/org_manager/AddOrg.vue

@@ -71,10 +71,10 @@ export default {
     };
 
     const validateConfirmPassword = (rule, value, callback) => {
-      if (this.form.admin_user_password !== value) {
-        callback(new Error('管理员密码与确认密码不一致!'));
-      } else {
+      if (this.form.admin_user_password === value) {
         callback();
+      } else {
+        callback(new Error('管理员密码与确认密码不一致!'));
       }
     };
 

+ 68 - 5
src/views/org_manager/index.vue

@@ -20,7 +20,7 @@
             <a @click="showOrg(row.id)">查看</a>
           </template>
         </el-table-column>
-        <el-table-column fixed="right" width="120">
+        <el-table-column fixed="right" width="70">
           <template slot-scope="{ row }">
             <el-dropdown placement="top">
               <a class="el-dropdown-link">管理</a>
@@ -33,6 +33,21 @@
             </el-dropdown>
           </template>
         </el-table-column>
+        <el-table-column fixed="right" width="180">
+          <template slot-scope="{ row }">
+            <el-popover trigger="click" width="200" @show="getDistributablePopedomList_OrgManager(row.id)">
+              <div class="popedom">
+                <span class="popedom-manager">权限管理</span>
+                <div v-for="item in popedom_list" :key="item.popedom_code" class="popedom-list">
+                  <span>{{ item.popedom_name }}</span>
+                  <el-switch v-model="item.is_selected" active-color="#34CC83" inactive-color="#C4C4C4" />
+                </div>
+                <el-button type="primary" @click="setDistributablePopedom_OrgManager(row.id)">保存</el-button>
+              </div>
+              <el-link slot="reference" :underline="false">管理员可分配权限</el-link>
+            </el-popover>
+          </template>
+        </el-table-column>
       </el-table>
     </div>
     <el-pagination
@@ -55,10 +70,11 @@
 </template>
 
 <script>
-import ResetPassword from '@/components/ResetPassword';
-import ShowOrg from './ShowOrg';
-import UpdateOrg from './UpdateOrg';
+import ResetPassword from '@/components/ResetPassword.vue';
+import ShowOrg from './ShowOrg.vue';
+import UpdateOrg from './UpdateOrg.vue';
 import { pageQueryOrgList } from '@/api/list';
+import { GetDistributablePopedomList_OrgManager, SetDistributablePopedom_OrgManager } from '@/api/org';
 
 export default {
   name: 'OrgManager',
@@ -75,7 +91,9 @@ export default {
       org_list: [],
       total_count: 0,
       curUserId: '',
-      curOrgId: ''
+      curOrgId: '',
+      // 权限列表
+      popedom_list: []
     };
   },
   created() {
@@ -112,6 +130,26 @@ export default {
       this.$refs.updateOrg.show();
     },
 
+    getDistributablePopedomList_OrgManager(org_id) {
+      GetDistributablePopedomList_OrgManager({ org_id }).then(({ popedom_list }) => {
+        popedom_list.forEach((el, i, arr) => {
+          el.is_selected = el.is_selected === 'true';
+          arr[i] = el;
+        });
+        this.popedom_list = popedom_list;
+      });
+    },
+
+    setDistributablePopedom_OrgManager(org_id) {
+      let popedom_code_list = [];
+      this.popedom_list.forEach(({ popedom_code, is_selected }) => {
+        if (is_selected) popedom_code_list.push(popedom_code);
+      });
+      SetDistributablePopedom_OrgManager({ org_id, popedom_code_list }).then(() => {
+        this.$message.success('为机构管理员设置可分配的权限成功');
+      });
+    },
+
     resetOrgAdminPassword(id) {
       this.curUserId = id;
       this.$refs.reset.show();
@@ -148,3 +186,28 @@ export default {
   }
 }
 </style>
+
+<style lang="scss">
+// 权限管理
+.popedom {
+  &-manager {
+    display: flex;
+    justify-content: space-between;
+    padding-bottom: 8px;
+    font-weight: 700;
+    border-bottom: 1px solid #d9d9d9;
+  }
+
+  &-list {
+    display: flex;
+    justify-content: space-between;
+    padding-top: 10px;
+  }
+
+  .el-button {
+    width: 100%;
+    padding: 6px 20px;
+    margin-top: 16px;
+  }
+}
+</style>

+ 0 - 1
src/views/student_manager/index.vue

@@ -88,7 +88,6 @@
 <script>
 import { PageQueryOrgStudentUserList } from '@/api/list';
 import { AuditOrgStudentUser } from '@/api/student';
-import { GetOrgList_User } from '@/api/org';
 
 export default {
   data() {

+ 25 - 58
src/views/teacher_manager/index.vue

@@ -41,26 +41,26 @@
           </template>
         </el-table-column>
         <el-table-column fixed="right" width="180">
-          <template slot-scope="scope">
+          <template slot-scope="{ row }">
             <el-row type="flex" justify="space-between">
               <el-col>
                 <el-link
                   :underline="false"
-                  :type="scope.row.is_audited === 'true' ? 'danger' : 'success'"
-                  @click="auditOrgTeacher(scope.row)"
+                  :type="row.is_audited === 'true' ? 'danger' : 'success'"
+                  @click="auditOrgTeacher(row)"
                 >
-                  审核{{ scope.row.is_audited === 'true' ? '拒绝' : '同意' }}
+                  审核{{ row.is_audited === 'true' ? '拒绝' : '同意' }}
                 </el-link>
               </el-col>
               <el-col>
-                <el-popover trigger="click" width="200" @show="getPopedomList(scope.row.id)">
+                <el-popover trigger="click" width="200" @show="getPopedomList(row.id)">
                   <div class="popedom">
                     <span class="popedom-manager">权限管理</span>
                     <div v-for="item in popedom_list" :key="item.popedom_code" class="popedom-list">
                       <span>{{ item.popedom_name }}</span>
                       <el-switch v-model="item.is_selected" active-color="#34CC83" inactive-color="#C4C4C4" />
                     </div>
-                    <el-button type="primary" @click="setPopedom(scope.row.id)">保存</el-button>
+                    <el-button type="primary" @click="setPopedom(row.id)">保存</el-button>
                   </div>
                   <el-link slot="reference" :underline="false">权限</el-link>
                 </el-popover>
@@ -115,19 +115,15 @@ export default {
       this.queryOrgTeacherUserList();
     },
     queryOrgTeacherUserList() {
-      let data = {
+      pageQueryOrgTeacherUserList({
         user_name: this.user_name,
         user_real_name: this.user_real_name,
         page_capacity: this.page_capacity,
         cur_page: this.cur_page
-      };
-      pageQueryOrgTeacherUserList(data).then(response => {
-        if (response.status) {
-          let { cur_page, org_teacher_user_list, total_count } = response;
-          this.cur_page = cur_page;
-          this.org_teacher_user_list = org_teacher_user_list;
-          this.total_count = total_count;
-        }
+      }).then(({ cur_page, org_teacher_user_list, total_count }) => {
+        this.cur_page = cur_page;
+        this.org_teacher_user_list = org_teacher_user_list;
+        this.total_count = total_count;
       });
     },
     // 审核教师
@@ -135,60 +131,31 @@ export default {
       auditOrgTeacherUser({
         id_list: [row.id],
         is_audited: row.is_audited !== 'true'
-      }).then(response => {
-        if (response.status) {
-          this.$router.go(0);
-        } else {
-          this.$message({
-            type: 'error',
-            message: response.error
-          });
-        }
+      }).then(() => {
+        this.$router.go(0);
       });
     },
     // 得到权限列表
     getPopedomList(user_org_id) {
-      getPopedomList_OrgTeacherUse({ user_org_id }).then(response => {
-        if (response.status) {
-          response.popedom_list.forEach((el, i, arr) => {
-            el.is_selected = el.is_selected === 'true';
-            console.log(arr);
-            arr[i] = el;
-          });
-          this.popedom_list = response.popedom_list;
-        } else {
-          this.$message({
-            type: 'error',
-            message: response.error
-          });
-        }
+      getPopedomList_OrgTeacherUse({ user_org_id }).then(({ popedom_list }) => {
+        popedom_list.forEach((el, i, arr) => {
+          el.is_selected = el.is_selected === 'true';
+          arr[i] = el;
+        });
+        this.popedom_list = popedom_list;
       });
     },
     // 设置教师权限
     setPopedom(user_org_id) {
-      let popedom_code_list = this.popedom_list.filter(el => {
-        return el.is_selected;
-      });
-      popedom_code_list.forEach((el, i, arr) => {
-        arr[i] = el.popedom_code;
+      let popedom_code_list = [];
+      this.popedom_list.forEach(({ popedom_code, is_selected }) => {
+        if (is_selected) popedom_code_list.push(popedom_code);
       });
-
-      let data = {
+      setPopedom_OrgTeacherUser({
         user_org_id,
         popedom_code_list
-      };
-      setPopedom_OrgTeacherUser(data).then(response => {
-        if (response.status) {
-          this.$message({
-            type: 'success',
-            message: '设置教师权限成功'
-          });
-        } else {
-          this.$message({
-            type: 'error',
-            message: response.error
-          });
-        }
+      }).then(() => {
+        this.$message.success('设置教师权限成功');
       });
     }
   }

+ 11 - 13
src/views/upload/uploadDetail.vue

@@ -59,10 +59,10 @@ export default {
   },
   data() {
     const validateNull = (rule, value, callback) => {
-      if (!validNull(value)) {
-        callback(new Error('请输入相应内容'));
-      } else {
+      if (validNull(value)) {
         callback();
+      } else {
+        callback(new Error('请输入相应内容'));
       }
     };
     return {
@@ -105,7 +105,7 @@ export default {
   },
   created() {
     this.searchForm.resource_key = this.resourceKey;
-    if (this.resourceKey !== '') {
+    if (this.resourceKey.length > 0) {
       this.getDetail();
     } else {
       this.searchForm.name = '';
@@ -130,7 +130,7 @@ export default {
             }
           ];
           getContent(MethodName, { file_list })
-            .then(res => {
+            .then(() => {
               this.$message.success('保存成功');
               this.$emit('closeDialog');
             })
@@ -146,14 +146,13 @@ export default {
       }
       fileUpload('Open', file).then(response => {
         if (response.status === 1) {
-          response.file_info_list.forEach((item, index) => {
+          response.file_info_list.forEach(item => {
             if (item.file_url) {
-              let obj = {
+              this.fileList.push({
                 name: item.file_name,
                 url: item.file_url,
                 file_id: item.file_id
-              };
-              this.fileList.push(obj);
+              });
             }
           });
           this.$message.success('上传成功');
@@ -183,15 +182,14 @@ export default {
       };
       getContent(MethodName, data).then(res => {
         this.fileList = [];
-        res.file_list.forEach((item, index) => {
+        res.file_list.forEach(item => {
           this.searchForm = item;
           if (item.file_url) {
-            let obj = {
+            this.fileList.push({
               name: '',
               url: item.file_url,
               file_id: item.file_id
-            };
-            this.fileList.push(obj);
+            });
           }
         });
       });

+ 2 - 2
src/views/vocabulary/index.vue

@@ -106,13 +106,13 @@ export default {
     // 查看词汇详情
     handleView(row) {
       this.$router.push({
-        path: '/vocabDetail?wordKey=' + row.word_key
+        path: `/vocabDetail?wordKey=${row.word_key}`
       });
     },
     // 编辑词汇
     handleEdit(row) {
       this.$router.push({
-        path: '/vocabDetail?wordKey=' + row.word_key
+        path: `/vocabDetail?wordKey=${row.word_key}`
       });
     }
   }

+ 1 - 1
src/views/vocabulary/vocabDetail.vue

@@ -106,7 +106,7 @@ export default {
         word_key: this.searchForm.word_key,
         word_list: this.word_list
       };
-      getContent(MethodName, data).then(res => {
+      getContent(MethodName, data).then(() => {
         this.$message.success('保存成功');
         this.isSaving = false;
       });

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor