|
|
@ -20,7 +20,8 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div style="height: 504px;overflow: auto;scrollbar-width: none;-ms-overflow-style: none;"> |
|
|
|
<div style="height: 504px;overflow: auto;scrollbar-width: none;-ms-overflow-style: none;"> |
|
|
|
<el-tree class="org" ref="orgs" :data="orgs" :props="defaultProps" highlight-current :expand-on-click-node="false" default-expand-all node-key="id" @node-click="handleNodeClick"> |
|
|
|
<el-tree class="org" ref="orgs" :data="orgs" :props="defaultProps" highlight-current |
|
|
|
|
|
|
|
:expand-on-click-node="false" default-expand-all node-key="id" @node-click="handleNodeClick"> |
|
|
|
<span class="node-wrap" slot-scope="{ node, data }"> |
|
|
|
<span class="node-wrap" slot-scope="{ node, data }"> |
|
|
|
<div class="left"> |
|
|
|
<div class="left"> |
|
|
|
<img src="@/assets/images/node.png" alt=""> |
|
|
|
<img src="@/assets/images/node.png" alt=""> |
|
|
@ -33,10 +34,12 @@ |
|
|
|
<el-button v-auth class="org-btn" @click="() => editOrg(node, data)" type="text">编辑部门</el-button> |
|
|
|
<el-button v-auth class="org-btn" @click="() => editOrg(node, data)" type="text">编辑部门</el-button> |
|
|
|
</el-dropdown-item> |
|
|
|
</el-dropdown-item> |
|
|
|
<el-dropdown-item> |
|
|
|
<el-dropdown-item> |
|
|
|
<el-button v-auth="'新增部门'" class="org-btn add" @click="() => addOrg(node, data)" type="text">添加子部门</el-button> |
|
|
|
<el-button v-auth="'新增部门'" class="org-btn add" @click="() => addOrg(node, data)" |
|
|
|
|
|
|
|
type="text">添加子部门</el-button> |
|
|
|
</el-dropdown-item> |
|
|
|
</el-dropdown-item> |
|
|
|
<el-dropdown-item> |
|
|
|
<el-dropdown-item> |
|
|
|
<el-button v-auth="'删除部门'" class="org-btn del" @click="() => delOrg(node, data)" type="text">删除</el-button> |
|
|
|
<el-button v-auth="'删除部门'" class="org-btn del" @click="() => delOrg(node, data)" |
|
|
|
|
|
|
|
type="text">删除</el-button> |
|
|
|
</el-dropdown-item> |
|
|
|
</el-dropdown-item> |
|
|
|
</el-dropdown-menu> |
|
|
|
</el-dropdown-menu> |
|
|
|
</el-dropdown> |
|
|
|
</el-dropdown> |
|
|
@ -44,26 +47,16 @@ |
|
|
|
</el-tree> |
|
|
|
</el-tree> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<el-dialog |
|
|
|
<el-dialog :title="orgForm.id ? '编辑' : '新增' + '部门'" :visible.sync="orgVisible" :close-on-click-modal="false" |
|
|
|
:title="orgForm.id ? '编辑' : '新增' + '部门'" |
|
|
|
width="50%"> |
|
|
|
:visible.sync="orgVisible" |
|
|
|
|
|
|
|
:close-on-click-modal="false" |
|
|
|
|
|
|
|
width="50%" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<el-form v-if="orgVisible" ref="orgForm" :model="orgForm" :rules="orgRules" label-width="100px"> |
|
|
|
<el-form v-if="orgVisible" ref="orgForm" :model="orgForm" :rules="orgRules" label-width="100px"> |
|
|
|
<el-form-item label="部门名称" prop="name"> |
|
|
|
<el-form-item label="部门名称" prop="name"> |
|
|
|
<el-input v-model.trim="orgForm.name" placeholder="请输入"></el-input> |
|
|
|
<el-input v-model.trim="orgForm.name" placeholder="请输入"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="上级部门"> |
|
|
|
<el-form-item label="上级部门"> |
|
|
|
<span v-if="orgForm.pidName">{{ orgForm.pidName }}</span> |
|
|
|
<span v-if="orgForm.pidName">{{ orgForm.pidName }}</span> |
|
|
|
<el-cascader |
|
|
|
<el-cascader v-else :options="orgListDia" v-model="cascaderValue" :props="cascaderProps" clearable |
|
|
|
v-else |
|
|
|
style="width: 100%"> |
|
|
|
:options="orgListDia" |
|
|
|
|
|
|
|
v-model="cascaderValue" |
|
|
|
|
|
|
|
:props="cascaderProps" |
|
|
|
|
|
|
|
clearable |
|
|
|
|
|
|
|
style="width: 100%" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
</el-cascader> |
|
|
|
</el-cascader> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
</el-form> |
|
|
@ -95,32 +88,39 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<el-table :data="list" class="table" ref="table" @selection-change="handleSelectionChange" row-key="id"> |
|
|
|
<el-table :data="list" class="table" ref="table" @selection-change="handleSelectionChange" row-key="id"> |
|
|
|
<el-table-column v-if="settings[0].show" type="selection" width="55" :reserve-selection="true"></el-table-column> |
|
|
|
<el-table-column v-if="settings[0].show" type="selection" width="55" |
|
|
|
|
|
|
|
:reserve-selection="true"></el-table-column> |
|
|
|
<el-table-column type="index" width="60" label="序号"></el-table-column> |
|
|
|
<el-table-column type="index" width="60" label="序号"></el-table-column> |
|
|
|
<el-table-column v-if="settings[1].show" prop="realName" label="员工姓名" min-width="100"></el-table-column> |
|
|
|
<el-table-column v-if="settings[1].show" prop="realName" label="员工姓名" min-width="100"></el-table-column> |
|
|
|
<el-table-column v-if="settings[2].show" prop="username" label="账号" min-width="100"></el-table-column> |
|
|
|
<el-table-column v-if="settings[2].show" prop="username" label="账号" min-width="100"></el-table-column> |
|
|
|
<el-table-column v-if="settings[3].show" prop="jobNumber" label="工号" min-width="100"></el-table-column> |
|
|
|
<el-table-column v-if="settings[3].show" prop="jobNumber" label="工号" min-width="100"></el-table-column> |
|
|
|
<el-table-column v-if="settings[4].show" prop="phone" label="手机号" min-width="100" show-overflow-tooltip></el-table-column> |
|
|
|
<el-table-column v-if="settings[4].show" prop="phone" label="手机号" min-width="100" |
|
|
|
<el-table-column v-if="settings[5].show" prop="deptArchitectureName" label="所在部门" min-width="100"></el-table-column> |
|
|
|
show-overflow-tooltip></el-table-column> |
|
|
|
|
|
|
|
<el-table-column v-if="settings[5].show" prop="deptArchitectureName" label="所在部门" |
|
|
|
|
|
|
|
min-width="100"></el-table-column> |
|
|
|
<el-table-column v-if="settings[6].show" prop="createTime" label="创建日期" min-width="150"></el-table-column> |
|
|
|
<el-table-column v-if="settings[6].show" prop="createTime" label="创建日期" min-width="150"></el-table-column> |
|
|
|
<el-table-column v-if="settings[7].show" prop="roleName" label="授权角色" show-overflow-tooltip min-width="100"></el-table-column> |
|
|
|
<el-table-column v-if="settings[7].show" prop="roleName" label="授权角色" show-overflow-tooltip |
|
|
|
|
|
|
|
min-width="100"></el-table-column> |
|
|
|
<el-table-column v-if="settings[8].show" prop="groupName" label="用户组" min-width="100"></el-table-column> |
|
|
|
<el-table-column v-if="settings[8].show" prop="groupName" label="用户组" min-width="100"></el-table-column> |
|
|
|
<el-table-column v-if="settings[9].show" prop="lastLoginTime" label="最后登录时间" min-width="150"></el-table-column> |
|
|
|
<el-table-column v-if="settings[9].show" prop="lastLoginTime" label="最后登录时间" min-width="150"></el-table-column> |
|
|
|
<el-table-column v-if="settings[10].show" label="操作" width="180"> |
|
|
|
<el-table-column v-if="settings[10].show" label="操作" width="180"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button v-auth type="text" @click="queryStaff(scope.row,true)">查看</el-button> |
|
|
|
<el-button v-auth type="text" @click="queryStaff(scope.row, true)">查看</el-button> |
|
|
|
<el-button v-auth type="text" @click="queryStaff(scope.row,false)">编辑</el-button> |
|
|
|
<el-button v-auth type="text" @click="queryStaff(scope.row, false)">编辑</el-button> |
|
|
|
<el-button v-auth type="text" @click="resetPassword(scope.row)">重置密码</el-button> |
|
|
|
<el-button v-auth type="text" @click="resetPassword(scope.row)">重置密码</el-button> |
|
|
|
<el-button v-auth type="text" @click="delStaff(scope.row)">删除</el-button> |
|
|
|
<el-button v-auth type="text" @click="delStaff(scope.row)">删除</el-button> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</el-table> |
|
|
|
<div class="pagination"> |
|
|
|
<div class="pagination"> |
|
|
|
<el-pagination background @current-change="currentChange" :current-page="page" layout="total, prev, pager, next" :total="total"></el-pagination> |
|
|
|
<el-pagination background @current-change="currentChange" :current-page="page" layout="total, prev, pager, next" |
|
|
|
|
|
|
|
:total="total"></el-pagination> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<el-dialog :title="isDetail ? '查看' : (form.id ? '编辑' : '新增') + '员工'" :visible.sync="staffVisible" width="500px" class="dialog" :close-on-click-modal="false" @close="closeStaff"> |
|
|
|
<el-dialog :title="isDetail ? '查看' : (form.id ? '编辑' : '新增') + '员工'" :visible.sync="staffVisible" width="500px" |
|
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="100px" :disabled="isDetail" style='margin-right: 60px;'> |
|
|
|
class="dialog" :close-on-click-modal="false" @close="closeStaff"> |
|
|
|
|
|
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="100px" :disabled="isDetail" |
|
|
|
|
|
|
|
style='margin-right: 60px;'> |
|
|
|
<el-form-item prop="jobNumber" label="工号"> |
|
|
|
<el-form-item prop="jobNumber" label="工号"> |
|
|
|
<el-input v-model.trim="form.jobNumber" placeholder="请输入工号"></el-input> |
|
|
|
<el-input v-model.trim="form.jobNumber" placeholder="请输入工号"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
@ -134,22 +134,14 @@ |
|
|
|
<el-select v-model="form.roleIds" multiple style="width: 100%"> |
|
|
|
<el-select v-model="form.roleIds" multiple style="width: 100%"> |
|
|
|
<template v-for="item in roleIds"> |
|
|
|
<template v-for="item in roleIds"> |
|
|
|
<!-- 不显示超管 --> |
|
|
|
<!-- 不显示超管 --> |
|
|
|
<el-option |
|
|
|
<el-option v-if="item.name !== '超级管理员'" :key="item.id" :label="item.name" :value="item.id"> |
|
|
|
v-if="item.name !== '超级管理员'" |
|
|
|
|
|
|
|
:key="item.id" |
|
|
|
|
|
|
|
:label="item.name" |
|
|
|
|
|
|
|
:value="item.id"> |
|
|
|
|
|
|
|
</el-option> |
|
|
|
</el-option> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="所在部门"> |
|
|
|
<el-form-item label="所在部门"> |
|
|
|
<el-cascader |
|
|
|
<el-cascader style="width: 100%" v-model="form.deptArchitectureId" :options="orgs" |
|
|
|
style="width: 100%" |
|
|
|
:props="casProps"></el-cascader> |
|
|
|
v-model="form.deptArchitectureId" |
|
|
|
|
|
|
|
:options="orgs" |
|
|
|
|
|
|
|
:props="casProps" |
|
|
|
|
|
|
|
></el-cascader> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="phone" label="手机号"> |
|
|
|
<el-form-item prop="phone" label="手机号"> |
|
|
|
<el-input v-model.trim="form.phone" placeholder="请输入手机号" maxlength="11"></el-input> |
|
|
|
<el-input v-model.trim="form.phone" placeholder="请输入手机号" maxlength="11"></el-input> |
|
|
@ -160,10 +152,7 @@ |
|
|
|
<el-form-item prop="groupId" label="用户组"> |
|
|
|
<el-form-item prop="groupId" label="用户组"> |
|
|
|
<el-select v-model="form.groupId" style="width: 100%"> |
|
|
|
<el-select v-model="form.groupId" style="width: 100%"> |
|
|
|
<template v-for="item in userGroups"> |
|
|
|
<template v-for="item in userGroups"> |
|
|
|
<el-option |
|
|
|
<el-option :key="item.id" :label="item.groupName" :value="item.id"> |
|
|
|
:key="item.id" |
|
|
|
|
|
|
|
:label="item.groupName" |
|
|
|
|
|
|
|
:value="item.id"> |
|
|
|
|
|
|
|
</el-option> |
|
|
|
</el-option> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
@ -180,19 +169,9 @@ |
|
|
|
<div style="margin-bottom: 10px;"> |
|
|
|
<div style="margin-bottom: 10px;"> |
|
|
|
<el-button type="primary" @click="download">模板下载<i class="el-icon-download el-icon--right"></i></el-button> |
|
|
|
<el-button type="primary" @click="download">模板下载<i class="el-icon-download el-icon--right"></i></el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<el-upload |
|
|
|
<el-upload name="file" accept=".xls,.xlsx" :on-remove="handleRemove" :on-error="uploadError" |
|
|
|
name="file" |
|
|
|
:on-success="uploadSuccess" :before-remove="beforeRemove" :limit="1" :on-exceed="handleExceed" |
|
|
|
accept=".xls,.xlsx" |
|
|
|
:action="this.api.importStaff" :file-list="uploadList" :headers="headers"> |
|
|
|
:on-remove="handleRemove" |
|
|
|
|
|
|
|
:on-error="uploadError" |
|
|
|
|
|
|
|
:on-success="uploadSuccess" |
|
|
|
|
|
|
|
:before-remove="beforeRemove" |
|
|
|
|
|
|
|
:limit="1" |
|
|
|
|
|
|
|
:on-exceed="handleExceed" |
|
|
|
|
|
|
|
:action="this.api.importStaff" |
|
|
|
|
|
|
|
:file-list="uploadList" |
|
|
|
|
|
|
|
:headers="headers" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<el-button type="primary" class="ml20">上传文件<i class="el-icon-upload2 el-icon--right"></i></el-button> |
|
|
|
<el-button type="primary" class="ml20">上传文件<i class="el-icon-upload2 el-icon--right"></i></el-button> |
|
|
|
</el-upload> |
|
|
|
</el-upload> |
|
|
|
<el-link v-if="uploadFaild" type="primary" @click="showFaild">部分数据导入失败,查看失败原因</el-link> |
|
|
|
<el-link v-if="uploadFaild" type="primary" @click="showFaild">部分数据导入失败,查看失败原因</el-link> |
|
|
@ -211,16 +190,16 @@ import util from '@/libs/util' |
|
|
|
import Setting from '@/setting' |
|
|
|
import Setting from '@/setting' |
|
|
|
import Axios from 'axios' |
|
|
|
import Axios from 'axios' |
|
|
|
export default { |
|
|
|
export default { |
|
|
|
data() { |
|
|
|
data () { |
|
|
|
const accountPass = (rule, value, callback) => { |
|
|
|
const accountPass = (rule, value, callback) => { |
|
|
|
if (value === '') { |
|
|
|
if (value === '') { |
|
|
|
callback(new Error('请输入账号')) |
|
|
|
callback(new Error('请输入账号')) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
const pattern = /^[A-Za-z0-9]*$/ |
|
|
|
const pattern = /^[A-Za-z0-9]*$/ |
|
|
|
if(pattern.test(value)){ |
|
|
|
if (pattern.test(value)) { |
|
|
|
this.accountChange() |
|
|
|
this.accountChange() |
|
|
|
callback() |
|
|
|
callback() |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
callback(new Error('请输入正确账号格式')) |
|
|
|
callback(new Error('请输入正确账号格式')) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -230,10 +209,10 @@ export default { |
|
|
|
callback(new Error('请输入工号')) |
|
|
|
callback(new Error('请输入工号')) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
const pattern = /^[A-Za-z0-9]*$/ |
|
|
|
const pattern = /^[A-Za-z0-9]*$/ |
|
|
|
if(pattern.test(value)){ |
|
|
|
if (pattern.test(value)) { |
|
|
|
this.worknumberChange() |
|
|
|
this.worknumberChange() |
|
|
|
callback() |
|
|
|
callback() |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
callback(new Error('请输入正确工号格式')) |
|
|
|
callback(new Error('请输入正确工号格式')) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -241,9 +220,9 @@ export default { |
|
|
|
const phonePass = (rule, value, callback) => { |
|
|
|
const phonePass = (rule, value, callback) => { |
|
|
|
if (value) { |
|
|
|
if (value) { |
|
|
|
const pattern = /^1[3456789]\d{9}$/ |
|
|
|
const pattern = /^1[3456789]\d{9}$/ |
|
|
|
if(pattern.test(value)){ |
|
|
|
if (pattern.test(value)) { |
|
|
|
callback() |
|
|
|
callback() |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
callback(new Error('请输入正确手机号格式')) |
|
|
|
callback(new Error('请输入正确手机号格式')) |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
@ -253,9 +232,9 @@ export default { |
|
|
|
const emailPass = (rule, value, callback) => { |
|
|
|
const emailPass = (rule, value, callback) => { |
|
|
|
if (value) { |
|
|
|
if (value) { |
|
|
|
const pattern = /^[a-zA-Z0-9][a-zA-Z0-9_]+\@[a-zA-Z0-9]+\.[a-zA-Z]{2,5}(\.[a-zA-Z]{2,5})*$/i |
|
|
|
const pattern = /^[a-zA-Z0-9][a-zA-Z0-9_]+\@[a-zA-Z0-9]+\.[a-zA-Z]{2,5}(\.[a-zA-Z]{2,5})*$/i |
|
|
|
if(pattern.test(value)){ |
|
|
|
if (pattern.test(value)) { |
|
|
|
callback() |
|
|
|
callback() |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
callback(new Error('请输入正确邮箱格式')) |
|
|
|
callback(new Error('请输入正确邮箱格式')) |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
@ -353,13 +332,13 @@ export default { |
|
|
|
}, |
|
|
|
}, |
|
|
|
rules: { |
|
|
|
rules: { |
|
|
|
username: [ |
|
|
|
username: [ |
|
|
|
{ required: true,validator: accountPass, trigger: 'blur' } |
|
|
|
{ required: true, validator: accountPass, trigger: 'blur' } |
|
|
|
], |
|
|
|
], |
|
|
|
realName: [ |
|
|
|
realName: [ |
|
|
|
{ required: true, message: "请输入姓名", trigger: "blur" } |
|
|
|
{ required: true, message: "请输入姓名", trigger: "blur" } |
|
|
|
], |
|
|
|
], |
|
|
|
jobNumber: [ |
|
|
|
jobNumber: [ |
|
|
|
{ required: true,validator: workNumberPass, trigger: 'blur' } |
|
|
|
{ required: true, validator: workNumberPass, trigger: 'blur' } |
|
|
|
], |
|
|
|
], |
|
|
|
roleIds: [ |
|
|
|
roleIds: [ |
|
|
|
{ required: true, message: "请选择授权角色", trigger: "change" } |
|
|
|
{ required: true, message: "请选择授权角色", trigger: "change" } |
|
|
@ -403,11 +382,11 @@ export default { |
|
|
|
headers: { |
|
|
|
headers: { |
|
|
|
token: util.local.get(Setting.tokenKey) |
|
|
|
token: util.local.get(Setting.tokenKey) |
|
|
|
}, |
|
|
|
}, |
|
|
|
disableds:false, |
|
|
|
disableds: false, |
|
|
|
submiting: false // 新增编辑防抖标识 |
|
|
|
submiting: false // 新增编辑防抖标识 |
|
|
|
}; |
|
|
|
}; |
|
|
|
}, |
|
|
|
}, |
|
|
|
mounted() { |
|
|
|
mounted () { |
|
|
|
this.$store.commit('user/setCrumbs', [ |
|
|
|
this.$store.commit('user/setCrumbs', [ |
|
|
|
{ |
|
|
|
{ |
|
|
|
name: '用户管理' |
|
|
|
name: '用户管理' |
|
|
@ -423,19 +402,19 @@ export default { |
|
|
|
this.originForm = JSON.parse(JSON.stringify(this.form)) |
|
|
|
this.originForm = JSON.parse(JSON.stringify(this.form)) |
|
|
|
}, |
|
|
|
}, |
|
|
|
watch: { |
|
|
|
watch: { |
|
|
|
keyword: function(val) { |
|
|
|
keyword: function (val) { |
|
|
|
clearTimeout(this.searchTimer) |
|
|
|
clearTimeout(this.searchTimer) |
|
|
|
this.searchTimer = setTimeout(() => { |
|
|
|
this.searchTimer = setTimeout(() => { |
|
|
|
this.initData() |
|
|
|
this.initData() |
|
|
|
}, 500) |
|
|
|
}, 500) |
|
|
|
}, |
|
|
|
}, |
|
|
|
filterText(val) { |
|
|
|
filterText (val) { |
|
|
|
this.$refs.classTree.filter(val); |
|
|
|
this.$refs.classTree.filter(val); |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
methods: { |
|
|
|
// 获取组织树形 |
|
|
|
// 获取组织树形 |
|
|
|
getOrg() { |
|
|
|
getOrg () { |
|
|
|
this.$get(this.api.depts).then(({ data }) => { |
|
|
|
this.$get(this.api.depts).then(({ data }) => { |
|
|
|
const list = data[0].children |
|
|
|
const list = data[0].children |
|
|
|
this.orgs = list |
|
|
|
this.orgs = list |
|
|
@ -443,22 +422,22 @@ export default { |
|
|
|
this.$nextTick(() => { |
|
|
|
this.$nextTick(() => { |
|
|
|
this.getStaff() |
|
|
|
this.getStaff() |
|
|
|
}) |
|
|
|
}) |
|
|
|
}).catch(err => {}) |
|
|
|
}).catch(err => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 每个层级加上父级id的集合 |
|
|
|
// 每个层级加上父级id的集合 |
|
|
|
handleOrgId(list, ids) { |
|
|
|
handleOrgId (list, ids) { |
|
|
|
list.forEach(e => { |
|
|
|
list.forEach(e => { |
|
|
|
e.ids = ids ? [...ids, e.id] : [e.id] |
|
|
|
e.ids = ids ? [...ids, e.id] : [e.id] |
|
|
|
e.children.length ? this.handleOrgId(e.children, e.ids) : delete e.children |
|
|
|
e.children.length ? this.handleOrgId(e.children, e.ids) : delete e.children |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 组织类别筛选回调 |
|
|
|
// 组织类别筛选回调 |
|
|
|
changeType() { |
|
|
|
changeType () { |
|
|
|
this.$refs.orgs.setCurrentKey(null) |
|
|
|
this.$refs.orgs.setCurrentKey(null) |
|
|
|
this.initData() |
|
|
|
this.initData() |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 添加部门 |
|
|
|
// 添加部门 |
|
|
|
addOrg(node, data) { |
|
|
|
addOrg (node, data) { |
|
|
|
const list = JSON.parse(JSON.stringify(this.orgs)) |
|
|
|
const list = JSON.parse(JSON.stringify(this.orgs)) |
|
|
|
this.handleOrg(list) |
|
|
|
this.handleOrg(list) |
|
|
|
this.orgListDia = list |
|
|
|
this.orgListDia = list |
|
|
@ -471,7 +450,7 @@ export default { |
|
|
|
this.orgVisible = true |
|
|
|
this.orgVisible = true |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 编辑部门 |
|
|
|
// 编辑部门 |
|
|
|
editOrg(node, data) { |
|
|
|
editOrg (node, data) { |
|
|
|
const list = JSON.parse(JSON.stringify(this.orgs)) |
|
|
|
const list = JSON.parse(JSON.stringify(this.orgs)) |
|
|
|
this.handleOrg(list, data.id, 0) |
|
|
|
this.handleOrg(list, data.id, 0) |
|
|
|
this.orgListDia = list |
|
|
|
this.orgListDia = list |
|
|
@ -485,7 +464,7 @@ export default { |
|
|
|
this.cascaderValue = ids |
|
|
|
this.cascaderValue = ids |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 处理更换部门的禁选 |
|
|
|
// 处理更换部门的禁选 |
|
|
|
handleOrg(list, id, disabled) { |
|
|
|
handleOrg (list, id, disabled) { |
|
|
|
list.forEach(e => { |
|
|
|
list.forEach(e => { |
|
|
|
// 如果是已经找到了要禁选的层级,则直接改变disabled,并递归 |
|
|
|
// 如果是已经找到了要禁选的层级,则直接改变disabled,并递归 |
|
|
|
if (disabled) { |
|
|
|
if (disabled) { |
|
|
@ -502,18 +481,18 @@ export default { |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 删除部门 |
|
|
|
// 删除部门 |
|
|
|
delOrg(node, data) { |
|
|
|
delOrg (node, data) { |
|
|
|
this.$confirm("确定要删除吗?", "提示", { |
|
|
|
this.$confirm("确定要删除吗?", "提示", { |
|
|
|
type: "warning" |
|
|
|
type: "warning" |
|
|
|
}).then(() => { |
|
|
|
}).then(() => { |
|
|
|
this.$del(`${this.api.dept}/${data.id}`).then(res => { |
|
|
|
this.$del(`${this.api.dept}/${data.id}`).then(res => { |
|
|
|
util.successMsg("删除成功") |
|
|
|
util.successMsg("删除成功") |
|
|
|
this.getOrg() |
|
|
|
this.getOrg() |
|
|
|
}).catch(res => {}) |
|
|
|
}).catch(res => { }) |
|
|
|
}).catch(() => {}) |
|
|
|
}).catch(() => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 提交组织架构新增/编辑 |
|
|
|
// 提交组织架构新增/编辑 |
|
|
|
orgSubmit() { |
|
|
|
orgSubmit () { |
|
|
|
this.$refs.orgForm.validate((valid) => { |
|
|
|
this.$refs.orgForm.validate((valid) => { |
|
|
|
if (valid) { |
|
|
|
if (valid) { |
|
|
|
const form = this.orgForm |
|
|
|
const form = this.orgForm |
|
|
@ -529,34 +508,34 @@ export default { |
|
|
|
this.$post(this.api.dept, form).then(res => { |
|
|
|
this.$post(this.api.dept, form).then(res => { |
|
|
|
util.successMsg("新增成功!") |
|
|
|
util.successMsg("新增成功!") |
|
|
|
this.closeOrg() |
|
|
|
this.closeOrg() |
|
|
|
}).catch(err => {}) |
|
|
|
}).catch(err => { }) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
// 编辑 |
|
|
|
// 编辑 |
|
|
|
this.$put(this.api.dept, form).then(res => { |
|
|
|
this.$put(this.api.dept, form).then(res => { |
|
|
|
util.successMsg("编辑成功!") |
|
|
|
util.successMsg("编辑成功!") |
|
|
|
this.closeOrg() |
|
|
|
this.closeOrg() |
|
|
|
}).catch(err => {}) |
|
|
|
}).catch(err => { }) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 点击树节点查询列表数据 |
|
|
|
// 点击树节点查询列表数据 |
|
|
|
handleNodeClick(data) { |
|
|
|
handleNodeClick (data) { |
|
|
|
this.staffType = null |
|
|
|
this.staffType = null |
|
|
|
this.initData() |
|
|
|
this.initData() |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 关闭组织新增编辑弹框 |
|
|
|
// 关闭组织新增编辑弹框 |
|
|
|
closeOrg() { |
|
|
|
closeOrg () { |
|
|
|
this.orgVisible = false |
|
|
|
this.orgVisible = false |
|
|
|
this.cascaderValue = [] |
|
|
|
this.cascaderValue = [] |
|
|
|
this.getOrg() |
|
|
|
this.getOrg() |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 重置栏位筛选 |
|
|
|
// 重置栏位筛选 |
|
|
|
resetColumns() { |
|
|
|
resetColumns () { |
|
|
|
this.settings = JSON.parse(JSON.stringify(this.originSettings)) |
|
|
|
this.settings = JSON.parse(JSON.stringify(this.originSettings)) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 员工列表 |
|
|
|
// 员工列表 |
|
|
|
getStaff() { |
|
|
|
getStaff () { |
|
|
|
this.$post(this.api.users, { |
|
|
|
this.$post(this.api.users, { |
|
|
|
type: this.staffType || 1, |
|
|
|
type: this.staffType || 1, |
|
|
|
deptArchitectureId: this.$refs.orgs.getCurrentKey() || '', |
|
|
|
deptArchitectureId: this.$refs.orgs.getCurrentKey() || '', |
|
|
@ -566,34 +545,34 @@ export default { |
|
|
|
}).then(({ data }) => { |
|
|
|
}).then(({ data }) => { |
|
|
|
this.list = data.records |
|
|
|
this.list = data.records |
|
|
|
this.total = +data.total |
|
|
|
this.total = +data.total |
|
|
|
}).catch(err => {}) |
|
|
|
}).catch(err => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 切换页码 |
|
|
|
// 切换页码 |
|
|
|
currentChange(val) { |
|
|
|
currentChange (val) { |
|
|
|
this.page = val |
|
|
|
this.page = val |
|
|
|
this.getStaff() |
|
|
|
this.getStaff() |
|
|
|
}, |
|
|
|
}, |
|
|
|
handleSelectionChange(val) { // 多选 |
|
|
|
handleSelectionChange (val) { // 多选 |
|
|
|
this.multipleSelection = val |
|
|
|
this.multipleSelection = val |
|
|
|
}, |
|
|
|
}, |
|
|
|
initData() { |
|
|
|
initData () { |
|
|
|
this.$refs.table.clearSelection() |
|
|
|
this.$refs.table.clearSelection() |
|
|
|
this.page = 1 |
|
|
|
this.page = 1 |
|
|
|
this.getStaff() |
|
|
|
this.getStaff() |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 删除 |
|
|
|
// 删除 |
|
|
|
delStaff(row) { |
|
|
|
delStaff (row) { |
|
|
|
this.$confirm("确定要删除吗?", "提示", { |
|
|
|
this.$confirm("确定要删除吗?", "提示", { |
|
|
|
type: "warning" |
|
|
|
type: "warning" |
|
|
|
}).then(() => { |
|
|
|
}).then(() => { |
|
|
|
this.$del(this.api.user, [row.id]).then(res => { |
|
|
|
this.$del(this.api.user, [row.id]).then(res => { |
|
|
|
util.successMsg("删除成功") |
|
|
|
util.successMsg("删除成功") |
|
|
|
this.getStaff() |
|
|
|
this.getStaff() |
|
|
|
}).catch(res => {}) |
|
|
|
}).catch(res => { }) |
|
|
|
}).catch(() => {}) |
|
|
|
}).catch(() => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 批量删除 |
|
|
|
// 批量删除 |
|
|
|
batchDel() { |
|
|
|
batchDel () { |
|
|
|
const list = this.multipleSelection |
|
|
|
const list = this.multipleSelection |
|
|
|
if (list.length) { |
|
|
|
if (list.length) { |
|
|
|
this.$confirm('确定要删除吗?', '提示', { |
|
|
|
this.$confirm('确定要删除吗?', '提示', { |
|
|
@ -603,22 +582,22 @@ export default { |
|
|
|
this.$refs.table.clearSelection() |
|
|
|
this.$refs.table.clearSelection() |
|
|
|
util.successMsg('删除成功') |
|
|
|
util.successMsg('删除成功') |
|
|
|
this.getStaff() |
|
|
|
this.getStaff() |
|
|
|
}).catch(res => {}) |
|
|
|
}).catch(res => { }) |
|
|
|
}).catch(() => {}) |
|
|
|
}).catch(() => { }) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
util.errorMsg('请先选择数据 !') |
|
|
|
util.errorMsg('请先选择数据 !') |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 重置密码 |
|
|
|
// 重置密码 |
|
|
|
resetPassword(row) { |
|
|
|
resetPassword (row) { |
|
|
|
this.$confirm(`确定重置密码?重置后密码为111aaa。`, "提示", { type: "warning" }).then(() => { |
|
|
|
this.$confirm(`确定重置密码?重置后密码为111aaa。`, "提示", { type: "warning" }).then(() => { |
|
|
|
this.$get(`${this.api.resetPwd}?userId=${row.id}`).then(res => { |
|
|
|
this.$get(`${this.api.resetPwd}?userId=${row.id}`).then(res => { |
|
|
|
util.successMsg("重置成功") |
|
|
|
util.successMsg("重置成功") |
|
|
|
}).catch(res => {}) |
|
|
|
}).catch(res => { }) |
|
|
|
}).catch(() => {}) |
|
|
|
}).catch(() => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 添加员工 |
|
|
|
// 添加员工 |
|
|
|
addStaff() { |
|
|
|
addStaff () { |
|
|
|
if (!this.staffType) { |
|
|
|
if (!this.staffType) { |
|
|
|
this.archId = [] |
|
|
|
this.archId = [] |
|
|
|
this.handleArchId(this.orgs, [this.$refs.orgs.getCurrentKey()]) |
|
|
|
this.handleArchId(this.orgs, [this.$refs.orgs.getCurrentKey()]) |
|
|
@ -630,7 +609,7 @@ export default { |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 处理部门id |
|
|
|
// 处理部门id |
|
|
|
handleArchId(list, ids, pid = []) { |
|
|
|
handleArchId (list, ids, pid = []) { |
|
|
|
list.map(e => { |
|
|
|
list.map(e => { |
|
|
|
// 把部门id分割成二维数组,[[1, 2], [3, 4]],每个层级的id都要放进去,后端返回的是最后一级的id,无法回显 |
|
|
|
// 把部门id分割成二维数组,[[1, 2], [3, 4]],每个层级的id都要放进去,后端返回的是最后一级的id,无法回显 |
|
|
|
if (ids.includes(e.id)) { |
|
|
|
if (ids.includes(e.id)) { |
|
|
@ -641,7 +620,7 @@ export default { |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 编辑/查看 |
|
|
|
// 编辑/查看 |
|
|
|
queryStaff(row, isDetail) { |
|
|
|
queryStaff (row, isDetail) { |
|
|
|
this.isDetail = isDetail |
|
|
|
this.isDetail = isDetail |
|
|
|
this.staffVisible = true |
|
|
|
this.staffVisible = true |
|
|
|
this.$get(`${this.api.user}/${row.id}`).then(({ data }) => { |
|
|
|
this.$get(`${this.api.user}/${row.id}`).then(({ data }) => { |
|
|
@ -684,28 +663,28 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
this.originAccount = data.username |
|
|
|
this.originAccount = data.username |
|
|
|
this.originWorkNumber = data.jobNumber |
|
|
|
this.originWorkNumber = data.jobNumber |
|
|
|
}).catch(res => {}) |
|
|
|
}).catch(res => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 获取角色数据 |
|
|
|
// 获取角色数据 |
|
|
|
getRole() { |
|
|
|
getRole () { |
|
|
|
this.$post(this.api.roles, { |
|
|
|
this.$post(this.api.roles, { |
|
|
|
page: 1, |
|
|
|
page: 1, |
|
|
|
limit: 10000 |
|
|
|
limit: 10000 |
|
|
|
}).then(({ data }) => { |
|
|
|
}).then(({ data }) => { |
|
|
|
this.roleIds = data.records |
|
|
|
this.roleIds = data.records |
|
|
|
}).catch(res => {}) |
|
|
|
}).catch(res => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 用户组 |
|
|
|
// 用户组 |
|
|
|
getUserGroup() { |
|
|
|
getUserGroup () { |
|
|
|
this.$post(this.api.groupList, { |
|
|
|
this.$post(this.api.groupList, { |
|
|
|
page: 1, |
|
|
|
page: 1, |
|
|
|
limit : 10000 |
|
|
|
limit: 10000 |
|
|
|
}).then(({ data }) => { |
|
|
|
}).then(({ data }) => { |
|
|
|
this.userGroups = data.records |
|
|
|
this.userGroups = data.records |
|
|
|
}).catch(err => {}) |
|
|
|
}).catch(err => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 账号判重 |
|
|
|
// 账号判重 |
|
|
|
accountChange() { |
|
|
|
accountChange () { |
|
|
|
const { username } = this.form |
|
|
|
const { username } = this.form |
|
|
|
if (username === this.originAccount) { |
|
|
|
if (username === this.originAccount) { |
|
|
|
this.accountReapeat = false |
|
|
|
this.accountReapeat = false |
|
|
@ -718,7 +697,7 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 工号判重 |
|
|
|
// 工号判重 |
|
|
|
worknumberChange() { |
|
|
|
worknumberChange () { |
|
|
|
const { jobNumber } = this.form |
|
|
|
const { jobNumber } = this.form |
|
|
|
if (jobNumber === this.originWorkNumber) { |
|
|
|
if (jobNumber === this.originWorkNumber) { |
|
|
|
this.workNumberReapeat = false |
|
|
|
this.workNumberReapeat = false |
|
|
@ -731,7 +710,7 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 提交新增/编辑员工 |
|
|
|
// 提交新增/编辑员工 |
|
|
|
submitStaff() { |
|
|
|
submitStaff () { |
|
|
|
this.$refs.form.validate((valid) => { |
|
|
|
this.$refs.form.validate((valid) => { |
|
|
|
if (valid) { |
|
|
|
if (valid) { |
|
|
|
if (this.submiting) return false |
|
|
|
if (this.submiting) return false |
|
|
@ -772,7 +751,7 @@ export default { |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 关闭新增员工对话框 |
|
|
|
// 关闭新增员工对话框 |
|
|
|
closeStaff() { |
|
|
|
closeStaff () { |
|
|
|
this.form = { |
|
|
|
this.form = { |
|
|
|
id: '', |
|
|
|
id: '', |
|
|
|
realName: '', |
|
|
|
realName: '', |
|
|
@ -788,31 +767,31 @@ export default { |
|
|
|
this.getStaff() |
|
|
|
this.getStaff() |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 批量导入 |
|
|
|
// 批量导入 |
|
|
|
batchImport() { |
|
|
|
batchImport () { |
|
|
|
this.importVisible = true |
|
|
|
this.importVisible = true |
|
|
|
this.uploadList = [] |
|
|
|
this.uploadList = [] |
|
|
|
this.uploadFaild = false |
|
|
|
this.uploadFaild = false |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 模板下载 |
|
|
|
// 模板下载 |
|
|
|
download() { |
|
|
|
download () { |
|
|
|
location.href = this.api.staffTemplate |
|
|
|
location.href = this.api.staffTemplate |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 上传文件 |
|
|
|
// 上传文件 |
|
|
|
handleExceed(files, fileList) { |
|
|
|
handleExceed (files, fileList) { |
|
|
|
util.warningMsg( |
|
|
|
util.warningMsg( |
|
|
|
`当前限制选择 1 个文件,如需更换,请删除上一个文件再重新选择!` |
|
|
|
`当前限制选择 1 个文件,如需更换,请删除上一个文件再重新选择!` |
|
|
|
) |
|
|
|
) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 下载失败文件 |
|
|
|
// 下载失败文件 |
|
|
|
showFaild() { |
|
|
|
showFaild () { |
|
|
|
Axios.get(`${this.api.exportFailure}?exportCode=${this.exportCode}`, { |
|
|
|
Axios.get(`${this.api.exportFailure}?exportCode=${this.exportCode}`, { |
|
|
|
headers: this.headers, |
|
|
|
headers: this.headers, |
|
|
|
responseType: 'blob' |
|
|
|
responseType: 'blob' |
|
|
|
}).then((res) => { |
|
|
|
}).then((res) => { |
|
|
|
util.downloadFileDirect(`导入用户失败原因.xls`, new Blob([res.data])) |
|
|
|
util.downloadFileDirect(`导入用户失败原因.xls`, new Blob([res.data])) |
|
|
|
}).catch(res => {}) |
|
|
|
}).catch(res => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
uploadSuccess(res, file, fileList) { |
|
|
|
uploadSuccess (res, file, fileList) { |
|
|
|
this.uploadFaild = false |
|
|
|
this.uploadFaild = false |
|
|
|
if (res.code === 200) { |
|
|
|
if (res.code === 200) { |
|
|
|
if (res.data.exportCode) { |
|
|
|
if (res.data.exportCode) { |
|
|
@ -824,21 +803,21 @@ export default { |
|
|
|
res.msg ? util.errorMsg(res.msg) : util.errorMsg("上传失败,请检查数据") |
|
|
|
res.msg ? util.errorMsg(res.msg) : util.errorMsg("上传失败,请检查数据") |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
uploadError(err, file, fileList) { |
|
|
|
uploadError (err, file, fileList) { |
|
|
|
this.$message({ |
|
|
|
this.$message({ |
|
|
|
message: "上传出错,请重试!", |
|
|
|
message: "上传出错,请重试!", |
|
|
|
type: "error", |
|
|
|
type: "error", |
|
|
|
center: true |
|
|
|
center: true |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
}, |
|
|
|
beforeRemove(file, fileList) { |
|
|
|
beforeRemove (file, fileList) { |
|
|
|
return this.$confirm(`确定移除 ${file.name}?`) |
|
|
|
return this.$confirm(`确定移除 ${file.name}?`) |
|
|
|
}, |
|
|
|
}, |
|
|
|
handleRemove(file, fileList) { |
|
|
|
handleRemove (file, fileList) { |
|
|
|
this.uploadList = fileList |
|
|
|
this.uploadList = fileList |
|
|
|
this.uploadFaild = false |
|
|
|
this.uploadFaild = false |
|
|
|
}, |
|
|
|
}, |
|
|
|
uploadSure() { |
|
|
|
uploadSure () { |
|
|
|
this.importVisible = false |
|
|
|
this.importVisible = false |
|
|
|
this.staffType = 1 |
|
|
|
this.staffType = 1 |
|
|
|
this.keyword = '' |
|
|
|
this.keyword = '' |
|
|
@ -853,39 +832,48 @@ export default { |
|
|
|
/deep/.org { |
|
|
|
/deep/.org { |
|
|
|
.el-tree-node__content { |
|
|
|
.el-tree-node__content { |
|
|
|
height: 40px; |
|
|
|
height: 40px; |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
&:hover { |
|
|
|
background-color: #F0F4FF; |
|
|
|
background-color: #F0F4FF; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.node-wrap { |
|
|
|
.node-wrap { |
|
|
|
display: flex; |
|
|
|
display: flex; |
|
|
|
justify-content: space-between; |
|
|
|
justify-content: space-between; |
|
|
|
align-items: center; |
|
|
|
align-items: center; |
|
|
|
width: 100%; |
|
|
|
width: 100%; |
|
|
|
|
|
|
|
|
|
|
|
.left { |
|
|
|
.left { |
|
|
|
display: inline-flex; |
|
|
|
display: inline-flex; |
|
|
|
align-items: center; |
|
|
|
align-items: center; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.name { |
|
|
|
.name { |
|
|
|
margin-left: 3px; |
|
|
|
margin-left: 3px; |
|
|
|
font-size: 14px; |
|
|
|
font-size: 14px; |
|
|
|
color: #333; |
|
|
|
color: #333; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.expand { |
|
|
|
.expand { |
|
|
|
padding: 0 15px; |
|
|
|
padding: 0 15px; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.org-btn { |
|
|
|
.org-btn { |
|
|
|
width: 100%; |
|
|
|
width: 100%; |
|
|
|
text-align: left; |
|
|
|
text-align: left; |
|
|
|
|
|
|
|
|
|
|
|
&.add { |
|
|
|
&.add { |
|
|
|
color: #666; |
|
|
|
color: #666; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&.del { |
|
|
|
&.del { |
|
|
|
color: #D0021B; |
|
|
|
color: #D0021B; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.list-wrap { |
|
|
|
.list-wrap { |
|
|
|
width: calc(100% - 301px); |
|
|
|
width: calc(100% - 301px); |
|
|
|
} |
|
|
|
} |
|
|
|