xiaoning 1 year ago
parent f0202bb97c
commit 066213c959

@ -0,0 +1,70 @@
import request from '@/utils/request'
/**
* 获取全部部门
* @returns
*/
export function getAllDepart() {
return request({
url: '/api/sy/depart/getall',
method: 'get'
})
}
/**
* 条件查询部门及其子部门
* @param {*} data
* @returns
*/
export function getDepartByCon(data) {
return request({
url: '/api/sy/depart/getcon',
method: 'post',
data
})
}
/**
* 模糊查询和固定查询混查
* @param {*} data
* @returns
*/
export function getDepartByConDefaultDepartCode(data) {
return request({
url: '/api/sy/depart/getcondefault',
method: 'post',
data
})
}
/**
* 获取全部主部门
* @returns
*/
export function getAllParent(){
return request({
url: '/api/sy/depart/getallparent',
method: 'post'
})
}
/**
* 获取全部子部门
* @returns
*/
export function getAllChildren(){
return request({
url: '/api/sy/depart/getallchildren',
method: 'post'
})
}
export function getJjxmMap(){
return request({
url: '/api/zlgl/qcInspectionItem/mapList',
method: 'post'
})
}

@ -0,0 +1,27 @@
import request from '@/utils/request'
/**
* 无like条件查询
* @param {*} data
* @returns
*/
export function getEmployeeByCon(data) {
return request({
url: '/api/sy/ygcx/getcon',
method: 'post',
data
})
}
/**
* 特定like条件查询
* @param {*} data
* @returns
*/
export function getEmployeeByConDefaultDepartCode(data) {
return request({
url: '/api/sy/ygcx/getcondefault',
method: 'post',
data
})
}

@ -0,0 +1,138 @@
import request from '@/utils/request'
export function getTreeList(data) {
return request({
url: '/api/sy/dict/getTreeList',
method: 'post',
data
})
}
export function getTxTreeList(data) {
return request({
url: '/api/sy/dict/getTxTreeList',
method: 'post',
data
})
}
export function getList(data) {
return request({
url: '/api/sy/dict/getList',
method: 'post',
data
})
}
export function getTree(data) {
return request({
url: 'api/sy/dict/getTreeListForQKFL',
method: 'post',
data
})
}
export function del(data) {
return request({
url: '/api/sy/dict/del',
method: 'post',
data
})
}
export function update(data) {
return request({
url: '/api/sy/dict/update',
method: 'post',
data
})
}
export function Update(data) {
return request({
url: 'api/sy/dict/update',
method: 'post',
data
})
}
export function add(data) {
return request({
url: '/api/sy/dict/add',
method: 'post',
data
})
}
export function getByCode(data,flag=true) {
if (flag){
const localData=localStorage.getItem(data.dictCode);
if (localData){
return new Promise((resolve, reject)=>{
const result={
success:true,
data:JSON.parse(localData).sort((a,b)=>{return a.itemCode-b.itemCode})
}
resolve(result);
})
}
}
return request({
url: '/api/sy/dict/getbycode',
method: 'post',
data
})
}
/**
* 获取以dictCode分组的字典数据
*/
export function mapList() {
return request({
url: '/api/sy/dict/mapList',
method: 'get'
})
}
export function syLogAdd(data) {
return request({
url: '/api/sy/syLog/add',
method: 'post',
data
})
}
export function syLogList(data) {
return request({
url: '/api/sy/syLog/getList',
method: 'post',
data
})
}
export function syLogDel(data) {
return request({
url: '/api/sy/syLog/del',
method: 'post',
data
})
}
export function getUser(data) {
return request({
url: '/api/sy/getUser',
method: 'get',
params: data
})
}
/**
* 根据字典编码查询,字典值编码右模糊查询
* @param data
* @returns {*}
*/
export function getByDictCodeWithItemCodeRightLike(data) {
return request({
url: '/api/sy/dict/getByDictCodeWithItemCodeRightLike',
method: 'post',
data
})
}

@ -0,0 +1,362 @@
import request from '@/utils/request'
export function getUserList(data) {
return request({
url: '/api/sy/getUserList',
method: 'post',
data
})
}
export function addUser(data) {
return request({
url: '/api/sy/addUser',
method: 'post',
data
})
}
export function deleteUser(data) {
return request({
url: '/api/sy/deleteUser',
method: 'post',
data
})
}
export function updateUser(data) {
return request({
url: '/api/sy/updateUser',
method: 'post',
data
})
}
export function getDepartList(data) {
return request({
url: '/api/sy/getDepartList',
method: 'post',
data
})
}
export function addRole(data) {
return request({
url: '/api/sy/addRole',
method: 'post',
data
})
}
export function deleteRole(data) {
return request({
url: '/api/sy/deleteRole',
method: 'post',
data
})
}
export function updateRole(data) {
return request({
url: '/api/sy/updateRole',
method: 'post',
data
})
}
export function getRoleList(data) {
return request({
url: '/api/sy/getRoleList',
method: 'post',
data
})
}
export function getRoleListByUser(data) {
return request({
url: '/api/sy/getRoleListByUser',
method: 'post',
data
})
}
export function addRoleForUser(data) {
return request({
url: '/api/sy/addRoleForUser',
method: 'post',
data
})
}
export function deleteRoleForUser(data) {
return request({
url: '/api/sy/deleteRoleForUser',
method: 'post',
data
})
}
export function getSystemList(data) {
return request({
url: '/api/sy/getSystemList',
method: 'post',
data
})
}
export function getMenuList(data) {
return request({
url: '/api/sy/getMenuList',
method: 'post',
data
})
}
export function getUserListByMenu(data) {
return request({
url: '/api/sy/getUserListByMenu',
method: 'post',
data
})
}
export function getInstitutionList(data) {
return request({
url: '/api/sy/getInstitutionList',
method: 'post',
data
})
}
export function getUserListByRole(data) {
return request({
url: '/api/sy/getUserListByRole',
method: 'post',
data
})
}
export function getInstitutionListByRole(data) {
return request({
url: '/api/sy/getInstitutionListByRole',
method: 'post',
data
})
}
export function addRoleForInstitution(data) {
return request({
url: '/api/sy/addRoleForInstitution',
method: 'post',
data
})
}
export function deleteRoleForInstitution(data) {
return request({
url: '/api/sy/deleteRoleForInstitution',
method: 'post',
data
})
}
export function getSystemListByRole(data) {
return request({
url: '/api/sy/getSystemListByRole',
method: 'post',
data
})
}
export function addRoleForSystem(data) {
return request({
url: '/api/sy/addRoleForSystem',
method: 'post',
data
})
}
export function deleteRoleForSystem(data) {
return request({
url: '/api/sy/deleteRoleForSystem',
method: 'post',
data
})
}
export function getMenuListByRole(data) {
return request({
url: '/api/sy/getMenuListByRole',
method: 'post',
data
})
}
export function addRoleForMenu(data) {
return request({
url: '/api/sy/addRoleForMenu',
method: 'post',
data
})
}
export function deleteRoleForMenu(data) {
return request({
url: '/api/sy/deleteRoleForMenu',
method: 'post',
data
})
}
export function addWorkGroup(data) {
return request({
url: '/api/sy/addWorkGroup',
method: 'post',
data
})
}
export function deleteWorkGroup(data) {
return request({
url: '/api/sy/deleteWorkGroup',
method: 'post',
data
})
}
export function updateWorkGroup(data) {
return request({
url: '/api/sy/updateWorkGroup',
method: 'post',
data
})
}
export function addWorkGroupUser(data) {
return request({
url: '/api/sy/addWorkGroupUser',
method: 'post',
data
})
}
export function deleteWorkGroupUser(data) {
return request({
url: '/api/sy/deleteWorkGroupUser',
method: 'post',
data
})
}
export function addWorkGroupFz(data) {
return request({
url: '/api/sy/addWorkGroupFz',
method: 'post',
data
})
}
export function deleteWorkGroupFz(data) {
return request({
url: '/api/sy/deleteWorkGroupFz',
method: 'post',
data
})
}
export function addWorkGroupZxt(data) {
return request({
url: '/api/sy/addWorkGroupZxt',
method: 'post',
data
})
}
export function deleteWorkGroupZxt(data) {
return request({
url: '/api/sy/deleteWorkGroupZxt',
method: 'post',
data
})
}
export function addWorkGroupFunc(data) {
return request({
url: '/api/sy/addWorkGroupFunc',
method: 'post',
data
})
}
export function deleteWorkGroupFunc(data) {
return request({
url: '/api/sy/deleteWorkGroupFunc',
method: 'post',
data
})
}
export function getUserZHBM(data) {
return request({
url: '/api/sy/getUserZHBM',
method: 'post',
data
})
}
export function getFzList(data) {
return request({
url: '/api/sy/getFzList',
method: 'post',
data
})
}
export function getZxtList(data) {
return request({
url: '/api/sy/getZxtList',
method: 'post',
data
})
}
export function getFuncList(data) {
return request({
url: '/api/sy/getFuncList',
method: 'post',
data
})
}
export function getUserListByFunc(data) {
return request({
url: '/api/sy/getUserListByFunc',
method: 'post',
data
})
}
export function addFunc(data) {
return request({
url: '/api/sy/addFunc',
method: 'post',
data
})
}
export function deleteFunc(data) {
return request({
url: '/api/sy/deleteFunc',
method: 'post',
data
})
}
export function updateFunc(data) {
return request({
url: '/api/sy/updateFunc',
method: 'post',
data
})
}

