Browse Source

分类管理联调

zhangfu 3 years ago
parent
commit
30aca37b2d

+ 16 - 0
src/assets/styles/element.less

@@ -320,4 +320,20 @@ input[maxlength='32']:not([disabled]) {
   border-top-right-radius: 4px;
   border-bottom-right-radius: 4px;
   margin-right: 38px;
+}
+.el-radio__input.is-checked .el-radio__inner{
+  background: #F4453E;
+  border-color: #F4453E;
+}
+.el-radio__inner:hover{
+  border-color: #F4453E;
+}
+.el-input__inner:focus{
+  border-color: #F4453E;
+}
+.el-radio__input.is-checked+.el-radio__label{
+  color: #F4453E;
+}
+.el-loading-spinner .path{
+  stroke:#F4453E;
 }

+ 97 - 17
src/pages/classification/edit.vue

@@ -6,8 +6,8 @@
     :before-close="handleClose"
     append-to-body
   >
-    <el-form label-width="100px" :model="form">
-      <el-form-item label="分类名称:" required>
+    <el-form label-width="100px" :model="form" ref="form" :rules="rules">
+      <el-form-item label="分类名称:" prop="name">
         <el-input placeholder="请输入" v-model="form.name"></el-input>
       </el-form-item>
       <el-form-item label required>
@@ -19,15 +19,30 @@
           <el-radio :label="0">禁用</el-radio>
         </el-radio-group>
       </el-form-item>
-      <el-form-item label="访问权限:" required>
-        <div
-          class="form_item_content"
-          v-for="(item, index) in openList"
-          :key="index"
-        >
-          <el-input placeholder="请输入" v-onlyInt v-model="item.value"></el-input>
+      <el-form-item
+        style="margin-bottom: 20px"
+        label
+        v-for="(item, index) in form.role"
+        :key="index"
+        :prop="`role.${index}.value`"
+        :rules="rules.value"
+      >
+        <template v-if="index == 0" slot="label">
+          <span>访问权限:</span>
+        </template>
+        <div class="form_item_content">
+          <el-input
+            placeholder="请输入手机号"
+            v-onlyInt
+            maxlength="11"
+            v-model="item.value"
+          ></el-input>
           <i class="el-icon-plus" @click="addjurisdiction"></i>
-          <i class="el-icon-minus" v-if="openList.length!=1" @click="deletjurisdiction(index)"></i>
+          <i
+            class="el-icon-minus"
+            v-if="form.role.length != 1"
+            @click="deletjurisdiction(index)"
+          ></i>
         </div>
       </el-form-item>
     </el-form>
@@ -37,7 +52,7 @@
         size="small"
         style="margin-left: 60px"
         type="primary"
-        @click="dialogVisible = false"
+        @click="submit('form')"
         >确 定</el-button
       >
     </span>
