perf: 优化修改员工mac地址备注

This commit is contained in:
kuaifan 2023-01-30 17:46:02 +08:00
parent b2cbba08f2
commit b7686df7e6
3 changed files with 68 additions and 20 deletions

View File

@ -606,7 +606,7 @@ class UsersController extends AbstractController
// //
if ($getCheckinMac) { if ($getCheckinMac) {
$list->transform(function (User $user) { $list->transform(function (User $user) {
$user->checkin_macs = UserCheckinMac::whereUserid($user->userid)->orderBy('id')->pluck('mac'); $user->checkin_macs = UserCheckinMac::select(['id', 'mac', 'remark'])->whereUserid($user->userid)->orderBy('id')->get();
return $user; return $user;
}); });
} }
@ -673,13 +673,14 @@ class UsersController extends AbstractController
break; break;
case 'checkin_macs': case 'checkin_macs':
$list = explode(",", $data['checkin_macs']); $list = is_array($data['checkin_macs']) ? $data['checkin_macs'] : [];
$array = []; $array = [];
foreach ($list as $item) { foreach ($list as $item) {
$item = strtoupper($item); $item['mac'] = strtoupper($item['mac']);
if (Base::isMac($item)) { if (Base::isMac($item['mac'])) {
$array[$item] = [ $array[$item['mac']] = [
'mac' => $item, 'mac' => $item['mac'],
'remark' => $item['remark'],
]; ];
} }
} }

View File

