修改用户分组和工单部分多页面导航问题

This commit is contained in:
龙运模 2024-10-28 15:57:44 +08:00
parent 527af5d028
commit c72b3eb885
17 changed files with 174 additions and 88 deletions

View File

@ -97,8 +97,15 @@ export default {
return await http.post(this.url, params); return await http.post(this.url, params);
}, },
}, },
status:{
url: `${config.API_URL}/repair.status.list`,
name: "维修业务状态",
post: async function (params) {
return await http.post(this.url,params);
}
},
field:{ field:{
url: `${config.API_URL}/`, url: `${config.API_URL}/repair.order.field.list`,
name: "维修工单检索", name: "维修工单检索",
post: async function (params) { post: async function (params) {
return await http.post(this.url,params); return await http.post(this.url,params);

View File

@ -114,6 +114,7 @@ export { default as FinanceMag } from './menu/Finance.vue'
export { default as Reports } from './menu/ReportForms.vue' export { default as Reports } from './menu/ReportForms.vue'
export { default as ShipmentMag } from './menu/Shipment.vue' export { default as ShipmentMag } from './menu/Shipment.vue'
export { default as Inventory } from './menu/Stock.vue' export { default as Inventory } from './menu/Stock.vue'
export { default as Service } from './menu/Service.vue'
// 二层菜单 // 二层菜单
export { default as Controller } from './childMenu/Console.vue' export { default as Controller } from './childMenu/Console.vue'
export { default as CostFeeRecords } from './childMenu/CostControl.vue' export { default as CostFeeRecords } from './childMenu/CostControl.vue'

View File

@ -0,0 +1,13 @@
<template>
<svg t="1719388001057" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2117" width="200" height="200"><path d="M949.23434667 425.71093333a88.63744 88.63744 0 0 0-67.33824-62.53226666c-66.46442667-13.76256-90.00277333-54.72256-68.64896-119.33013334a89.12896 89.12896 0 0 0-20.31616-89.78432c-37.95626667-39.54005333-95.51872-72.96341333-148.71210667-86.28906666a88.4736 88.4736 0 0 0-87.70901333 27.30666666c-45.00138667 50.89962667-92.18730667 50.89962667-137.18869334 0a88.30976 88.30976 0 0 0-87.70901333-27.30666666c-53.13877333 13.32565333-110.64661333 46.74901333-148.71210667 86.28906666a89.18357333 89.18357333 0 0 0-20.31616 89.78432c21.40842667 64.7168-2.07530667 105.6768-68.64896 119.33013334A88.80128 88.80128 0 0 0 26.65130667 425.71093333c-15.07328 52.86570667-15.07328 119.6032 0 172.57813334a88.80128 88.80128 0 0 0 67.28362666 62.53226666c66.46442667 13.76256 90.00277333 54.72256 68.64896 119.33013334a89.18357333 89.18357333 0 0 0 20.31616 89.78432c38.06549333 39.54005333 95.68256 72.85418667 148.82133334 86.28906666a88.4736 88.4736 0 0 0 87.6544-27.30666666c45.056-50.89962667 92.18730667-50.89962667 137.24330666 0 21.84533333 24.79445333 55.59637333 35.28021333 87.6544 27.30666666 53.13877333-13.32565333 110.75584-46.74901333 148.82133334-86.28906666 22.9376-23.81141333 30.69269333-58.43626667 20.31616-89.78432-21.40842667-64.7168 2.12992-105.6768 68.64896-119.33013334a88.63744 88.63744 0 0 0 67.39285333-62.53226666c14.96405333-52.86570667 14.96405333-119.71242667-0.21845333-172.57813334zM487.97013333 718.65685333A206.27456 206.27456 0 0 1 282.07786667 512a206.27456 206.27456 0 0 1 205.89226666-206.65685333A206.27456 206.27456 0 0 1 693.8624 512a206.27456 206.27456 0 0 1-205.89226667 206.65685333z" p-id="2118"></path><path d="M635.04384 512c0 39.37621333-15.29173333 76.45866667-43.14453333 104.31146667a145.48992 145.48992 0 0 1-103.92917334 43.30837333c-39.26698667 0-76.1856-15.29173333-103.98378666-43.25376-27.8528-27.8528-43.08992-64.98986667-43.08992-104.36608 0-39.37621333 15.29173333-76.45866667 43.14453333-104.31146667a145.48992 145.48992 0 0 1 103.92917333-43.30837333c39.21237333 0 76.1856 15.29173333 103.92917334 43.25376 27.8528 27.8528 43.14453333 64.98986667 43.14453333 104.36608z" p-id="2119"></path></svg>
</template>
<script>
export default {
name: "Service"
}
</script>
<style scoped>
</style>

View File

@ -108,7 +108,7 @@ export default {
box-shadow: 0 6px 4px rgba(180, 207, 235, 0.25); box-shadow: 0 6px 4px rgba(180, 207, 235, 0.25);
//border: 1px solid var(--el-border-color-light); //border: 1px solid var(--el-border-color-light);
.item{ .item{
padding: 0 10px;text-align: center; padding: 0 10px;text-align: left;
} }
.item:hover{ .item:hover{
background-color: var(--el-color-primary-light-9); background-color: var(--el-color-primary-light-9);

View File

@ -15,16 +15,16 @@ const routes = [
title: "系统搜索", title: "系统搜索",
}, },
}, },
{ // {
name: "repair-info", // name: "repair-info",
path:"/repair-info", // path:"/repair-info",
component:"order/repairList/repair-info", // component:"order/repairList/repair-info",
meta: { // meta: {
code:"", // code:"",
icon: "sc-icon-Home", // icon: "sc-icon-Home",
title: "维修明细", // title: "维修明细",
}, // },
}, // },
{ {

View File

@ -37,6 +37,7 @@
--el-order-color-3:#0DA525; --el-order-color-3:#0DA525;
--el-order-color-4:#FFB103; --el-order-color-4:#FFB103;
--el-order-color-5:#E81B1B; --el-order-color-5:#E81B1B;
--el-order-color-100:#57C23A;
} }
.el-table{ .el-table{

View File

@ -17,7 +17,7 @@ import document from './document'
import share from './share' import share from './share'
export default { export default {
name: 'index', name: 'manager',
components: { components: {
document, document,
share share

View File

@ -182,7 +182,7 @@
import scSelect from '/src/components/scSearchSelect'; import scSelect from '/src/components/scSearchSelect';
import {eventBus} from "@/utils/eventBus"; import {eventBus} from "@/utils/eventBus";
export default { export default {
name: "", name: "view-search",
components:{ components:{
scSelect scSelect
}, },

View File

@ -176,6 +176,7 @@ import config from "@/config/table";
import {eventBus} from "@/utils/eventBus" import {eventBus} from "@/utils/eventBus"
export default { export default {
name:"dataConfirm",
components: { components: {
columnSetting, columnSetting,
emailSync emailSync

View File

@ -39,7 +39,7 @@
<sc-table-column label="序号" align="center" type="index"></sc-table-column> <sc-table-column label="序号" align="center" type="index"></sc-table-column>
<template #business_status="scope"> <template #business_status="scope">
<span v-for="(item,ind) in statusList" :key="ind"> <span v-for="(item,ind) in statusList" :key="ind">
<span :style="{color:item.value==1?`var(--el-order-color-1)`:item.value==2?`var(--el-order-color-2)`:item.value==3?`var(--el-order-color-3)`:item.value==4?`var(--el-order-color-4)`:`var(--el-order-color-5)`}" <span :style="{color:item.value==1?`var(--el-order-color-1)`:item.value==2?`var(--el-order-color-2)`:item.value==3?`var(--el-order-color-3)`:item.value==4?`var(--el-order-color-4)`:`var(--el-order-color-100)`}"
v-if="item.value == scope.row.business_status">{{item.label}}</span> v-if="item.value == scope.row.business_status">{{item.label}}</span>
</span> </span>
</template> </template>
@ -92,6 +92,7 @@
import {eventBus} from "@/utils/eventBus"; import {eventBus} from "@/utils/eventBus";
import flow from "./components/flow" import flow from "./components/flow"
export default { export default {
name:"orderList",
components: { components: {
flow flow
}, },

View File

@ -1,6 +1,6 @@
<template> <template>
<el-dialog :title="titleMap[mode]" v-model="visible" :width="400" draggable destroy-on-close @closed="$emit('closed')"> <el-dialog :title="titleMap[mode]" v-model="visible" :width="400" draggable destroy-on-close @closed="$emit('closed')">
<el-form :model="form" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-width="90px" label-position="right"> <el-form :model="form" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-width="105px" label-position="right">
<el-col :span="24" :sm="24"> <el-col :span="24" :sm="24">
<el-form-item label="维修日期" prop="schedule_date"> <el-form-item label="维修日期" prop="schedule_date">
<el-date-picker v-model="form.schedule_date" type="date" placeholder="请选择维修日期" clearable value-format="YYYY-MM-DD"></el-date-picker> <el-date-picker v-model="form.schedule_date" type="date" placeholder="请选择维修日期" clearable value-format="YYYY-MM-DD"></el-date-picker>

View File

@ -21,15 +21,17 @@
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" row-key="id" stripe :size="size" @selection-change="selectionChange"> <scTable ref="table" :apiObj="list.apiObj" :column="list.column" row-key="id" stripe :size="size" @selection-change="selectionChange">
<el-table-column type="selection" align="center" width="40"></el-table-column> <el-table-column type="selection" align="center" width="40"></el-table-column>
<sc-table-column label="序号" align="center" type="index"></sc-table-column> <sc-table-column label="序号" align="center" type="index"></sc-table-column>
<template #business_status="scope">
<span v-for="(item,ind) in statusList" :key="ind">
<span :style="{color:item.value==1?`var(--el-order-color-1)`:item.value==2?`var(--el-order-color-2)`:item.value==3?`var(--el-order-color-3)`:item.value==4?`var(--el-order-color-4)`:`var(--el-order-color-5)`}"
v-if="item.value == scope.row.business_status">{{item.label}}</span>
</span>
</template>
<template #repair_date="scope">{{scope.row.repair_order && scope.row.repair_order.repair_date?scope.row.repair_order.repair_date:''}}</template> <template #repair_date="scope">{{scope.row.repair_order && scope.row.repair_order.repair_date?scope.row.repair_order.repair_date:''}}</template>
<template #schedule_date="scope">{{scope.row.repair_order && scope.row.repair_order.schedule_date?scope.row.repair_order.schedule_date:''}}</template> <template #schedule_date="scope">{{scope.row.repair_order && scope.row.repair_order.schedule_date?scope.row.repair_order.schedule_date:''}}</template>
<template #repair_status="scope">{{scope.row.repair_order && scope.row.repair_order.repair_status?scope.row.repair_order.repair_status:''}}</template> <template #repair_status="scope">
<span v-if="scope.row.repair_order && scope.row.repair_order.repair_status">
<span v-for="(item,ind) in statusList" :key="ind">
<span :style="{color:item.value==1?`var(--el-order-color-1)`:item.value==2?`var(--el-order-color-2)`:item.value==3?`var(--el-order-color-3)`:item.value==4?`var(--el-order-color-4)`:`var(--el-order-color-100)`}"
v-if="item.value == scope.row.repair_order.repair_status">{{item.label}}</span>
</span>
</span>
<span v-else :style="{color:`var(--el-order-color-1)`}">待确认</span>
</template>
<el-table-column label="操作" fixed="right" align="center" width="150"> <el-table-column label="操作" fixed="right" align="center" width="150">
<template #default="scope"> <template #default="scope">
<el-dropdown> <el-dropdown>
@ -61,6 +63,7 @@ import confirmDialog from './confirmOrder'
import {eventBus} from "@/utils/eventBus"; import {eventBus} from "@/utils/eventBus";
export default { export default {
name:"orderPlan",
components: { components: {
flow, flow,
confirmDialog, confirmDialog,
@ -95,6 +98,9 @@ export default {
statusList:[], statusList:[],
} }
}, },
mounted() {
this.getStatusList();
},
methods: { methods: {
searchShowClick(){ searchShowClick(){
this.searchShow = !this.searchShow; this.searchShow = !this.searchShow;
@ -104,6 +110,13 @@ export default {
} }
}) })
}, },
async getStatusList() {
const res = await this.$API.orders.order.repair.status.post();
if (res.code == 200) {
this.statusList = res.data;
}
},
async getSelectData(item) { async getSelectData(item) {
let {data, params} = item; let {data, params} = item;
this.params = params; this.params = params;
@ -115,7 +128,7 @@ export default {
searchParams.field = data.code[0]; searchParams.field = data.code[0];
} }
if (data.type == 'select') { if (data.type == 'select') {
const res = await this.$API.orders.order.maintenance.field.post(searchParams); const res = await this.$API.orders.order.repair.field.post(searchParams);
if (res.code == 200) { if (res.code == 200) {
if (res.data && res.data.length > 0) { if (res.data && res.data.length > 0) {
res.data.forEach(item => { res.data.forEach(item => {

View File

@ -122,7 +122,7 @@
<script> <script>
export default { export default {
name: "", name: "repairInfo",
data(){ data(){
return{ return{
size:'small', size:'small',

View File

@ -18,7 +18,7 @@
<sc-table-column label="序号" align="center" type="index"></sc-table-column> <sc-table-column label="序号" align="center" type="index"></sc-table-column>
<template #repair_status="scope"> <template #repair_status="scope">
<span v-for="(item,ind) in statusList" :key="ind"> <span v-for="(item,ind) in statusList" :key="ind">
<span :style="{color:item.value==1?`var(--el-order-color-1)`:item.value==2?`var(--el-order-color-2)`:item.value==3?`var(--el-order-color-3)`:item.value==4?`var(--el-order-color-4)`:`var(--el-order-color-5)`}" <span :style="{color:item.value==1?`var(--el-order-color-1)`:item.value==2?`var(--el-order-color-2)`:item.value==3?`var(--el-order-color-3)`:item.value==4?`var(--el-order-color-4)`:`var(--el-order-color-100)`}"
v-if="item.value == scope.row.repair_status">{{item.label}}</span> v-if="item.value == scope.row.repair_status">{{item.label}}</span>
</span> </span>
</template> </template>
@ -48,22 +48,16 @@
</el-main> </el-main>
</el-container> </el-container>
<!-- <save-dialog v-if="dialog.save" ref="saveDialog" @success="handleSaveSuccess" @closed="dialog.save=false"></save-dialog>-->
<!-- <see-dialog v-if="dialog.show" ref="showDialog" @closed="dialog.show=false"></see-dialog>-->
</template> </template>
<script> <script>
// import saveDialog from './save'
// import seeDialog from './see'
import flow from '../orderList/components/flow' import flow from '../orderList/components/flow'
import {eventBus} from "@/utils/eventBus"; import {eventBus} from "@/utils/eventBus";
export default { export default {
name:"repairList",
components: { components: {
flow, flow,
// saveDialog,
// seeDialog,
}, },
data() { data() {
return { return {
@ -115,7 +109,7 @@ export default {
}, },
async getStatusList() { async getStatusList() {
const res = await this.$API.orders.order.maintenance.status.post(); const res = await this.$API.orders.order.repair.status.post();
if (res.code == 200) { if (res.code == 200) {
this.statusList = res.data; this.statusList = res.data;
} }
@ -140,7 +134,7 @@ export default {
searchParams.field = data.code[0]; searchParams.field = data.code[0];
} }
if (data.type == 'select') { if (data.type == 'select') {
const res = await this.$API.orders.order.maintenance.field.post(searchParams); const res = await this.$API.orders.order.repair.field.post(searchParams);
if (res.code == 200) { if (res.code == 200) {
if (res.data && res.data.length > 0) { if (res.data && res.data.length > 0) {
res.data.forEach(item => { res.data.forEach(item => {
@ -165,19 +159,12 @@ export default {
}, },
// //
table_upkeep(row){ table_upkeep(row){
eventBus.$emit('tagClose','/repair-info',{id:row.order_id}); eventBus.$emit('tagClose','/order/repair-info',{id:row.order_id});
}, },
// //
table_show(row){ table_show(row){
eventBus.$emit('tagClose','/order/order-info',{id:row.order_id}); eventBus.$emit('tagClose','/order/order-info',{id:row.order_id});
}, },
//
table_edit(row){
this.dialog.save = true
this.$nextTick(() => {
this.$refs.saveDialog.open('edit').setData(row);
})
},
// //
table_logs(row){ table_logs(row){
eventBus.$emit('tagClose','/order/order-logs',{id:row.id,type:2}); eventBus.$emit('tagClose','/order/order-logs',{id:row.id,type:2});

View File

@ -1,11 +1,11 @@
<template> <template>
<el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')"> <el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')">
<el-form :model="form" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-width="100px"> <el-form :model="form" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-width="100px">
<el-form-item label="上级部门" prop="parent_id"> <el-form-item label="上级分组" prop="parent_id">
<el-cascader v-model="form.parent_id" :options="depts" :props="deptsProps" :show-all-levels="false" clearable style="width: 100%;"></el-cascader> <el-cascader v-model="form.parent_id" :options="depts" :props="deptsProps" :show-all-levels="false" clearable style="width: 100%;"></el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="部门名称" prop="name"> <el-form-item label="分组名称" prop="name">
<el-input v-model="form.name" placeholder="请输入部门名称" clearable></el-input> <el-input v-model="form.name" placeholder="请输入分组名称" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="active_status"> <el-form-item label="状态" prop="active_status">
<el-switch v-model="form.active_status" :active-value="true" :inactive-value="false"></el-switch> <el-switch v-model="form.active_status" :active-value="true" :inactive-value="false"></el-switch>

View File

@ -1,8 +1,29 @@
<template> <template>
<el-container class="mainBox"> <el-container class="mainBox">
<el-aside width="200px" v-loading="showGroupLoading">
<el-container>
<el-header>
<el-input placeholder="输入关键字进行过滤" :size="size" v-model="groupFilterText" clearable></el-input>
</el-header>
<el-main class="treeMain nopadding">
<el-tree ref="group" class="menu" node-key="id" :data="group" :current-node-key="''" :highlight-current="true" :expand-on-click-node="false" :filter-node-method="groupFilterNode" @node-click="groupClick">
<template #default="{ node, data }">
<span class="custom-tree-node userTree">
<span>{{ node.label }}</span>
<span class="btnBox" v-if="data.id!==''">
<el-icon class="btn edit" size="14px" v-auth="'updateDept'" @click.stop="dept_edit(data)"><sc-icon-Edit/></el-icon>
<el-icon class="btn del" size="14px" v-auth="'delDept'" @click.stop="dept_del(data)"><sc-icon-Delete/></el-icon>
</span>
</span>
</template>
</el-tree>
</el-main>
</el-container>
</el-aside>
<el-container class="mainHeaderNoBorderPadding"> <el-container class="mainHeaderNoBorderPadding">
<el-header style="padding-left: 10px;"> <el-header style="padding-left: 10px;">
<div class="left-panel"> <div class="left-panel">
<el-button type="primary" plain v-auth="'addDept'" :size="size" icon="el-icon-plus" @click="addDept">新增分组</el-button>
<el-button type="primary" v-auth="'userCreate'" :size="size" icon="el-icon-plus" @click="add">新增用户</el-button> <el-button type="primary" v-auth="'userCreate'" :size="size" icon="el-icon-plus" @click="add">新增用户</el-button>
<el-button type="danger" v-auth="'delUser'" plain :size="size" icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button> <el-button type="danger" v-auth="'delUser'" plain :size="size" icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button>
<el-button type="primary" v-auth="'addUserRoles'" plain :size="size" :disabled="selection.length==0" @click="role">分配角色</el-button> <el-button type="primary" v-auth="'addUserRoles'" plain :size="size" :disabled="selection.length==0" @click="role">分配角色</el-button>
@ -103,6 +124,7 @@
<review-dialog v-if="dialog.review" ref="reviewDialog" @success="handleSuccess" @closed="dialog.review=false"></review-dialog> <review-dialog v-if="dialog.review" ref="reviewDialog" @success="handleSuccess" @closed="dialog.review=false"></review-dialog>
<re-pwd-dialog v-if="dialog.rePwdD" ref="rePwdDialog" @success="handleSuccess" @closed="dialog.rePwdD=false"></re-pwd-dialog> <re-pwd-dialog v-if="dialog.rePwdD" ref="rePwdDialog" @success="handleSuccess" @closed="dialog.rePwdD=false"></re-pwd-dialog>
<dis-role-dialog v-if="dialog.role" ref="diRoleDialog" @success="handleSuccess" @closed="dialog.role=false"></dis-role-dialog> <dis-role-dialog v-if="dialog.role" ref="diRoleDialog" @success="handleSuccess" @closed="dialog.role=false"></dis-role-dialog>
<dept-mag-dialog v-if="dialog.deptMsg" ref="deptMagDialog" @success="handleSuccess" @closed="dialog.deptMsg=false"></dept-mag-dialog>
</template> </template>
@ -111,10 +133,12 @@
import reviewDialog from './review' import reviewDialog from './review'
import rePwdDialog from './rePwd' import rePwdDialog from './rePwd'
import disRoleDialog from './role' import disRoleDialog from './role'
import deptMagDialog from '/src/views/setting/deptMag/save'
export default { export default {
name:"user",
components: { components: {
saveDialog, rePwdDialog, disRoleDialog, reviewDialog saveDialog, rePwdDialog, disRoleDialog, reviewDialog, deptMagDialog
}, },
data() { data() {
return { return {
@ -123,7 +147,8 @@
save: false, save: false,
review: false, review: false,
rePwdD: false, rePwdD: false,
role: false role: false,
deptMsg:false,
}, },
showGroupLoading: false, showGroupLoading: false,
groupFilterText: '', groupFilterText: '',
@ -153,7 +178,7 @@
} }
}, },
mounted() { mounted() {
// this.getGroup() this.getGroup()
this.auditStatus(); this.auditStatus();
this.userType(); this.userType();
}, },
@ -206,6 +231,31 @@
this.$refs.diRoleDialog.open().setData(row) this.$refs.diRoleDialog.open().setData(row)
}) })
}, },
//
addDept(){
this.dialog.deptMsg = true
this.$nextTick(() => {
this.$refs.deptMagDialog.open()
})
},
dept_edit(row){
this.dialog.deptMsg = true
this.$nextTick(() => {
this.$refs.deptMagDialog.open('edit').setData(row)
})
},
dept_del(row){
this.$confirm(`确定删除 ${row.name} 吗?`, '提示', {
type: 'warning'
}).then(async () => {
const reqData = {ids: [row.id]};
const res = await this.$API.system.dept.delete.post(reqData);
if(res.code == 200){
await this.getGroup();
this.$message.success("删除成功")
}
}).catch(()=>{})
},
// //
add(){ add(){
this.dialog.save = true this.dialog.save = true
@ -323,16 +373,16 @@
} }
}, },
// //
// async getGroup(){ async getGroup(){
// this.showGroupLoading = true; this.showGroupLoading = true;
// const res = await this.$API.system.dept.active.post(); const res = await this.$API.system.dept.active.post();
// if(res.code == 200){ if(res.code == 200){
// const allNode = {id: '', label: ''}; const allNode = {id: '', label: '所有'};
// res.data.unshift(allNode); res.data.unshift(allNode);
// this.group = res.data; this.group = res.data;
// } }
// this.showGroupLoading = false; this.showGroupLoading = false;
// }, },
// //
groupFilterNode(value, data){ groupFilterNode(value, data){
if (!value) return true; if (!value) return true;
@ -386,11 +436,12 @@
// //
handleSuccess(data, mode){ handleSuccess(data, mode){
if(mode=='add'){ if(mode=='add'){
this.$refs.table.refresh(); this.getGroup();
}else if(mode=='edit'){ }else if(mode=='edit'){
this.$refs.table.tableData.filter(item => item.id===data.id ).forEach(item => { this.$refs.table.tableData.filter(item => item.id===data.id ).forEach(item => {
Object.assign(item, data) Object.assign(item, data)
}) });
this.getGroup();
} }
this.$refs.table.refresh(); this.$refs.table.refresh();
} }
@ -403,4 +454,14 @@
display: flex;align-items: center; display: flex;align-items: center;
.round{width: 10px;height: 10px;display: inline-block;border-radius: 50%;margin-right: 4px;} .round{width: 10px;height: 10px;display: inline-block;border-radius: 50%;margin-right: 4px;}
} }
.userTree{
position: relative;
width: 100%;
.btnBox{
position: absolute;right: 10px;top: 2px;
.btn{margin: 0 3px;}
.btn.edit{color: var(--el-color-primary)}
.btn.del{color: var(--el-color-danger)}
}
}
</style> </style>

View File

@ -39,6 +39,15 @@
<el-form-item label="电子邮件" prop="email"> <el-form-item label="电子邮件" prop="email">
<el-input v-model="form.email" placeholder="请填写电子邮件" clearable></el-input> <el-input v-model="form.email" placeholder="请填写电子邮件" clearable></el-input>
</el-form-item> </el-form-item>
</div>
</div>
<div class="cardBoxForm">
<div class="title">角色和分组</div>
<div class="comBox">
<el-form-item label="所属分组" prop="dept_id">
<el-cascader v-model="form.dept_id" :options="depts" :props="deptsProps" placeholder="请选择分组" clearable style="width: 100%;"></el-cascader>
</el-form-item>
<el-form-item label="分配角色" prop="role_ids"> <el-form-item label="分配角色" prop="role_ids">
<el-select v-model="form.role_ids" multiple filterable placeholder="请选择角色" style="width: 100%"> <el-select v-model="form.role_ids" multiple filterable placeholder="请选择角色" style="width: 100%">
<el-option v-for="item in groups" :key="item.id" :label="item.label" :value="item.id"/> <el-option v-for="item in groups" :key="item.id" :label="item.label" :value="item.id"/>
@ -46,14 +55,6 @@
</el-form-item> </el-form-item>
</div> </div>
</div> </div>
<!-- <div class="cardBoxForm">-->
<!-- <div class="title">角色和部门</div>-->
<!-- <div class="comBox">-->
<!-- <el-form-item label="所属部门" prop="dept_id">-->
<!-- <el-cascader v-model="form.dept_id" :options="depts" :props="deptsProps" placeholder="请选择部门" clearable style="width: 100%;"></el-cascader>-->
<!-- </el-form-item>-->
<!-- </div>-->
<!-- </div>-->
</el-form> </el-form>
<template #footer> <template #footer>
<el-button @click="visible=false" > </el-button> <el-button @click="visible=false" > </el-button>
@ -85,13 +86,13 @@
email:"", email:"",
avatar: "", avatar: "",
password:"", password:"",
// dept_id: "", dept_id: "",
role_ids: [] role_ids: []
}, },
// //
rules: { rules: {
avatar:[ avatar:[
{required: true, message: '请上传头像'} {required: false, message: '请上传头像'}
], ],
login_name: [ login_name: [
{required: true, message: '请输入登录账号'} {required: true, message: '请输入登录账号'}
@ -127,9 +128,9 @@
} }
}} }}
], ],
// dept_id: [ dept_id: [
// {required: true, message: ''} {required: false, message: '请选择所属分组'}
// ], ],
role_ids: [ role_ids: [
{required: true, message: '请选择所属角色', trigger: 'change'} {required: true, message: '请选择所属角色', trigger: 'change'}
] ]
@ -141,17 +142,17 @@
multiple: true, multiple: true,
checkStrictly: true checkStrictly: true
}, },
// depts: [], depts: [],
// deptsProps: { deptsProps: {
// value: "id", value: "id",
// checkStrictly: false, checkStrictly: false,
// emitPath:false emitPath:false
// } }
} }
}, },
mounted() { mounted() {
this.getGroup() this.getGroup()
// this.getDept() this.getDept()
}, },
methods: { methods: {
// //
@ -167,12 +168,12 @@
this.groups = res.data.rows; this.groups = res.data.rows;
} }
}, },
// async getDept(){ async getDept(){
// const res = await this.$API.system.dept.active.post(); const res = await this.$API.system.dept.active.post();
// if(res.code == 200){ if(res.code == 200){
// this.depts = res.data; this.depts = res.data;
// } }
// }, },
parentParams(item){ parentParams(item){
this.form.avatar = item; this.form.avatar = item;
}, },
@ -202,7 +203,7 @@
this.form.mobile = data.mobile this.form.mobile = data.mobile
this.form.email = data.email this.form.email = data.email
this.form.avatar = data.avatar this.form.avatar = data.avatar
// this.form.dept_id = data.dept_id this.form.dept_id = data.dept_id
this.form.group = data.group this.form.group = data.group
this.form.role_ids = data.user_roles && data.user_roles.role_ids?data.user_roles.role_ids:[] this.form.role_ids = data.user_roles && data.user_roles.role_ids?data.user_roles.role_ids:[]