company/.env
@@ -4,7 +4,7 @@ VUE_APP_ROUTER_MODE = 'hash' # 项目上下文路径 VUE_APP_CONTEXT_PATH = '/yyb_admin' # VUE_APP_CONTEXT_PATH = '/yyb_admin' # VUE_APP_CONTEXT_PATH = '/yyb_web' # VUE_APP_CONTEXT_PATH = '/yyb_shop' company/.env.development
@@ -4,11 +4,12 @@ # 接口前缀 VUE_APP_API_PREFIX = '/yyb_admin_api' VUE_APP_SYSTEM_TITLE = '云易保客户服务系统-平台端' VUE_APP_CONTEXT_PATH = '/yyb_admin' VUE_APP_COOKIE_NAME='dmplat-auth-token' # 测试服 # VUE_APP_API = 'https://dmtest.ahapp.net/yyb_admin_api/' VUE_APP_API = 'https://dmtest.ahapp.net/yyb_admin_api/' # 任康 VUE_APP_API = 'http://192.168.0.147:10030/' # VUE_APP_API = 'http://192.168.0.147:10030/' company/.env.developmentCom
@@ -4,11 +4,11 @@ # 接口前缀 # VUE_APP_API_PREFIX = '/yyb_admin_api' VUE_APP_SYSTEM_TITLE = '云易保客户服务系统-企业端' VUE_APP_CONTEXT_PATH = '/yyb_web' VUE_APP_COOKIE_NAME='doumee-auth-token' #VUE_APP_API = 'https://dmtest.ahapp.net/yyb_web_api/' VUE_APP_API = 'https://dmtest.ahapp.net/yyb_web_api/' VUE_APP_API = 'http://192.168.0.147:10031/' # VUE_APP_API = 'http://192.168.0.147:10031/' # VUE_APP_API = 'https://www.yyb.red/yyb_web_api/' company/.env.developmentShop
@@ -5,9 +5,10 @@ # VUE_APP_API_PREFIX = '/yyb_admin_api' VUE_APP_COOKIE_NAME='dmshop-auth-token' VUE_APP_SYSTEM_TITLE = '云易保客户服务系统-商户端' #VUE_APP_API = 'https://www.yyb.red/yyb_shop_api/' VUE_APP_CONTEXT_PATH = '/yyb_shop' VUE_APP_API = 'https://dmtest.ahapp.net/yyb_shop_api/' VUE_APP_API = 'http://192.168.0.147:10032/' # VUE_APP_API = 'http://192.168.0.147:10032/' #VUE_APP_API = 'http://localhost:10032/' company/.env.production
@@ -1,12 +1,12 @@ # 生产环境配置 NODE_ENV = 'production' # VUE_APP_CONTEXT_PATH = '/admin' VUE_APP_API_PREFIX = '/yyb_admin_api' VUE_APP_CONTEXT_NAME = 'admin' VUE_APP_CONTEXT_NAME = 'yyb_admin' VUE_APP_COOKIE_NAME='dmplat-auth-token' VUE_APP_SYSTEM_TITLE = '云易保客户服务系统-平台端' VUE_APP_CONTEXT_PATH = '/yyb_admin' # 平台端 VUE_APP_API = 'https://dmtest.ahapp.net/yyb_admin_api/' company/.env.productionCom
@@ -3,9 +3,9 @@ VUE_APP_API_PREFIX = '/yyb_web_api' #VUE_APP_CONTEXT_PATH = '/company' VUE_APP_CONTEXT_PATH = '/yyb_web' VUE_APP_CONTEXT_NAME = 'company' VUE_APP_CONTEXT_NAME = 'yyb_company' VUE_APP_COOKIE_NAME='doumee-auth-token' company/.env.productionShop
@@ -1,11 +1,10 @@ # 生产环境配置 NODE_ENV = 'production' VUE_APP_CONTEXT_PATH = '/shop' VUE_APP_API_PREFIX = '/yyb_shop_api' VUE_APP_CONTEXT_NAME = 'shop' VUE_APP_CONTEXT_NAME = 'yyb_shop' VUE_APP_COOKIE_NAME='dmshop-auth-token' VUE_APP_CONTEXT_PATH = '/yyb_shop' # 平台端 # VUE_APP_API = 'https://dmtest.ahapp.net/yyb_shop_api/' company/src/components/business/OperaApplyChangeCheckWindow.vue
@@ -122,7 +122,7 @@ <div class="form_item"> <div class="form_item_label"><span>*</span>上传批单:</div> <div class="form_item_val"> <UploadFile :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList2" @uploadSuccess="editBaoxianFileUploaded" /> <UploadFile :limit="99" :uploadData="{ folder: 'apply',fileType:'.pdf' }" @remove="removeEditPiDan" :fileList="form.fileList2" @uploadSuccess="editBaoxianFileUploaded" /> </div> </div> <div class="form_item"> @@ -186,7 +186,7 @@ delValidTime: null, validCode: null, pidanFile: [], editPidanFile: null, editPidanFile: [], fileList1: [], fileList2: [], selectRadio: 0 @@ -218,7 +218,7 @@ applyStartTime: null, validCode: null, pidanFile: [], editPidanFile: null, editPidanFile: [], fileList1: [], fileList2: [], selectRadio: 0 @@ -323,7 +323,14 @@ }) }, editBaoxianFileUploaded (data) { this.form.editPidanFile = data this.form.editPidanFile.push(data) }, removeEditPiDan(e) { this.form.editPidanFile.forEach((item, index) => { if (e === item.imgaddr) { this.form.editPidanFile.splice(index, 1) } }) }, backDo () { this.$dialog.messageConfirm('确认进行该操作吗?') company/src/components/business/OperaApplyChangeUnitCheckWindow.vue
@@ -54,7 +54,7 @@ <div class="form_item"> <div class="form_item_label">上传批单:</div> <div class="form_item_val"> <UploadFile :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @uploadSuccess="baoxianFileUploaded" /> <UploadFile :uploadData="{ folder: 'apply',fileType:'.pdf' }" :limit="99" :fileList="form.fileList1" @remove="removePIDAN" @uploadSuccess="baoxianFileUploaded" /> </div> </div> </div> @@ -135,7 +135,7 @@ editValidCode: '', applyStartTime:null, validCode:null, pidanFile:null, pidanFile:[], editPidanFile:null, fileList1: [], fileList2: [], @@ -166,7 +166,7 @@ editValidCode: '', applyStartTime:null, validCode:null, pidanFile:null, pidanFile:[], editPidanFile:null, fileList1: [], fileList2: [], @@ -219,8 +219,15 @@ } }, baoxianFileUploaded(data){ this.form.pidanFile=data this.form.pidanFile.push(data) }, removePIDAN(e) { this.form.pidanFile.forEach((item, index) => { if (item.imgaddr === e) { this.form.pidanFile.splice(index, 1) } }) }, editBaoxianFileUploaded(data){ this.form.editPidanFile=data }, company/src/components/business/OperaCompanyUserApplyWindow.vue
@@ -40,7 +40,7 @@ show-word-limit /> </el-form-item> <el-form-item label="授权书" prop="multifileList"> <UploadFile @remove="deleFile" :limit="99" :uploadData="{ folder: 'companyUserApply', fileType:'.pdf' }" :fileList="fileList" @uploadSuccess="editFanganFile" /> <UploadFile v-if="visible" @remove="deleFile" :limit="99" :uploadData="{ folder: 'companyUserApply', fileType:'.pdf' }" :fileList="fileList" @uploadSuccess="editFanganFile" /> </el-form-item> </el-form> </GlobalWindow> company/src/components/business/OperaInsuranceApplyWindow.vue
@@ -19,7 +19,10 @@ <div class="desc_item_label"> <div class="desc_item_label_left"> <span>投保企业:{{ model.companyName }}</span> <span>保单状态:<span :class="'apply-status'+model.status" >{{ model.statusInfo }}</span></span> <span>保单状态: <span style="color: #f95601;" v-if="[5,27].includes(model.status) && model.statusInfo === '待生效'">{{ model.statusInfo }}</span> <span :class="'apply-status'+model.status" v-else>{{ model.statusInfo }}</span> </span> <span>提交时间:{{ model.createDate }}</span> </div> <div class="desc_item_label_right"> @@ -49,7 +52,7 @@ <el-button v-if="[6,7,8,11].includes(model.status) && model.solutionType ==0" type="primary" @click="$refs.OperaInsuranceApplyCheckWindow.open('驳回退回申请',model,5)">驳回退回申请</el-button> <el-button v-if="[22, 0].includes(model.status) && [0,1].includes(model.solutionType)" type="primary" @click="$refs.InsuranceDetails.open('投保审核',model,1)">投保审核</el-button> <el-button v-if="![1, 4, 5].includes(model.status) && [0,1].includes(model.solutionType)" type="danger" @click="$refs.OperaInsuranceApplyCheckWindow.open('退回申请',model,1)">退回申请</el-button> <el-button v-if="[5,27].includes(model.status) && userInfo.type === 0" type="danger" @click="$refs.OperaInsuranceApplyCheckWindow.open('修改保险单',model,4)">修改保险单</el-button> <el-button v-if="[5,27].includes(model.status) && ['待生效'].includes(model.statusInfo) && userInfo.type === 0" type="danger" @click="$refs.OperaInsuranceApplyCheckWindow.open('修改保险单',model,4)">修改保险单</el-button> </template> </div> @@ -244,7 +247,7 @@ <template slot-scope="{row}"> <span v-if="row.applyStatus === 0" style="color: #00BA92;">保障中</span> <span v-if="row.applyStatus === 1" style="color: #999;">不在保</span> <span v-if="row.applyStatus === 2" style="color: #00BA92;">待生效</span> <span v-if="row.applyStatus === 2" style="color: #f95601;">待生效</span> </template> </el-table-column> <el-table-column @@ -421,7 +424,7 @@ :key="Math.random()" prop="changeNum" align="center" label="更换工种人数"> :label="model.hasDispatchUnit !== 1 ? '更换派遣单位人数' : '更换工种人数'"> <template scope="{row}"> {{row.changeNum||0}} 人 </template> @@ -996,14 +999,18 @@ .desc_item_label { width: 100%; display: flex; align-items: center; justify-content: space-between; align-items: start; flex-direction: column; margin-bottom: 10px; span { font-size: 14px; color: black; margin-right: 30px; } .desc_item_label_right { width: 100%; margin: 10px 0; } } .desc_item_from { width: 100%; company/src/components/business/OperaWtbApplyShopWindow.vue
@@ -20,7 +20,9 @@ <div class="desc_item_label_left"> <span>投保人:{{ model.shopName }}</span> <span>被保险人:{{ model.companyName }}</span> <span>保单状态:<span :class="'apply-status'+model.status" >{{ model.statusInfo }}</span></span> <span>保单状态: <span :class="'apply-status'+model.status" >{{ model.statusInfo }}</span> </span> <span>提交时间:{{ model.createDate }}</span> </div> <div class="desc_item_label_right"> @@ -127,6 +129,7 @@ <el-option label="全部" value="0"></el-option> <el-option label="保障中" value="1"></el-option> <el-option label="不在保" value="2"></el-option> <el-option label="待生效" value="3"></el-option> </el-select> </el-form-item> <el-form-item label="派遣单位" prop="duId" v-if="model.hasDispatchUnit !== 1"> @@ -246,9 +249,9 @@ :key="Math.random()" label="在保状态"> <template slot-scope="{row}"> <span v-if="row.applyStatus === 0">保障中</span> <span v-if="row.applyStatus === 1">不在保</span> <span v-if="row.applyStatus === 2">待生效</span> <span v-if="row.applyStatus === 0" style="color: #00BA92;">保障中</span> <span v-if="row.applyStatus === 1" style="color: #999;">不在保</span> <span v-if="row.applyStatus === 2" style="color: #f95601;">待生效</span> </template> </el-table-column> <el-table-column @@ -415,7 +418,7 @@ :key="Math.random()" prop="changeNum" align="center" label="更换派遣单位人数"> :label="model.hasDispatchUnit !== 1 ? '更换派遣单位人数' : '更换工种人数'"> </el-table-column> <el-table-column :key="Math.random()" company/src/components/business/allocateEnterprises.vue
@@ -3,7 +3,7 @@ class="menu-config-dialog" :visible.sync="visible" :confirm-working="isWorking" width="576px" width="800px" title="分配服务企业" @confirm="confirm" > @@ -93,7 +93,11 @@ } } </script> <style> .el-transfer-panel { width: 300px !important; } </style> <style scoped lang="scss"> @import "@/assets/style/variables.scss"; .global-window { company/src/components/business/detailsEntrustedInsurance.vue
@@ -28,6 +28,11 @@ <el-button v-if="[2,3,4].includes(model.status)" type="primary" @click="viewToubaodan">{{model.signType === 1 ? '查看申请单' : '查看投保单'}}</el-button> <!-- <el-button v-if="[2].includes(model.status) " type="primary" @click="$refs.OperaUnionApplyCheckWindow.open('上传保险单',model,3)">上传保险单</el-button>--> <el-button v-if="model.status == 3" type="primary" @click="viewBaoxiandan">查看保险单</el-button> <el-button v-if="[2,3,4,1,5].includes(model.status) && (model.toubaodanFile || model.toubaodanSignedFile)" type="primary" @click="viewToubaodan">{{model.signType === 1 ? '查看申请单' : '查看投保单'}}</el-button> <el-button v-if="[0,1,2,5].includes(model.status) " type="danger" @click="$refs.OperaUnionApplyCheckWindow.open('退回申请',model,1)">退回申请</el-button> <el-button v-if="[5].includes(model.status)" type="primary" @click="fusheng">投保复审</el-button> <el-button v-if="[0,1,2].includes(model.status) " type="danger" @click="$refs.OperaUnionApplyCheckWindow.open('退回申请',model,1)">退回申请</el-button> </template> <template v-if="userInfo.type ===0"> company/src/components/business/modification.vue
@@ -124,9 +124,10 @@ if (item.id === e) { baseId = item.baseId this.form.solutionList[index].solution.type = item.type if(item.type == 1){ // console.log(item.type) // if(item.type == 1){ this.form.solutionList[index].shopId =item.shopId } // } } }) company/src/components/common/CommonHeader.vue
@@ -214,7 +214,11 @@ } } </script> <style> .el-dropdown-menu { width: 240px !important; } </style> <style scoped lang="scss"> @import "@/assets/style/variables.scss"; .common-header { company/src/components/system/role/PermissionConfigWindow.vue
@@ -2,7 +2,7 @@ <GlobalWindow :visible.sync="visible" :confirm-working="isWorking" width="582px" width="800px" title="配置角色权限" @confirm="confirm" > @@ -122,3 +122,8 @@ } } </style> <style> .el-transfer-panel { width: 300px !important; } </style> company/src/components/system/user/RoleConfigWindow.vue
@@ -2,7 +2,7 @@ <GlobalWindow :visible.sync="visible" :confirm-working="isWorking" width="582px" width="800px" title="配置用户角色" @confirm="confirm" > @@ -125,3 +125,8 @@ } } </style> <style> .el-transfer-panel { width: 300px !important; } </style> company/src/utils/request.js
@@ -42,6 +42,7 @@ // 新建响应拦截器 axiosInstance.interceptors.response.use((response) => { // console.log(response) // 请求失败 if (response.status !== 200) { return Promise.reject(new Error('服务器繁忙,请稍后再试')) @@ -64,6 +65,7 @@ } return response.data.data }, function (error) { console.log(error) if (error.code == null) { return Promise.reject(new Error('服务器繁忙,请稍后再试')) } company/src/utils/resetMessage.js
@@ -1,32 +1,18 @@ //resetMessage.js /**重置message,防止重复点击重复弹出message消息提示 */ import { Message } from 'element-ui'; import { Message } from 'element-ui'; let messageInstance = null; const resetMessage = (options) => { if(messageInstance) { messageInstance.close(); export const showMessage = (message) => { if (messageInstance) { // 如果已经存在一个消息提示实例,则先关闭它 Message.closeAll(); } Message.closeAll(); //手动关闭所有消息提示实例 messageInstance = Message(options); // console.log(Message(options)); }; ['error','success','info','warning'].forEach(type => { resetMessage[type] = options => { if(typeof options === 'string') { options = { message:options } // 显示新的消息提示,并保存该实例 messageInstance = Message({ message: message, onClose: () => { messageInstance = null; // 当消息提示关闭时,将实例置为null } options.type = type return resetMessage(options) } }) export const message = resetMessage }); } company/src/views/business/insuranceApply.vue
@@ -73,6 +73,7 @@ <span style="color: #666;" v-if="[9,25,27,5].includes(row.status) && ['已关闭','已过期'].includes(row.statusInfo)">{{row.statusInfo}}</span> <span style="color: red;" v-else-if="row.status === 4 && row.statusInfo === '已退回'">{{ row.statusInfo}}</span> <span style="color: #f95601;" v-else-if="[5,27].includes(row.status) && row.statusInfo === '待生效'">{{ row.statusInfo}}</span> <span style="color: #216EEE;" v-else-if="[12].includes(row.status) && row.statusInfo === '待审核'">{{ row.statusInfo}}</span> <span :class="'apply-status'+row.status" v-else>{{row.statusInfo}}</span> </template> </el-table-column> company/src/views/enterprise/insuranceApply.vue
@@ -57,6 +57,7 @@ <span style="color: #666;" v-if="[9,25,27,5].includes(row.status) && ['已关闭','已过期'].includes(row.statusInfo)">{{row.statusInfo}}</span> <span style="color: red;" v-else-if="row.status === 4 && row.statusInfo === '已退回'">{{ row.statusInfo}}</span> <span style="color: #f95601;" v-else-if="[5,27].includes(row.status) && row.statusInfo === '待生效'">{{ row.statusInfo}}</span> <span style="color: #216EEE;" v-else-if="[12].includes(row.status) && row.statusInfo === '待审核'">{{ row.statusInfo}}</span> <span :class="'apply-status'+row.status" v-else>{{row.statusInfo}}</span> <!-- <span :class="'apply-status'+row.status" >{{row.statusInfo}}</span>--> </template> @@ -199,7 +200,7 @@ isShow(status, endTime) { const currentDate = new Date(); const specifiedDate = new Date(endTime); return status === 5 && (currentDate < specifiedDate); return [5,27].includes(status) && (currentDate < specifiedDate); }, changeStatus(e) { if (e.indexOf(',') !== -1) { @@ -221,7 +222,6 @@ this.search() }, result(flag,param){ console.log(flag,param) if(param && param.godetail && param.id){ if (param.type == 1) { this.$refs.OperaWtbApplyShopWindow.open('委托投保详情', { id: param.id }) company/src/views/index.vue
@@ -147,7 +147,7 @@ </div> <div class="home_content_right_page"> <el-pagination @current-change="handleCurrentChange2" @current-change="handleCurrentChange6" :current-page="page6" :page-size="5" layout="total, prev, pager, next, jumper" @@ -187,10 +187,10 @@ </div> </div> <div v-if="activeName === '8'"> <div class="home_content_right_list" v-if="tableData7 && tableData7.length"> <div class="list_item" v-for="(item, index) in tableData7" :key="index"> <div class="home_content_right_list" v-if="tableData8 && tableData8.length"> <div class="list_item" v-for="(item, index) in tableData8" :key="index"> <div class="list_item_left"> <span>{{item.title}}({{ item.typeDetail }})</span> <span>{{item.title}}(待审核)</span> <span>{{item.info}}({{item.content}})</span> </div> <div class="list_item_center"> company/src/views/system/role.vue
@@ -42,12 +42,12 @@ <el-table-column v-if="containPermissions(['system:role:update', 'system:role:createRolePermission', 'system:role:createRoleMenu', 'system:role:delete'])" label="操作" min-width="330" min-width="260" fixed="right" > <template slot-scope="{row}"> <el-button type="text" @click="$refs.operaRoleWindow.open('编辑角色', row)" icon="el-icon-edit" v-permissions="['system:role:update']">编辑</el-button> <el-button type="text" @click="openRole(row.systemDataPermission, row.id)">数据权限</el-button> <!-- <el-button type="text" @click="openRole(row.systemDataPermission, row.id)">数据权限</el-button>--> <el-button type="text" @click="$refs.permissionConfigWindow.open(row)" v-permissions="['system:role:createRolePermission']">配置权限</el-button> <el-button type="text" @click="$refs.menuConfigWindow.open(row)" icon="el-icon-menu" v-permissions="['system:role:createRoleMenu']">授权菜单</el-button> <el-button v-if="!row.fixed" type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:role:delete']">删除</el-button> company/src/views/system/user.vue
@@ -1,180 +1,180 @@ <template> <TableLayout :permissions="['system:user:query']"> <!-- 搜索表单 --> <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline> <el-form-item label="姓名" prop="realname"> <el-input v-model="searchForm.realname" v-trim placeholder="请输入" @keypress.enter.native="search"/> </el-form-item> <el-form-item label="所属部门" prop="companyDepartmentPathName"> <el-input v-model="searchForm.companyDepartmentPathName" v-trim placeholder="请输入" @keypress.enter.native="search"/> </el-form-item> <section> <el-button type="primary" icon="el-icon-search" @click="search">搜索</el-button> <el-button @click="reset">重置</el-button> </section> </el-form> <!-- 表格和分页 --> <template v-slot:table-wrap> <ul class="toolbar" v-permissions="['system:user:create', 'system:user:delete']"> <li v-permissions="['system:user:create']"><el-button type="primary" @click="$refs.operaUserWindow.open('新增账号')">新增账号</el-button></li> <!-- <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">删除</el-button></li>--> </ul> <!-- @selection-change="handleSelectionChange"--> <el-table v-loading="isWorking.search" :data="tableData.list" :default-sort = "{prop: 'createTime', order: 'descending'}" stripe @sort-change="handleSortChange" > <el-table-column label="序号" width="80px"> <template slot-scope="scope"> <span>{{scope.$index + 1}}</span> </template> </el-table-column> <el-table-column prop="username" label="账号" min-width="120px"></el-table-column> <el-table-column prop="realname" label="姓名" min-width="100px"></el-table-column> <el-table-column prop="mobile" label="联系方式" min-width="100px"></el-table-column> <el-table-column label="主管" min-width="100px"> <template slot-scope="{ row }"> <el-switch v-model="row.headStatus" @change="setHeadStatus($event, row)" active-color="#13ce66" inactive-color="#ff4949" :active-value="1" :inactive-value="0"> </el-switch> </template> </el-table-column> <el-table-column prop="companyDepartmentPathName" label="所在部门" min-width="100px"></el-table-column> <el-table-column prop="roles" label="角色" min-width="160px" class-name="table-column-strings"> <template slot-scope="{row}"> <ul> <li v-for="role in row.roles" :key="role.id">{{role.name}}</li> </ul> </template> </el-table-column> <el-table-column label="启用状态" min-width="100px"> <template slot-scope="{row}"> <el-switch v-if="!row.fixed" @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66" inactive-color="#ff4949" :active-value="0" :inactive-value="1"> </el-switch> </template> </el-table-column> <el-table-column v-if="containPermissions(['system:user:update', 'system:user:createUserRole', 'system:user:resetPwd', 'system:user:delete'])" label="操作" width="270" fixed="right" > <!-- row.id !== userInfo.id &&--> <template v-if="isAdmin || (row.roles.findIndex(r => r.code === adminCode) === -1)" slot-scope="{row}"> <el-button type="text" icon="el-icon-edit" @click="$refs.operaUserWindow.open('编辑用户', {...row, departmentId: row.companyDepartmentPathId.substring(0, row.companyDepartmentPathId.length - 1).split('/').map(val => +val)})" v-permissions="['system:user:update']">编辑</el-button> <el-button type="text" @click="$refs.allocationEnterprises.open('分配企业', row)" v-if="[0,2].includes(userInfo.type)">分配企业</el-button> <el-button type="text" icon="el-icon-s-custom" @click="$refs.roleConfigWindow.open(row)" v-permissions="['system:user:createUserRole']">配置角色</el-button> <el-button type="text" @click="$refs.resetPwdWindow.open(row)" v-permissions="['system:user:resetPwd']">重置密码</el-button> <!-- <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">删除</el-button>--> </template> </el-table-column> </el-table> <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination" ></pagination> </template> <!-- 新建/修改 --> <OperaUserWindow ref="operaUserWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/> <!-- 配置角色 --> <RoleConfigWindow ref="roleConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/> <!-- 重置密码 --> <ResetPwdWindow ref="resetPwdWindow"/> <!-- 分配企业 --> <allocationEnterprises ref="allocationEnterprises" @success="handlePageChange(tableData.pagination.pageIndex)"/> </TableLayout> <TableLayout :permissions="['system:user:query']"> <!-- 搜索表单 --> <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline> <el-form-item label="姓名" prop="realname"> <el-input v-model="searchForm.realname" v-trim placeholder="请输入" @keypress.enter.native="search"/> </el-form-item> <el-form-item label="所属部门" prop="companyDepartmentPathName"> <el-input v-model="searchForm.companyDepartmentPathName" v-trim placeholder="请输入" @keypress.enter.native="search"/> </el-form-item> <section> <el-button type="primary" icon="el-icon-search" @click="search">搜索</el-button> <el-button @click="reset">重置</el-button> </section> </el-form> <!-- 表格和分页 --> <template v-slot:table-wrap> <ul class="toolbar" v-permissions="['system:user:create', 'system:user:delete']"> <li v-permissions="['system:user:create']"><el-button type="primary" @click="$refs.operaUserWindow.open('新增账号')">新增账号</el-button></li> <!-- <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">删除</el-button></li>--> </ul> <!-- @selection-change="handleSelectionChange"--> <el-table v-loading="isWorking.search" :data="tableData.list" :default-sort = "{prop: 'createTime', order: 'descending'}" stripe @sort-change="handleSortChange" > <el-table-column label="序号" width="80px"> <template slot-scope="scope"> <span>{{scope.$index + 1}}</span> </template> </el-table-column> <el-table-column prop="username" label="账号" min-width="120px"></el-table-column> <el-table-column prop="realname" label="姓名" min-width="100px"></el-table-column> <el-table-column prop="mobile" label="联系方式" min-width="100px"></el-table-column> <el-table-column label="主管" min-width="100px"> <template slot-scope="{ row }"> <el-switch v-model="row.headStatus" @change="setHeadStatus($event, row)" active-color="#13ce66" inactive-color="#ff4949" :active-value="1" :inactive-value="0"> </el-switch> </template> </el-table-column> <el-table-column prop="companyDepartmentPathName" label="所在部门" min-width="100px"></el-table-column> <el-table-column prop="roles" label="角色" min-width="160px" class-name="table-column-strings"> <template slot-scope="{row}"> <ul> <li v-for="role in row.roles" :key="role.id">{{role.name}}</li> </ul> </template> </el-table-column> <el-table-column label="启用状态" min-width="100px"> <template slot-scope="{row}"> <el-switch v-if="!row.fixed" @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66" inactive-color="#ff4949" :active-value="0" :inactive-value="1"> </el-switch> </template> </el-table-column> <el-table-column v-if="containPermissions(['system:user:update', 'system:user:createUserRole', 'system:user:resetPwd', 'system:user:delete'])" label="操作" width="270" fixed="right" > <!-- row.id !== userInfo.id &&--> <template v-if="isAdmin || (row.roles.findIndex(r => r.code === adminCode) === -1)" slot-scope="{row}"> <el-button type="text" icon="el-icon-edit" @click="$refs.operaUserWindow.open('编辑用户', {...row, departmentId: row.companyDepartmentPathId ? row.companyDepartmentPathId.substring(0, row.companyDepartmentPathId.length - 1).split('/').map(val => +val) : '' })" v-permissions="['system:user:update']">编辑</el-button> <el-button type="text" @click="$refs.allocationEnterprises.open('分配企业', row)" v-if="[0,2].includes(userInfo.type)">分配企业</el-button> <el-button type="text" icon="el-icon-s-custom" @click="$refs.roleConfigWindow.open(row)" v-permissions="['system:user:createUserRole']">配置角色</el-button> <el-button type="text" @click="$refs.resetPwdWindow.open(row)" v-permissions="['system:user:resetPwd']">重置密码</el-button> <!-- <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">删除</el-button>--> </template> </el-table-column> </el-table> <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination" ></pagination> </template> <!-- 新建/修改 --> <OperaUserWindow ref="operaUserWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/> <!-- 配置角色 --> <RoleConfigWindow ref="roleConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/> <!-- 重置密码 --> <ResetPwdWindow ref="resetPwdWindow"/> <!-- 分配企业 --> <allocationEnterprises ref="allocationEnterprises" @success="handlePageChange(tableData.pagination.pageIndex)"/> </TableLayout> </template> <script> import Pagination from '@/components/common/Pagination' import TableLayout from '@/layouts/TableLayout' import BaseTable from '@/components/base/BaseTable' import OperaUserWindow from '@/components/system/user/OperaUserWindow' import allocationEnterprises from '@/components/system/user/allocationEnterprises' import RoleConfigWindow from '@/components/system/user/RoleConfigWindow' import ResetPwdWindow from '@/components/system/user/ResetPwdWindow' import DepartmentSelect from '@/components/common/DepartmentSelect' import PositionSelect from '@/components/common/PositionSelect' import { updUserStatus, updateHead } from '@/api/system/user' import { mapState } from 'vuex' export default { name: 'SystemUser', extends: BaseTable, computed: { ...mapState(['userInfo']) }, components: { allocationEnterprises, PositionSelect, DepartmentSelect, ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination }, data () { return { // 搜索 searchForm: { username: '', // 名字 realname: '', // 姓名 rootDeptId: null, // 部门ID positionId: null, // 岗位ID mobile: '', // 手机号码 type: '', companyDepartmentPathName: '' // 部门名称 import Pagination from '@/components/common/Pagination' import TableLayout from '@/layouts/TableLayout' import BaseTable from '@/components/base/BaseTable' import OperaUserWindow from '@/components/system/user/OperaUserWindow' import allocationEnterprises from '@/components/system/user/allocationEnterprises' import RoleConfigWindow from '@/components/system/user/RoleConfigWindow' import ResetPwdWindow from '@/components/system/user/ResetPwdWindow' import DepartmentSelect from '@/components/common/DepartmentSelect' import PositionSelect from '@/components/common/PositionSelect' import { updUserStatus, updateHead } from '@/api/system/user' import { mapState } from 'vuex' export default { name: 'SystemUser', extends: BaseTable, computed: { ...mapState(['userInfo']) }, components: { allocationEnterprises, PositionSelect, DepartmentSelect, ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination }, data () { return { // 搜索 searchForm: { username: '', // 名字 realname: '', // 姓名 rootDeptId: null, // 部门ID positionId: null, // 岗位ID mobile: '', // 手机号码 type: '', companyDepartmentPathName: '' // 部门名称 } } }, created () { this.config({ module: '用户', api: '/system/user', 'field.main': 'realname', sorts: [{ property: 'CREATE_TIME', direction: 'DESC' }] }) this.searchForm.type = this.userInfo.type this.search() }, methods: { // 设置取消主管 setHeadStatus(e, row) { updateHead({ id: row.id, headStatus: row.headStatus }) .then(res => { this.search() }) }, changeStatus(status, row) { updUserStatus({ id: row.id, status }).then(res => { this.search() }).catch(err => { row.status = row.status === 0 ? 1 : 0 }) } } }, created () { this.config({ module: '用户', api: '/system/user', 'field.main': 'realname', sorts: [{ property: 'CREATE_TIME', direction: 'DESC' }] }) this.searchForm.type = this.userInfo.type this.search() }, methods: { // 设置取消主管 setHeadStatus(e, row) { updateHead({ id: row.id, headStatus: row.headStatus }) .then(res => { this.search() }) }, changeStatus(status, row) { updUserStatus({ id: row.id, status }).then(res => { this.search() }).catch(err => { row.status = row.status === 0 ? 1 : 0 }) } } } </script> <style scoped lang="scss"> @import "@/assets/style/variables.scss"; // 列表头像处理 .table-column-avatar { img { width: 48px; } } @import "@/assets/style/variables.scss"; // 列表头像处理 .table-column-avatar { img { width: 48px; } } </style>