You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

541 lines
15 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="班组编号" prop="teamCode">
<el-input
v-model="queryParams.teamCode"
placeholder="请输入班组编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="班组名称" prop="teamName">
<el-input
v-model="queryParams.teamName"
placeholder="请输入班组名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="班组类型" prop="teamType">
<el-select
v-model="queryParams.teamType"
placeholder="请选择班组类型"
@change="$forceUpdate()"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
>
<el-option
v-for="item in teamTypeOption"
:key="item.teamType"
:label="item.label"
:value="item.teamType"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['device:equTeam:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['device:equTeam:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['device:equTeam:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['device:equTeam:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="equTeamList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="班组编号" align="center" prop="teamCode" />
<el-table-column label="班组名称" align="center" prop="teamName" />
<el-table-column label="班组类型" align="center" prop="teamType" />
<el-table-column
label="班组人员"
align="center"
prop="teamPerson"
width="250"
/>
<el-table-column label="工厂号" align="center" prop="factoryCode" />
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['device:equTeam:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['device:equTeam:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改设备班组维护对话框 -->
<el-dialog
:title="title"
:visible.sync="open"
width="1000px"
append-to-body
>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="8">
<el-form-item label="班组编号" prop="teamCode">
<el-input
v-model="form.teamCode"
placeholder="请输入班组编号"
style="width: 200px"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="班组名称" prop="teamName">
<el-input
v-model="form.teamName"
placeholder="请输入班组名称"
style="width: 200px"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="班组类型" prop="teamType">
<el-select
v-model="form.teamType"
placeholder="请选择班组类型"
@change="$forceUpdate()"
clearable
style="width: 200px"
>
<el-option
v-for="item in teamTypeOption"
:key="item.teamType"
:label="item.label"
:value="item.teamType"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="班组人员" prop="teamPerson">
<el-input
v-model="form.teamPerson"
placeholder="请选择班组人员名字"
style="width: 840px"
>
<el-button
slot="append"
@click="handleSelectPerson"
icon="el-icon-search"
></el-button>
</el-input>
<ItemSelectPerson
ref="itemSelectPerson"
@onSelected="onItemSelectedPerson"
>
</ItemSelectPerson>
</el-form-item>
</el-col>
</el-row>
<el-divider></el-divider>
<el-card>
<div class="my-team">
<template>
<el-transfer
filterable
filter-placeholder="请输入班组人员名称"
:titles="['可选班组人员', '当前班组人员']"
:button-texts="['解除添加', '添加']"
:data="leftList"
v-model="rightList"
style="text-align: left"
>
</el-transfer>
</template>
</div>
</el-card>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listEquTeam,
getEquTeam,
delEquTeam,
addEquTeam,
updateEquTeam,
getMaintenanceTeamList,
listTeamMembers,
getRightList,
} from "@/api/device/equTeam";
import ItemSelectPerson from "./selectSinglePerson.vue";
export default {
name: "EquTeam",
components: { ItemSelectPerson },
data() {
return {
//人员表
// peopleList: [],
// 可选(左边)
leftList: [],
// 已选右边只需要key
rightList: [],
//人员回显
checkTeamPerson: null,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 设备班组维护表格数据
equTeamList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
teamCode: null,
teamName: null,
teamType: null,
teamPerson: null,
factoryCode: null,
},
teamTypeOption: [
{
teamType: "维修班组",
label: "维修班组",
},
{
teamType: "点检班组",
label: "点检班组",
},
{
teamType: "巡检班组",
label: "巡检班组",
},
{
teamType: "保养班组",
label: "保养班组",
},
],
// 表单参数
form: {},
// 表单校验
rules: {},
};
},
created() {
this.getList();
this.getTeamMembers();
},
methods: {
getTeamMembers() {
// 调用列表接口
this.queryParams.pageNum = 1;
this.queryParams.pageSize = 2000;
listTeamMembers(this.queryParams).then((response) => {
for (let i in response.rows) {
// 将返回的列表赋值于穿梭框左边列表
this.leftList.push({
key: response.rows[i].userId,
label: response.rows[i].teamUserName,
});
// this.peopleList.push({
// key: response.rows[i].userId,
// label: response.rows[i].nickName
// })
}
for (let i in response.selected) {
this.rightList.push(response.selected[i].key);
this.form.rightData = this.rightList;
}
this.loading = false;
});
},
//人员选择
handleSelectPerson() {
this.$refs.itemSelectPerson.showFlag = true;
},
//人员选择
onItemSelectedPerson(obj) {
this.form.workPerson = obj;
},
/** 查询设备班组维护列表 */
getList() {
this.loading = true;
listEquTeam(this.queryParams).then((response) => {
this.equTeamList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
teamCode: null,
teamName: null,
teamType: null,
teamPerson: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
delFlag: null,
factoryCode: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加设备班组维护";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getEquTeam(id).then((response) => {
this.form = response.data;
for (let i in response.data.selectedData) {
// 将返回的列表赋值于穿梭框右边列表
this.rightList.push(response.data.selectedData[i].userId);
}
console.log("response.data.selectedData", response.data.selectedData);
this.open = true;
this.title = "修改设备班组维护";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
var people = "";
if (valid) {
if (this.form.id != null) {
this.form.rightData = this.rightList;
// if(this.form.rightData != null){
// this.form.rightData.forEach((item) => {
// this.peopleList.forEach((item1) => {
// if(item1.key == item){
// this.form.teamPerson = [];
// this.form.teamPerson.push(item1.label);
// }
// });
// });
// }
// if (Array.isArray(this.form.teamPerson)) {
// this.form.teamPerson = this.listToString(this.form.teamPerson);
// }
updateEquTeam(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
this.form.rightData = this.rightList;
addEquTeam(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
//人员选择
onItemSelectedPerson(obj) {
if (this.form.teamPerson == null || this.form.teamPerson == "") {
this.form.teamPerson = obj;
} else {
if (obj != undefined && obj != null && obj != "") {
const a = obj.split(",");
const len = obj.split(",").length;
a.forEach((item) => {
this.checkTeamPerson = this.form.teamPerson.search(item) != -1;
if (this.checkTeamPerson == true) {
Message.warning("您已经添加过该人员,请勿重复添加!!!");
} else if (this.checkTeamPerson == false) {
this.form.teamPerson = this.form.teamPerson + "," + item;
}
});
}
}
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal
.confirm('是否确认删除设备班组维护编号为"' + ids + '"的数据项?')
.then(function () {
return delEquTeam(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
// 对象转成指定字符串分隔
// listToString(list, separator) {
// let strs = "";
// separator = separator || ",";
// for (let i in list) {
// strs += list[i].url + separator;
// }
// return strs != "" ? strs.substr(0, strs.length - 1) : "";
// },
/** 导出按钮操作 */
handleExport() {
this.download(
"device/equTeam/export",
{
...this.queryParams,
},
`equTeam_${new Date().getTime()}.xlsx`
);
},
},
};
</script>
<style>
.el-transfer-panel {
width: 320px;
height: 400px;
}
.el-transfer-panel__list.is-filterable {
height: 300px;
}
</style>