Explorar o código

添加 文件静态资源编辑功能

dusenyao %!s(int64=4) %!d(string=hai) anos
pai
achega
b6b9eb409b

BIN=BIN
dist.zip


+ 2 - 1
src/api/app.js

@@ -2,7 +2,7 @@ import { request } from '@/utils/request';
 import { getUserInfo } from '@/utils/auth';
 
 /**
- * @description 上传文件
+ * 上传文件
  * @param {String} SecurityLevel 保密级别
  */
 export function fileUpload(SecurityLevel, file) {
@@ -19,6 +19,7 @@ export function fileUpload(SecurityLevel, file) {
   return request({
     method: 'post',
     url: '/GCLSFileServer/WebFileUpload',
+    timeout: 0,
     params,
     headers: {
       'Content-Type': 'multipart/form-data'

+ 17 - 14
src/api/list.js

@@ -1,43 +1,46 @@
 import { request, getRequestParameter } from '@/utils/request';
 
 /**
- * @description 分页查询机构教师用户列表
- * @param {Object} Parameter
+ * 分页查询机构教师用户列表
+ * @param {Object} data
  */
-export function pageQueryOrgTeacherUserList(Parameter) {
-  let params = getRequestParameter('user_manager-PageQueryOrgTeacherUserList', Parameter);
+export function pageQueryOrgTeacherUserList(data) {
+  let params = getRequestParameter('user_manager-PageQueryOrgTeacherUserList');
 
   return request({
     method: 'post',
     url: process.env.VUE_APP_FileServer,
-    params
+    params,
+    data
   });
 }
 
 /**
- * @description 分页查询用户列表
- * @param {Object} Parameter
+ * 分页查询用户列表
+ * @param {Object} data
  */
-export function pageQueryUserList(Parameter) {
-  let params = getRequestParameter('user_manager-PageQueryUserList', Parameter);
+export function pageQueryUserList(data) {
+  let params = getRequestParameter('user_manager-PageQueryUserList');
 
   return request({
     method: 'post',
     url: process.env.VUE_APP_FileServer,
-    params
+    params,
+    data
   });
 }
 
 /**
- * @description 分页查询机构列表
+ * 分页查询机构列表
  * @param {Object} Parameter
  */
-export function pageQueryOrgList(Parameter) {
-  let params = getRequestParameter('org_manager-PageQueryOrgList', Parameter);
+export function pageQueryOrgList(data) {
+  let params = getRequestParameter('org_manager-PageQueryOrgList');
 
   return request({
     method: 'post',
     url: process.env.VUE_APP_FileServer,
-    params
+    params,
+    data
   });
 }

+ 6 - 5
src/api/org.js

@@ -1,15 +1,16 @@
 import { request, getRequestParameter } from '@/utils/request';
 
 /**
- * @description 添加机构
- * @param {Object} Parameter
+ * 添加机构
+ * @param {Object} data
  */
-export function addOrg(Parameter) {
-  let params = getRequestParameter('org_manager-AddOrg', Parameter);
+export function addOrg(data) {
+  let params = getRequestParameter('org_manager-AddOrg');
 
   return request({
     method: 'post',
     url: process.env.VUE_APP_FileServer,
-    params
+    params,
+    data
   });
 }

+ 18 - 37
src/api/teacher.js

@@ -1,64 +1,45 @@
 import { request, getRequestParameter } from '@/utils/request';
-import qs from 'qs';
 
 /**
- * @description 审核机构教师用户
- * @param {Object} Parameter
+ * 审核机构教师用户
+ * @param {Object} data
  */
-export function auditOrgTeacherUser(Parameter) {
-  let data = getRequestParameter('user_manager-AuditOrgTeacherUser', JSON.stringify(Parameter));
+export function auditOrgTeacherUser(data) {
+  let params = getRequestParameter('user_manager-AuditOrgTeacherUser');
 
-  // 解决传数组的问题
   return request({
     method: 'post',
     url: process.env.VUE_APP_FileServer,
-    data,
-    transformRequest: [
-      function (data) {
-        return qs.stringify(data);
-      }
-    ],
-    headers: {
-      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
-    }
+    params,
+    data
   });
 }
 
 /**
- * @description 得到机构教师用户的权限列
- * @param {Object} Parameter user_org_id 机构教师ID
+ * 得到机构教师用户的权限列
+ * @param {Object} data user_org_id 机构教师ID
  */
-export function getPopedomList_OrgTeacherUse(Parameter) {
-  let params = getRequestParameter('popedom_manager-GetPopedomList_OrgTeacherUser', Parameter);
+export function getPopedomList_OrgTeacherUse(data) {
+  let params = getRequestParameter('popedom_manager-GetPopedomList_OrgTeacherUser');
   return request({
     method: 'post',
     url: process.env.VUE_APP_FileServer,
-    params
+    params,
+    data
   });
 }
 
 /**
- * @description 为机构教师用户设置权限
- * @param {Object} Parameter
+ * 为机构教师用户设置权限
+ * @param {Object} data
  */
-export function setPopedom_OrgTeacherUser(Parameter) {
-  let data = getRequestParameter(
-    'popedom_manager-SetPopedom_OrgTeacherUser',
-    JSON.stringify(Parameter)
-  );
+export function setPopedom_OrgTeacherUser(data) {
+  let params = getRequestParameter('popedom_manager-SetPopedom_OrgTeacherUser');
 
-  // 解决传数组的问题
   return request({
     method: 'post',
     url: process.env.VUE_APP_FileServer,
-    data,
-    transformRequest: [
-      function (data) {
-        return qs.stringify(data);
-      }
-    ],
-    headers: {
-      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
-    }
+    params,
+    data
   });
 }

+ 4 - 7
src/api/user.js

@@ -1,16 +1,13 @@
 import { request } from '@/utils/request';
 
 /**
- * @description 登录
+ * 登录
  * @param {Object} Parameter 登录对象 { user_type 用户类型 user_name 用户登录名 password 用户密码 }
  */
-export function login(Parameter) {
+export function login(data) {
   return request({
     method: 'post',
-    url: process.env.VUE_APP_FileServer,
-    params: {
-      MethodName: 'login_control-Login',
-      Parameter: Parameter
-    }
+    url: process.env.VUE_APP_FileServer + '?MethodName=login_control-Login',
+    data
   });
 }

+ 1 - 1
src/layouts/components/LayoutHeader.vue

@@ -12,7 +12,7 @@
           </template>
         </el-col>
         <el-col class="header-top-user" :span="4">
-          <el-avatar> user </el-avatar>
+          <el-avatar :src="$store.state.user.image_url"> user </el-avatar>
           <el-dropdown class="header-top-user-name" placement="bottom">
             <span>{{ realName }}</span>
             <el-dropdown-menu slot="dropdown">

+ 3 - 2
src/router/index.js

@@ -22,7 +22,7 @@ function jumpURL() {
   if (isHasPopedom(1000003)) {
     return '/teacher_manager/index';
   }
-  return '/vocabulary/index';
+  return '/login';
 }
 
 // 路由独享的守卫的权限控制
@@ -30,11 +30,12 @@ function beforeRouterPopedom(code, next) {
   if (isHasPopedom(code)) {
     next();
   } else {
-    next(false);
     Message({
       type: 'warning',
       message: '无权限'
     });
+    store.dispatch('user/signOut');
+    next('/login');
     NProgress.done();
   }
 }

+ 12 - 3
src/store/modules/user.js

@@ -4,8 +4,15 @@ import { resetRouter } from '@/router';
 import { login } from '@/api/user';
 
 const getDefaultSate = () => {
-  const { session_id, user_code, user_real_name, user_type, user_name, popedom_code_list } =
-    getUserInfo();
+  const {
+    session_id,
+    user_code,
+    user_real_name,
+    user_type,
+    user_name,
+    popedom_code_list,
+    image_url
+  } = getUserInfo();
 
   return {
     session_id: session_id,
@@ -13,6 +20,7 @@ const getDefaultSate = () => {
     user_real_name: user_real_name,
     user_type: user_type,
     user_name: user_name,
+    image_url: image_url,
     popedom_code_list: popedom_code_list === undefined ? [] : JSON.parse(popedom_code_list)
   };
 };
@@ -26,7 +34,7 @@ const mutations = {
 
   [user.SET_USER_INFO]: (
     state,
-    { user_code, user_real_name, user_type, session_id, popedom_code_list, user_name }
+    { user_code, user_real_name, user_type, session_id, popedom_code_list, user_name, image_url }
   ) => {
     state.user_code = user_code;
     state.user_real_name = user_real_name;
@@ -34,6 +42,7 @@ const mutations = {
     state.session_id = session_id;
     state.user_name = user_name;
     state.popedom_code_list = popedom_code_list;
+    state.image_url = image_url;
   }
 };
 

+ 2 - 1
src/utils/auth.js

@@ -7,7 +7,8 @@ const userInfoList = [
   'user_type',
   'user_real_name',
   'user_name',
-  'popedom_code_list'
+  'popedom_code_list',
+  'image_url'
 ];
 
 export function getUserInfo() {

+ 12 - 6
src/utils/request.js

@@ -16,7 +16,15 @@ const service = axios.create({
 });
 
 // 请求拦截器
-service.interceptors.request.use({});
+service.interceptors.request.use(
+  config => {
+    config.headers['Content-Type'] = 'application/json';
+    return config;
+  },
+  error => {
+    return Promise.reject(error);
+  }
+);
 
 // 响应拦截器
 service.interceptors.response.use(
@@ -69,21 +77,19 @@ service.interceptors.response.use(
 );
 
 /**
- * @description 得到必需的请求参数
+ * 得到必需的请求参数
  * @param {String} MethodName 请求方法名
- * @param {Object} Parameter 请求参数
  *
  * @returns {Object} 返回必需的请求参数
  * */
-export function getRequestParameter(MethodName, Parameter = {}) {
+export function getRequestParameter(MethodName) {
   const { session_id, user_code, user_type } = getUserInfo();
 
   return {
     MethodName,
     UserCode: user_code,
     UserType: user_type,
-    SessionID: session_id,
-    Parameter
+    SessionID: session_id
   };
 }
 

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

@@ -75,8 +75,7 @@
       @next-click="changePage"
       @current-change="changePage"
       @size-change="changePageSize"
-    >
-    </el-pagination>
+    />
   </div>
 </template>
 

+ 1 - 2
src/views/org_manager/index.vue

@@ -49,8 +49,7 @@
       @next-click="changePage"
       @current-change="changePage"
       @size-change="changePageSize"
-    >
-    </el-pagination>
+    />
   </div>
 </template>
 

+ 1 - 2
src/views/teacher_manager/index.vue

@@ -89,8 +89,7 @@
       @next-click="changePage"
       @current-change="changePage"
       @size-change="changePageSize"
-    >
-    </el-pagination>
+    />
   </div>
 </template>
 

+ 42 - 62
src/views/upload/uploadDetail.vue

@@ -1,4 +1,4 @@
-<!--  -->
+<!-- 资源详情 -->
 <template>
   <div class="book-vocab">
     <div class="book-vocab-content">
@@ -23,7 +23,7 @@
         <el-form-item label="上传资源" label-width="90px" prop="fileList">
           <el-upload
             action="url"
-            :limit="1"
+            :limit="uploadType === 'edit' ? 0 : 1"
             :on-exceed="handleExceed"
             :on-preview="handlePreview"
             :on-remove="handleRemove"
@@ -38,13 +38,18 @@
         </el-form-item>
       </el-form>
       <el-button
-        v-if="resource_key === ''"
+        v-if="resourceKey === ''"
         class="submitBtn"
         size="mini"
         type="primary"
         @click="saveWord"
-        >保存资源</el-button
       >
+        保存资源
+      </el-button>
+    </div>
+
+    <div v-if="uploadType === 'edit'" class="book-vocab-footer">
+      <el-button type="primary" size="mini" @click="saveWord">修改</el-button>
     </div>
   </div>
 </template>
@@ -55,11 +60,14 @@ import { getContent } from '@/api/ajax';
 import { fileUpload } from '@/api/app';
 
 export default {
-  components: {},
   props: {
-    resource_key: {
+    resourceKey: {
       default: '',
       type: String
+    },
+    uploadType: {
+      default: 'add',
+      type: String
     }
   },
   data() {
@@ -91,31 +99,28 @@ export default {
     };
   },
   watch: {
-    resource_key: {
-      handler: function (val, oldVal) {
+    resourceKey: {
+      handler: function (val) {
         this.$refs.searchForm.resetFields();
         if (val) {
-          this.searchForm.resource_key = this.resource_key;
-          if (this.resource_key !== '') {
+          this.searchForm.resource_key = val;
+          if (val !== '') {
             this.getDetail();
           }
         } else {
-          this.resource_key = '';
           this.searchForm.name = '';
           this.searchForm.resource_key = '';
           this.searchForm.memo = '';
           this.fileList = [];
         }
-      },
-      deep: true
+      }
     }
   },
   created() {
-    this.searchForm.resource_key = this.resource_key;
-    if (this.resource_key !== '') {
+    this.searchForm.resource_key = this.resourceKey;
+    if (this.resourceKey !== '') {
       this.getDetail();
     } else {
-      this.resource_key = '';
       this.searchForm.name = '';
       this.searchForm.resource_key = '';
       this.searchForm.memo = '';
@@ -147,12 +152,6 @@ export default {
           getContent(MethodName, data)
             .then(res => {
               this.$message.success('保存成功');
-              this.isSaving = false;
-              this.resource_key = '';
-              this.searchForm.name = '';
-              this.searchForm.resource_key = '';
-              this.searchForm.memo = '';
-              this.fileList = [];
               this.$emit('closeDialog');
             })
             .catch(() => {
@@ -162,6 +161,9 @@ export default {
       });
     },
     upload(file) {
+      if (this.uploadType === 'edit') {
+        this.fileList = [];
+      }
       fileUpload('Open', file).then(response => {
         if (response.status === 1) {
           response.file_info_list.forEach((item, index) => {
@@ -183,6 +185,13 @@ export default {
     handleRemove(file, fileList) {
       this.fileList = fileList;
     },
+    handleExceed(files, fileList) {
+      this.$message.warning(
+        `当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
+          files.length + fileList.length
+        } 个文件`
+      );
+    },
     handlePreview(file) {
       console.log(file);
     },
@@ -190,7 +199,7 @@ export default {
     getDetail() {
       let MethodName = 'file_resource_manager-GetFileResource';
       let data_list = [];
-      data_list.push(this.resource_key);
+      data_list.push(this.resourceKey);
       let data = {
         resource_key_list: data_list
       };
@@ -209,15 +218,8 @@ export default {
           });
         })
         .catch(() => {});
-    },
-    handleExceed(files, fileList) {
-      this.$message.warning(
-        `当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
-          files.length + fileList.length
-        } 个文件`
-      );
     }
-  } // 如果页面有keep-alive缓存功能,这个函数会触发
+  }
 };
 </script>
 
@@ -227,40 +229,18 @@ export default {
   overflow: hidden;
 
   &-content {
+    width: 100%;
     margin: 0 auto;
-    padding: 30px 0;
-
-    .changeLang {
-      margin-right: 10px;
-    }
-
-    &-create {
-      width: 100%;
-      display: flex;
-      justify-content: flex-start;
-      align-items: center;
-      margin-bottom: 20px;
-    }
-
-    &-search {
-      display: flex;
-      justify-content: space-between;
-      align-items: flex-start;
-    }
-
-    &-table {
-      width: 100%;
-      height: calc(100vh - 120px);
-      overflow-y: scroll;
-    }
+    padding: 20px 0;
+  }
 
-    &-pag {
-      padding-top: 30px;
-    }
+  .submitBtn {
+    margin-left: 90px;
   }
-}
 
-.submitBtn {
-  margin-left: 90px;
+  &-footer {
+    display: flex;
+    justify-content: flex-end;
+  }
 }
 </style>

+ 21 - 7
src/views/upload/uploadList.vue

@@ -24,9 +24,11 @@
           <el-table-column label="名称" prop="name"></el-table-column>
           <el-table-column label="备注" prop="memo"></el-table-column>
           <el-table-column fixed="right" label="操作" width="100">
-            <template slot-scope="scope">
-              <el-button size="small" type="text" @click="handleView(scope.row)">查看</el-button>
-              <!-- <el-button @click="handleEdit(scope.row)" size="small" type="text">编辑</el-button> -->
+            <template slot-scope="{ row }">
+              <el-button size="small" type="text" @click="handleView(row)">查看</el-button>
+              <el-button size="small" type="text" @click="handleEdit(row.resource_key)">
+                编辑
+              </el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -41,11 +43,15 @@
           layout="prev, pager, next, total, sizes, jumper"
           @current-change="handleCurrentChange"
           @size-change="handleSizeChange"
-        ></el-pagination>
+        />
       </div>
     </div>
     <el-dialog :before-close="handleClose" :visible.sync="dialogFlag">
-      <uploadDetail :resource_key="resource_key" @closeDialog="closeDialog"></uploadDetail>
+      <upload-detail
+        :resource-key="resource_key"
+        :upload-type="uploadType"
+        @closeDialog="closeDialog"
+      ></upload-detail>
     </el-dialog>
   </div>
 </template>
@@ -70,7 +76,8 @@ export default {
       },
       book_List: [],
       resource_key: '',
-      dialogFlag: false
+      dialogFlag: false,
+      uploadType: ''
     };
   },
   // 生命周期 - 挂载完成(可以访问DOM元素)
@@ -107,11 +114,18 @@ export default {
     // 新增资源
     createVocab() {
       this.resource_key = '';
+      this.uploadType = 'add';
       this.dialogFlag = true;
     },
     // 查看资源详情
     handleView(row) {
       this.resource_key = row.resource_key;
+      this.uploadType = 'view';
+      this.dialogFlag = true;
+    },
+    handleEdit(key) {
+      this.resource_key = key;
+      this.uploadType = 'edit';
       this.dialogFlag = true;
     },
     // 关闭弹窗
@@ -125,7 +139,7 @@ export default {
       this.cur_page = 1;
       this.getWordList();
     }
-  } // 如果页面有keep-alive缓存功能,这个函数会触发
+  }
 };
 </script>
 

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

@@ -37,7 +37,7 @@
           layout="prev, pager, next, total, sizes, jumper"
           @current-change="handleCurrentChange"
           @size-change="handleSizeChange"
-        ></el-pagination>
+        />
       </div>
     </div>
   </div>