@ -358,7 +358,7 @@ export default {
filterRender: {name: 'FilterCombination',}
},
{
field: 'jssj', title: '钢料滚动需求期', minWidth: "130",
field: 'jssj', title: '钢料滚动需求期(小组)', minWidth: "160",
filters: [{
data: {
checks: [],
@ -644,91 +644,107 @@ export default {
}],
filterRender: {name: 'FilterCombination',}
},
{
field: 'jzsb',
title: '矫正设备',
minWidth: "110",
filters: [{
data: {
checks: [],
sVal: '',
sMenu: '',
fType1: '',
fVal1: '',
fMode: 'and',
fType2: '',
fVal2: ''
}
}],
filterRender: {name: 'FilterCombination'},
editRender: {name: "$select", options: [], props: {clearable: true}}
},
{
field: 'pwsb',
title: '抛丸设备',
minWidth: "110",
filters: [{
data: {
checks: [],
sVal: '',
sMenu: '',
fType1: '',
fVal1: '',
fMode: 'and',
fType2: '',
fVal2: ''
}
}],
filterRender: {name: 'FilterCombination'},
editRender: {name: "$select", options: [], props: {clearable: true}}
},
{
field: 'hxsb',
title: '划线设备',
minWidth: "110",
filters: [{
data: {
checks: [],
sVal: '',
sMenu: '',
fType1: '',
fVal1: '',
fMode: 'and',
fType2: '',
fVal2: ''
}
}],
filterRender: {name: 'FilterCombination',},
editRender: {name: "$select", options: [], props: {clearable: true,}}
},
// {
// field: 'jzsb',
// title: '',
// minWidth: "110",
// filters: [{
// data: {
// checks: [],
// sVal: '',
// sMenu: '',
// fType1: '',
// fVal1: '',
// fMode: 'and',
// fType2: '',
// fVal2: ''
// }
// }],
// filterRender: {name: 'FilterCombination'},
// editRender: {name: "$select", options: [], props: {clearable: true}}
// },
// {
// field: 'pwsb',
// title: '',
// minWidth: "110",
// filters: [{
// data: {
// checks: [],
// sVal: '',
// sMenu: '',
// fType1: '',
// fVal1: '',
// fMode: 'and',
// fType2: '',
// fVal2: ''
// }
// }],
// filterRender: {name: 'FilterCombination'},
// editRender: {name: "$select", options: [], props: {clearable: true}}
// },
// {
// field: 'hxsb',
// title: '线',
// minWidth: "110",
// filters: [{
// data: {
// checks: [],
// sVal: '',
// sMenu: '',
// fType1: '',
// fVal1: '',
// fMode: 'and',
// fType2: '',
// fVal2: ''
// }
// }],
// filterRender: {name: 'FilterCombination',},
// editRender: {name: "$select", options: [], props: {clearable: true,}}
// },
// { field: 'hxry', title: '线',width: 100,
// filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
// filterRender: { name: 'FilterCombination', }},
{
field: 'qgsb',
title: '切割设备',
minWidth: "110",
filters: [{
data: {
checks: [],
sVal: '',
sMenu: '',
fType1: '',
fVal1: '',
fMode: 'and',
fType2: '',
fVal2: ''
}
}],
filterRender: {name: 'FilterCombination',},
editRender: {name: "$select", options: [], props: {clearable: true,}}
},
// {
// field: 'qgsb',
// title: '',
// minWidth: "110",
// filters: [{
// data: {
// checks: [],
// sVal: '',
// sMenu: '',
// fType1: '',
// fVal1: '',
// fMode: 'and',
// fType2: '',
// fVal2: ''
// }
// }],
// filterRender: {name: 'FilterCombination',},
// editRender: {name: "$select", options: [], props: {clearable: true,}}
// },
// { field: 'qgry', title: '',width: 100,
// filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
// filterRender: { name: 'FilterCombination', }},
// {
// field: 'pklx', title: '', minWidth: "110",
// filters: [{
// data: {
// checks: [],
// sVal: '',
// sMenu: '',
// fType1: '',
// fVal1: '',
// fMode: 'and',
// fType2: '',
// fVal2: ''
// }
// }],
// filterRender: {name: 'FilterCombination',}
// },
{
field: 'pklx', title: '坡口类型', minWidth: "110",
field: 'pkcd', title: '坡口长度', minWidth: "110",
filters: [{
data: {
checks: [],
@ -743,8 +759,28 @@ export default {
}],
filterRender: {name: 'FilterCombination',}
},
// {
// field: 'pksb',
// title: '',
// minWidth: "110",
// filters: [{
// data: {
// checks: [],
// sVal: '',
// sMenu: '',
// fType1: '',
// fVal1: '',
// fMode: 'and',
// fType2: '',
// fVal2: ''
// }
// }
// ],
// filterRender: {name: 'FilterCombination',},
// editRender: {name: "$select", options: [], props: {clearable: true,}}
// },
{
field: 'pkcd', title: '坡口长度', minWidth: "110",
field: 'pkrq', title: '坡口计划日期', minWidth: "130",
filters: [{
data: {
checks: [],
@ -760,9 +796,7 @@ export default {
filterRender: {name: 'FilterCombination',}
},
{
field: 'pksb',
title: '坡口设备',
minWidth: "110",
field: 'dmcd', title: '打磨长度', width: 100,
filters: [{
data: {
checks: [],
@ -775,11 +809,10 @@ export default {
fVal2: ''
}
}],
filterRender: {name: 'FilterCombination',},
editRender: {name: "$select", options: [], props: {clearable: true,}}
filterRender: {name: 'FilterCombination',}
},
{
field: 'pkrq', title: '坡口计划日期', minWidth: "130",
field: 'dmrq', title: '打磨计划日期', minWidth: "130",
filters: [{
data: {
checks: [],
@ -810,25 +843,25 @@ export default {
}],
filterRender: {name: 'FilterCombination',}
},
{
field: 'qjgsb',
title: '曲加工设备',
minWidth: "120",
filters: [{
data: {
checks: [],
sVal: '',
sMenu: '',
fType1: '',
fVal1: '',
fMode: 'and',
fType2: '',
fVal2: ''
}
}],
filterRender: {name: 'FilterCombination',},
editRender: {name: "$select", options: [], props: {clearable: true,}}
},
// {
// field: 'qjgsb',
// title: '',
// minWidth: "120",
// filters: [{
// data: {
// checks: [],
// sVal: '',
// sMenu: '',
// fType1: '',
// fVal1: '',
// fMode: 'and',
// fType2: '',
// fVal2: ''
// }
// }],
// filterRender: {name: 'FilterCombination',},
// editRender: {name: "$select", options: [], props: {clearable: true,}}
// },
// { field: 'qjgry', title: '',width: 100,
// filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
// filterRender: { name: 'FilterCombination', }},
@ -848,59 +881,29 @@ export default {
}],
filterRender: {name: 'FilterCombination',}
},
// {
// field: 'dmsb',
// title: '',
// minWidth: "110",
// filters: [{
// data: {
// checks: [],
// sVal: '',
// sMenu: '',
// fType1: '',
// fVal1: '',
// fMode: 'and',
// fType2: '',
// fVal2: ''
// }
// }],
// filterRender: {name: 'FilterCombination',},
// editRender: {name: "$select", options: [], props: {clearable: true,}}
// },
{
field: 'dmcd', title: '打磨长度', width: 100,
filters: [{
data: {
checks: [],
sVal: '',
sMenu: '',
fType1: '',
fVal1: '',
fMode: 'and',
fType2: '',
fVal2: ''
}
}],
filterRender: {name: 'FilterCombination',}
},
{
field: 'dmsb',
title: '打磨设备',
minWidth: "110",
filters: [{
data: {
checks: [],
sVal: '',
sMenu: '',
fType1: '',
fVal1: '',
fMode: 'and',
fType2: '',
fVal2: ''
}
}],
filterRender: {name: 'FilterCombination',},
editRender: {name: "$select", options: [], props: {clearable: true,}}
},
{
field: 'dmrq', title: '打磨计划日期', minWidth: "130",
filters: [{
data: {
checks: [],
sVal: '',
sMenu: '',
fType1: '',
fVal1: '',
fMode: 'and',
fType2: '',
fVal2: ''
}
}],
filterRender: {name: 'FilterCombination',}
},
{
field: 'gjjsDz', title: '钢加大组结束', minWidth: "130",
field: 'gjjsDz', title: '钢料滚动需求期(大组)', minWidth: "160",
filters: [{
data: {
checks: [],
@ -947,22 +950,22 @@ export default {
}],
filterRender: {name: 'FilterCombination',}
},
{
field: 'gjks', title: '钢加开始', width: 100,
filters: [{
data: {
checks: [],
sVal: '',
sMenu: '',
fType1: '',
fVal1: '',
fMode: 'and',
fType2: '',
fVal2: ''
}
}],
filterRender: {name: 'FilterCombination',}
},
// {
// field: 'gjks', title: '', width: 100,
// filters: [{
// data: {
// checks: [],
// sVal: '',
// sMenu: '',
// fType1: '',
// fVal1: '',
// fMode: 'and',
// fType2: '',
// fVal2: ''
// }
// }],
// filterRender: {name: 'FilterCombination',}
// },
{
field: 'dcCh2', title: '本船号', width: 100,
filters: [{
@ -2001,25 +2004,25 @@ export default {
}],
filterRender: {name: 'FilterCombination',}
},
{
field: 'dmsb',
title: '打磨设备',
width: 100,
filters: [{
data: {
checks: [],
sVal: '',
sMenu: '',
fType1: '',
fVal1: '',
fMode: 'and',
fType2: '',
fVal2: ''
}
}],
filterRender: {name: 'FilterCombination',},
editRender: {name: "$select", options: [], props: {clearable: true}}
},
// {
// field: 'dmsb',
// title: '',
// width: 100,
// filters: [{
// data: {
// checks: [],
// sVal: '',
// sMenu: '',
// fType1: '',
// fVal1: '',
// fMode: 'and',
// fType2: '',
// fVal2: ''
// }
// }],
// filterRender: {name: 'FilterCombination',},
// editRender: {name: "$select", options: [], props: {clearable: true}}
// },
{
field: 'dmrq', title: '打磨计划日期', width: 100,
filters: [{

@ -182,17 +182,18 @@ export default {
},
created() {
window.addEventListener("resize", this.getHeight);
this.initList(); //
this.getCzxx();
this.getHeight();
this.getNowTime();
this.initList(); //
},
methods: {
getNowTime(){
var now=new Date();
let year=now.getFullYear();
// this.nrStart=year
// this.nrEnd=year
var year=now.getFullYear()+'';
this.nrStart=year
this.nrEnd=year
// this.request.nf=year
},
cellClickEvent({row}) {
this.request.dcCh = row.cbbm

@ -5,8 +5,8 @@
<el-form ref="requestForm" :model="request" label-width="80px">
<el-row>
<el-col :span="8">
<el-form-item label="跨位:">
<el-select v-model="request.kw" placeholder="跨位" clearable>
<el-form-item label="图纸名称:">
<el-select v-model="request.tzbh" placeholder="图纸名称" clearable>
<el-option
v-for="item in kwOptions"
:key="item.bm"
@ -17,13 +17,6 @@
</el-form-item>
</el-col>
<el-col :span="4">
<!-- <el-form-item label="设备名称:">-->
<!-- <el-input-->
<!-- v-model="request.sbmc"-->
<!-- placeholder="设备名称"-->
<!-- clearable-->
<!-- />-->
<!-- </el-form-item>-->
</el-col>
<el-col :span="16" style="text-align: right">
<el-button type="success" @click="toolbarButtonClickEvent('insert')"
@ -66,6 +59,8 @@
mode: 'row',
showStatus: true,
}"
:span-method="rowspanMethod"
:scroll-y="{enabled: false}"
highlight-hover-row
@checkbox-all="selectAllEvent"
@checkbox-change="selectChangeEvent"
@ -92,41 +87,24 @@ export default {
data() {
return {
request: {
kw: "",
tzbh: "",
sbmc: "",
},
list: [],
height: "500px",
tableColumn: [
{ type: "checkbox", width: "50", align: "center" },
// { type: "checkbox", width: "50", align: "center" },
{ type: "seq", width: "50", title: "序号", align: "center" },
{
field: "gx",
title: "工序",
align: "center",
minWidth: "70",
{ field: 'tzbh', title: '套料图名称', width: 120,formatter:['dictFormat','QGKW'],
editRender: {
name: "$select",
options: [],
props: { clearable: true },
},
filters: [
{
data: {
checks: [],
sVal: "",
sMenu: "",
fType1: "",
fVal1: "",
fMode: "and",
fType2: "",
fVal2: "",
},
},
],
filterRender: { name: "FilterCombination" },
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'kw', title: '跨位', width: 120,
{ field: 'zl', title: '组立', width: 120,formatter:['dictFormat','ZLLB'],
editRender: {
name: "$select",
options: [],
@ -135,31 +113,12 @@ export default {
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: '', title: '白班',
children:[
{ field: 'zxcnBb', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnBb', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: '', title: '夜班',
children:[
{ field: 'zxcnYb', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnYb', title: '最大产能', width: 120,editRender: { name: "$input"},
{ field: 'jgsx', title: '加工顺序', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: 'cndw', title: '产能单位', width: 120,
{ field: 'gx', title: '工序', width: 160,formatter:['dictFormat','PCGX'],
editRender: {
name: "$select",
options: [],
@ -168,63 +127,7 @@ export default {
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'cnhj', title: '合计', width: 120,
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: '', title: '划线白班',
children:[
{ field: 'zxcnBb1', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnBb1', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: '', title: '划线夜班',
children:[
{ field: 'zxcnYb1', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnYb1', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: 'cnhj1', title: '合计', width: 120,
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: '', title: '坡口白班',
children:[
{ field: 'zxcnBb2', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnBb2', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: '', title: '坡口夜班',
children:[
{ field: 'zxcnYb2', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnYb2', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: 'cndw2', title: '产能单位', width: 120,
{ field: 'jldw', title: '计量单位', width: 160,formatter:['dictFormat','JLDW'],
editRender: {
name: "$select",
options: [],
@ -233,35 +136,15 @@ export default {
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'cnhj2', title: '合计', width: 120,
{ field: 'degs', title: '定额工时(小时)', width: 160,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: '', title: '打磨白班',
children:[
{ field: 'zxcnBb3', title: '最小产能', width: 120,editRender: { name: "$input"},
{ field: 'sdgs', title: '实动工时(小时)', width: 160,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnBb3', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: '', title: '打磨夜班',
children:[
{ field: 'zxcnYb3', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnYb3', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: 'cndw3', title: '产能单位', width: 120,
{ field: 'kw', title: '加工跨', width: 120,formatter:['dictFormat','CNKW'],
editRender: {
name: "$select",
options: [],
@ -270,52 +153,37 @@ export default {
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'cnhj3', title: '合计', width: 120,
{ field: 'bjry', title: '编辑人员', width: 120,
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: '', title: '曲加工白班',
children:[
{ field: 'zxcnBb4', title: '最小产能', width: 120,editRender: { name: "$input"},
{ field: 'bjrq', title: '编辑日期', width: 120,
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnBb4', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
}
],
validRules: {
// sbbh: [{ required: true, message: "" }],
},
{ field: '', title: '曲加工夜班',
children:[
{ field: 'zxcnYb4', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnYb4', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
kwOptions: [],
zlOptions: [
{
label: '小组立',
value: 1010,
},
{ field: 'cndw4', title: '产能单位', width: 120,
editRender: {
name: "$select",
options: [],
props: { clearable: true },
{
label: '中大组立',
value: 1110,
},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
{
label: '光电',
value: 1120,
},
{ field: 'cnhj4', title: '合计', width: 120,
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
{
label: '焊接机器人肘板',
value: 4230,
},
],
validRules: {
// sbbh: [{ required: true, message: "" }],
},
kwOptions: [],
departmentOptions: [],
options: [],
sbmcOptions: [],
@ -331,6 +199,8 @@ export default {
this.initList();
this.initgxList();
this.initdwList();
this.initkwList();
// this.initzlList();
},
methods: {
// xn20231110
@ -340,6 +210,7 @@ export default {
this.$nextTick(() => {
const tableRef = this.$refs.tableRef;
const gx = tableRef.getColumnByField("gx");
const zl = tableRef.getColumnByField("zl");
const testList = [];
for (let i = 0; i < gxList.length; i++) {
const temp = {
@ -349,6 +220,7 @@ export default {
testList.push(temp);
}
gx.editRender.options = testList;
zl.editRender.options = this.zlOptions;
});
},
@ -357,11 +229,7 @@ export default {
const dwList =JSON.parse(dict)
this.$nextTick(() => {
const tableRef = this.$refs.tableRef;
const cndw = tableRef.getColumnByField("cndw");
// const cndw1 = tableRef.getColumnByField("cndw1");
const cndw2 = tableRef.getColumnByField("cndw2");
const cndw3 = tableRef.getColumnByField("cndw3");
const cndw4 = tableRef.getColumnByField("cndw4");
const cndw = tableRef.getColumnByField("jldw");
const testList = [];
for (let i = 0; i < dwList.length; i++) {
const temp = {
@ -371,10 +239,42 @@ export default {
testList.push(temp);
}
cndw.editRender.options = testList;
// cndw1.editRender.options = testList;
cndw2.editRender.options = testList;
cndw3.editRender.options = testList;
cndw4.editRender.options = testList;
});
},
initzlList(){
const dict=window.localStorage.getItem( 'ZLLB');
const dwList =JSON.parse(dict)
this.$nextTick(() => {
const tableRef = this.$refs.tableRef;
const cndw = tableRef.getColumnByField("zl");
const testList = [];
for (let i = 0; i < dwList.length; i++) {
const temp = {
label: dwList[i].bmsm,
value: dwList[i].bm,
};
testList.push(temp);
}
cndw.editRender.options = testList;
});
},
initkwList(){
const dict=window.localStorage.getItem( 'CNKW');
const kwList =JSON.parse(dict)
this.$nextTick(() => {
const tableRef = this.$refs.tableRef;
const kw = tableRef.getColumnByField("kw");
const testList = [];
for (let i = 0; i < kwList.length; i++) {
const temp = {
label: kwList[i].bmsm,
value: kwList[i].bm,
};
testList.push(temp);
}
kw.editRender.options = testList;
});
},
@ -420,7 +320,7 @@ export default {
} else if (params == "QGKW") {
//
this.kwOptions = res.data;
const sbztText = tableRef.getColumnByField("kw");
const sbztText = tableRef.getColumnByField("tzbh");
const testList = [];
for (let i = 0; i < this.kwOptions.length; i++) {
const temp = {
@ -500,6 +400,7 @@ export default {
break;
case "save":
const valid = this.$refs.tableRef;
let flag = false;
if (valid) {
const errMap = await valid.validate(true);
if (errMap) {
@ -507,6 +408,35 @@ export default {
} else {
//
if (insertRecords.length !== 0) {
for(let i = 0; i < insertRecords.length; i++){
if(insertRecords[i].tzbh === undefined || insertRecords[i].tzbh === "" || insertRecords[i].tzbh === null){
flag = true;
break;
}
if(insertRecords[i].zl === undefined || insertRecords[i].zl === "" || insertRecords[i].zl === null){
flag = true;
break;
}
if(insertRecords[i].jgsx === undefined || insertRecords[i].jgsx === "" || insertRecords[i].jgsx === null){
flag = true;
break;
}
if(insertRecords[i].gx === undefined || insertRecords[i].gx === "" || insertRecords[i].gx === null){
flag = true;
break;
}
if(insertRecords[i].jldw === undefined || insertRecords[i].jldw === "" || insertRecords[i].jldw === null){
flag = true;
break;
}
if(insertRecords[i].degs === undefined || insertRecords[i].degs === "" || insertRecords[i].degs === null){
flag = true;
break;
}
}
if(flag){
this.$message.error({message:"新增内容未达到可保存标准,请把必要信息空白补全。"})
}else{
save(insertRecords).then((res) => {
if (res.success) {
this.list = this.list.concat(insertRecords);
@ -519,9 +449,38 @@ export default {
}
});
}
}
//
if (updateRecords.length !== 0) {
for(let i = 0; i < insertRecords.length; i++){
if(insertRecords[i].tzbh === undefined || insertRecords[i].tzbh === "" || insertRecords[i].tzbh === null){
flag = true;
break;
}
if(insertRecords[i].zl === undefined || insertRecords[i].zl === "" || insertRecords[i].zl === null){
flag = true;
break;
}
if(insertRecords[i].jgsx === undefined || insertRecords[i].jgsx === "" || insertRecords[i].jgsx === null){
flag = true;
break;
}
if(insertRecords[i].gx === undefined || insertRecords[i].gx === "" || insertRecords[i].gx === null){
flag = true;
break;
}
if(insertRecords[i].jldw === undefined || insertRecords[i].jldw === "" || insertRecords[i].jldw === null){
flag = true;
break;
}
if(insertRecords[i].degs === undefined || insertRecords[i].degs === "" || insertRecords[i].degs === null){
flag = true;
break;
}
}
if(flag){
this.$message.error({message:"保存内容未达到可保存标准,请把必要信息空白补全。"})
}else{
update(updateRecords).then((res) => {
if (res.success) {
const xTable = this.$refs.tableRef;
@ -530,6 +489,8 @@ export default {
}
});
}
}
}
}
//
@ -549,24 +510,48 @@ export default {
});
}
if (removeRecords.length !== 0) {
this.$message(
`新增 ${insertRecords.length} 条,删除 ${removeRecords.length} 条,更新 ${updateRecords.length}`
);
} else {
const valid = this.$refs.tableRef;
if (valid) {
const errMap = await valid.validate(true);
if (errMap) {
return false;
// if (removeRecords.length !== 0) {
// this.$message(
// ` ${insertRecords.length} ${removeRecords.length} ${updateRecords.length} `
// );
// } else {
// const valid = this.$refs.tableRef;
// if (valid) {
// const errMap = await valid.validate(true);
// if (errMap) {
// return false;
// } else {
// this.$message(
// ` ${insertRecords.length} ${removeRecords.length} ${updateRecords.length} `
// );
// }
// }
// }
break;
}
},
//
rowspanMethod({row, _rowIndex, column, visibleData}) {
//vxe-grid :scroll-y="{enabled: false}"
//
let fields = ['tzbh'];//
const cellValue = row[column.property];//
if (cellValue && fields.includes(column.property)) {
const prevRow = visibleData[_rowIndex - 1];
let nextRow = visibleData[_rowIndex + 1];
if (prevRow && prevRow[column.property] === cellValue) {
//
return {rowspan: 0, colspan: 0};
} else {
this.$message(
`新增 ${insertRecords.length} 条,删除 ${removeRecords.length} 条,更新 ${updateRecords.length}`
);
//
let countRowspan = 1;
while (nextRow && nextRow[column.property] === cellValue) {
nextRow = visibleData[++countRowspan + _rowIndex];
}
if (countRowspan > 1) {
return {rowspan: countRowspan, colspan: 1};
}
}
break;
}
},
getHeight() {

@ -0,0 +1,627 @@
<template>
<!-- 设备产能维护 -->
<el-container>
<el-header style="width: 100%">
<el-form ref="requestForm" :model="request" label-width="80px">
<el-row>
<el-col :span="8">
<el-form-item label="跨位:">
<el-select v-model="request.kw" placeholder="跨位" clearable>
<el-option
v-for="item in kwOptions"
:key="item.bm"
:value="item.bm"
:label="item.bmsm"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<!-- <el-form-item label="设备名称:">-->
<!-- <el-input-->
<!-- v-model="request.sbmc"-->
<!-- placeholder="设备名称"-->
<!-- clearable-->
<!-- />-->
<!-- </el-form-item>-->
</el-col>
<el-col :span="16" style="text-align: right">
<el-button type="success" @click="toolbarButtonClickEvent('insert')"
>添加</el-button
>
<el-button type="primary" @click="initList()"></el-button>
</el-col>
</el-row>
<el-row>
<el-col :span="24" style="text-align: right">
<el-button type="danger" @click="toolbarButtonClickEvent('delete')"
>删除</el-button
>
<el-button type="primary" @click="toolbarButtonClickEvent('save')"
>保存</el-button
>
</el-col>
</el-row>
</el-form>
</el-header>
<el-container style="padding-top: 10px">
<el-container>
<el-main>
<div class="mytable">
<vxe-grid
id="id"
ref="tableRef"
border
resizable
keep-source
:height="height"
:auto-resize="true"
:align="'center'"
:columns="tableColumn"
:data="list"
:custom-config="{ storage: true }"
:edit-rules="validRules"
:edit-config="{
trigger: 'click',
mode: 'row',
showStatus: true,
}"
highlight-hover-row
@checkbox-all="selectAllEvent"
@checkbox-change="selectChangeEvent"
>
</vxe-grid>
</div>
</el-main>
</el-container>
</el-container>
</el-container>
</template>
<script>
import {
getList,
emSbjbbZM,
getBMMCBM,
save,
update,
delete1,
} from "@/api/sjzx/sbcnWH";
export default {
name: "sbcnWH",
data() {
return {
request: {
kw: "",
sbmc: "",
},
list: [],
height: "500px",
tableColumn: [
{ type: "checkbox", width: "50", align: "center" },
{ type: "seq", width: "50", title: "序号", align: "center" },
{
field: "gx",
title: "工序",
align: "center",
minWidth: "70",
editRender: {
name: "$select",
options: [],
props: { clearable: true },
},
filters: [
{
data: {
checks: [],
sVal: "",
sMenu: "",
fType1: "",
fVal1: "",
fMode: "and",
fType2: "",
fVal2: "",
},
},
],
filterRender: { name: "FilterCombination" },
},
{ field: 'kw', title: '跨位', width: 120,
editRender: {
name: "$select",
options: [],
props: { clearable: true },
},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: '', title: '白班',
children:[
{ field: 'zxcnBb', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnBb', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: '', title: '夜班',
children:[
{ field: 'zxcnYb', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnYb', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: 'cndw', title: '产能单位', width: 120,
editRender: {
name: "$select",
options: [],
props: { clearable: true },
},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'cnhj', title: '合计', width: 120,
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: '', title: '划线白班',
children:[
{ field: 'zxcnBb1', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnBb1', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: '', title: '划线夜班',
children:[
{ field: 'zxcnYb1', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnYb1', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: 'cnhj1', title: '合计', width: 120,
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: '', title: '坡口白班',
children:[
{ field: 'zxcnBb2', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnBb2', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: '', title: '坡口夜班',
children:[
{ field: 'zxcnYb2', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnYb2', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: 'cndw2', title: '产能单位', width: 120,
editRender: {
name: "$select",
options: [],
props: { clearable: true },
},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'cnhj2', title: '合计', width: 120,
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: '', title: '打磨白班',
children:[
{ field: 'zxcnBb3', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnBb3', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: '', title: '打磨夜班',
children:[
{ field: 'zxcnYb3', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnYb3', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: 'cndw3', title: '产能单位', width: 120,
editRender: {
name: "$select",
options: [],
props: { clearable: true },
},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'cnhj3', title: '合计', width: 120,
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: '', title: '曲加工白班',
children:[
{ field: 'zxcnBb4', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnBb4', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: '', title: '曲加工夜班',
children:[
{ field: 'zxcnYb4', title: '最小产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'zdcnYb4', title: '最大产能', width: 120,editRender: { name: "$input"},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
},
{ field: 'cndw4', title: '产能单位', width: 120,
editRender: {
name: "$select",
options: [],
props: { clearable: true },
},
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
{ field: 'cnhj4', title: '合计', width: 120,
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', },
},
],
validRules: {
// sbbh: [{ required: true, message: "" }],
},
kwOptions: [],
departmentOptions: [],
options: [],
sbmcOptions: [],
checkedList: [],
};
},
created() {
window.addEventListener("resize", this.getHeight);
this.getHeight();
this.emSbjbbZM("QGKW");
this.emSbjbbZM("bmbm");
this.getBMMCBM();
this.initList();
this.initgxList();
this.initdwList();
},
methods: {
// xn20231110
initgxList(){
const dict=window.localStorage.getItem( 'PCGX');
const gxList =JSON.parse(dict)
this.$nextTick(() => {
const tableRef = this.$refs.tableRef;
const gx = tableRef.getColumnByField("gx");
const testList = [];
for (let i = 0; i < gxList.length; i++) {
const temp = {
label: gxList[i].bmsm,
value: gxList[i].bm,
};
testList.push(temp);
}
gx.editRender.options = testList;
});
},
initdwList(){
const dict=window.localStorage.getItem( 'JLDW');
const dwList =JSON.parse(dict)
this.$nextTick(() => {
const tableRef = this.$refs.tableRef;
const cndw = tableRef.getColumnByField("cndw");
// const cndw1 = tableRef.getColumnByField("cndw1");
const cndw2 = tableRef.getColumnByField("cndw2");
const cndw3 = tableRef.getColumnByField("cndw3");
const cndw4 = tableRef.getColumnByField("cndw4");
const testList = [];
for (let i = 0; i < dwList.length; i++) {
const temp = {
label: dwList[i].bmsm,
value: dwList[i].bm,
};
testList.push(temp);
}
cndw.editRender.options = testList;
// cndw1.editRender.options = testList;
cndw2.editRender.options = testList;
cndw3.editRender.options = testList;
cndw4.editRender.options = testList;
});
},
//
getBMMCBM() {
getBMMCBM().then((res) => {
if (res.success) {
this.options = res.data;
}
});
},
//
initList() {
getList(this.request).then((res) => {
this.list = res.data;
this.checkedList = [];
if (this.list.length > 0) {
this.list.forEach((item) => {
item.sbmcDisabled = true;
});
}
});
},
//
emSbjbbZM(params) {
emSbjbbZM({
bmlb: params,
}).then((res) => {
const tableRef = this.$refs.tableRef;
if (params == "bmbm") {
//
this.departmentOptions = res.data;
const sbztText = tableRef.getColumnByField("szcs");
const testList = [];
for (let i = 0; i < this.departmentOptions.length; i++) {
const temp = {
label: this.departmentOptions[i].bmsm,
value: this.departmentOptions[i].bm,
};
testList.push(temp);
}
sbztText.editRender.options = testList;
} else if (params == "QGKW") {
//
this.kwOptions = res.data;
const sbztText = tableRef.getColumnByField("kw");
const testList = [];
for (let i = 0; i < this.kwOptions.length; i++) {
const temp = {
label: this.kwOptions[i].bmsm,
value: this.kwOptions[i].bm,
};
testList.push(temp);
}
sbztText.editRender.options = testList;
}
});
},
//
changeSzcs(row, id) {
console.log(row, id);
if (row.row.szcs) {
row.row.sbmcDisabled = false;
row.row.sbmc = "";
row.row.sbbh = "";
this.sbmcOptions = [];
const testList = [];
console.log(this.options, "======");
for (let i = 0; i < this.options[id.value].length; i++) {
const temp = {
label: this.options[id.value][i].sbmc,
value: this.options[id.value][i].sbbh,
};
testList.push(temp);
}
this.sbmcOptions = testList;
} else {
row.row.sbmcDisabled = true;
row.row.sbmc = "";
row.row.sbbh = "";
this.sbmcOptions = [];
}
},
//
changeSbmc(event, row) {
if (row.sbmc) {
row.sbbh = event.value;
let arr = this.sbmcOptions.filter((item, index) => {
if (item.value == event.value) {
return item;
}
});
row.sbmc = arr[0].label;
} else {
row.sbbh = "";
}
},
//
selectAllEvent() {
const records = this.$refs.tableRef.getCheckboxRecords();
this.checkedList = records;
},
//
selectChangeEvent() {
const records = this.$refs.tableRef.getCheckboxRecords();
this.checkedList = records;
},
//
async toolbarButtonClickEvent(code) {
const { insertRecords, removeRecords, updateRecords } =
this.$refs.tableRef.getRecordset();
switch (code) {
case "insert":
this.$refs.tableRef.insertAt({ sbmcDisabled: true }, -1);
break;
case "delete":
if (this.checkedList.length > 0) {
this.$refs.tableRef.removeCheckboxRow();
} else {
this.$message.warning("请选择数据!");
}
break;
case "save":
const valid = this.$refs.tableRef;
if (valid) {
const errMap = await valid.validate(true);
if (errMap) {
return false;
} else {
//
if (insertRecords.length !== 0) {
save(insertRecords).then((res) => {
if (res.success) {
this.list = this.list.concat(insertRecords);
const xTable = this.$refs.tableRef;
xTable.loadData(this.initList());
this.$message({
message: "保存成功!",
type: "success",
});
}
});
}
//
if (updateRecords.length !== 0) {
update(updateRecords).then((res) => {
if (res.success) {
const xTable = this.$refs.tableRef;
xTable.loadData(this.initList());
this.$message({ message: "保存成功!", type: "success" });
}
});
}
}
}
//
if (removeRecords.length !== 0) {
delete1(removeRecords).then((res) => {
if (res.success) {
for (let i = 0; i < this.list.length; i++) {
if (removeRecords.indexOf(this.list[i]) !== -1) {
this.list.splice(i, 1);
i--;
}
}
const xTable = this.$refs.tableRef;
xTable.loadData(this.initList());
this.$message({ message: "保存成功!", type: "success" });
}
});
}
if (removeRecords.length !== 0) {
this.$message(
`新增 ${insertRecords.length} 条,删除 ${removeRecords.length} 条,更新 ${updateRecords.length}`
);
} else {
const valid = this.$refs.tableRef;
if (valid) {
const errMap = await valid.validate(true);
if (errMap) {
return false;
} else {
this.$message(
`新增 ${insertRecords.length} 条,删除 ${removeRecords.length} 条,更新 ${updateRecords.length}`
);
}
}
}
break;
}
},
getHeight() {
this.height = window.innerHeight - 160;
},
},
};
</script>
<style lang="scss" scoped>
.el-header {
margin: 0;
padding: 5px 0;
height: auto;
}
.el-container {
padding: 0;
margin: 0;
}
.el-main {
padding: 0;
}
.el-col {
padding: 0;
}
.el-aside {
background: #fff;
padding: 0;
}
.el-container {
padding: 0;
}
.el-row {
margin-bottom: 5px;
}
.el-row:last-child {
margin-bottom: 0;
}
.tableStyles {
background: #0a76a4;
}
.my-dropdown {
width: 450px;
height: 250px;
background-color: #fff;
border: 1px solid #dcdfe6;
box-shadow: 0 0 6px 2px rgba(0, 0, 0, 0.1);
font-size: 12px;
}
::v-deep .mytable .vxe-input {
display: flex !important;
}
::v-deep .el-form-item {
margin-bottom: 0px !important;
}
::v-deep .el-input {
width: auto !important;
}
</style>

@ -0,0 +1,226 @@
<template>
<el-container>
<el-header style="width: 100%">
<el-row :gutter="20">
<el-col :span="18">
<el-col :span="3">
<el-input
v-model="queryParam.name"
placeholder="编码类型"
clearable
/>
</el-col>
</el-col>
<el-col :span="6" style="text-align: right">
<el-button type="primary" @click="search"></el-button>
</el-col>
</el-row>
<el-row>
<div style="float:right;">
<el-button type="success" @click="toolbarButtonClickEvent('myInsert')"></el-button>
<el-button type="danger" @click="toolbarButtonClickEvent('myDelete')"></el-button>
<el-button type="success" @click="toolbarButtonClickEvent('mySave')"></el-button>
</div>
</el-row>
</el-header>
<el-container style="margin-top: 10px">
<el-aside width="225px">
<el-tree
v-loading="isTreeLoading"
:default-expanded-keys="['@@@']"
:expand-on-click-node="false"
node-key="dictCode"
:data="treeData"
:props="defaultProps"
highlight-current
@node-click="treeNodeClick"
/>
</el-aside>
<el-main>
<div class="mytable">
<vxe-grid
id="id"
ref="xGrid"
border
resizable
keep-source
:height="height"
:auto-resize="true"
:columns="tableColumn"
:row-class-name="tableStyle"
:data="tableData"
:custom-config="{storage: true}"
:edit-config="{trigger: 'click', mode: 'row', showStatus: true}"
/>
</div>
<!-- :toolbar-config="tableToolbar" @toolbar-button-click="toolbarButtonClickEvent"-->
<!-- <tb-filter ref="tbFilter" :list="_tableData" :filter="columnFilter" @execFilter="execFilter"></tb-filter>-->
</el-main>
</el-container>
</el-container>
</template>
<script>
import { getTreeList, add, del, getList, update } from '@/api/sy/xtgl'
// import TbFilter from '@/components/TableColumnFilter'
export default {
name: 'Bmgl',
// components: { TbFilter },
data() {
return {
columnFilter: {},
treeId: '',
queryParam: {
name: ''
},
treeData: [],
isTreeLoading: true,
defaultProps: {
children: 'children',
label: 'label'
},
tableData: [],
// defaultHeight: { height: '' },
height: '500px',
// tableToolbar: {
// buttons: [
// { code: 'myInsert', name: '' },
// { code: 'mySave', name: '', status: 'success' },
// { code: 'myDelete', name: '', status: 'success' },
// ],
// },
tableColumn: [
{ type: 'checkbox', width: 50 },
{ type: 'seq', width: 60, title: '序号' },
{ field: 'itemValue', title: '名称', editRender: { name: 'input' }},
{ field: 'itemCode', title: '数据值', editRender: { name: 'input' }},
{ field: 'remark', title: '备注', editRender: { name: 'input' }},
{ field: 'dictCode', title: '字典编码' },
{ field: 'id', visible: false }
]
}
},
computed: {
_tableData: function() {
const resultList = this.tableData
if (this.$refs.tbFilter) {
return this.$refs.tbFilter.doFilter(this.columnFilter, resultList)
}
return resultList
}
},
created() {
window.addEventListener('resize', this.getHeight)
this.getHeight()
this.search()
},
methods: {
execFilter(property, vals) {
this.$set(this.columnFilter, property, vals)
},
tableStyle() {
return 'tableStyles'
},
search() {
getTreeList(this.queryParam).then(response => {
this.treeData = response.data
this.isTreeLoading = false
})
},
loadData() {
getList({ name: this.treeId }).then(response => {
this.tableData = response.data
})
},
getHeight() {
// this.defaultHeight.height = window.innerHeight - 140 + 'px'
this.height = window.innerHeight - 190
},
treeNodeClick(data) {
console.log(data)
this.treeId = data.id
this.loadData()
},
async toolbarButtonClickEvent(code) {
const {insertRecords, removeRecords, updateRecords} = this.$refs.xGrid.getRecordset()
switch (code) {
case 'myInsert':
if (this.treeId === '' || this.treeId === '@@@') {
return
}
this.$refs.xGrid.insertAt({
dictCode: this.treeId
}, -1)
break
case 'myDelete':
this.$refs.xGrid.removeCheckboxRow()
break
case 'mySave':
if (insertRecords.length !== 0) {
await add(insertRecords).then(response => {
this.tableData = response.data
this.loadData()
})
}
if (removeRecords.length !== 0) {
const delArr = []
removeRecords.forEach(function (value, index) {
delArr[index] = value.id
})
console.log(delArr)
await del(delArr).then(response => {
this.tableData = response.data
this.loadData()
})
}
if (updateRecords.length !== 0) {
await update(updateRecords).then(response => {
// this.tableData=response.data
console.log(response)
if (response.success) {
this.$message({message: '保存成功!', type: 'success'})
}
this.loadData()
})
}
//
this.$store.dispatch('dict/getMapList')
this.$message(`新增 ${insertRecords.length} 条,删除 ${removeRecords.length} 条,更新 ${updateRecords.length}`)
break
}
}
}
}
</script>
<style scoped>
.el-header{margin:0;padding: 5px;height:auto;}
.el-container{padding: 0;margin:0;}
.el-main{padding: 0;}
.el-col{padding: 0;}
.el-aside{background: #fff;padding: 0}
.el-container{padding: 0}
.el-row {margin-bottom: 5px;}
.el-row:last-child {margin-bottom: 0; }
.tableStyles{
background: #0a76a4;
}
</style>

@ -0,0 +1,366 @@
<template>
<el-container style="height: 100%;position: absolute;width: 100%;">
<el-col :span="16" style="height:100%;">
<div>
<el-select
v-model="query.system_code"
v-loading="isZxtbmLoading"
clearable
placeholder="子系统"
style="width: 110px"
>
<el-option
v-for="item in zxtbmList"
:key="item.system_code"
:label="item.system_name"
:value="item.system_code"
/>
</el-select>
<el-input v-model="query.word" placeholder="全文检索" style="width: 200px" clearable />
<el-button style="margin: 1px" type="primary" icon="el-icon-search" @click="handleQuerySubmit"></el-button>
<div style="float: right;display: none;">
<el-button style="margin: 1px" type="success" @click="handleAddGnqd"></el-button>
<el-button style="margin: 1px" type="warning" @click="handleUpdateGnqd"></el-button>
<el-button style="margin: 1px" type="danger" @click="handleDeleteGnqd"></el-button>
<el-button style="margin: 1px" type="" @click="exportExcel">Excel</el-button>
</div>
</div>
<el-table
ref="funcTable"
v-loading="isFuncTableLoading"
class="gnlbTable"
:show-overflow-tooltip="true"
:data="funcTable.slice((currentPage-1)*pageSize,currentPage*pageSize)"
height="calc(100% - 30px - 35px)"
width="100%"
:border="true"
highlight-current-row
element-loading-background="rgba(0, 0, 0, 0.01)"
element-loading-text="数据正在加载中"
element-loading-spinner="el-icon-loading"
@current-change="handleTableCurrentChange"
@header-click="showFilter"
>
<el-table-column sortable label="标识" property="id" />
<el-table-column sortable label="父级标识" property="parent_id" width="110px" />
<el-table-column sortable label="子系统" property="system_code" width="110px">
<template slot-scope="scope">
{{ getSystemName(scope.row.system_code) }}
</template>
</el-table-column>
<el-table-column sortable label="菜单名称" property="menu_name" width="130px" />
<el-table-column sortable label="组件路径" property="component_path" width="200px" />
<el-table-column sortable label="重定向" property="redirect" width="120px" />
<el-table-column sortable label="图标" property="icon" />
<el-table-column sortable label="菜单状态" property="menu_status" width="100px">
<template slot-scope="scope">
{{ scope.row.menu_status == 1?'使用':'无效' }}
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="currentPage"
:page-sizes="[20, 50, 100, 10000]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="funcTable.length"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
<el-dialog class="GncdDialog" :title="dialogTitle" :visible.sync="dialogVisible" width="400px" center="">
<el-row>
<el-row>
<span style="width: 80px;display:inline-block;">子系统</span>
<el-select
v-model="updateData.zxtbm"
v-loading="isZxtbmLoading"
clearable
placeholder="子系统"
style="width: 250px;"
>
<el-option
v-for="item in zxtbmList"
:key="item.zxtdm"
:label="item.zxtms"
:value="item.zxtdm"
/>
</el-select>
</el-row>
<el-row>
<span style="width: 80px;display:inline-block;">所属模块</span>
<el-input v-model="updateData.ylzd1" placeholder="" style="width: 250px;" />
</el-row>
<el-row>
<span style="width: 80px;display:inline-block;">功能描述</span>
<el-input v-model="updateData.ms" placeholder="" style="width: 250px;" />
</el-row>
<el-row>
<span style="width: 80px;display:inline-block;">窗口名称</span>
<el-input v-model="updateData.ckdm" placeholder="" style="width: 250px;" />
</el-row>
<el-row>
<span style="width: 80px;display:inline-block;">功能类别</span>
<el-input v-model="updateData.gnlb" placeholder="" style="width: 250px;" />
</el-row>
<el-row>
<span style="width: 80px;display:inline-block;">参数</span>
<el-input v-model="updateData.ckcs" placeholder="" style="width: 250px;" />
</el-row>
<el-row>
<span style="width: 80px;display:inline-block;">排序1</span>
<el-input v-model="updateData.ylzd2" placeholder="" style="width: 250px;" />
</el-row>
<el-row>
<span style="width: 80px;display:inline-block;">排序2</span>
<el-input v-model="updateData.ylzd3" placeholder="" style="width: 250px;" />
</el-row>
<el-row>
<span style="width: 80px;display:inline-block;">取消</span>
<el-input v-model="updateData.ylzd4" placeholder="" style="width: 250px;" />
</el-row>
<el-row>
<el-button
v-if="dialogTitle =='添加功能'?true :false"
style="float: right;"
type="primary"
@click="handleAddGnqdComplated"
>添加
</el-button>
<el-button
v-if="dialogTitle =='修改功能'?true :false"
style="float: right;"
type="primary"
@click="handleUpdateGnqdComplated"
>修改
</el-button>
</el-row>
</el-row>
</el-dialog>
</el-col>
<el-col :span="8" style="border-left:1px solid rgb(230, 230, 230);height: 100%;" :height="defaultHeight.height">
<el-tabs v-model="activeYhTabName" style="padding-left: 5px;height: 100%;">
<el-tab-pane label="用户信息" name="yhxx">
<el-table
ref="userTable"
v-loading="isUserTableLoding"
:show-overflow-tooltip="true"
:data="userTableData"
:height="defaultHeight.height"
width="100%"
:border="true"
highlight-current-row
element-loading-background="rgba(0, 0, 0, 0.01)"
element-loading-text="数据正在加载中"
element-loading-spinner="el-icon-loading"
>
<el-table-column label="序号" type="index" />
<el-table-column sortable label="部门" width="100px">
<template slot-scope="scope">
{{ getDepartName(scope.row.depart_code) }}
</template>
</el-table-column>
<el-table-column label="用户账号" property="user_code" />
<el-table-column label="用户名称" property="user_name" />
<el-table-column label="所属工作组" property="roles" />
</el-table>
</el-tab-pane>
</el-tabs>
</el-col>
<tbfilter ref="tbFilter" :list="funcTable" :filter="columnFilter" @execFilter="execFilter" />
</el-container>
</template>
<script>
import tbfilter from '@/components/TableColumnFilter'
import {
getSystemList,
getDepartList,
getMenuList,
getUserListByMenu,
getZxtList,
getFuncList,
getUserListByFunc,
addFunc,
updateFunc,
deleteFunc
} from '@/api/sy/yhgl'
import FileSaver from 'file-saver'
import XLSX from 'xlsx'
export default {
name: 'Gngl',
components: { tbfilter },
data() {
return {
defaultHeight: { height: '' },
query: {},
activeYhTabName: 'yhxx',
funcTableData: [],
isFuncTableLoading: true,
userTableData: [],
isUserTableLoding: false,
isZxtbmLoading: true,
currentPage: 1,
pageSize: 100,
zxtbmList: [],
dm_depart: [],
selectFunction: {},
dialogTitle: '',
dialogVisible: false,
updateData: {},
columnFilter: {}
}
},
computed: {
funcTable: function() {
const search = this.query
let resultList = this.funcTableData
if (search && search.system_code) {
resultList = this.funcTableData.filter(data => {
return data.system_code === search.system_code
})
}
if (search && search.word) {
resultList = resultList.filter(data => {
return Object.keys(data).some(key => {
return String(data[key]).indexOf(search.word) > -1
})
})
}
if (this.$refs.tbFilter) {
return this.$refs.tbFilter.doFilter(this.columnFilter, resultList)
}
return resultList
}
},
mounted() {
},
created() {
window.addEventListener('resize', this.getHeight)
this.getHeight()
getSystemList({}).then(response => {
this.zxtbmList = response.data
this.isZxtbmLoading = false
getDepartList({}).then(response => {
this.dm_depart = response.data
getMenuList({}).then(response => {
this.funcTableData = response.data
this.isFuncTableLoading = false
this.$refs.funcTable.setCurrentRow(this.funcTableData[0])
})
})
})
},
methods: {
showFilter(column) {
this.$refs.tbFilter.showFilter(column)
},
execFilter(property, vals) {
this.currentPage = 1
this.$set(this.columnFilter, property, vals)
},
getHeight() {
this.defaultHeight.height = window.innerHeight - 140 + 'px'
},
//
handleSizeChange(val) {
this.pageSize = val
},
//
handleCurrentChange(val) {
this.currentPage = val
},
handleTableCurrentChange(currentRow) {
if (!currentRow) return
this.selectFunction = currentRow
this.isUserTableLoding = true
getUserListByMenu(currentRow).then(response => {
this.userTableData = response.data
this.isUserTableLoding = false
})
},
handleAddGnqd() {
this.updateData = { 'gnlb': '' }
this.dialogVisible = true
this.dialogTitle = '添加功能'
},
handleAddGnqdComplated() {
addFunc(this.updateData).then(response => {
this.updateData['zxtmc'] = this.getZXTBM(this.updateData['zxtbm'], 0)
this.updateData = JSON.parse(JSON.stringify(this.updateData))
this.funcTableData.push(this.updateData)
this.dialogVisible = false
this.$message({ message: '添加功能菜单成功!', type: 'success' })
})
},
handleUpdateGnqd() {
if (!this.selectFunction.zxtbm) {
this.$message({ message: '请选择要修改的数据!', type: 'error' })
return
}
this.dialogVisible = true
this.dialogTitle = '修改功能'
this.updateData = JSON.parse(JSON.stringify(this.selectFunction))
},
handleUpdateGnqdComplated() {
updateFunc([this.selectFunction, this.updateData]).then(response => {
for (var key in this.updateData) {
this.selectFunction[key] = this.updateData[key]
}
this.dialogVisible = false
this.$message({ message: '修改功能菜单成功!', type: 'success' })
})
},
handleDeleteGnqd() {
this.$confirm('此操作将删除该功能菜单, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteFunc(this.selectFunction).then(response => {
this.funcTableData = this.funcTableData.filter(t => !(t.zxtbm === this.selectFunction.zxtbm && t.ckdm === this.selectFunction.ckdm && t.ms === this.selectFunction.ms && t.gnlb === this.selectFunction.gnlb))
this.$message({ message: '删除功能菜单成功!', type: 'success' })
})
})
},
getDepartName(depart_code) {
for (const i in this.dm_depart) {
if (this.dm_depart[i].depart_code === depart_code) {
return this.dm_depart[i].depart_name
}
}
return ''
},
getSystemName(system_code) {
for (const i in this.zxtbmList) {
if (this.zxtbmList[i].system_code === system_code) {
return this.zxtbmList[i].system_name
}
}
return ''
},
exportExcel() {
/* generate workbook object from table */
//
var wb = XLSX.utils.table_to_book(document.querySelector('.gnlbTable'))
/* get binary string as output */
var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
try {
FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'gnlb.xlsx')
} catch (e) {
if (typeof console !== 'undefined') console.log(e, wbout)
}
return wbout
}
}
}
</script>
<style scoped>
.GncdDialog .el-row {
margin-bottom: 5px;
}
</style>

@ -0,0 +1,644 @@
<template>
<el-container style="height: 100%;position: absolute;width: 100%;">
<el-col :span="6" style="border-right: 1px solid #e6e6e6;height: 100%;">
<div style="height:30px;">
<el-button style="margin: 1px" type="primary" icon="el-icon-search" @click="handleWorkGroupQuery"></el-button>
<el-button style="margin: 1px" type="success" @click="handleWorkGroupAdd"></el-button>
<el-button style="margin: 1px" type="warning" @click="handleWorkGroupUpdate"></el-button>
<el-button style="margin: 1px" type="danger" @click="handleWorkGroupDelete"></el-button>
<el-button style="margin: 1px" @click="handleWorkGroupPrint"></el-button>
</div>
<el-table
ref="gzzTable"
v-loading="isGzzTableLoading"
class="gzzTable"
style="flex: 1;clear: left;"
:show-overflow-tooltip="true"
:data="c_gzzTableData"
height="calc(100% - 30px)"
width="100%"
:border="true"
highlight-current-row
element-loading-background="rgba(0, 0, 0, 0.05)"
element-loading-text="数据正在加载中"
element-loading-spinner="el-icon-loading"
@current-change="handleWorkGroupChange"
@header-click="showFilter"
>
<el-table-column sortable label="代码" property="role_code" />
<el-table-column sortable label="名称" property="role_name" />
</el-table>
<el-dialog
class="WorkGroupDialog"
:title="dialogTitle"
:visible.sync="dialogTableVisible"
width="350px"
center=""
>
<el-row>
<el-row>
<span style="width: 60px;display:inline-block;">代码</span>
<el-input v-model="updateData.role_code" placeholder="" style="width: 200px;" />
</el-row>
<el-row>
<span style="width: 60px;display:inline-block;">名称</span>
<el-input v-model="updateData.role_name" placeholder="" style="width: 200px;" />
</el-row>
<el-row style="margin-top:20px;">
<el-button
v-if="dialogTitle =='添加工作组'?true :false"
style="float: right;"
type="primary"
@click="handleWorkGroupAddComplated"
>添加
</el-button>
<el-button
v-if="dialogTitle =='修改工作组'?true :false"
style="float: right;"
type="primary"
@click="handleWorkGroupUpdateComplated"
>修改
</el-button>
</el-row>
</el-row>
</el-dialog>
</el-col>
<el-col :span="18" style="height: 100%;" :height="defaultHeight.height">
<el-tabs v-model="activeTabName" style="padding-left: 5px;" @tab-click="handleTabClick">
<el-tab-pane label="用户信息" name="yhxx">
<el-table
ref="yhxxTable"
v-loading="isYhxxTableLoading"
:show-overflow-tooltip="true"
:data="yhxxTableData"
:height="defaultHeight.height"
width="100%"
:border="true"
highlight-current-row
element-loading-background="rgba(0, 0, 0, 0.01)"
element-loading-text="数据正在加载中"
element-loading-spinner="el-icon-loading"
@row-click="handleGzzTablRowClick"
@header-click="handleGzzTableHeadClick"
@current-change="handleGzzCurrentChange"
>
<el-table-column label="" property="checked" style="width: 30px;">
<template slot-scope="scope">
<el-checkbox v-model="scope.row.checked" @change="handleYhxxSelect(scope.row)" />
</template>
</el-table-column>
<el-table-column label="用户代码" property="user_code" />
<el-table-column label="用户名称" property="user_name" />
<el-table-column label="所属部门" property="depart_code">
<template slot-scope="scope">
{{ getDepartName(scope.row.depart_code) }}
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="分组权限" name="fzqx">
<el-table
ref="fzqxTable"
v-loading="isFzqxTableLoading"
:show-overflow-tooltip="true"
:data="fzqxTableData"
:height="defaultHeight.height"
width="100%"
:border="true"
highlight-current-row
element-loading-background="rgba(0, 0, 0, 0.01)"
element-loading-text="数据正在加载中"
element-loading-spinner="el-icon-loading"
@row-click="handleGzzTablRowClick"
@header-click="handleGzzTableHeadClick"
@current-change="handleGzzCurrentChange"
>
<el-table-column label="" property="checked" style="width: 30px;">
<template slot-scope="scope">
<el-checkbox v-model="scope.row.checked" @change="handleFzqxSelect(scope.row)" />
</template>
</el-table-column>
<el-table-column label="编码" property="institution_code" />
<el-table-column label="分类组名称" property="institution_name" />
</el-table>
</el-tab-pane>
<el-tab-pane label="子系统权限" name="zxtqx">
<el-table
ref="zxtqxTable"
v-loading="isZxtqxTableLoading"
:show-overflow-tooltip="true"
:data="zxtqxTableData"
:height="defaultHeight.height"
width="100%"
:border="true"
highlight-current-row
element-loading-background="rgba(0, 0, 0, 0.01)"
element-loading-text="数据正在加载中"
element-loading-spinner="el-icon-loading"
@row-click="handleGzzTablRowClick"
@header-click="handleGzzTableHeadClick"
@current-change="handleGzzCurrentChange"
>
<el-table-column label="" property="checked" style="width: 30px;">
<template slot-scope="scope">
<el-checkbox v-model="scope.row.checked" @change="handleZxtSelect(scope.row)" />
</template>
</el-table-column>
<el-table-column label="编码" property="system_code" />
<el-table-column label="子系统名称" property="system_name" />
</el-table>
</el-tab-pane>
<el-tab-pane label="功能权限" name="gnqx">
<el-col :span="6" :height="defaultHeight.height" style="overflow-y: scroll">
<el-tree
ref="tree"
v-loading="isGnqxTreeLoading"
:data="gnqxTreeData"
:style="defaultHeight"
show-checkbox
accordion
:expand-on-click-node="false"
highlight-current
node-key="id"
@check="treeNodeCheck"
@node-click="treeNodeClick"
/>
</el-col>
<el-col :span="18" :height="defaultHeight.height">
<div :height="defaultHeight.height">
<el-table
ref="gnqxTable"
v-loading="isGnqxTableLoading"
:show-overflow-tooltip="true"
:data="c_gnqxTableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"
:height="defaultHeight.height35"
width="100%"
:border="true"
highlight-current-row
element-loading-background="rgba(0, 0, 0, 0.01)"
element-loading-text="数据正在加载中"
element-loading-spinner="el-icon-loading"
@row-click="handleGzzTablRowClick"
@header-click="handleGzzTableHeadClick"
@current-change="handleGzzCurrentChange"
>
<el-table-column label="" property="checked" style="width: 30px;">
<template slot-scope="scope">
<el-checkbox v-model="scope.row.checked" @change="handleGnqxSelect(scope.row)" />
</template>
</el-table-column>
<el-table-column label="菜单名称" property="menu_name" />
<el-table-column label="功能类别" property="gnlb" />
<el-table-column label="菜单" property="ylzd1" />
</el-table>
<el-pagination
:current-page="currentPage"
:page-sizes="[20, 50, 100, 10000]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="c_gnqxTableData.length"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</el-col>
</el-tab-pane>
</el-tabs>
</el-col>
<tbfilter ref="tbFilter" :list="c_gzzTableData" :filter="columnFilter" @execFilter="execFilter" />
</el-container>
</template>
<script>
// import { PlTable, PlTableColumn } from 'pl-table'
import {
getDepartList,
getSystemList,
getRoleList,
getUserList,
getInstitutionList,
getMenuList,
addRole,
deleteRole,
updateRole,
getUserListByRole,
addRoleForUser,
deleteRoleForUser,
getInstitutionListByRole,
addRoleForInstitution,
deleteRoleForInstitution,
getSystemListByRole,
addRoleForSystem,
deleteRoleForSystem,
getMenuListByRole,
addRoleForMenu,
deleteRoleForMenu
} from '@/api/sy/yhgl'
import FileSaver from 'file-saver'
import XLSX from 'xlsx'
import tbfilter from '@/components/TableColumnFilter'
export default {
name: 'Jsgl',
components: { tbfilter },
data() {
return {
defaultHeight: {
height: '',
height35: ''
},
zxtbmList: [],
dm_depart: [],
currentPage: 1,
pageSize: 100,
activeTabName: 'yhxx',
gzzTableData: [],
isGzzTableLoading: true,
yhxxTableData: [],
isYhxxTableLoading: true,
fzqxTableData: [],
isFzqxTableLoading: true,
zxtqxTableData: [],
isZxtqxTableLoading: true,
gnqxTreeData: [],
isGnqxTreeLoading: true,
gnqxTableData: [],
isGnqxTableLoading: true,
selectWorkGroup: {},
gnqxQueryZxtbm: '',
gnqxQueryMenuid: '',
dialogTableVisible: false,
dialogTitle: '',
updateData: {},
columnFilter: {}
}
},
computed: {
c_gzzTableData: function() {
const resultList = this.gzzTableData
if (this.$refs.tbFilter) {
return this.$refs.tbFilter.doFilter(this.columnFilter, resultList)
}
return resultList
},
c_gnqxTableData: function() {
let resultList = this.gnqxTableData
if (this.gnqxQueryMenuid === '@') {
return resultList
}
if (!this.gnqxQueryZxtbm) {
resultList = this.gnqxTableData.filter(data => {
return data.system_code === this.gnqxQueryMenuid
})
return resultList
}
if (this.gnqxQueryMenuid) {
resultList = resultList.filter(data => {
return data.parent_id === this.gnqxQueryMenuid
})
return resultList
}
return resultList
}
},
created() {
getDepartList({}).then(response => {
this.dm_depart = response.data
getSystemList({}).then(response => {
this.zxtbmList = response.data
this.zxtqxTableData = response.data
this.isZxtqxTableLoading = false
getUserList({}).then(response => {
this.yhxxTableData = response.data
this.isYhxxTableLoading = false
getInstitutionList({}).then(response => {
this.fzqxTableData = response.data
this.isFzqxTableLoading = false
getMenuList({}).then(response => {
this.gnqxTreeData = this.parseTreeData(response.data)
this.gnqxTableData = response.data
this.isGnqxTableLoading = false
this.isGnqxTreeLoading = false
getRoleList({}).then(response => {
this.gzzTableData = response.data
this.isGzzTableLoading = false
this.$refs.gzzTable.setCurrentRow(this.gzzTableData[0])
})
})
})
})
})
})
window.addEventListener('resize', this.getHeight)
this.getHeight()
},
methods: {
handleSizeChange(val) {
this.pageSize = val
},
handleCurrentChange(val) {
this.currentPage = val
},
showFilter(column) {
this.$refs.tbFilter.showFilter(column)
},
execFilter(property, vals) {
this.currentPage = 1
this.$set(this.columnFilter, property, vals)
},
getHeight() {
this.defaultHeight.height = window.innerHeight - 140 + 'px'
this.defaultHeight.height35 = window.innerHeight - 140 - 35 + 'px'
},
getDepartName(depart_code) {
for (const i in this.dm_depart) {
if (this.dm_depart[i].depart_code === depart_code) {
return this.dm_depart[i].depart_name
}
}
return ''
},
getSystemName(system_code) {
for (const i in this.zxtbmList) {
if (this.zxtbmList[i].system_code === system_code) {
return this.zxtbmList[i].system_name
}
}
return ''
},
parseTreeData(menu) {
const treeData = [{ 'label': '全部功能', 'id': '@', children: [], disabled: true }]
const info = menu.reduce((map, node) => {
node.label = node.menu_name
return map[node.id] = node, node.children = [], map
}, {})
const result = menu.filter(node => {
if (info[node.parent_id]) {
info[node.parent_id].children.push(node)
}
return !node.parent_id
})
const system_menu = {}
for (let i = 0; i < result.length; i++) {
if (!system_menu[result[i].system_code]) {
system_menu[result[i].system_code] = []
}
system_menu[result[i].system_code].push(result[i])
}
for (let i = 0; i < this.zxtbmList.length; i++) {
const key = this.zxtbmList[i].system_code
treeData[0].children.push({ 'label': this.getSystemName(key), 'id': key, 'children': system_menu[key] })
}
return treeData
},
handleWorkGroupChange(val) {
if (!val) return
this.selectWorkGroup = val
this.isYhxxTableLoading = true
this.isFzqxTableLoading = true
this.isZxtqxTableLoading = true
this.isGnqxTableLoading = true
this.isGnqxTreeLoading = true
for (const j in this.yhxxTableData) {
this.$set(this.yhxxTableData[j], 'checked', false)
}
for (const j in this.fzqxTableData) {
this.$set(this.fzqxTableData[j], 'checked', false)
}
for (const j in this.zxtqxTableData) {
this.$set(this.zxtqxTableData[j], 'checked', false)
}
for (const j in this.gnqxTableData) {
this.$set(this.gnqxTableData[j], 'checked', false)
}
this.$refs.tree.setCheckedNodes([])
getUserListByRole(val).then(response => {
for (const i in response.data) {
for (const j in this.yhxxTableData) {
if (response.data[i].user_code === this.yhxxTableData[j].user_code) {
this.$set(this.yhxxTableData[j], 'checked', true)
}
}
}
this.isYhxxTableLoading = false
})
getInstitutionListByRole(val).then(response => {
for (const i in response.data) {
for (const j in this.fzqxTableData) {
if (response.data[i].institution_code === this.fzqxTableData[j].institution_code) {
this.$set(this.fzqxTableData[j], 'checked', true)
}
}
}
this.isFzqxTableLoading = false
})
getSystemListByRole(val).then(response => {
for (const i in response.data) {
for (const j in this.zxtqxTableData) {
if (response.data[i].system_code === this.zxtqxTableData[j].system_code) {
this.$set(this.zxtqxTableData[j], 'checked', true)
}
}
}
this.isZxtqxTableLoading = false
})
getMenuListByRole(val).then(response => {
for (const i in response.data) {
for (const j in this.gnqxTableData) {
if (response.data[i].menu_id === this.gnqxTableData[j].id) {
this.$set(this.gnqxTableData[j], 'checked', true)
}
}
}
for (const i in response.data) {
const id = response.data[i].menu_id
this.$refs.tree.setChecked(id, true, false)
}
this.isGnqxTreeLoading = false
this.isGnqxTableLoading = false
})
}, handleWorkGroupQuery() {
this.isGzzTableLoading = true
getRoleList({}).then(response => {
this.gzzTableData = response.data
this.isGzzTableLoading = false
})
}, handleWorkGroupAdd() {
this.dialogTitle = '添加工作组'
this.dialogTableVisible = true
this.updateData = {}
},
handleWorkGroupAddComplated() {
addRole(this.updateData).then(response => {
this.$message({ message: '添加用户组成功!', type: 'success' })
this.updateData = JSON.parse(JSON.stringify(this.updateData))
this.gzzTableData = [this.updateData].concat(this.gzzTableData)
this.dialogTableVisible = false
})
}, handleWorkGroupUpdate() {
if (!this.selectWorkGroup || !this.selectWorkGroup.role_code) {
this.$message({ message: '请选择一个工作组!', type: 'warning' })
return
}
this.dialogTitle = '修改工作组'
this.dialogTableVisible = true
this.updateData = JSON.parse(JSON.stringify(this.selectWorkGroup))
}, handleWorkGroupUpdateComplated() {
updateRole(this.updateData).then(response => {
for (const key in this.updateData) {
this.selectWorkGroup[key] = this.updateData[key]
}
this.dialogTableVisible = false
this.$message({ message: '修改用户信息成功!', type: 'success' })
})
}, handleWorkGroupDelete() {
this.$confirm('此操作将删除该工作组, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
if (!this.selectWorkGroup || !this.selectWorkGroup.role_code) {
this.$message({ message: '请选择一个工作组!', type: 'warning' })
return
}
deleteRole(this.selectWorkGroup).then(response => {
this.gzzTableData = this.gzzTableData.filter(t => !(t.role_code === this.selectWorkGroup.role_code))
this.$message({ message: '删除工作组成功!', type: 'success' })
})
})
}, handleYhxxSelect(row) {
if (!this.selectWorkGroup || !this.selectWorkGroup.role_code) {
this.$message({ message: '请选择一个工作组!', type: 'warning' })
return
}
const data = { 'role_code': this.selectWorkGroup.role_code, 'user_code': row.user_code }
if (row.checked) {
addRoleForUser([data]).then(response => {
this.$message({ message: '添加用户到工作组成功!', type: 'success' })
})
} else {
deleteRoleForUser([data]).then(response => {
this.$message({ message: '从工作组移除用户成功!', type: 'success' })
})
}
}, handleFzqxSelect(row) {
const data = { 'institution_code': row.institution_code, 'role_code': this.selectWorkGroup.role_code }
if (row.checked) {
addRoleForInstitution([data]).then(response => {
this.$message({ message: '添加分组权限到工作组成功!', type: 'success' })
})
} else {
deleteRoleForInstitution([data]).then(response => {
this.$message({ message: '从工作组移除分组权限成功!', type: 'success' })
})
}
}, handleZxtSelect(row) {
const data = { 'role_code': this.selectWorkGroup.role_code, 'system_code': row.system_code }
if (row.checked) {
addRoleForSystem([data]).then(response => {
this.$message({ message: '添加子系统权限到工作组成功!', type: 'success' })
})
} else {
deleteRoleForSystem([data]).then(response => {
this.$message({ message: '从工作组移除子系统权限成功!', type: 'success' })
})
}
}, handleGnqxSelect(row) {
const data = { 'role_code': this.selectWorkGroup.role_code, 'menu_id': row.id }
if (row.checked) {
addRoleForMenu([data]).then(response => {
this.$refs.tree.setChecked(row.id, true, false)
this.$message({ message: '添加功能菜单到工作组成功!', type: 'success' })
})
} else {
deleteRoleForMenu([data]).then(response => {
this.$refs.tree.setChecked(row.id, false, false)
this.$message({ message: '从工作组移除功能菜单成功!', type: 'success' })
})
}
},
treeNodeClick(data) {
this.currentPage = 1
this.pageSize = 100
this.gnqxQueryZxtbm = data.system_code
this.gnqxQueryMenuid = data.id
},
treeNodeCheck(checkedNode) {
const checked = this.$refs.tree.getNode(checkedNode.id).checked
this.selectMenuRole(checkedNode, checked)
},
selectMenuRole(checkedNode, checked) {
const deleteFunction = []
const insertFunction = []
const selectedKeys = this.$refs.tree.getCheckedNodes(false, true)
for (const j in this.gnqxTableData) {
const source = this.gnqxTableData[j]['checked']
this.gnqxTableData[j]['checked'] = false
for (let i = 0; i < selectedKeys.length; i++) {
if (this.gnqxTableData[j]['id'] === selectedKeys[i].id) {
this.gnqxTableData[j]['checked'] = true
}
}
const data = { 'role_code': this.selectWorkGroup.role_code, 'menu_id': this.gnqxTableData[j]['id'] }
if (source && !this.gnqxTableData[j]['checked']) {
deleteFunction.push(data)
}
if (!source && this.gnqxTableData[j]['checked']) {
insertFunction.push(data)
}
}
addRoleForMenu(insertFunction).then(response => {
// this.$message({ message: '', type: 'success' })
})
deleteRoleForMenu(deleteFunction).then(response => {
// this.$message({ message: '', type: 'success' })
})
this.$message({ message: '修改工作组功能菜单成功!', type: 'success' })
},
handleWorkGroupPrint() {
/* generate workbook object from table */
//
var wb = XLSX.utils.table_to_book(document.querySelector('.gzzTable'))
/* get binary string as output */
var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
try {
FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'gzz.xlsx')
} catch (e) {
if (typeof console !== 'undefined') console.log(e, wbout)
}
return wbout
}, handleTabClick() {
if (!this.selectWorkGroup || !this.selectWorkGroup.role_code) {
this.$message({ message: '请选择一个工作组!', type: 'warning' })
return
}
}
}
}
</script>
<style scoped>
.WorkGroupDialog .el-row {
margin-bottom: 5px;
}
</style>

@ -0,0 +1,249 @@
<template>
<el-container>
<el-header style="width: 100%;">
<el-row>
<el-col :span="22">
<el-col :span="3">
<!-- <el-select v-model="queryParam.batchType" clearable placeholder="使用方式" filterable>-->
<!-- <el-option-->
<!-- v-for="item in dictData.fklx"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- />-->
<!-- </el-select>-->
<el-input
v-model="queryParam.userName"
placeholder="姓名"
clearable
/>
</el-col>
<el-col :span="3">
<el-input
v-model="queryParam.content"
placeholder="内容"
clearable
/>
</el-col>
<el-col :span="3">
<el-select v-model="queryParam.systemCode" placeholder="子系统" clearable>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-col>
<el-col :span="10">
<el-date-picker v-model="queryParam.ks" value-format="yyyy/MM/dd" type="date" /> <span>-</span> <el-date-picker v-model="queryParam.js" value-format="yyyy/MM/dd" type="date" />
</el-col>
</el-col>
<el-col :span="2 " style="text-align: right">
<el-button type="primary" @click="loadData1"></el-button>
</el-col>
</el-row>
<el-row>
<div style="float:right;">
<!-- <el-button type="success" @click="toolbarButtonClickEvent('myInsert')"></el-button>-->
<el-button type="danger" @click="toolbarButtonClickEvent('myDelete')"></el-button>
<!-- <el-button type="success" @click="toolbarButtonClickEvent('mySave')"></el-button>-->
</div>
</el-row>
</el-header>
<el-container style="padding-top: 10px">
<el-main>
<div class="mytable">
<vxe-grid
id="id"
ref="xGrid"
border
resizable
:height="height"
:auto-resize="true"
:columns="tableColumn"
:data="tableData"
:custom-config="{storage: true}"
:pager-config="tablePage"
highlight-hover-row
@page-change="handlePageChange"
/>
</div>
</el-main>
</el-container>
</el-container>
</template>
<script>
import XEUtils from 'xe-utils'
import { syLogDel, syLogList } from '@/api/sy/xtgl'
// import TbFilter from '@/components/TableColumnFilter'
import { mapGetters } from 'vuex'
//
export default {
name: 'Xtrz',
// components: { TbFilter },
data() {
return {
options: [{
value: 'DY',
label: '单元制造'
}, {
value: 'GJ',
label: '管系制造'
}, {
value: 'IM',
label: '仓库管理'
}, {
value: 'MP',
label: '生产管理'
}, {
value: 'MS',
label: '营销管理'
}, {
value: 'QC',
label: '质量管理'
}, {
value: 'SY',
label: '系统管理'
}, {
value: 'TX',
label: '铁舾制造'
}],
tablePage: {
total: 0,
currentPage: 1,
pageSize: 5,
pageSizes: [5, 50, 100, 500, 10000],
layouts: ['Sizes', 'PrevJump', 'PrevPage', 'Number', 'NextPage', 'NextJump', 'FullJump', 'Total'],
perfect: true
},
columnFilter: {},
queryParam: {
content: '',
systemCode: '',
userName: '',
ks: XEUtils.toDateString(new Date(), 'yyyy/MM/dd'),
js: XEUtils.toDateString(new Date(), 'yyyy/MM/dd')
},
dictData: {},
tableData: [],
height: '500px',
tableColumn: [
{ type: 'checkbox', width: 50 },
{ type: 'seq', width: '40px' },
{ field: 'userCode', title: '职号' },
{ field: 'userName', title: '姓名' },
{ field: 'systemCode', title: '子系统编码' },
{ field: 'systemCodedText', title: '子系统名称' },
{ field: 'content', title: '内容' },
{ field: 'computerName', title: '计算机名' },
{ field: 'ip', title: 'ip' },
{ field: 'createTime', title: '使用时间' },
{ field: 'id', visible: false }
]
}
},
computed: {
...mapGetters([
'name',
'bmbm'
])
},
created() {
window.addEventListener('resize', this.getHeight)
this.getHeight()
this.baseSeacrh()
// this.loadData()
},
methods: {
handlePageChange({ currentPage, pageSize }) {
this.tablePage.currentPage = currentPage
this.tablePage.pageSize = pageSize
this.loadData1()
},
baseSeacrh() {
// syLogList({}).then(res => {
// this.tableData = res.data.records
// this.tablePage.total = res.data.total
// })
},
loadData1() {
syLogList({ syLog: this.queryParam, pageNo: this.tablePage.currentPage, pageSize: this.tablePage.pageSize }).then(res => {
this.tableData = res.data.records
this.tablePage.total = res.data.total
})
},
getHeight() {
this.height = window.innerHeight - 160
},
toolbarButtonClickEvent(code) {
const { removeRecords } = this.$refs.xGrid.getRecordset()
switch (code) {
case 'myDelete':
this.$confirm('删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(type => {
this.$refs.xGrid.removeCheckboxRow()
if (removeRecords.length !== 0) {
const delArr = []
removeRecords.forEach(function(value, index) {
delArr[index] = value.id
})
console.log(delArr)
syLogDel(delArr).then(response => {
if (response.success) {
console.log(removeRecords)
for (let i = 0; i < this.tableData.length; i++) {
if (removeRecords.indexOf(this.tableData[i]) !== -1) {
this.tableData.splice(i, 1)
i--
}
}
// this.tableData= this.tableData.filter((x) => !removeRecords.some((item) => x.id === item.id));
const xTable = this.$refs.xGrid
console.log(this.tableData)
xTable.loadData(this.tableData)
this.tablePage.total = this.tableData.length
// this.$message({ message: '', type: 'success' })
this.$message(`成功删除 ${removeRecords.length}`)
}
})
}
})
}
}
}
}
</script>
<style lang="scss" scoped >
.el-header{margin:0;padding: 5px;height:auto;}
.el-container{padding: 0;margin:0;}
.el-main{padding: 0;}
.el-col{padding: 0;}
.el-aside{background: #fff;padding: 0}
.el-container{padding: 0}
.el-row {margin-bottom: 5px;}
.el-row:last-child {margin-bottom: 0; }
.el-date-editor.el-input, .el-date-editor.el-input__inner {
width: 130px;
}
</style>

@ -0,0 +1,437 @@
<template>
<el-container style="height: 100%;position: absolute;width: 100%;">
<el-col :span="16" style="height:100%;">
<div style="color:#909399;">
部门
<el-select v-model="query.depart_code" clearable placeholder="部门编码" style="width: 110px">
<el-option
v-for="item in dm_depart"
:key="item.depart_code"
:label="item.depart_name"
:value="item.depart_code"
/>
</el-select>
姓名
<el-input v-model="query.uesr_name" placeholder="姓名" style="width: 110px" clearable />
<el-button style="margin: 1px" type="primary" icon="el-icon-search">查询</el-button>
<div style="float: right;">
<el-button style="margin: 1px" type="success" @click="handleAddYhxx"></el-button>
<el-button style="margin: 1px" type="warning" @click="handleUpdateYhxx"></el-button>
<el-button style="margin: 1px" type="danger" @click="handleDeleteYhxx"></el-button>
<el-button style="margin: 1px" @click="exportExcel">Excel</el-button>
</div>
</div>
<el-table
ref="yhxxTable"
v-loading="isYhxxTableLoading"
class="yhxxTable"
:show-overflow-tooltip="true"
:data="c_yhxxTableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"
height="calc(100% - 30px - 35px)"
width="100%"
:border="true"
highlight-current-row
element-loading-background="rgba(0, 0, 0, 0.01)"
element-loading-text="数据正在加载中"
element-loading-spinner="el-icon-loading"
@current-change="handleYhxxCurrentChange"
@header-click="showFilter"
>
<el-table-column sortable label="账号" property="user_code" />
<el-table-column sortable label="姓名" property="user_name" />
<el-table-column sortable label="部门" width="100px">
<template slot-scope="scope">
{{ getDepartName(scope.row.depart_code) }}
</template>
</el-table-column>
<el-table-column sortable label="登陆类型">
<template slot-scope="scope">
{{ scope.row.login_type == 1?'指纹':'密码' }}
</template>
</el-table-column>
<el-table-column sortable label="用户状态">
<template slot-scope="scope">
{{ scope.row.user_status == 1?'启用':'禁用' }}
</template>
</el-table-column>
<el-table-column sortable label="备注" property="remark" />
</el-table>
<el-pagination
:current-page="currentPage"
:page-sizes="[20, 50, 100, 10000]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="c_yhxxTableData.length"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
<el-dialog class="YhxxDialog" :title="dialogTitle" :visible.sync="dialogVisible" width="450px" center="">
<el-row>
<el-row>
<span style="width: 110px;display:inline-block;">账号</span>
<el-input v-model="updateData.user_code" placeholder="" style="width: 250px;" />
</el-row>
<el-row>
<span style="width: 110px;display:inline-block;">姓名</span>
<el-input v-model="updateData.user_name" placeholder="" style="width: 250px;" />
</el-row>
<el-row>
<span style="width: 110px;display:inline-block;">部门</span>
<el-select v-model="updateData.depart_code" clearable placeholder="部门" style="width: 250px;">
<el-option
v-for="item in dm_depart"
:key="item.depart_code"
:label="item.depart_name"
:value="item.depart_code"
/>
</el-select>
</el-row>
<el-row>
<span style="width: 110px;display:inline-block;">登录方式</span>
<el-select v-model="updateData.login_type" clearable placeholder="登录方式" style="width: 250px;">
<el-option
v-for="item in loginType"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-row>
<el-row>
<span style="width: 110px;display:inline-block;">密码</span>
<el-input v-model="updateData.password" placeholder="" style="width: 250px;" />
</el-row>
<el-row>
<template v-if="dialogTitle=='修改用户信息'">
<span style="width: 110px;display:inline-block;">指纹:</span>
<!-- {{updateData.fingerprint}}-->
<!-- <template v-if="updateData.fingerprint==''||updateData.fingerprint==null">-->
<el-button @click="addFinger">1</el-button>
<el-button @click="addFinger1">2</el-button>
<el-button @click="addFinger2">3</el-button>
<!-- </template>-->
</template>
</el-row>
<el-row>
<span style="width: 110px;display:inline-block;">备注</span>
<el-input v-model="updateData.remark" placeholder="" style="width: 250px;" />
</el-row>
<el-row>
<el-button
v-if="dialogTitle =='添加用户信息'?true :false"
style="float: right;"
type="primary"
@click="handleAddYhxxComplated"
>添加
</el-button>
<el-button
v-if="dialogTitle =='修改用户信息'?true :false"
style="float: right;"
type="primary"
@click="handleUpdateYhxxComplated"
>修改
</el-button>
</el-row>
</el-row>
</el-dialog>
</el-col>
<el-col :span="8" style="border-left:1px solid rgb(230, 230, 230);" :height="defaultHeight.height">
<el-tabs v-model="activeGzzxxTabName" style="padding-left: 5px;" :height="defaultHeight.height">
<el-tab-pane label="角色信息" name="gzzxx">
<el-table
ref="gzzTable"
v-loading="isGzzTableLoading"
:show-overflow-tooltip="true"
:data="gzzTableData"
:height="defaultHeight.height"
width="100%"
:border="true"
highlight-current-row
element-loading-background="rgba(0, 0, 0, 0.01)"
element-loading-text="数据正在加载中"
element-loading-spinner="el-icon-loading"
>
<el-table-column label="" property="isselect" style="width: 30px;">
<template slot-scope="scope">
<el-checkbox v-model="scope.row.isselect" @change="handleGzzSelect(scope.row)" />
</template>
</el-table-column>
<el-table-column label="代码" property="role_code" />
<el-table-column label="名称" property="role_name" />
</el-table>
</el-tab-pane>
</el-tabs>
</el-col>
<tbfilter ref="tbFilter" :list="c_yhxxTableData" :filter="columnFilter" @execFilter="execFilter" />
</el-container>
</template>
<script>
import {
getUserList,
addUser,
deleteUser,
updateUser,
getDepartList,
getRoleList,
getRoleListByUser,
addRoleForUser,
deleteRoleForUser
} from '@/api/sy/yhgl'
import FileSaver from 'file-saver'
import XLSX from 'xlsx'
import tbfilter from '@/components/TableColumnFilter'
export default {
name: 'Yhgl',
components: { tbfilter },
data() {
return {
defaultHeight: {
height: ''
},
activeGzzxxTabName: 'gzzxx',
dm_depart: [],
query: { depart_code: '' },
yhxxTableData: [],
isYhxxTableLoading: true,
gzzTableData: [],
isGzzTableLoading: true,
currentPage: 1,
pageSize: 100,
selectYhxx: {},
dialogVisible: false,
dialogTitle: '',
updateData: {},
columnFilter: {},
loginType:[{
value: 1,
label: '指纹登录'
}, {
value: 2,
label: 'findTxTl'
}, ],
}
},
computed: {
c_yhxxTableData: function() {
const search = this.query
let resultList = this.yhxxTableData
if (search && search.depart_code) {
resultList = this.yhxxTableData.filter(data => {
return data.depart_code === search.depart_code
})
}
if (search && search.user_name) {
resultList = resultList.filter(data => {
return Object.keys(data).some(key => {
return String(data[key]).indexOf(search.user_name) > -1
})
})
}
if (this.$refs.tbFilter) {
return this.$refs.tbFilter.doFilter(this.columnFilter, resultList)
}
return resultList
}
},
created() {
window.addEventListener('resize', this.getHeight)
this.getHeight()
getDepartList({}).then(response => {
this.dm_depart = response.data
getUserList({}).then(response => {
this.yhxxTableData = response.data
this.isYhxxTableLoading = false
this.$refs.yhxxTable.setCurrentRow(this.yhxxTableData[0])
})
getRoleList().then(response => {
this.gzzTableData = response.data
this.isGzzTableLoading = false
})
})
}, methods: {
showFilter(column) {
this.$refs.tbFilter.showFilter(column)
},
execFilter(property, vals) {
this.currentPage = 1
this.$set(this.columnFilter, property, vals)
},
getHeight() {
this.defaultHeight.height = window.innerHeight - 140 + 'px'
},
handleSizeChange(val) {
this.pageSize = val
},
handleCurrentChange(val) {
this.currentPage = val
},
handleYhxxCurrentChange(currentRow) {
if (!currentRow || !currentRow.user_code) return
this.selectYhxx = currentRow
this.isGzzTableLoading = true
getRoleListByUser(this.selectYhxx).then(response => {
this.isGzzTableLoading = false
for (const j in this.gzzTableData) {
this.$set(this.gzzTableData[j], 'isselect', false)
}
for (const i in response.data) {
for (const j in this.gzzTableData) {
if (response.data[i].role_code === this.gzzTableData[j].role_code) {
this.$set(this.gzzTableData[j], 'isselect', true)
}
}
}
})
},
handleGzzSelect(row) {
if (!this.selectYhxx || !this.selectYhxx.user_code) {
this.$message({ message: '请先选择一个用户!', type: 'error' })
return
}
const relation = { 'user_code': this.selectYhxx.user_code, 'role_code': row.role_code }
if (row.isselect) {
addRoleForUser([relation]).then(response => {
this.$message({ message: '添加角色成功!', type: 'success' })
})
} else {
deleteRoleForUser([relation]).then(response => {
this.$message({ message: '删除角色成功!', type: 'success' })
})
}
},
handleAddYhxx() {
this.dialogVisible = true
this.dialogTitle = '添加用户信息'
this.updateData = {}
},
handleAddYhxxComplated() {
if(this.updateData.login_type===1) {
var uuid = guid();
window.location.href = "zwlr://" + uuid;
console.log(uuid);
this.updateData.uuid = uuid;
}
addUser(this.updateData).then(response => {
this.updateData = JSON.parse(JSON.stringify(this.updateData))
this.yhxxTableData.push(this.updateData)
this.dialogVisible = false
this.$message({ message: '添加用户信息成功!', type: 'success' })
})
},
addFinger(){
var uuid = updateGuid();
window.location.href="zwlr://"+this.updateData.user_code+uuid;
//this.selectYhxx.fingerprint='1111'
this.dialogVisible = false
console.log(this.updateData)
},
addFinger1(){
var uuid = updateGuid1();
window.location.href="zwlr://"+this.updateData.user_code+uuid;
//this.selectYhxx.fingerprint='1111'
this.dialogVisible = false
console.log(this.updateData)
},
addFinger2(){
var uuid = updateGuid2();
window.location.href="zwlr://"+this.updateData.user_code+uuid;
//this.selectYhxx.fingerprint='1111'
this.dialogVisible = false
console.log(this.updateData)
},
handleUpdateYhxx() {
if (!this.selectYhxx.user_code) {
this.$message({ message: '请选择要修改的用户!', type: 'error' })
return
}
this.dialogVisible = true
this.dialogTitle = '修改用户信息'
this.updateData = JSON.parse(JSON.stringify(this.selectYhxx))
},
handleUpdateYhxxComplated() {
updateUser(this.updateData).then(response => {
for (const key in this.updateData) {
this.selectYhxx[key] = this.updateData[key]
}
this.dialogVisible = false
this.$message({ message: '修改用户信息成功!', type: 'success' })
})
},
handleDeleteYhxx() {
this.$confirm('此操作将删除该用户, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteUser(this.selectYhxx).then(response => {
this.yhxxTableData = this.yhxxTableData.filter(t => !(t.user_code === this.selectYhxx.user_code))
this.$message({ message: '删除用户信息成功!', type: 'success' })
})
})
},
getDepartName(depart_code) {
for (const i in this.dm_depart) {
if (this.dm_depart[i].depart_code === depart_code) {
return this.dm_depart[i].depart_name
}
}
return ''
},
exportExcel() {
/* generate workbook object from table */
//
var wb = XLSX.utils.table_to_book(document.querySelector('.yhxxTable'))
/* get binary string as output */
var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
try {
FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'yhxx.xlsx')
} catch (e) {
if (typeof console !== 'undefined') console.log(e, wbout)
}
return wbout
}
}
}
//uuid
function S4() {
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
function guid() {
return ("user-"+S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
function updateGuid() {
return ("upda1-"+S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
function updateGuid1() {
return ("upda2-"+S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
function updateGuid2() {
return ("upda3-"+S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
</script>
<style scoped>
.YhxxDialog .el-row {
margin-bottom: 5px;
}
</style>
Loading…
Cancel
Save