| | |
| | | style="overflow-y: scroll;" |
| | | highlight-current-row |
| | | > |
| | | <!-- @selection-change="handleSelectionChange"--> |
| | | |
| | | <!-- <el-table-column--> |
| | | <!-- type="selection"--> |
| | | <!-- width="55"--> |
| | | <!-- fixed--> |
| | | <!-- />--> |
| | | <el-table-column |
| | | label="序号" |
| | | width="55" |
| | |
| | | :render-header="indexRender" |
| | | > |
| | | <template slot-scope="scope"> |
| | | {{ scope.$index }} |
| | | {{ scope.$index + 1 }} |
| | | </template> |
| | | </el-table-column> |
| | | |
| | |
| | | :label="item" |
| | | align="center" |
| | | :render-header="addRedStar" |
| | | width="220" |
| | | min-width="220" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | |
| | | <div |
| | | v-if="item.indexOf('用户编号(唯一)')!==-1|| |
| | | v-if="item.indexOf('编号(唯一)')!==-1|| |
| | | item.indexOf('用户姓名')!==-1|| |
| | | item.indexOf('密码')!==-1|| |
| | | item.indexOf('手机号')!==-1|| |
| | | item.indexOf('邮箱')!==-1 |
| | | item.indexOf('邮箱')!==-1|| |
| | | item.indexOf('名称')!==-1|| |
| | | item.indexOf('描述')!==-1 |
| | | " |
| | | > |
| | | <el-input v-model="row[item]" placeholder="请输入" /> |
| | | </div> |
| | | <div v-else-if="item.indexOf('在职状态')!==-1"> |
| | | <div v-else-if="item.indexOf('数据范围')!==-1"> |
| | | <el-select |
| | | v-model="row[item]" |
| | | placeholder="请选择" |
| | | filterable |
| | | clearable |
| | | > |
| | | <el-option |
| | | v-for="item in powerArr" |
| | | :key="item.code" |
| | | :label="item.name" |
| | | :value="item.code" |
| | | /> |
| | | </el-select> |
| | | </div> |
| | | <div v-else-if="item.indexOf('状态')!==-1"> |
| | | <el-select |
| | | v-model="row[item]" |
| | | placeholder="请选择" |
| | |
| | | /> |
| | | </el-select> |
| | | </div> |
| | | |
| | | <div v-else-if="item.indexOf('所属岗位编码')!==-1"> |
| | | <el-select |
| | | v-model="row[item]" |
| | |
| | | </el-select> |
| | | </div> |
| | | <div v-else-if="item.indexOf('所属组织编码')!==-1"> |
| | | <el-select |
| | | <el-cascader |
| | | ref="cascader" |
| | | v-model="row[item]" |
| | | style="width: 100%;" |
| | | placeholder="请选择" |
| | | :options="orgOptions" |
| | | filterable |
| | | clearable |
| | | > |
| | | <el-option |
| | | v-for="item in orgArr" |
| | | :key="item.torg_code" |
| | | :label="item.torg_name" |
| | | :value="item.torg_code" |
| | | :props="defaultProps" |
| | | :show-all-levels="false" |
| | | /> |
| | | </el-select> |
| | | |
| | | <!-- <el-select--> |
| | | <!-- v-model="row[item]"--> |
| | | <!-- style="width: 100%;"--> |
| | | <!-- placeholder="请选择"--> |
| | | <!-- filterable--> |
| | | <!-- clearable--> |
| | | <!-- >--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in orgArr"--> |
| | | <!-- :key="item.torg_code"--> |
| | | <!-- :label="item.torg_name"--> |
| | | <!-- :value="item.torg_code"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | </div> |
| | | <div v-else-if="item.indexOf('数据权限')!==-1"> |
| | | <el-cascader |
| | | ref="cascader" |
| | | v-model="row[item]" |
| | | :options="orgOptions" |
| | | filterable |
| | | collapse-tags |
| | | :disabled="row['数据范围']!=='CUSTOM'" |
| | | :props="orgDefaultProps" |
| | | :show-all-levels="false" |
| | | /> |
| | | </div> |
| | | <div v-else> {{ row[item] }}</div> |
| | | </template> |
| | |
| | | import { DownLoadExcel, ExcelModelCheck, ExcelModelData } from '@/api/Excel' |
| | | import { GroupsPermissions, PostPermissions, PrentOrganization, RolePermissions } from '@/api/GeneralBasicData' |
| | | import { nanoid } from 'nanoid' |
| | | import arrayToTree from 'array-to-tree' |
| | | |
| | | export default { |
| | | name: 'UploadExcel', |
| | |
| | | excelCode: '', |
| | | excelArr: [], |
| | | |
| | | statusArr: [ |
| | | { code: 'Y', name: '在职' }, |
| | | { code: 'N', name: '离职' } |
| | | ], |
| | | statusArr: [], |
| | | orgArr: [], // 组织 |
| | | orgOptions: [], |
| | | defaultProps: { |
| | | checkStrictly: true, |
| | | expandTrigger: 'hover', |
| | | value: 'torg_code', |
| | | label: 'torg_name' |
| | | }, |
| | | orgDefaultProps: { |
| | | multiple: true, |
| | | expandTrigger: 'hover', |
| | | value: 'torg_code', |
| | | label: 'torg_name' |
| | | }, |
| | | postArr: [], // 岗位 |
| | | roleArr: [], // 角色 |
| | | groupArr: []// 班组 |
| | | groupArr: [], // 班组 |
| | | |
| | | powerArr: [ |
| | | { code: 'ALL', name: '全部' }, |
| | | { code: 'LEVEL', name: '本级' }, |
| | | { code: 'PERSON', name: '本人' }, |
| | | { code: 'CUSTOM', name: '自定义' } |
| | | ]// 数据范围 |
| | | |
| | | } |
| | | }, |
| | |
| | | this.tableHeader = header |
| | | this.sheetName = sheetName |
| | | |
| | | // 用户清单导入判断 |
| | | if (this.sheetName.indexOf('用户清单') !== -1) { |
| | | // 人员管理导入判断 |
| | | if (this.sheetName.indexOf('人员管理') !== -1) { |
| | | this.statusArr = [ |
| | | { code: 'Y', name: '在职' }, |
| | | { code: 'N', name: '离职' } |
| | | ] |
| | | const postArr = this.postArr.map(i => i.postcode) |
| | | const roleArr = this.roleArr.map(i => i.rolecode) |
| | | const groupArr = this.groupArr.map(i => i.usergroupcode) |
| | | const orgArr = this.orgArr.map(i => i.torg_code) |
| | | this.tableData[this.sheetName.indexOf('用户清单')].forEach(j => { |
| | | this.tableData[this.sheetName.indexOf('人员管理')].forEach(j => { |
| | | // j.所属岗位编码 = typeof j.所属岗位编码 === 'undefined' ? new Set() : j.所属岗位编码.split(',').filter(e => postArr.includes(e)) |
| | | // j.所属角色编码 = typeof j.所属角色编码 === 'undefined' ? ''.split(',') : j.所属角色编码.split(',').filter(e => roleArr.includes(e)) |
| | | // j.所属班组编码 = typeof j.所属班组编码 === 'undefined' ? ''.split(',') : j.所属班组编码.split(',').filter(e => groupArr.includes(e)) |
| | | |
| | | j.所属岗位编码 = j.所属岗位编码.split(',').filter(e => postArr.includes(e)) |
| | | j.所属角色编码 = j.所属角色编码.split(',').filter(e => roleArr.includes(e)) |
| | | j.所属班组编码 = j.所属班组编码.split(',').filter(e => groupArr.includes(e)) |
| | |
| | | j['*在职状态'] = this.statusArr.find(e => e.name === j['*在职状态']).code |
| | | j.uuid = nanoid() |
| | | }) |
| | | console.log(this.tableData[0]) |
| | | // console.log(JSON.stringify(this.tableData[0])) |
| | | } |
| | | |
| | | if (this.sheetName.indexOf('角色管理') !== -1) { |
| | | this.statusArr = [ |
| | | { code: 'Y', name: '停用' }, |
| | | { code: 'N', name: '启用' } |
| | | ] |
| | | |
| | | this.tableData[0].forEach(j => { |
| | | // j.所属岗位编码 = j.所属岗位编码.split(',').filter(e => postArr.includes(e)) |
| | | console.log(j['数据权限'], 1) // 级联多选回显 待研究 下次写 |
| | | j['数据范围'] = this.powerArr.find(e => e.name === j['数据范围']).code |
| | | j['*状态'] = this.statusArr.find(e => e.name === j['*状态']).code |
| | | j.uuid = nanoid() |
| | | }) |
| | | } |
| | | }, |
| | | // 获取模板 |
| | | async getExcelModelData() { |
| | | const { data: res } = await ExcelModelData() |
| | | this.excelArr = res |
| | |
| | | this.excelCode = window.location.hash.split('?')[1].split('=')[1] |
| | | } |
| | | }, |
| | | // 模板下载 |
| | | async getExcel() { |
| | | const res = await DownLoadExcel({ FileCode: this.excelCode }) |
| | | window.location.href = res.data |
| | |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | }) |
| | | .then(() => { |
| | | let flag = true |
| | | let msg = '' |
| | | if (this.sheetName.indexOf('用户清单') !== -1) { |
| | | // if ([...new Set(this.tableData[0].filter(i => i['*用户编号(唯一)'] !== '').map(i => i['*用户编号(唯一)']))].length !== this.tableData[0].length) { |
| | | if (this.sheetName.indexOf('人员管理') !== -1) { |
| | | if ([...new Set(this.tableData[0].map(i => i['*用户编号(唯一)']))].length !== this.tableData[0].length) { |
| | | return this.$message.info('编码不能重复!') |
| | | } |
| | | this.tableData[0].forEach(j => { |
| | | if (j['*用户编号(唯一)'].trim() === '') { |
| | | if (!j['*用户编号(唯一)']) { |
| | | flag = false |
| | | msg = '*用户编号(唯一)' |
| | | } |
| | | if (j['*用户姓名'].trim() === '') { |
| | | |
| | | if (!j['*用户姓名']) { |
| | | flag = false |
| | | msg = '*用户姓名' |
| | | } |
| | | if (j['*密码'].trim() === '') { |
| | | if (!j['*密码']) { |
| | | flag = false |
| | | msg = '*密码' |
| | | } |
| | | if (j['*在职状态'].trim() === '') { |
| | | if (!j['*在职状态']) { |
| | | flag = false |
| | | msg = '*在职状态' |
| | | } |
| | | if (j['*所属组织编码'].trim() === '') { |
| | | if (!j['*所属组织编码']) { |
| | | flag = false |
| | | msg = '*所属组织编码' |
| | | } |
| | |
| | | j.所属岗位编码 = j.所属岗位编码.join(',') |
| | | j.所属班组编码 = j.所属班组编码.join(',') |
| | | j.所属角色编码 = j.所属角色编码.join(',') |
| | | j['*所属组织编码'] = j['*所属组织编码'][j['*所属组织编码'].length - 1] |
| | | }) |
| | | |
| | | this.tableData[0].map(item => { |
| | |
| | | } |
| | | // console.log(JSON.stringify(this.tableData)) |
| | | ExcelModelCheck(data).then(res => { |
| | | if (res.json1.code === '301' || res.json1.code === '300') { |
| | | if (this.sheetName.indexOf('人员管理') !== -1) { |
| | | const postArr = this.postArr.map(i => i.postcode) |
| | | const roleArr = this.roleArr.map(i => i.rolecode) |
| | | const groupArr = this.groupArr.map(i => i.usergroupcode) |
| | | const orgArr = this.orgArr.map(i => i.torg_code) |
| | | this.tableData[0].forEach(j => { |
| | | j.所属岗位编码 = j.所属岗位编码.split(',').filter(e => postArr.includes(e)) |
| | | j.所属角色编码 = j.所属角色编码.split(',').filter(e => roleArr.includes(e)) |
| | | j.所属班组编码 = j.所属班组编码.split(',').filter(e => groupArr.includes(e)) |
| | | // j['*在职状态'] = this.statusArr.find(e => e.name === j['*在职状态']).code |
| | | // j['*所属组织编码'] = j['*所属组织编码'][j['*所属组织编码'].length - 1] |
| | | j['*所属组织编码'] = this.findParent([], j['*所属组织编码'], this.orgOptions).reverse() |
| | | |
| | | j.uuid = nanoid() |
| | | }) |
| | | } |
| | | return this.$message.error(res.json1.message) |
| | | } |
| | | |
| | | if (res.json1.code === '200' && res.json2.code === '200') { |
| | | this.$notify.success('数据提交成功!') |
| | | this.tableData = [] |
| | |
| | | this.sheetName = [] |
| | | this.excelCode = '' |
| | | } else { |
| | | |
| | | this.$notify.success('数据提交失败!') |
| | | } |
| | | }) |
| | | }).catch(() => { |
| | | }) |
| | | .catch(e => { |
| | | console.log(e) |
| | | this.$notify.info('已取消提交!') |
| | | }) |
| | | }, |
| | | // parents:用于返回的数组,childNode:要查询的节点,treeData:json树形数据 |
| | | findParent(parents, childNode, treeData) { |
| | | // console.log(parents, childNode, treeData, 2) |
| | | |
| | | for (let i = 0; i < treeData.length; i++) { |
| | | // 父节点查询条件 |
| | | if (treeData[i].torg_code === childNode) { |
| | | // 如果找到结果,保存当前节点 |
| | | parents.push(treeData[i].torg_code) |
| | | // 用当前节点再去原数据查找当前节点的父节点 |
| | | this.findParent(parents, treeData[i].parent_id, this.orgOptions) |
| | | break |
| | | } else { |
| | | if (treeData[i].children instanceof Array) { |
| | | // 没找到,遍历该节点的子节点 |
| | | this.findParent(parents, childNode, treeData[i].children) |
| | | } |
| | | } |
| | | } |
| | | return parents |
| | | }, |
| | | addRow() { |
| | | // 用户清单新增行 |
| | | if (this.sheetName.indexOf('用户清单') !== -1) { |
| | | // 人员管理新增行 |
| | | if (this.sheetName.indexOf('人员管理') !== -1) { |
| | | this.tableData[0].unshift({ |
| | | uuid: nanoid(), |
| | | '*用户编号(唯一)': '', |
| | |
| | | } |
| | | }, |
| | | delRow(row) { |
| | | // 用户清单删除行 |
| | | if (this.sheetName.indexOf('用户清单') !== -1) { |
| | | // 人员管理删除行 |
| | | if (this.sheetName.indexOf('人员管理') !== -1) { |
| | | if (this.tableData[0].length > 1) { |
| | | return this.tableData[0].splice(this.tableData[0].findIndex(i => i.uuid === row.uuid), 1) |
| | | } else { |
| | |
| | | async getPrentOrganization() { |
| | | const { data: res } = await PrentOrganization() |
| | | this.orgArr = res |
| | | // this.cascaderOptions = arrayToTree(res, { |
| | | // parentProperty: 'parent_id', |
| | | // customID: 'torg_code', |
| | | // childrenProperty: 'children' |
| | | // }) |
| | | this.orgOptions = arrayToTree(res, { |
| | | parentProperty: 'parent_id', |
| | | customID: 'torg_code', |
| | | childrenProperty: 'children' |
| | | }) |
| | | }, |
| | | // 获取岗位下拉数组 |
| | | async getPostPermissions() { |
| | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | //::v-deep .el-table__body-wrapper { |
| | | //overflow-y: auto; |
| | | //overflow-x: scroll !important; |
| | | //height: calc(100% - 34px); |
| | | //width: 100% !important; |
| | | //} |
| | | |
| | | </style> |
| | | |