@@ -47,19 +62,36 @@
 import * as api from '@/api/api'
 export default {
   data() {
+    const validateUser = (rule, value, callback) => {
+      if (!/^1[3456789]\d{9}$/.test(value)) {
+        callback(new Error('请输入正确的手机号'))
+      } else {
+        callback()
+      }
+    }
     return {
       dialogVisible: false,
       classString: {},
-      openList: [{ value: '' }],
-      form:{
-        name:'',
-        status:''
+      form: {
+        name: '',
+        status: 0,
+        role: [{ value: '' }]
+      },
+      rules: {
+        value: [{ required: true, trigger: 'blur', validator: validateUser }],
+        name: [{ required: true, trigger: 'blur', message: '请输入分类名称' }]
       }
     }
   },
   methods: {
     handleClose() {
       this.dialogVisible = false
+      this.$parent.search()
+      this.form = {
+        name: '',
+        status: 0,
+        role: [{ value: '' }]
+      }
     },
     openClose(val) {
       if (val) {
@@ -81,6 +113,11 @@ export default {
       api.POST('/doc/type/detail', code).then(data => {
         if (data.code == 0) {
           this.form = data.data
+          let role = []
+          this.form.role.forEach(item => {
+            role.push({ value: item })
+          })
+          this.form.role = role
         }
       })
     },
@@ -88,13 +125,56 @@ export default {
      * @method 增加访问权限
      * **/
     addjurisdiction() {
-      this.openList.push({ value: '' })
+      this.form.role.push({ value: '' })
     },
     /**
      * @method 删除访问权限
      * **/
     deletjurisdiction(val) {
-      this.openList.splice(val, 1)
+      this.form.role.splice(val, 1)
+    },
+    /**
+     * @method 确定提交
+     **/
+    submit(formName) {
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          let role = []
+          this.form.role.forEach(item => {
+            role.push(item.value)
+          })
+          let code = {
+            linkUrl: '',
+            name: this.form.name,
+            role: role,
+            status: this.form.status
+          }
+          this.classString.show ? this.addclass(code) : this.editclass(code)
+        }
+      })
+    },
+    /**
+     * @method 新增
+     * **/
+    addclass(val) {
+      api.POST('/doc/type/add', val).then(data => {
+        if (data.code == 0) {
+          this.handleClose()
+          this.$message.success(data.message)
+        }
+      })
+    },
+    /**
+     * @method 编辑
+     * **/
+    editclass(val) {
+      val.typeId = this.form.typeId
+      api.POST('/doc/type/update', val).then(data => {
+        if (data.code == 0) {
+          this.handleClose()
+          this.$message.success(data.message)
+        }
+      })
     }
   }
 }

+ 14 - 5
src/pages/classification/index.vue

@@ -16,10 +16,16 @@
             v-model.trim="form.name"
             size="small"
             placeholder="请输入"
+            clearable
           ></el-input>
         </el-form-item>
         <el-form-item class="header_top_form" label="状态:">
-          <el-select v-model="form.status" size="small" placeholder="请选择">
+          <el-select
+            v-model="form.status"
+            clearable
+            size="small"
+            placeholder="请选择"
+          >
             <el-option
               v-for="item in options"
               :key="item.value"
@@ -121,7 +127,10 @@ export default {
         total: 0
       },
       tableData: [],
-      options: [],
+      options: [
+        { label: '启用', value: 1 },
+        { label: '禁用', value: 0 }
+      ],
       listData: [
         {
           name: '分类名称',
@@ -185,16 +194,16 @@ export default {
         status: this.form.status
       }
       api
-        .POST('/doc/type/list', code)
+        .GET('/doc/type/list', code)
         .then(res => {
           if (res.code == 0) {
             this.tableData = res.data.list
             this.tableData.forEach(item => {
               item.status == 1 ? (item.status = true) : (item.status = false)
             })
-            this.form.pageNum = res.data.pageNum
+            this.form.pageNum = res.data.currPage
             this.form.pageSize = res.data.pageSize
-            this.form.total = res.data.total
+            this.form.total = res.data.totalCount
             this.fullscreenLoading = false
           }
         })

+ 6 - 6
src/pages/fileManagement/detail.vue

@@ -87,12 +87,12 @@ export default {
     /**
      * @method 下载
      * **/
-    // download(val) {
-    //   let url = `/api/file/exportExcel/{type}`
-    //   let params = this.form
-    //   let fileName = '产品信息库'
-    //   this.$pubFun.exportOperation(url, params, 'get', fileName)
-    // }
+    download(val) {
+      let url = `/api/file/exportExcel/{type}`
+      let params = this.form
+      let fileName = '产品信息库'
+      this.$pubFun.exportOperation(url, params, 'get', fileName)
+    }
   }
 }
 </script>

+ 158 - 35
src/pages/fileManagement/edit.vue

@@ -5,24 +5,36 @@
     width="33%"
     :before-close="handleClose"
   >
-    <el-form :model="form" label-width="100px">
-      <el-form-item label="分类名称:" required>
-        <el-input placeholder="请输入" v-model.trim="form.name"></el-input>
+    <el-form :model="form" ref="form" :rules="rules" label-width="100px">
+      <el-form-item label="分类名称:" prop="typeId">
+        <el-select
+          placeholder="请选择"
+          v-model="form.typeId"
+          @visible-change="visbleChange"
+          @change="classifyChange"
+        >
+          <el-option
+            v-for="item in classifyList"
+            :key="item.value"
+            :label="item.name"
+            :value="item.typeId"
+          >
+          </el-option>
+        </el-select>
       </el-form-item>
-      <el-form-item label="文件名称:" required>
-        <el-input placeholder="请输入"></el-input>
+      <el-form-item label="文件名称:" prop="name">
+        <el-input placeholder="请输入" v-model.trim="form.name"></el-input>
       </el-form-item>
-      <el-form-item label="上传文件:" required>
+      <el-form-item label="上传文件:" prop="docUrl">
         <div>
           <el-upload
             class="upload-demo"
             action
             :http-request="api_import"
-            :on-preview="handlePreview"
+            :on-success="handleSuccess"
             :on-remove="handleRemove"
-            :before-remove="beforeRemove"
             multiple
-            :limit="3"
+            :limit="1"
             :on-exceed="handleExceed"
             :file-list="fileList"
             :before-upload="beforeAvatarUpload"
@@ -43,12 +55,12 @@
       </el-form-item>
     </el-form>
     <span slot="footer" class="dialog-footer">
-      <el-button size="small" @click="dialogVisible = false">取 消</el-button>
+      <el-button size="small" @click="handleClose">取 消</el-button>
       <el-button
         size="small"
         style="margin-left: 60px"
         type="primary"
-        @click="addList"
+        @click="addList('form')"
         >确 定</el-button
       >
     </span>
@@ -65,59 +77,170 @@ export default {
         id: '',
         linkUrl: '',
         name: '',
-        status: '',
+        status: 0,
         typeId: ''
       },
       refList: {},
-      fileList:[]
+      fileList: [],
+      classifyList: [],
+      rules:{
+        typeId:[{required:true,trigger:'change',message:'请选择分类名称'}],
+        name:[{required:true,trigger:'blur',message:'请输入文件名称'}],
+        docUrl:[{required:true,trigger:'click',message:'请上传文件'}]
+      }
     }
   },
   methods: {
+    /**
+     * @method 关闭弹框
+     * **/
     handleClose() {
       this.dialogVisible = false
+      this.$parent.search()
+      this.form = {
+        docUrl: '',
+        id: '',
+        linkUrl: '',
+        name: '',
+        status: 0,
+        typeId: '',
+        fileSize: ''
+      }
+      this.fileList = []
+      this.$refs['form'].resetFields()
     },
+    /**
+     * @method 打开文件弹框
+     * **/
     openClose(val) {
       if (val) {
         this.refList = val
+        if (val.id) {
+          this.details()
+        }
       }
       this.dialogVisible = true
     },
     /**
+     * @method 详情
+     * **/
+    details() {
+      api.GET('/doc/getDetail', { id: this.refList.id }).then(data => {
+        if (data.code == 0) {
+          this.form = data.data
+        }
+      })
+    },
+    /**
+     * @method 分类下拉列表
+     * **/
+    visbleChange(val) {
+      if (val) {
+        api.POST('/doc/type/dropList').then(data => {
+          if (data.code == 0) {
+            this.classifyList = data.data
+          }
+        })
+      }
+    },
+    /**
+     * @method 分类选择
+     * **/
+    classifyChange(val) {
+      this.classifyList.find(item => {
+        if (item.typeId == val) {
+          this.form.linkUrl = item.linkUrl
+        }
+      })
+    },
+    /**
      * @method 上传
-     * **/ 
-    api_import(file){
-       const files = {
+     * **/
+    api_import(file) {
+      const files = {
         file: file.file
       }
-      api.IMPORT('/api/file/local/upload',files).then(data=>{
-        console.log(data)
+      api.IMPORT('/api/file/local/upload', files).then(data => {
+        if (data.code == 0) {
+          this.form.docUrl = data.data.url
+          this.form.fileSize = data.data.size
+          this.$message.success('上传成功')
+        }
       })
     },
     /**
-     * @method 
-     * **/ 
-    handleExceed(){},
-    handlePreview(){},
-    handleRemove(){},
-    beforeRemove(){},
+     * @method 文件上传限制
+     * **/
+    handleExceed(files, fileList) {
+      if (fileList.length == 1) {
+        this.$message.warning('只能上传单个文件')
+      }
+    },
+    /**
+     * @method 上传成功
+     * **/
+    handleSuccess() {},
+    /**
+     * @method 文件删除
+     * **/
+    handleRemove(files, fileList) {
+      this.fileList = fileList
+      this.form.docUrl = ''
+      this.form.fileSize = ''
+    },
     /**
      * @method 上传限制
-     * **/ 
-     beforeAvatarUpload(file) {
-        const ispaf = file.type === 'application/pdf';
+     * **/
+    beforeAvatarUpload(file) {
+      const ispaf = file.type === 'application/pdf'
 
-        if (!ispaf) {
-          this.$message.error('上传文件只能是 PDF 格式!');
-        }
-        return ispaf
-      },
+      if (!ispaf) {
+        this.$message.error('上传文件只能是 PDF 格式!')
+      }
+      return ispaf
+    },
     /**
      * @method 提交确定
-     * **/ 
-    addList(){}
+     * **/
+    addList(formName) {
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          let code = {
+            docUrl: this.form.docUrl,
+            linkUrl: this.form.linkUrl,
+            name: this.form.name,
+            status: this.form.status,
+            typeId: this.form.typeId,
+            fileSize: this.form.fileSize
+          }
+          this.refList.show ? this.addfile(code) : this.editfile(code)
+        }
+      })
+    },
+    /**
+     * @method 新增文件
+     * **/
+    addfile(val) {
+      api.POST('/doc/addDoc', val).then(data => {
+        if (data.code == 0) {
+          this.$message.success(data.message)
+          this.handleClose()
+        }
+      })
+    },
+    /**
+     * @method 编辑文件
+     * **/
+    editfile() {
+      api.PUT('/doc/updateDoc').then(data => {
+        if (data.code == 0) {
+          this.$message.success(data.message)
+          this.handleClose()
+        }
+      })
+    }
   }
 }
 </script>
 <style lang="less" scoped>
