中航光电热表web
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

854 lines
30 KiB

<template>
<basic-container>
<avue-crud
:option="option"
:table-loading="loading"
:data="data"
v-model:page="page"
v-model="form"
ref="crud"
@row-update="rowUpdate"
@row-save="rowSave"
@row-del="rowDel"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
:before-open="beforeOpen"
@on-load="onLoad"
>
<template #menu-left>
<el-button type="danger" icon="el-icon-delete" @click="handleDelete"
>删 除
</el-button>
<el-button
type="success"
icon="el-icon-upload"
@click="handleImport"
>导入
</el-button>
</template>
<template #menu="scope">
<el-button type="text" @click="setCrew(scope.row)">设置班组人员</el-button>
<el-button type="text" @click="changeTime(scope.row,1)">日分派时间</el-button>
<el-button type="text" @click="changeTime(scope.row,2)">特殊日分派时间</el-button>
<el-button type="text" @click="changeTime(scope.row,3)">轮换时间</el-button>
</template>
<template #userName="{ row }">
{{ row.teamLeader.userName }}
</template>
<template #planner="{ row }">
{{ row.planner.userName }}
</template>
<template #dispatcher="{ row }">
{{ row.dispatcher.userName }}
</template>
<template #csId="{ row }">
{{ row.bsClassesSet.csName }}
</template>
<template #csId-form="{ type }">
<span v-show="type == 'edit' || type == 'add'">
<el-select v-model="form.bsClassesSet.csId" placeholder="请选择班次">
<el-option v-for="item in csData" :key="item.csId" :value="item.csId" :label="item.csName"></el-option>
</el-select>
</span>
</template>
<template #userName-form="{ type }">
<span v-show="type == 'edit' || type == 'add'">
<el-select v-model="form.teamLeader.userId" placeholder="请选择班组长">
<el-option v-for="item in userData" :key="item.userId" :value="item.userId" :label="item.userName"></el-option>
</el-select>
</span>
</template>
<template #planner-form="{ type }">
<span v-show="type == 'edit' || type == 'add'">
<el-select v-model="form.planner.userId" placeholder="请选择计划员">
<el-option v-for="item in userData" :key="item.userId" :value="item.userId" :label="item.userName"></el-option>
</el-select>
</span>
</template>
<template #dispatcher-form="{ type }">
<span v-show="type == 'edit' || type == 'add'">
<el-select v-model="form.dispatcher.userId" placeholder="请选择调度员">
<el-option v-for="item in userData" :key="item.userId" :value="item.userId" :label="item.userName"></el-option>
</el-select>
</span>
</template>
</avue-crud>
<el-dialog title="设置人员" append-to-body v-model="crewDialog" width="40%">
<el-transfer v-model="crewData" filterable :data="data" :titles="['未选择','已选择']" />
</el-dialog>
<el-dialog title="时间" append-to-body v-model="timeDialog" width="60%">
<div>
<el-button type="primary" icon="el-icon-plus" @click="insertEvent()">插入一行</el-button>
<el-button plain type="danger" @click="remove">删除选择行</el-button>
<el-button type="primary" @click="handleSave">保存</el-button>
</div>
<div style="margin-top: 20px;">
<el-table :data="timeList" @selection-change="selectionChangeProject" @select="selectChange" >
<el-table-column type="selection" width="55px"></el-table-column>
<el-table-column align="center" label="开始时间">
<template #default="scope">
<el-time-select
v-model="scope.row.startTime"
start="00:00"
step="00:15"
end="24:00"
placeholder="选择时间">
</el-time-select>
</template>
</el-table-column>
<el-table-column align="center" label="结束时间">
<template #default="scope">
<el-time-select
v-model="scope.row.endTime"
start="00:00"
step="00:15"
end="24:00"
placeholder="选择时间">
</el-time-select>
</template>
</el-table-column>
</el-table>
</div>
</el-dialog>
</basic-container>
</template>
<script>
export default {
data(){
return{
data:[],
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
timeList:[],
deleteTidArr:[], //删除数据
form:{
bsClassesSet:{
csName:'',
csId:null
},
teamLeader:{
userId:null
},
planner:{
userId:null,
userName:'',
},
dispatcher:{
userId:null,
userName:'',
},
},
crewDialog:false,
timeDialog:false,
csData:[
{
"csId": 18,
"csName": "白班",
"keyValue": 18
},
{
"csId": 19,
"csName": "晚班",
"keyValue": 19
}
],
crewData:[], //班组人员数据
userData:[
{
"jobName": "软件工程师",
"deptName": "MES开发部",
"ldapName": null,
"userSex": 1,
"deptId": 1,
"mobile": null,
"userName": "测试",
"userId": 521,
"userCode": "0001"
},
{
"jobName": null,
"deptName": "MES开发部",
"ldapName": "jinna",
"userSex": 2,
"deptId": 1,
"mobile": null,
"userName": "靳娜",
"userId": 21,
"userCode": "jinna"
},
{
"jobName": null,
"deptName": "MES开发部",
"ldapName": "zd001",
"userSex": 1,
"deptId": 1,
"mobile": null,
"userName": "张迪",
"userId": 601,
"userCode": "zd001"
}
],
query:{},
loading:true,
excelBox:false,
option:{
tip: false,
height: 'auto',
calcHeight: 32,
simplePage: false,
searchShow: true,
searchMenuSpan: 6,
searchIcon: true,
searchIndex: 3,
tree: false,
border: true,
index: true,
selection: true,
viewBtn: false,
delBtn: false,
editBtnText: '修改',
viewBtnText:'详情',
labelWidth: 120,
menuWidth: 480,
dialogWidth: 600,
dialogClickModal: false,
searchEnter: true,
filterBtn: true,
searchShowBtn: false,
excelBtn: true,
showOverflowTooltip: true,
searchLabelPosition:'left',
searchLabelPosition:'left',
searchGutter:24,
searchSpan:6,
menuAlign: 'left',
gridBtn:false,
searchMenuPosition:'right',
column:[
{
label: '编码',
prop: 'tsCode',
search: true,
sortable: true,
filter: true,
span: 24,
width:150,
rules: [
{
required: true,
message: '请输入编码',
trigger: 'blur',
},
],
},
{
label: '名称',
prop: 'tsName',
sortable: true,
filter: true,
span: 24,
width:150,
search:true,
rules: [
{
required: true,
message: '请输入名称',
trigger: 'blur',
},
],
},
{
label: '班组长',
prop: 'userName',
search: false,
type:'select',
sortable: true,
filter: true,
span: 24,
width:150,
rules: [
{
required: true,
message: '请选择班组长',
trigger: 'blur',
},
],
props: {
label: 'userName',
value: 'userId'
},
dicData:[
{
"jobName": "软件工程师",
"deptName": "MES开发部",
"ldapName": null,
"userSex": 1,
"deptId": 1,
"mobile": null,
"userName": "测试",
"userId": 521,
"userCode": "0001"
},
{
"jobName": null,
"deptName": "MES开发部",
"ldapName": "jinna",
"userSex": 2,
"deptId": 1,
"mobile": null,
"userName": "靳娜",
"userId": 21,
"userCode": "jinna"
},
{
"jobName": null,
"deptName": "MES开发部",
"ldapName": "zd001",
"userSex": 1,
"deptId": 1,
"mobile": null,
"userName": "张迪",
"userId": 601,
"userCode": "zd001"
}
]
},
{
label: '计划员',
prop: 'planner',
search: false,
sortable: true,
filter: true,
type:'select',
span: 24,
width:150,
rules: [
{
required: true,
message: '请选择计划员',
trigger: 'blur',
},
],
props: {
label: 'userName',
value: 'userId'
},
dicData:[
{
"jobName": "软件工程师",
"deptName": "MES开发部",
"ldapName": null,
"userSex": 1,
"deptId": 1,
"mobile": null,
"userName": "测试",
"userId": 521,
"userCode": "0001"
},
{
"jobName": null,
"deptName": "MES开发部",
"ldapName": "jinna",
"userSex": 2,
"deptId": 1,
"mobile": null,
"userName": "靳娜",
"userId": 21,
"userCode": "jinna"
},
{
"jobName": null,
"deptName": "MES开发部",
"ldapName": "zd001",
"userSex": 1,
"deptId": 1,
"mobile": null,
"userName": "张迪",
"userId": 601,
"userCode": "zd001"
}
]
},
{
label: '调度员',
prop: 'dispatcher',
search: true,
sortable: true,
filter: true,
type:'select',
span: 24,
width:150,
rules: [
{
required: true,
message: '请选择调度员',
trigger: 'blur',
},
],
props: {
label: 'userName',
value: 'userId'
},
dicData:[
{
"jobName": "软件工程师",
"deptName": "MES开发部",
"ldapName": null,
"userSex": 1,
"deptId": 1,
"mobile": null,
"userName": "测试",
"userId": 521,
"userCode": "0001"
},
{
"jobName": null,
"deptName": "MES开发部",
"ldapName": "jinna",
"userSex": 2,
"deptId": 1,
"mobile": null,
"userName": "靳娜",
"userId": 21,
"userCode": "jinna"
},
{
"jobName": null,
"deptName": "MES开发部",
"ldapName": "zd001",
"userSex": 1,
"deptId": 1,
"mobile": null,
"userName": "张迪",
"userId": 601,
"userCode": "zd001"
}
]
},
{
label: '班组人员',
prop: 'teamMember',
search: false,
sortable: true,
filter: true,
editDisplay:false,
addDisplay:false,
span: 24,
width:150,
rules: [
{
required: true,
message: '请选择班组人员',
trigger: 'blur',
},
],
},
{
label: '班次',
prop: 'csId',
search: false,
type:'select',
sortable: true,
filter: true,
span: 24,
width:150,
props: {
label: 'csName',
value: 'csId'
},
dicData:[
{
"csId": 18,
"csName": "白班",
"keyValue": 18
},
{
"csId": 19,
"csName": "晚班",
"keyValue": 19
}
]
},
{
label: '类型分类',
prop: 'tsType',
search: false,
type:'select',
sortable: true,
filter: true,
span: 24,
width:150,
dicData:[
{
value: 1,
label: '针孔'
},
{
value: 2,
label: '壳体'
},
{
value: 3,
label: '烧结'
},
{
value: 4,
label: '园区'
}
]
},
{
label: '日分派时间',
prop: 'dayPutDueTime',
search: false,
sortable: true,
editDisplay:false,
filter: true,
addDisplay:false,
span: 24,
width:150,
rules: [
{
required: true,
message: '请输入日分派时间',
trigger: 'blur',
},
],
},
{
label: '特殊日分派时间',
prop: 'specDayPutDueTime',
search: false,
sortable: true,
editDisplay:false,
filter: true,
addDisplay:false,
span: 24,
width:150,
rules: [
{
required: true,
message: '请输入特殊日分派时间',
trigger: 'blur',
},
],
},
{
label: '轮换时间',
prop: 'exChangeTime',
search: false,
sortable: true,
editDisplay:false,
filter: true,
addDisplay:false,
span: 24,
width:150,
rules: [
{
required: true,
message: '请输入轮换时间',
trigger: 'blur',
},
],
},
{
label: '特殊',
prop: 'special',
search: false,
type:'select',
sortable: true,
filter: true,
span: 24,
width:150,
dicData:[
{
value: 1,
label: '是'
}, {
value: 0,
label: '否'
}
]
},
]
},
selectionList:[]
}
},
mounted(){},
methods:{
handleImport() {
this.excelBox = true;
},
// 多选
selectionChange(list) {
this.selectionList = list;
},
selectionClear() {
this.selectionList = [];
this.$refs.crud.toggleSelection();
},
rowUpdate(row, index, done, loading) {
},
rowSave(row, done, loading) {
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
rowDel(row, index, done) {
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
})
},
// 设置时间
changeTime(row,val){
this.timeList = []
// if(val == 1){
this.timeList = [
{startTime:'00:00',endTime:'00:15',_select:false},
{startTime:'00:15',endTime:'00:20',_select:false},
{startTime:'00:45',endTime:'01:00',_select:false},
]
this.timeDialog = true
// }
},
// 插入一行
insertEvent(){
const record = {_select:false}
this.timeList.push(record)
},
//删除所选行
remove(){
let arr = this.tidList.filter(item => item._select)
if(arr.length != 0){
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() =>{
if(this.rowId){
let deleteData = this.timeList.filter(item => item._select)
this.deleteTidArr = deleteData.filter(item => item.tidId)
}
let deleteArr = this.timeList.filter(item => !item._select)
this.timeList = deleteArr
})
}else{
this.$message.error('请至少选择一条数据进行操作!')
}
},
// 点击保存按钮
handleSave(){
if(this.timeList.length == 0){
this.$message.error('请至少填写一条数据')
}else{
let tmp = this.timeList.find(item => item.startTime && item.endTime)
if(!tmp){
this.$message.error('数据请填写完整!')
}
}
},
// 设置班组人员
setCrew(row){
this.crewDialog = true
},
// 打开前回调
beforeOpen(done,type,loading){
if(type == 'add'){
this.form = {
bsClassesSet:{
csName:'',
csId:null
},
teamLeader:{
userId:null
},
planner:{
userId:null,
userName:'',
},
dispatcher:{
userId:null,
userName:'',
},
}
}
done()
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
},
refreshChange() {
this.onLoad(this.page, this.query);
},
onLoad(){
this.loading = true
this.data = [
{id:'1',tsCode:'045',tsName:'玻璃烧结班组',
teamLeader:{
userName:'测试',
userId:521
},
planner:{
userId:521,
userName:'测试',
},
dispatcher:{
userId:521,
userName:'测试',
},
teamMember:'崔殿龙',
bsClassesSet:{
csId:18,
csName:'早班',
},
tsType:1,
tsTypeTitle:'针孔',
dayPutDueTime:'00:00~00:00、00:45~00:45、00:15~00:00',
specDayPutDueTime:'10:00~19:00',
exChangeTime:'00:00~00:15',
special:1,
specialTitle:'是'
},
{id:'2',tsCode:'044',tsName:'玻璃烧结班组',
teamLeader:{
userName:'测试',
userId:521
},
planner:{
userId:521,
userName:'测试',
},
dispatcher:{
userId:521,
userName:'测试',
},
teamMember:'崔殿龙',
bsClassesSet:{
csId:18,
csName:'早班',
},
tsType:1,
tsTypeTitle:'针孔',
dayPutDueTime:'00:00~00:00、00:45~00:45、00:15~00:00',
specDayPutDueTime:'10:00~19:00',
exChangeTime:'00:00~00:15',
special:1,
specialTitle:'是'
},
{id:'3',tsCode:'023',tsName:'玻璃烧结班组',
teamLeader:{
userName:'测试',
userId:521
},
planner:{
userId:521,
userName:'测试',
},
dispatcher:{
userId:521,
userName:'测试',
},
teamMember:'崔殿龙',
bsClassesSet:{
csId:18,
csName:'早班',
},
tsType:1,
tsTypeTitle:'针孔',
dayPutDueTime:'00:00~00:00、00:45~00:45、00:15~00:00',
specDayPutDueTime:'10:00~19:00',
exChangeTime:'00:00~00:15',
special:1,
specialTitle:'是'
},
{id:'4',tsCode:'024',tsName:'玻璃烧结班组',
teamLeader:{
userName:'测试',
userId:521
},
planner:{
userId:521,
userName:'测试',
},
dispatcher:{
userId:521,
userName:'测试',
},
teamMember:'崔殿龙',
bsClassesSet:{
csId:18,
csName:'早班',
},
tsType:1,
tsTypeTitle:'针孔',
dayPutDueTime:'00:00~00:00、00:45~00:45、00:15~00:00',
specDayPutDueTime:'10:00~19:00',
exChangeTime:'00:00~00:15',
special:1,
specialTitle:'是'
},
{id:'5',tsCode:'025',tsName:'玻璃烧结班组',
teamLeader:{
userName:'测试',
userId:521
},
planner:{
userId:521,
userName:'测试',
},
dispatcher:{
userId:521,
userName:'测试',
},
teamMember:'崔殿龙',
bsClassesSet:{
csId:18,
csName:'早班',
},
tsType:1,
tsTypeTitle:'针孔',
dayPutDueTime:'00:00~00:00、00:45~00:45、00:15~00:00',
specDayPutDueTime:'10:00~19:00',
exChangeTime:'00:00~00:15',
special:1,
specialTitle:'是'
},
]
this.page.total = this.data.length
this.loading = false
setTimeout(() =>{
this.selectionClear();
},500)
}
}
}
</script>
<style>
</style>