@ -206,9 +206,24 @@
:title="$L('修改签到MAC地址')"> :title="$L('修改签到MAC地址')">
<Form :model="checkinMacEditData" label-width="auto" @submit.native.prevent> <Form :model="checkinMacEditData" label-width="auto" @submit.native.prevent>
<Alert type="error" style="margin-bottom:18px">{{$L(`正在进行帐号【ID:${checkinMacEditData.userid}${checkinMacEditData.nickname}】MAC地址修改。`)}}</Alert> <Alert type="error" style="margin-bottom:18px">{{$L(`正在进行帐号【ID:${checkinMacEditData.userid}${checkinMacEditData.nickname}】MAC地址修改。`)}}</Alert>
<FormItem :label="$L('MAC地址')"> <Row class="team-department-checkin-item">
<TagInput v-model="checkinMacEditData.checkin_macs"/> <Col span="12">{{$L('设备MAC地址')}}</Col>
</FormItem> <Col span="12">{{$L('备注')}}</Col>
</Row>
<Row v-for="(item, key) in checkinMacEditData.checkin_macs" :key="key" class="team-department-checkin-item">
<Col span="12">
<Input
v-model="item.mac"
:maxlength="20"
:placeholder="$L('请输入设备MAC地址')"
clearable
@on-clear="delCheckinDatum(key)"/>
</Col>
<Col span="12">
<Input v-model="item.remark" :maxlength="100" :placeholder="$L('备注')"/>
</Col>
</Row>
<Button type="default" icon="md-add" @click="addCheckinDatum">{{$L('添加设备')}}</Button>
</Form> </Form>
<div slot="footer" class="adaption"> <div slot="footer" class="adaption">
<Button type="default" @click="checkinMacEditShow=false">{{$L('取消')}}</Button> <Button type="default" @click="checkinMacEditShow=false">{{$L('取消')}}</Button>
@ -222,9 +237,6 @@
:title="$L('修改部门')"> :title="$L('修改部门')">
<Form :model="departmentEditData" label-width="auto" @submit.native.prevent> <Form :model="departmentEditData" label-width="auto" @submit.native.prevent>
<Alert type="error" style="margin-bottom:18px">{{$L(`正在进行帐号【ID:${departmentEditData.userid}${departmentEditData.nickname}】部门修改。`)}}</Alert> <Alert type="error" style="margin-bottom:18px">{{$L(`正在进行帐号【ID:${departmentEditData.userid}${departmentEditData.nickname}】部门修改。`)}}</Alert>
<FormItem :label="$L('原部门')">
<div style="line-height:24px;padding:4px 0" v-html="departmentEditData.old || '-'"></div>
</FormItem>
<FormItem :label="$L('修改部门')"> <FormItem :label="$L('修改部门')">
<Select v-model="departmentEditData.department" multiple :multiple-max="10" :placeholder="$L('留空为默认部门')"> <Select v-model="departmentEditData.department" multiple :multiple-max="10" :placeholder="$L('留空为默认部门')">
<Option v-for="(item, index) in departmentList" :value="item.id" :key="index">{{ item.name }}</Option> <Option v-for="(item, index) in departmentList" :value="item.id" :key="index">{{ item.name }}</Option>
@ -654,6 +666,11 @@ export default {
dialogLoad: false, dialogLoad: false,
dialogList: [], dialogList: [],
nullCheckinDatum: {
'mac': '',
'remark': '',
},
} }
}, },
created() { created() {
@ -667,19 +684,23 @@ export default {
if (checkin_macs.length === 0) { if (checkin_macs.length === 0) {
return h('div', '-'); return h('div', '-');
} else { } else {
const tmp = [] const desc = (item) => {
tmp.push(h('span', { if (item.remark) {
domProps: { return `${item.mac} (${item.remark})`
title: checkin_macs[0]
} }
}, checkin_macs[0])) return item.mac
}
const tmp = []
tmp.push(h('AutoTip', desc(checkin_macs[0])))
if (checkin_macs.length > 1) { if (checkin_macs.length > 1) {
checkin_macs = checkin_macs.splice(1) checkin_macs = checkin_macs.splice(1)
tmp.push(h('ETooltip', [ tmp.push(h('ETooltip', [
h('div', { h('div', {
slot: 'content', slot: 'content',
domProps: { domProps: {
innerHTML: checkin_macs.join("<br/>") innerHTML: checkin_macs.map(item => {
return desc(item)
}).join("<br/>")
} }
}), }),
h('div', { h('div', {
@ -800,8 +821,11 @@ export default {
type: 'checkin_macs', type: 'checkin_macs',
userid: row.userid, userid: row.userid,
nickname: row.nickname, nickname: row.nickname,
checkin_macs: (row.checkin_macs || []).join(','), checkin_macs: row.checkin_macs,
}; };
if (this.checkinMacEditData.checkin_macs.length === 0) {
this.addCheckinDatum();
}
this.checkinMacEditShow = true; this.checkinMacEditShow = true;
break; break;
@ -818,7 +842,6 @@ export default {
userid: row.userid, userid: row.userid,
nickname: row.nickname, nickname: row.nickname,
department: row.department.map(id => parseInt(id)), department: row.department.map(id => parseInt(id)),
old: departments.join("<br/>")
}; };
this.departmentEditShow = true; this.departmentEditShow = true;
break; break;
@ -1036,6 +1059,17 @@ export default {
this.dialogList = []; this.dialogList = [];
} }
}, },
addCheckinDatum() {
this.checkinMacEditData.checkin_macs.push($A.cloneJSON(this.nullCheckinDatum));
},
delCheckinDatum(key) {
this.checkinMacEditData.checkin_macs.splice(key, 1);
if (this.checkinMacEditData.checkin_macs.length === 0) {
this.addCheckinDatum();
}
},
} }
} }
</script> </script>

View File

@ -7,6 +7,7 @@
padding: 20px; padding: 20px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
overflow: auto;
.management-title { .management-title {
color: $primary-title-color; color: $primary-title-color;
@ -34,6 +35,7 @@
.management-box { .management-box {
flex: 1; flex: 1;
display: flex; display: flex;
min-width: 500px;
height: 0; height: 0;
.management-department { .management-department {
width: 239px; width: 239px;
@ -52,6 +54,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
cursor: pointer; cursor: pointer;
overflow: hidden;
&:hover, &:hover,
&.active { &.active {
background-color: #ecf5ff; background-color: #ecf5ff;
@ -145,6 +148,16 @@
} }
} }
.team-department-checkin-item {
margin-bottom: 12px;
> div {
padding-right: 12px;
&:last-child {
padding-right: 0;
}
}
}
.team-table-department-warp { .team-table-department-warp {
display: flex; display: flex;
align-items: center; align-items: center;