-
 </style>

+ 34 - 16
src/pages/fileManagement/index.vue

@@ -13,6 +13,7 @@
       >
         <el-form-item class="header_top_form" label="分类名称:">
           <el-input
+            clearable
             v-model.trim="form.name"
             placeholder="请输入"
             size="small"
@@ -20,13 +21,19 @@
         </el-form-item>
         <el-form-item class="header_top_form" label="文件名称:">
           <el-input
+            clearable
             v-model.trim="form.fileName"
             placeholder="请输入"
             size="small"
           ></el-input>
         </el-form-item>
         <el-form-item class="header_top_form" label="状态:">
-          <el-select v-model="form.status" size="small" placeholder="请选择">
+          <el-select
+            v-model="form.status"
+            clearable
+            size="small"
+            placeholder="请选择"
+          >
             <el-option
               v-for="item in options"
               :key="item.value"
@@ -93,7 +100,7 @@
             <el-button type="text" @click="history(scope.row)"
               >历史版本</el-button
             >
-            <el-button type="text" @click="edit">编辑</el-button>
+            <el-button type="text" @click="edit(scope.row)">编辑</el-button>
           </div>
         </template>
       </el-table-column>
@@ -127,25 +134,28 @@ export default {
     return {
       fullscreenLoading: false,
       tableData: [],
-      options: [],
+      options: [
+        { label: '启用', value: 1 },
+        { label: '禁用', value: 0 }
+      ],
       listData: [
         {
           name: '分类名称',
-          value: 'name',
+          value: 'typeName',
           width: '',
           minWidth: '',
           align: 'center'
         },
         {
           name: '文件名称',
-          value: 'typeName',
+          value: 'name',
           width: '',
           minWidth: '',
           align: 'center'
         },
         {
-          name: '接地址',
-          value: 'file',
+          name: '接地址',
+          value: 'docUrl',
           width: '',
           minWidth: '',
           align: 'center'
@@ -238,8 +248,13 @@ export default {
       this.$refs.editDialogRefs.openClose(code)
     },
     // 编辑
-    edit() {
-      this.$refs.editDialogRefs.openClose()
+    edit(val) {
+      let code = {
+        title: '文件编辑',
+        show: false,
+        id: val.id
+      }
+      this.$refs.editDialogRefs.openClose(code)
     },
     // 历史版本
     history(val) {
@@ -257,14 +272,17 @@ export default {
         id: item.id,
         status: val
       }
-      api.PUT('/doc/updateSwitch', code).then(data => {
-        if (data.code == 0) {
+      api
+        .PUT('/doc/updateSwitch', code)
+        .then(data => {
+          if (data.code == 0) {
+            this.search()
+            this.$message.success(data.message)
+          }
+        })
+        .catch(() => {
           this.search()
-          this.$message.success(data.message)
-        }
-      }).catch(()=>{
-        this.search()
-      })
+        })
     }
   }
 }

+ 1 - 1
src/pages/userManagement/index.vue

@@ -178,7 +178,7 @@ export default {
         start: this.form.start
       }
       api
-        .POST('/user/list', code)
+        .GET('/user/list', code)
         .then(res => {
           if (res.code == 0) {
             this.tableData = res.data.list