wangxingcheng 3 سال پیش
والد
کامیت
2c240c215c

+ 1 - 1
.env.development

@@ -8,4 +8,4 @@ VUE_APP_MicroSrvProxy_API=http://127.0.0.1:9981/
 VUE_APP_AdminPath=dashoo.opms.admin-0.0.1
 
 # 业务接口微服务名称
-VUE_APP_ParentPath=dashoo.opms.parent-0.0.1
+VUE_APP_ParentPath=dashoo.opms.parent-0.0.1

+ 5 - 2
.env.production

@@ -1,8 +1,11 @@
 # 租户码
 VUE_APP_TENANT=default
+
+# GateWay地址
+VUE_APP_MicroSrvProxy_API=http://127.0.0.1:9981/
+
 # 登录验证微服务名称
 VUE_APP_AdminPath=dashoo.opms.admin-0.0.1
-VUE_APP_MicroSrvProxy_API=http://127.0.0.1:9981/
 
 # 业务接口微服务名称
-VUE_APP_ParentPath=dashoo.opms.parent-0.0.1
+VUE_APP_ParentPath=dashoo.opms.parent-0.0.1

+ 1 - 1
prettier.config.js

@@ -1,5 +1,5 @@
 module.exports = {
-  printWidth: 80,
+  printWidth: 120,
   tabWidth: 2,
   useTabs: false,
   semi: false,

+ 1 - 6
src/api/system/user.js

@@ -4,12 +4,7 @@ const basePath = process.env.VUE_APP_AdminPath
 console.log(basePath)
 export default {
   login(query) {
-    return micro_request.postRequestWithClientInfo(
-      basePath,
-      'Auth',
-      'Login',
-      query
-    )
+    return micro_request.postRequestWithClientInfo(basePath, 'Auth', 'Login', query)
   },
   logout(query) {
     return micro_request.postRequest(basePath, 'Auth', 'LogOut', query)

+ 214 - 0
src/components/select/SelectUser.vue

@@ -0,0 +1,214 @@
+<template>
+  <el-dialog append-to-body :title="title" :visible.sync="innerVisible" width="40%">
+    <el-row class="transfer">
+      <el-col :span="12">
+        <header>
+          <el-input
+            v-model="queryForm.keyWords"
+            clearable
+            placeholder="请输入关键字"
+            suffix-icon="el-icon-search"
+            @change="search" />
+        </header>
+        <el-dropdown>
+          <span class="el-dropdown-link">
+            按字母顺序查看
+            <i class="el-icon-arrow-down el-icon--right"></i>
+          </span>
+          <el-dropdown-menu slot="dropdown">
+            <el-dropdown-item>按创建顺序查看</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+        <ul v-infinite-scroll="fetchData" class="options" :infinite-scroll-disabled="disabled">
+          <li v-for="(item, index) in options" :key="index" @click="transfer(index)">
+            <span>{{ item.userName }}</span>
+            <i class="el-icon-arrow-right"></i>
+          </li>
+        </ul>
+      </el-col>
+      <el-col :span="12">
+        <header>
+          <span>已选: {{ selected.length }}个员工</span>
+          <el-button :disabled="selected.length == 0" type="text" @click="clear">清空</el-button>
+        </header>
+        <ul class="options">
+          <li v-for="(item, index) in selected" :key="index" @click="goBack(index)">
+            <span>{{ item.userName }}</span>
+          </li>
+        </ul>
+      </el-col>
+    </el-row>
+    <span slot="footer">
+      <el-button size="mini" type="primary" @click="save">保存</el-button>
+      <el-button size="mini" @click="innerVisible = false">取消</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+  import userApi from '@/api/system/user'
+
+  export default {
+    name: 'SelectUser',
+    props: {
+      title: {
+        type: String,
+        default: '选择',
+      },
+      multiple: Boolean,
+      queryParams: {
+        type: Object,
+        default() {
+          return {}
+        },
+      },
+    },
+    data() {
+      return {
+        innerVisible: false,
+        queryForm: {
+          keyWords: '',
+          pageNum: 1,
+          pageSize: 50,
+        },
+        disabled: false,
+        total: 0,
+        list: [],
+        options: [],
+        selected: [],
+      }
+    },
+    mounted() {
+      // this.fetchData()
+    },
+    methods: {
+      open() {
+        this.innerVisible = true
+      },
+      save() {
+        this.innerVisible = false
+        this.$emit('save', this.selected)
+      },
+      search() {
+        this.queryForm.pageNum = 1
+        this.fetchData('new')
+      },
+      async fetchData(type) {
+        let query = Object.assign(this.queryForm, this.queryParams)
+        const {
+          data: { list, total },
+        } = await userApi.getList(query)
+        this.total = total
+        if (list && list.length > 0) {
+          for (let index in list) {
+            list[index].sort = (this.queryForm.pageNum - 1) * this.queryForm.pageSize + index
+          }
+          if (type === 'new') {
+            this.list = list
+            this.options = list
+          } else {
+            this.list = this.list.concat(list)
+            this.options = this.options.concat(list)
+          }
+          this.queryForm.pageNum++
+        }
+        // 禁用加载请求
+        this.disabled = false
+        if (this.list.length >= this.total) {
+          this.disabled = true
+        }
+      },
+
+      transfer(index) {
+        if (!this.multiple && this.selected.length === 1) {
+          this.$message({
+            type: 'warning',
+            message: '只能选择一个员工,请勿多选!',
+          })
+          return
+        }
+        const arr = this.options.splice(index, 1)
+        if (arr[0]) this.selected.push(arr[0])
+        this.selected.sort(function (a, b) {
+          return a.sort - b.sort
+        })
+      },
+      goBack(index) {
+        const arr = this.selected.splice(index, 1)
+        if (arr[0]) this.options.push(arr[0])
+        this.options.sort(function (a, b) {
+          return a.sort - b.sort
+        })
+      },
+      clear() {
+        this.selected = []
+        this.options = this.list
+      },
+    },
+  }
+</script>
+
+<style lang="scss" scoped>
+  .transfer {
+    height: 500px;
+    border: 1px solid #ebeef5;
+
+    .el-col {
+      height: 100%;
+
+      &:first-child {
+        border-right: 1px solid #ebeef5;
+      }
+
+      .el-dropdown {
+        height: 50px;
+        line-height: 50px;
+        margin: 0 8px;
+        width: calc(100% - 16px);
+        border-bottom: 1px solid #ebeef5;
+
+        span {
+          display: flex;
+          align-items: center;
+          justify-content: space-between;
+        }
+      }
+
+      .options {
+        margin: 0;
+        padding: 0 10px;
+        list-style: none;
+        height: 400px;
+        overflow-y: auto;
+
+        li {
+          height: 50px;
+          line-height: 50px;
+          display: flex;
+          justify-content: space-between;
+          align-items: center;
+          border-bottom: 1px solid #ebeef5;
+
+          & i {
+            transition: all 0.3s;
+            cursor: pointer;
+
+            &:hover {
+              color: #1d66dc;
+              font-weight: bold;
+            }
+          }
+        }
+      }
+    }
+
+    header {
+      height: 50px;
+      padding: 9px 8px;
+      border-bottom: 1px solid #ebeef5;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+    }
+  }
+</style>

+ 2 - 1
src/main.js

@@ -5,12 +5,13 @@ import store from './store'
 import router from './router'
 import '@/vab'
 
-import { parseTime, translateDataToTree } from '@/utils'
+import { parseTime, translateDataToTree, resetForm } from '@/utils'
 import dictApi from '@/api/system/dict'
 
 Vue.prototype.parseTime = parseTime
 Vue.prototype.translateDataToTree = translateDataToTree
 Vue.prototype.getDicts = dictApi.getDictDataByType
+Vue.prototype.resetForm = resetForm
 
 Vue.config.productionTip = false
 new Vue({

+ 12 - 27
src/utils/index.js

@@ -75,17 +75,7 @@ export function formatTime(time, option) {
   if (option) {
     return parseTime(time, option)
   } else {
-    return (
-      d.getMonth() +
-      1 +
-      '月' +
-      d.getDate() +
-      '日' +
-      d.getHours() +
-      '时' +
-      d.getMinutes() +
-      '分'
-    )
+    return d.getMonth() + 1 + '月' + d.getDate() + '日' + d.getHours() + '时' + d.getMinutes() + '分'
   }
 }
 
@@ -101,11 +91,7 @@ export function paramObj(url) {
   }
   return JSON.parse(
     '{"' +
-      decodeURIComponent(search)
-        .replace(/"/g, '\\"')
-        .replace(/&/g, '","')
-        .replace(/=/g, '":"')
-        .replace(/\+/g, ' ') +
+      decodeURIComponent(search).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"').replace(/\+/g, ' ') +
       '"}'
   )
 }
@@ -117,16 +103,10 @@ export function paramObj(url) {
  */
 export function translateDataToTree(data) {
   const parent = data.filter(
-    (value) =>
-      value.parentId === 'undefined' ||
-      value.parentId === null ||
-      value.parentId === 0
+    (value) => value.parentId === 'undefined' || value.parentId === null || value.parentId === 0
   )
   const children = data.filter(
-    (value) =>
-      value.parentId !== 'undefined' &&
-      value.parentId !== null &&
-      value.parentId !== 0
+    (value) => value.parentId !== 'undefined' && value.parentId !== null && value.parentId !== 0
   )
   const translator = (parent, children) => {
     parent.forEach((parent) => {
@@ -135,9 +115,7 @@ export function translateDataToTree(data) {
           const temp = JSON.parse(JSON.stringify(children))
           temp.splice(index, 1)
           translator([current], temp)
-          typeof parent.children !== 'undefined'
-            ? parent.children.push(current)
-            : (parent.children = [current])
+          typeof parent.children !== 'undefined' ? parent.children.push(current) : (parent.children = [current])
         }
       })
     })
@@ -279,3 +257,10 @@ export function shuffle(array) {
   }
   return array
 }
+
+// 表单重置
+export function resetForm(refName) {
+  if (this.$refs[refName]) {
+    this.$refs[refName].resetFields()
+  }
+}

+ 12 - 31
src/utils/micro_request.js

@@ -77,10 +77,7 @@ service.postRequest = function postRequest(basePath, srvName, funcName, data) {
   var base_Path = ''
   if (basePath == process.env.VUE_APP_FOSHAN_PATH) {
     base_Path = process.env.VUE_APP_MicroSrvProxy_foshan_API + basePath
-  } else if (
-    basePath == process.env.VUE_APP_AdminPath ||
-    process.env.VUE_APP_ParentPath
-  ) {
+  } else if (basePath == process.env.VUE_APP_AdminPath || process.env.VUE_APP_ParentPath) {
     base_Path = process.env.VUE_APP_MicroSrvProxy_API + basePath
   } else {
     base_Path = process.env.VUE_APP_MicroSrvProxy_API + basePath
@@ -99,12 +96,7 @@ service.postRequest = function postRequest(basePath, srvName, funcName, data) {
   })
 }
 // 发出请求并要求把客户端信息传输给后端(IP和User-Agent)
-service.postRequestWithClientInfo = function postRequest(
-  basePath,
-  srvName,
-  funcName,
-  data
-) {
+service.postRequestWithClientInfo = function postRequest(basePath, srvName, funcName, data) {
   if (data == undefined) {
     let nullParam = { nullparam: 0 }
     data = nullParam
@@ -124,12 +116,7 @@ service.postRequestWithClientInfo = function postRequest(
 }
 
 // Excel文件下载(服务端生成文件流)
-service.downloadExcel = function downloadExcel(
-  basePath,
-  srvName,
-  funcName,
-  data
-) {
+service.downloadExcel = function downloadExcel(basePath, srvName, funcName, data) {
   if (data == undefined) {
     let nullParam = {
       nullparam: 0,
@@ -137,9 +124,9 @@ service.downloadExcel = function downloadExcel(
     data = nullParam
   }
   var base_Path = ''
-  if (basePath == process.env.VUE_APP_FOSHAN_PATH) {
-    base_Path = process.env.VUE_APP_MicroSrvProxy_foshan_API + basePath
-  } else if (basePath == process.env.VUE_APP_AdminPath) {
+  if (basePath == process.env.VUE_APP_AdminPath) {
+    base_Path = process.env.VUE_APP_MicroSrvProxy_API + basePath
+  } else if (basePath == process.env.VUE_APP_ParentPath) {
     base_Path = process.env.VUE_APP_MicroSrvProxy_API + basePath
   }
   service.request({
@@ -162,15 +149,11 @@ function processResponse(res) {
   // 获取错误信息
   const message = errorCode[code] || res.data.msg || errorCode['default']
   if (code === 401) {
-    MessageBox.confirm(
-      '登录状态已过期,您可以继续留在该页面,或者重新登录',
-      '系统提示',
-      {
-        confirmButtonText: '重新登录',
-        cancelButtonText: '取消',
-        type: 'warning',
-      }
-    ).then(() => {
+    MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
+      confirmButtonText: '重新登录',
+      cancelButtonText: '取消',
+      type: 'warning',
+    }).then(() => {
       store.dispatch('user/logout').then(() => {
         if (process.env.SSO_LOGIN) {
           sessionStorage.removeItem('SSO_Token')
@@ -212,9 +195,7 @@ function downLoadBlobFile(res, mimeType) {
   })
   // //从response的headers中获取filename, 后端response.setHeader('Content-disposition', 'attachment filename=xxxx.docx') 设置的文件名
   var patt = new RegExp('filename=([^]+\\.[^\\.]+)*')
-  var contentDisposition = decodeURI(
-    res.headers['content-disposition'] || res.headers['Content-Disposition']
-  )
+  var contentDisposition = decodeURI(res.headers['content-disposition'] || res.headers['Content-Disposition'])
   var result = patt.exec(contentDisposition)
   var fileName = 'data.xlsx'
   if (result != undefined) {

+ 14 - 18
src/views/customer/components/Allocate.vue

@@ -7,12 +7,7 @@
  * @FilePath: \opms_frontend\src\views\customer\components\allocate.vue
 -->
 <template>
-  <el-dialog
-    title="分配客户"
-    :visible.sync="visible"
-    width="30%"
-    @close="handleClose">
-    <Transfer ref="transfer" />
+  <el-dialog title="分配客户" :visible.sync="visible" width="30%" @close="handleClose">
     <el-form label-width="80px" :model="form">
       <el-form-item label="销售代表">
         <el-input v-model="form.allocate" readonly>
@@ -24,28 +19,25 @@
       <el-button size="mini" type="primary">保存</el-button>
       <el-button size="mini" @click="visible = false">取消</el-button>
     </span>
+    <!--    <Transfer ref="transfer" />-->
+    <select-user ref="selectUser" :query-params="{ roles: ['Sales', 'SalesManager'] }" @save="selectUser" />
   </el-dialog>
 </template>
 
 <script>
-  import Transfer from './Transfer.vue'
+  // import Transfer from './Transfer.vue'
+  import SelectUser from '@/components/select/SelectUser'
+
   export default {
     components: {
-      Transfer,
+      // Transfer,
+      SelectUser,
     },
     data() {
       const generateData = () => {
         const data = []
         const cities = ['上海', '北京', '广州', '深圳', '南京', '西安', '成都']
-        const pinyin = [
-          'shanghai',
-          'beijing',
-          'guangzhou',
-          'shenzhen',
-          'nanjing',
-          'xian',
-          'chengdu',
-        ]
+        const pinyin = ['shanghai', 'beijing', 'guangzhou', 'shenzhen', 'nanjing', 'xian', 'chengdu']
         cities.forEach((city, index) => {
           data.push({
             label: city,
@@ -69,7 +61,11 @@
     methods: {
       handleClose() {},
       choose() {
-        this.$refs.transfer.innerVisible = true
+        // this.$refs.transfer.innerVisible = true
+        this.$refs.selectUser.open()
+      },
+      selectUser(userList) {
+        console.log(userList)
       },
     },
   }

+ 35 - 50
src/views/customer/openSea.vue

@@ -22,29 +22,15 @@
         <el-input v-model="queryForm.custLevel" placeholder="客户级别" />
       </el-col>
       <el-col :span="8">
-        <el-button icon="el-icon-plus" type="primary" @click="fetchData">
-          查询
-        </el-button>
+        <el-button icon="el-icon-plus" type="primary" @click="fetchData">查询</el-button>
         <el-button icon="el-icon-refresh-right" @click="reset">重置</el-button>
       </el-col>
     </el-row>
     <vab-query-form>
       <vab-query-form-left-panel :span="12">
-        <el-button
-          icon="el-icon-plus"
-          type="primary"
-          @click="$refs.edit.init()">
-          新建
-        </el-button>
-        <el-button
-          icon="el-icon-plus"
-          type="primary"
-          @click="$refs.allocate.visible = true">
-          分配
-        </el-button>
-        <el-button icon="el-icon-plus" type="primary" @click="handleReceive">
-          领取
-        </el-button>
+        <el-button icon="el-icon-plus" type="primary" @click="$refs.edit.init()">新建</el-button>
+        <el-button icon="el-icon-plus" type="primary" @click="$refs.allocate.visible = true">分配</el-button>
+        <el-button icon="el-icon-plus" type="primary" @click="handleReceive">领取</el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="12">
         <el-button icon="el-icon-download" />
@@ -69,21 +55,14 @@
           {{ scope.row.custStatus == 10 ? '正常' : '异常' }}
         </template>
       </el-table-column>
-      <el-table-column
-        align="center"
-        label="最后跟进时间"
-        prop="followUpDate" />
+      <el-table-column align="center" label="最后跟进时间" prop="followUpDate" />
       <el-table-column align="center" label="创建人" prop="createdName" />
       <el-table-column align="center" label="创建时间" prop="createdTime" />
       <el-table-column align="center" label="操作">
         <template slot-scope="scope">
           <el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
-          <el-button type="text" @click="handleDetail(scope.row)">
-            详情
-          </el-button>
-          <el-button type="text" @click="handleDelete(scope.row)">
-            删除
-          </el-button>
+          <el-button type="text" @click="handleDetail(scope.row)">详情</el-button>
+          <el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -96,10 +75,7 @@
       @current-change="handleCurrentChange"
       @size-change="handleSizeChange" />
     <!-- 新增编辑客户弹窗 -->
-    <Edit
-      ref="edit"
-      @createContact="createContact"
-      @customerSave="customerSave" />
+    <Edit ref="edit" @createContact="createContact" @customerSave="customerSave" />
     <!-- 新建联系人弹窗 -->
     <Contact ref="contact" />
     <!-- 分配客户 -->
@@ -113,6 +89,7 @@
   import Contact from './components/Contact'
   import Edit from './components/Edit'
   import Allocate from './components/Allocate'
+
   export default {
     name: 'OpenSea',
     components: {
@@ -229,25 +206,33 @@
       handleReceive() {
         if (!this.selectRows.length) return this.$message.warning('请选择客户')
         const arr = this.selectRows.map((item) => item.id)
-        console.log('redids', arr),
-          this.$confirm('确认领取客户?', '提示', {
-            confirmButtonText: '确定',
-            cancelButtonText: '取消',
-            type: 'warning',
+
+        this.$confirm('确认领取客户?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning',
+        })
+          .then(async () => {
+            const [err, res] = await to(api.receiveCustomer({ ids: arr.join() }))
+            if (err) return
+            if (res.code == 200) {
+              this.$message({
+                type: 'success',
+                message: '领取成功!',
+              })
+            }
           })
-            .then(async () => {
-              const [err, res] = await to(
-                api.receiveCustomer({ ids: arr, salesId: 1 })
-              )
-              if (err) return
-              if (res.code == 200) {
-                this.$message({
-                  type: 'success',
-                  message: '领取成功!',
-                })
-              }
-            })
-            .catch(() => {})
+          .then(async () => {
+            const [err, res] = await to(api.receiveCustomer({ ids: arr, salesId: 1 }))
+            if (err) return
+            if (res.code == 200) {
+              this.$message({
+                type: 'success',
+                message: '领取成功!',
+              })
+            }
+          })
+          .catch(() => {})
       },
     },
   }

+ 15 - 64
src/views/system/group/index.vue

@@ -2,32 +2,16 @@
   <div class="user-management-container">
     <vab-query-form>
       <vab-query-form-left-panel :span="5">
-        <el-button
-          icon="el-icon-plus"
-          type="primary"
-          @click="handleEdit($event)">
-          添加
-        </el-button>
-        <el-button
-          icon="el-icon-delete"
-          type="danger"
-          @click="handleDelete($event)">
-          删除
-        </el-button>
+        <el-button icon="el-icon-plus" type="primary" @click="handleEdit($event)">添加</el-button>
+        <el-button icon="el-icon-delete" type="danger" @click="handleDelete($event)">删除</el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="19">
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
-          <el-form-item label="用户组名称" prop="dictName">
-            <el-input
-              v-model.trim="queryForm.groupName"
-              clearable
-              placeholder="请输入用户组名称" />
+          <el-form-item label="用户组名称" prop="groupName">
+            <el-input v-model.trim="queryForm.groupName" clearable placeholder="请输入用户组名称" />
           </el-form-item>
-          <el-form-item label="用户组编码" prop="dictType">
-            <el-input
-              v-model.trim="queryForm.groupCode"
-              clearable
-              placeholder="请输入用户组编码" />
+          <el-form-item label="用户组编码" prop="groupCode">
+            <el-input v-model.trim="queryForm.groupCode" clearable placeholder="请输入用户组编码" />
           </el-form-item>
           <el-form-item label="状态" prop="status">
             <el-select v-model="queryForm.status" clearable placeholder="状态">
@@ -36,70 +20,37 @@
             </el-select>
           </el-form-item>
           <el-form-item>
-            <el-button icon="el-icon-search" type="primary" @click="queryData">
-              查询
-            </el-button>
+            <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
           </el-form-item>
         </el-form>
       </vab-query-form-right-panel>
     </vab-query-form>
 
-    <el-table
-      v-loading="listLoading"
-      border
-      :data="list"
-      :height="height"
-      @selection-change="setSelectRows">
+    <el-table v-loading="listLoading" border :data="list" :height="height" @selection-change="setSelectRows">
       <el-table-column align="center" show-overflow-tooltip type="selection" />
-      <el-table-column
-        align="center"
-        label="用户组编号"
-        prop="id"
-        show-overflow-tooltip />
-      <el-table-column
-        align="center"
-        label="用户组名称"
-        prop="groupName"
-        show-overflow-tooltip />
-      <el-table-column
-        align="center"
-        label="用户组编码"
-        prop="groupCode"
-        show-overflow-tooltip />
+      <el-table-column align="center" label="用户组编号" prop="id" show-overflow-tooltip />
+      <el-table-column align="center" label="用户组名称" prop="groupName" show-overflow-tooltip />
+      <el-table-column align="center" label="用户组编码" prop="groupCode" show-overflow-tooltip />
       <el-table-column align="center" label="状态" prop="status">
         <template #default="{ row }">
           {{ row.status === '10' ? '正常' : '停用' }}
         </template>
       </el-table-column>
-      <el-table-column
-        align="center"
-        label="用户组排序"
-        prop="sort"
-        show-overflow-tooltip />
-      <el-table-column
-        align="center"
-        label="备注"
-        prop="remark"
-        show-overflow-tooltip />
+      <el-table-column align="center" label="用户组排序" prop="sort" show-overflow-tooltip />
+      <el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
       <el-table-column align="center" label="创建时间" prop="createdTime">
         <template #default="scope">
           <span>{{ parseTime(scope.row.createdTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column
-        align="center"
-        label="操作"
-        show-overflow-tooltip
-        width="85">
+      <el-table-column align="center" label="操作" show-overflow-tooltip width="85">
         <template #default="{ row }">
           <el-button type="text" @click="handleEdit(row)">编辑</el-button>
           <el-button type="text" @click="handleDelete(row)">删除</el-button>
         </template>
       </el-table-column>
       <template #empty>
-        <el-image
-          class="vab-data-empty"
-          :src="require('@/assets/empty_images/data_empty.png')" />
+        <el-image class="vab-data-empty" :src="require('@/assets/empty_images/data_empty.png')" />
       </template>
     </el-table>
     <el-pagination

+ 15 - 64
src/views/system/post/index.vue

@@ -2,32 +2,16 @@
   <div class="user-management-container">
     <vab-query-form>
       <vab-query-form-left-panel :span="5">
-        <el-button
-          icon="el-icon-plus"
-          type="primary"
-          @click="handleEdit($event)">
-          添加
-        </el-button>
-        <el-button
-          icon="el-icon-delete"
-          type="danger"
-          @click="handleDelete($event)">
-          删除
-        </el-button>
+        <el-button icon="el-icon-plus" type="primary" @click="handleEdit($event)">添加</el-button>
+        <el-button icon="el-icon-delete" type="danger" @click="handleDelete($event)">删除</el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="19">
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
-          <el-form-item label="岗位名称" prop="dictName">
-            <el-input
-              v-model.trim="queryForm.postName"
-              clearable
-              placeholder="请输入岗位名称" />
+          <el-form-item label="岗位名称" prop="postName">
+            <el-input v-model.trim="queryForm.postName" clearable placeholder="请输入岗位名称" />
           </el-form-item>
-          <el-form-item label="岗位编码" prop="dictType">
-            <el-input
-              v-model.trim="queryForm.postCode"
-              clearable
-              placeholder="请输入岗位编码" />
+          <el-form-item label="岗位编码" prop="postCode">
+            <el-input v-model.trim="queryForm.postCode" clearable placeholder="请输入岗位编码" />
           </el-form-item>
           <el-form-item label="状态" prop="status">
             <el-select v-model="queryForm.status" clearable placeholder="状态">
@@ -36,70 +20,37 @@
             </el-select>
           </el-form-item>
           <el-form-item>
-            <el-button icon="el-icon-search" type="primary" @click="queryData">
-              查询
-            </el-button>
+            <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
           </el-form-item>
         </el-form>
       </vab-query-form-right-panel>
     </vab-query-form>
 
-    <el-table
-      v-loading="listLoading"
-      border
-      :data="list"
-      :height="height"
-      @selection-change="setSelectRows">
+    <el-table v-loading="listLoading" border :data="list" :height="height" @selection-change="setSelectRows">
       <el-table-column align="center" show-overflow-tooltip type="selection" />
-      <el-table-column
-        align="center"
-        label="岗位编号"
-        prop="id"
-        show-overflow-tooltip />
-      <el-table-column
-        align="center"
-        label="岗位名称"
-        prop="postName"
-        show-overflow-tooltip />
-      <el-table-column
-        align="center"
-        label="岗位编码"
-        prop="postCode"
-        show-overflow-tooltip />
+      <el-table-column align="center" label="岗位编号" prop="id" show-overflow-tooltip />
+      <el-table-column align="center" label="岗位名称" prop="postName" show-overflow-tooltip />
+      <el-table-column align="center" label="岗位编码" prop="postCode" show-overflow-tooltip />
       <el-table-column align="center" label="状态" prop="status">
         <template #default="{ row }">
           {{ row.status === '10' ? '正常' : '停用' }}
         </template>
       </el-table-column>
-      <el-table-column
-        align="center"
-        label="岗位排序"
-        prop="sort"
-        show-overflow-tooltip />
-      <el-table-column
-        align="center"
-        label="备注"
-        prop="remark"
-        show-overflow-tooltip />
+      <el-table-column align="center" label="岗位排序" prop="sort" show-overflow-tooltip />
+      <el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
       <el-table-column align="center" label="创建时间" prop="createdTime">
         <template #default="scope">
           <span>{{ parseTime(scope.row.createdTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column
-        align="center"
-        label="操作"
-        show-overflow-tooltip
-        width="85">
+      <el-table-column align="center" label="操作" show-overflow-tooltip width="85">
         <template #default="{ row }">
           <el-button type="text" @click="handleEdit(row)">编辑</el-button>
           <el-button type="text" @click="handleDelete(row)">删除</el-button>
         </template>
       </el-table-column>
       <template #empty>
-        <el-image
-          class="vab-data-empty"
-          :src="require('@/assets/empty_images/data_empty.png')" />
+        <el-image class="vab-data-empty" :src="require('@/assets/empty_images/data_empty.png')" />
       </template>
     </el-table>
     <el-pagination

+ 12 - 39
src/views/system/role/components/RoleDataScopeEdit.vue

@@ -1,11 +1,6 @@
 <template>
   <!-- 分配角色数据权限对话框 -->
-  <el-dialog
-    append-to-body
-    :close-on-click-modal="false"
-    :title="title"
-    :visible.sync="openDataScope"
-    width="500px">
+  <el-dialog append-to-body :close-on-click-modal="false" :title="title" :visible.sync="openDataScope" width="500px">
     <el-form ref="form" label-width="80px" :model="form" :rules="rules">
       <el-form-item label="角色名称">
         <el-input v-model="form.roleName" :disabled="true" />
@@ -16,27 +11,13 @@
 
       <el-form-item label="权限范围">
         <el-select v-model="form.dataScope">
-          <el-option
-            v-for="item in dataScopeOptions"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value" />
+          <el-option v-for="item in dataScopeOptions" :key="item.value" :label="item.label" :value="item.value" />
         </el-select>
       </el-form-item>
       <el-form-item v-show="form.dataScope == 2" label="数据权限">
-        <el-checkbox
-          v-model="deptExpand"
-          @change="handleCheckedTreeExpand($event, 'dept')">
-          展开/折叠
-        </el-checkbox>
-        <el-checkbox
-          v-model="deptNodeAll"
-          @change="handleCheckedTreeNodeAll($event, 'dept')">
-          全选/全不选
-        </el-checkbox>
-        <el-checkbox
-          v-model="form.deptCheckStrictly"
-          @change="handleCheckedTreeConnect($event, 'dept')">
+        <el-checkbox v-model="deptExpand" @change="handleCheckedTreeExpand($event, 'dept')">展开/折叠</el-checkbox>
+        <el-checkbox v-model="deptNodeAll" @change="handleCheckedTreeNodeAll($event, 'dept')">全选/全不选</el-checkbox>
+        <el-checkbox v-model="form.deptCheckStrictly" @change="handleCheckedTreeConnect($event, 'dept')">
           父子联动
         </el-checkbox>
         <el-tree
@@ -82,23 +63,23 @@
         // 数据范围选项
         dataScopeOptions: [
           {
-            value: '1',
+            value: '10',
             label: '全部数据权限',
           },
           {
-            value: '2',
+            value: '20',
             label: '自定数据权限',
           },
           {
-            value: '3',
+            value: '30',
             label: '本部门数据权限',
           },
           {
-            value: '4',
+            value: '40',
             label: '本部门及以下数据权限',
           },
           {
-            value: '5',
+            value: '50',
             label: '仅本人数据权限',
           },
         ],
@@ -155,19 +136,11 @@
           }
           roleApi.updateRoleDataScope(data).then((response) => {
             if (response.code === 200) {
-              this.$baseMessage(
-                response.msg,
-                'success',
-                'vab-hey-message-success'
-              )
+              this.$baseMessage(response.msg, 'success', 'vab-hey-message-success')
               this.openDataScope = false
               this.getList()
             } else {
-              this.$baseMessage(
-                response.msg,
-                'error',
-                'vab-hey-message-success'
-              )
+              this.$baseMessage(response.msg, 'error', 'vab-hey-message-success')
             }
           })
         }

+ 19 - 23
template/api.hbs

@@ -1,25 +1,21 @@
-import request from '@/utils/request'
+import micro_request from '@/utils/micro_request'
 
-export function getList(params) {
-  return request({
-    url: '/{{ name }}/getList',
-    method: 'get',
-    params,
-  })
-}
-
-export function doEdit(data) {
-  return request({
-    url: '/{{ name }}/doEdit',
-    method: 'post',
-    data,
-  })
-}
-
-export function doDelete(data) {
-  return request({
-    url: '/{{ name }}/doDelete',
-    method: 'post',
-    data,
-  })
+const basePath = process.env.VUE_APP_AdminPath
+export default {
+  // 获取列表
+  getList(query) {
+    return micro_request.postRequest(basePath, '{{ properCase name }}', 'GetList', query)
+  },
+  getEntityById(query) {
+    return micro_request.postRequest(basePath, '{{ properCase name }}', 'GetEntityById', query)
+  },
+  doAdd(query) {
+    return micro_request.postRequest(basePath, '{{ properCase name }}', 'Create', query)
+  },
+  doEdit(query) {
+    return micro_request.postRequest(basePath, '{{ properCase name }}', 'UpdateById', query)
+  },
+  doDelete(query) {
+    return micro_request.postRequest(basePath, '{{ properCase name }}', 'DeleteByIds', query)
+  },
 }

+ 2 - 2
template/edit.hbs

@@ -18,7 +18,7 @@
 </template>
 
 <script>
-  import { doEdit } from '@/api/{{moduleName}}/{{ camelCase name }}'
+  import {{ camelCase name }}Api from '@/api/{{moduleName}}/{{ camelCase name }}'
 
   export default {
     name: '{{ properCase name }}Edit',
@@ -53,7 +53,7 @@
       save() {
         this.$refs['form'].validate(async (valid) => {
           if (valid) {
-            const { msg } = await doEdit(this.form)
+            const { msg } = await {{ camelCase name }}Api.doEdit(this.form)
             this.$baseMessage(msg, 'success')
             this.$emit('fetch-data')
             this.close()

+ 7 - 11
template/index.hbs

@@ -18,8 +18,7 @@
       v-loading="listLoading"
       :data="list"
       :height="height"
-      @selection-change="setSelectRows"
-    >
+      @selection-change="setSelectRows">
       <el-table-column align="center" show-overflow-tooltip type="selection" />
       <el-table-column
         v-for="(item, index) in finallyColumns"
@@ -29,9 +28,7 @@
         :prop="item.prop"
         show-overflow-tooltip
         :sortable="item.sortable"
-        :width="item.width"
-      >
-      </el-table-column>
+        :width="item.width" />
 
       <el-table-column align="center" label="操作" width="85">
         <template #default="{ row }">
@@ -47,14 +44,13 @@
       :page-size="queryForm.pageSize"
       :total="total"
       @current-change="handleCurrentChange"
-      @size-change="handleSizeChange"
-    />
+      @size-change="handleSizeChange" />
     <edit ref="edit" @fetch-data="fetchData" />
   </div>
 </template>
 
 <script>
-  import { getList, doDelete } from '@/api/{{moduleName}}/{{ camelCase name }}'
+  import {{ camelCase name }}Api from '@/api/{{moduleName}}/{{ camelCase name }}'
   import Edit from './components/{{ properCase name }}Edit'
   import TableTool from '@/components/table/TableTool'
 
@@ -102,7 +98,7 @@
       handleDelete(row) {
         if (row.id) {
           this.$baseConfirm('你确定要删除当前项吗', null, async () => {
-            const { msg } = await doDelete({ ids: [row.id] })
+            const { msg } = await {{ camelCase name }}Api.doDelete({ ids: [row.id] })
             this.$baseMessage(msg, 'success')
             await this.fetchData()
           })
@@ -110,7 +106,7 @@
           if (this.selectRows.length > 0) {
             const ids = this.selectRows.map((item) => item.id)
             this.$baseConfirm('你确定要删除选中项吗', null, async () => {
-              const { msg } = await doDelete({ ids })
+              const { msg } = await {{ camelCase name }}Api.doDelete({ ids })
               this.$baseMessage(msg, 'success')
               await this.fetchData()
             })
@@ -134,7 +130,7 @@
       },
       async fetchData() {
         this.listLoading = true
-        const { data } = await getList(this.queryForm)
+        const { data } = await {{ camelCase name }}Api.getList(this.queryForm)
         const { list, total } = data
         this.list = list
         this.total = total