|
|
@@ -47,12 +47,7 @@
|
|
|
border: 0,
|
|
|
}">
|
|
|
<!-- <el-table-column align="center" type="selection" width="80" /> -->
|
|
|
- <el-table-column
|
|
|
- width="80"
|
|
|
- align="center "
|
|
|
- type="index"
|
|
|
- label="序号"
|
|
|
- />
|
|
|
+ <el-table-column width="80" align="center " type="index" label="序号" />
|
|
|
<el-table-column align="center" prop="userName" label="姓名" />
|
|
|
<el-table-column align="center" width="150" prop="userPhone" label="手机号码" />
|
|
|
<el-table-column align="center" prop="teamName" label="维修班" />
|
|
|
@@ -87,6 +82,11 @@
|
|
|
:close-on-press-escape="false" :title="dialongTitle" align-center width="700" :before-close="cancelAdd">
|
|
|
<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="120px" class="demo-ruleForm"
|
|
|
size="default" label-position="left" status-icon>
|
|
|
+ <el-form-item label="身份 :" prop="userzzId">
|
|
|
+ <el-select v-model="ruleForm.userzzId" @change="changeUserZzid" class="m-2" placeholder="请选择身份">
|
|
|
+ <el-option v-for="item in userzzIdsList" :label="item.name" :value="item.id" v-show="item.id !== 0" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="姓名 :" prop="userName">
|
|
|
<el-input v-model="ruleForm.userName" placeholder="请输入姓名" clearable />
|
|
|
</el-form-item>
|
|
|
@@ -96,18 +96,14 @@
|
|
|
<el-option label="第三方人员" :value="1" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="微校卡号 :" prop="cardNumber" v-if="dialongTitle == '添加员工'">
|
|
|
+ <el-form-item label="微校卡号 :" prop="cardNumber" v-if="dialongTitle == '添加员工' && ruleForm.userzzId != 4">
|
|
|
<el-input v-model="ruleForm.cardNumber" placeholder="请输入微校卡号" clearable />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="微校卡号 :" prop="cardNumber" v-if="dialongTitle == '编辑员工'">
|
|
|
+ <el-form-item label="微校卡号 :" prop="cardNumber" v-if="dialongTitle == '编辑员工' && ruleForm.userzzId != 4">
|
|
|
<el-input v-model="ruleForm.cardNumber" disabled placeholder="请输入微校卡号" clearable />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="身份 :" prop="userzzId">
|
|
|
- <el-select v-model="ruleForm.userzzId" class="m-2" placeholder="请选择身份">
|
|
|
- <el-option v-for="item in userzzIdsList" :label="item.name" :value="item.id" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="手机号码 :" prop="userPhone">
|
|
|
+
|
|
|
+ <el-form-item label="手机号码 :" prop="userPhone" v-if="ruleForm.userzzId != 4">
|
|
|
<el-input v-model="ruleForm.userPhone" placeholder="请输入手机号码" clearable />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="校区 :" prop="schoolId">
|
|
|
@@ -117,35 +113,71 @@
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="工种 :">
|
|
|
- <el-select v-model="ruleForm.workType" class="m-2" placeholder="请选择工种">
|
|
|
+ <el-select v-model="ruleForm.workType" clearable class="m-2" placeholder="请选择工种">
|
|
|
<el-option v-for="item in workTypeList" :label="item.name" :value="item.id" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="关联报修类型 :" prop="articleIds" class="checkbox">
|
|
|
- <el-tree :data="articleIdsList" :props="{ label: 'name', children: 'children', value: 'id' }" node-key="id"
|
|
|
- show-checkbox ref="articleIdsRef" @check-change="handleArticleIds" />
|
|
|
- <!-- <el-checkbox
|
|
|
- v-model="checkAll"
|
|
|
- :indeterminate="isIndeterminate"
|
|
|
- @change="handleCheckAllChange"
|
|
|
- >全选</el-checkbox
|
|
|
- >
|
|
|
- <el-checkbox-group
|
|
|
- v-model="checkedCities"
|
|
|
- @change="handleCheckedCitiesChange"
|
|
|
- >
|
|
|
- <el-checkbox
|
|
|
- v-for="item in articleIdsList"
|
|
|
- :label="item.name"
|
|
|
- >{{ item.name }}</el-checkbox
|
|
|
- >
|
|
|
- </el-checkbox-group> -->
|
|
|
+ <el-form-item label="关联报修类型 :" prop="articleBuilds" class="checkbox" v-if="ruleForm.userzzId != 4">
|
|
|
+ <div class="type">
|
|
|
+ <div class="articleType">
|
|
|
+ <div class="articleTitle">关联种类</div>
|
|
|
+ <!-- <el-checkbox v-model="articleAll" :indeterminate="articleIndeterminate"
|
|
|
+ @change="articleAllChange">全选</el-checkbox> -->
|
|
|
+ <el-tree :data="articleIdsList" @node-click="articleNodeClick"
|
|
|
+ :props="{ label: 'name', children: 'children', value: 'id' }" node-key="id" show-checkbox
|
|
|
+ ref="articleIdsRef" @check-change="handleArticleIds">
|
|
|
+ <template #default="{ node, data }">
|
|
|
+ <div class="custom-tree-node">
|
|
|
+ <span>{{ data.name }}</span>
|
|
|
+ <img v-if="data.id == clickArticleSel.id" src="../../assets/fixed.png" alt="">
|
|
|
+ <img v-else src="" alt="">
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-tree>
|
|
|
+ </div>
|
|
|
+ <div class="buildType">
|
|
|
+ <div class="allAriticle">
|
|
|
+ <div class="articleTitle">关联楼栋</div>
|
|
|
+ <!-- <el-checkbox v-model="buildAll" :indeterminate="buildIndeterminate"
|
|
|
+ @change="buildAllChange">全选</el-checkbox> -->
|
|
|
+ </div>
|
|
|
+ <el-tree :data="treeValue.list" :props="{ label: 'name', children: 'children', value: 'id' }"
|
|
|
+ node-key="id" show-checkbox ref="buildIdsRef" @check-change="handleCheckChange" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- <div class="type" v-if="ruleForm.schoolId == 2">
|
|
|
+ <div class="articleType">
|
|
|
+ <div class="articleTitle">关联种类</div>
|
|
|
+
|
|
|
+
|
|
|
+ <el-tree :data="articleIdsList" @node-click="articleNodeClick"
|
|
|
+ :props="{ label: 'name', children: 'children', value: 'id' }" node-key="id" show-checkbox
|
|
|
+ ref="articleIdsRef" @check-change="handleArticleIds">
|
|
|
+ <template #default="{ node, data }">
|
|
|
+ <span class="custom-tree-node">
|
|
|
+ <span>{{ data.name }}</span>
|
|
|
+ <img v-if="data.id == clickArticleSel.id" src="../../assets/fixed.png" alt="">
|
|
|
+ <img v-else src="" alt="">
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-tree>
|
|
|
+ </div>
|
|
|
+ <div class="buildType">
|
|
|
+ <div class="allAriticle">
|
|
|
+ <div class="articleTitle">关联楼栋</div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <el-tree :data="treeValue.list" :props="{ label: 'name', children: 'children', value: 'id' }"
|
|
|
+ node-key="id" show-checkbox ref="buildIdsRef" @check-change="handleCheckChange" />
|
|
|
+ </div>
|
|
|
+ </div> -->
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="关联楼栋 :" prop="buildIds">
|
|
|
+ <!-- <el-form-item label="关联楼栋 :" prop="buildIds" v-if="ruleForm.userzzId != 4">
|
|
|
<el-tree :data="treeValue.list" :props="{ label: 'name', children: 'children', value: 'id' }" node-key="id"
|
|
|
show-checkbox ref="buildIdsRef" @check-change="handleCheckChange" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="接单考核时间 :">
|
|
|
+ </el-form-item> -->
|
|
|
+ <el-form-item label="接单考核时间 :" v-if="ruleForm.userzzId != 4">
|
|
|
<div class="kaohe">
|
|
|
<el-input v-model="ruleForm.acceptanceTime" :clearable="false" placeholder="考核时间" style="width: 150px">
|
|
|
<template #suffix>
|
|
|
@@ -158,7 +190,7 @@
|
|
|
<el-form-item style="
|
|
|
padding-bottom: 40px;
|
|
|
border-bottom: 1px solid rgba(230, 230, 230, 1);
|
|
|
- " label="维修考核时间 :">
|
|
|
+ " label="维修考核时间 :" v-if="ruleForm.userzzId != 4">
|
|
|
<div class="kaohe">
|
|
|
<el-input v-model="ruleForm.maintenanceTime" :clearable="false" placeholder="考核时间" style="width: 150px">
|
|
|
<template #suffix>
|
|
|
@@ -210,17 +242,27 @@ const tableData = reactive({
|
|
|
// 添加员工弹窗数据 (------------------------------------)
|
|
|
const dialongTitle = ref("添加员工"); // 弹窗标题
|
|
|
|
|
|
-const checkAll = ref(false); // 判断物品种类是否全选
|
|
|
-const isIndeterminate = ref(false); // 不确定状态,表示只选择一部分
|
|
|
-const checkedCities = ref([]); // 选中的数据
|
|
|
+// 种类选择框数据
|
|
|
+const articleAll = ref(false); // 判断物品种类是否全选
|
|
|
+const articleIndeterminate = ref(false); // 不确定状态,表示只选择一部分
|
|
|
+const articleIdsList = ref(); // 关联种类 类型数据
|
|
|
+const articleIdsListM = ref(); // 关联种类 类型数据
|
|
|
+const articleIdsListH = ref(); // 关联种类 类型数据
|
|
|
+
|
|
|
+
|
|
|
+// 楼栋选择框数据
|
|
|
+const buildAll = ref(false); // 判断楼栋 是否全选
|
|
|
+const buildIndeterminate = ref(false); // 不确定状态,表示只选择一部分
|
|
|
+const treeValue = reactive({
|
|
|
+ list: [],
|
|
|
+ listM: [],
|
|
|
+ listH: [],
|
|
|
+}); // 关联楼栋 树形结构数据
|
|
|
|
|
|
const userzzIdsList = ref(); // 身份下拉数据
|
|
|
const workTypeList = ref(); // 工种下拉数据
|
|
|
const props = reactive();
|
|
|
-const articleIdsList = ref(); // 关联报修类型数据
|
|
|
-const treeValue = reactive({
|
|
|
- list: [],
|
|
|
-}); // 关联楼栋树形结构数据
|
|
|
+
|
|
|
|
|
|
const searchInput = reactive({
|
|
|
keyWord: "",
|
|
|
@@ -247,13 +289,36 @@ const ruleForm = reactive({
|
|
|
userPhone: "",
|
|
|
schoolId: "",
|
|
|
workType: "",
|
|
|
- articleIds: [],
|
|
|
- buildIds: [],
|
|
|
+ articleBuilds: [],
|
|
|
+ // articleIds: [],
|
|
|
+ // buildIds: [],
|
|
|
teamId: "",
|
|
|
acceptanceTime: "",
|
|
|
maintenanceTime: "",
|
|
|
id: "",
|
|
|
});
|
|
|
+const articleBuilds = reactive({ list: [] }) // 选中的种类和楼栋组合数据
|
|
|
+const clickArticleSel = reactive({
|
|
|
+ id: "", name: ""
|
|
|
+}); // 点击的那个种类
|
|
|
+
|
|
|
+// 关联报修类型验证
|
|
|
+const articleBuildRule = (rule, value, callback) => {
|
|
|
+ console.log(rule, value);
|
|
|
+ let sum = 0
|
|
|
+ articleBuilds.list.forEach(item => {
|
|
|
+ if (item.article.flag) {
|
|
|
+ sum = item.build.length + sum
|
|
|
+ console.log(sum);
|
|
|
+ }
|
|
|
+ }, 0)
|
|
|
+ // console.log(sum);
|
|
|
+ if (sum) {
|
|
|
+ callback();
|
|
|
+ } else {
|
|
|
+ callback(new Error("关联报修类型不能为空"));
|
|
|
+ }
|
|
|
+};
|
|
|
// 表单验证
|
|
|
const rules = reactive({
|
|
|
// serial: [{ required: true, message: "序列号不能为空", trigger: "blur" }],
|
|
|
@@ -261,11 +326,15 @@ const rules = reactive({
|
|
|
cardNumber: [
|
|
|
{ required: true, message: "微校卡号不能为空", trigger: "blur" },
|
|
|
],
|
|
|
- userzzId: [{ required: true, message: "身份不能为空", trigger: "blur" }],
|
|
|
+ userzzId: [{ required: true, message: "身份不能为空", trigger: "change" }],
|
|
|
userPhone: [{ required: true, message: "手机号码不能为空", trigger: "blur" }],
|
|
|
schoolId: [{ required: true, message: "校区不能为空", trigger: "blur" }],
|
|
|
- workType: [{ required: true, message: "工种不能为空", trigger: "blur" }],
|
|
|
- teamId: [{ required: true, message: "维修班不能为空", trigger: "blur" }],
|
|
|
+ workType: [{ required: true, message: "工种不能为空", trigger: "change" }],
|
|
|
+ teamId: [{ required: true, message: "维修班不能为空", trigger: "change" }],
|
|
|
+ articleBuilds: [
|
|
|
+ // { required: true, message: "关联报修类型不能为空", trigger: "blur" },
|
|
|
+ { required: true, validator: articleBuildRule, trigger: "blur" },
|
|
|
+ ],
|
|
|
articleIds: [
|
|
|
{ required: true, message: "关联报修类型不能为空", trigger: "blur" },
|
|
|
],
|
|
|
@@ -336,82 +405,170 @@ const searchBtn = lodash.debounce(async () => {
|
|
|
getList();
|
|
|
}, 300);
|
|
|
|
|
|
+// 关联种类和关联楼栋数据
|
|
|
+// const treeValueList = async (val) => {
|
|
|
+// // 报修(故障类型)类型关联 (接口-------)
|
|
|
+// let data = {
|
|
|
+// schoolId: val,
|
|
|
+// };
|
|
|
+// let resss = await axios({
|
|
|
+// method: "get",
|
|
|
+// url: api.value + "/repairArticleType/queryRepairArticleType",
|
|
|
+// headers: {
|
|
|
+// token: sessionStorage.getItem("token"),
|
|
|
+// user_head: sessionStorage.getItem("userhead"),
|
|
|
+// },
|
|
|
+// params: data,
|
|
|
+// });
|
|
|
+// console.log(resss, "报修(故障类型)类型关联数据");
|
|
|
+// articleIdsList.value = resss.data.data;
|
|
|
+
|
|
|
+// // 关联楼栋数据 (接口---------)
|
|
|
+// let datas = { schoolId: val };
|
|
|
+// let res = await axios({
|
|
|
+// method: "get",
|
|
|
+// url: api.value + "/repairArea/queryRepairAreaSecond",
|
|
|
+// headers: {
|
|
|
+// token: sessionStorage.getItem("token"),
|
|
|
+// user_head: sessionStorage.getItem("userhead"),
|
|
|
+// },
|
|
|
+// params: datas,
|
|
|
+// });
|
|
|
+// console.log(res, "关联楼栋数据");
|
|
|
+// treeValue.list = res.data.data;
|
|
|
+
|
|
|
+// // 黄家湖校区
|
|
|
+// // if (val == 1) {
|
|
|
+// // articleIdsListH.value = resss.data.data;
|
|
|
+// // treeValue.listH = res.data.data;
|
|
|
+// // } // 墨轩湖
|
|
|
+// // else {
|
|
|
+// // articleIdsListM.value = resss.data.data;
|
|
|
+// // treeValue.listM = res.data.data;
|
|
|
+// // }
|
|
|
+// }
|
|
|
+
|
|
|
+// 切换身份时将种类和楼栋全部置空
|
|
|
+const changeUserZzid = (val) => {
|
|
|
+ clickArticleSel.id = ""
|
|
|
+ clickArticleSel.name = ""
|
|
|
+ if (articleBuilds.list) {
|
|
|
+ articleBuilds.list.forEach(item => {
|
|
|
+ item.article.flag = false;
|
|
|
+ item.build = []
|
|
|
+ })
|
|
|
+ }
|
|
|
+ nextTick(() => {
|
|
|
+ articleIdsRef.value.setCheckedKeys([]);
|
|
|
+ buildIdsRef.value.setCheckedKeys([]);
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
// 改变校区 关联楼栋和关联报修类型也改变(---------------)
|
|
|
const changeSchool = async (val) => {
|
|
|
- ruleForm.articleIds = [];
|
|
|
- ruleForm.buildIds = [];
|
|
|
+ // ruleForm.articleIds = [];
|
|
|
+ // ruleForm.buildIds = [];
|
|
|
+ clickArticleSel.id = "";
|
|
|
+ clickArticleSel.name = "";
|
|
|
+ console.log(clickArticleSel);
|
|
|
+
|
|
|
nextTick(() => {
|
|
|
+ // if (articleIdsRef.value && buildIdsRef.value) {
|
|
|
articleIdsRef.value.setCheckedKeys([]);
|
|
|
buildIdsRef.value.setCheckedKeys([]);
|
|
|
+ // }
|
|
|
});
|
|
|
- if (val == 1) {
|
|
|
- ruleForm.schoolId = 1;
|
|
|
- } else {
|
|
|
- ruleForm.schoolId = 2;
|
|
|
- }
|
|
|
- // 报修(故障类型)类型关联 (接口-------)
|
|
|
- let data = {
|
|
|
- schoolId: val,
|
|
|
- };
|
|
|
- let resss = await axios({
|
|
|
- method: "get",
|
|
|
- url: api.value + "/repairArticleType/queryRepairArticleType",
|
|
|
- headers: {
|
|
|
- token: sessionStorage.getItem("token"),
|
|
|
- user_head: sessionStorage.getItem("userhead"),
|
|
|
- },
|
|
|
- params: data,
|
|
|
- });
|
|
|
- console.log(resss, "报修(故障类型)类型关联数据");
|
|
|
- articleIdsList.value = resss.data.data;
|
|
|
- // 关联楼栋数据 (接口---------)
|
|
|
- let datas = { schoolId: val };
|
|
|
- let res = await axios({
|
|
|
- method: "get",
|
|
|
- url: api.value + "/repairArea/queryRepairAreaSecond",
|
|
|
- headers: {
|
|
|
- token: sessionStorage.getItem("token"),
|
|
|
- user_head: sessionStorage.getItem("userhead"),
|
|
|
- },
|
|
|
- params: datas,
|
|
|
+ return new Promise(async (resolve, reject) => {
|
|
|
+ /* 你的逻辑代码 */
|
|
|
+ // 报修(故障类型)类型关联 (接口-------)
|
|
|
+ let data = {
|
|
|
+ schoolId: val,
|
|
|
+ };
|
|
|
+ let resss = await axios({
|
|
|
+ method: "get",
|
|
|
+ url: api.value + "/repairArticleType/queryRepairArticleType",
|
|
|
+ headers: {
|
|
|
+ token: sessionStorage.getItem("token"),
|
|
|
+ user_head: sessionStorage.getItem("userhead"),
|
|
|
+ },
|
|
|
+ params: data,
|
|
|
+ });
|
|
|
+ console.log(resss, "报修(故障类型)类型关联数据");
|
|
|
+ articleIdsList.value = resss.data.data;
|
|
|
+
|
|
|
+ // 关联楼栋数据 (接口---------)
|
|
|
+ let datas = { schoolId: val };
|
|
|
+ let res = await axios({
|
|
|
+ method: "get",
|
|
|
+ url: api.value + "/repairArea/queryRepairAreaSecond",
|
|
|
+ headers: {
|
|
|
+ token: sessionStorage.getItem("token"),
|
|
|
+ user_head: sessionStorage.getItem("userhead"),
|
|
|
+ },
|
|
|
+ params: datas,
|
|
|
+ });
|
|
|
+ console.log(res, "关联楼栋数据");
|
|
|
+ treeValue.list = res.data.data;
|
|
|
+
|
|
|
+ articleBuilds.list = []
|
|
|
+ articleIdsList.value.forEach(item => {
|
|
|
+ articleBuilds.list.push({
|
|
|
+ article: { id: item.id, name: item.name, flag: false },
|
|
|
+ build: [],
|
|
|
+ id: ""
|
|
|
+ })
|
|
|
+ })
|
|
|
+ console.log(articleBuilds.list, "整理的树形数据");
|
|
|
+ resolve('success')
|
|
|
+ console.log("1111111111111111111111111111111");
|
|
|
+
|
|
|
});
|
|
|
- console.log(res, "关联楼栋数据");
|
|
|
- treeValue.list = res.data.data;
|
|
|
+
|
|
|
};
|
|
|
|
|
|
//新增员工 (--------------------------------------)
|
|
|
const addlist = async () => {
|
|
|
dialongTitle.value = "添加员工";
|
|
|
- nextTick(() => {
|
|
|
- changeSchool(1);
|
|
|
- });
|
|
|
addDialogVisible.value = true;
|
|
|
ruleForm.userName = "";
|
|
|
ruleForm.cardNumber = "";
|
|
|
ruleForm.userzzId = "";
|
|
|
ruleForm.userPhone = "";
|
|
|
ruleForm.workType = "";
|
|
|
- ruleForm.articleIds = [];
|
|
|
- ruleForm.buildIds = [];
|
|
|
+ // ruleForm.articleIds = [];
|
|
|
+ // ruleForm.buildIds = [];
|
|
|
ruleForm.teamId = "";
|
|
|
ruleForm.acceptanceTime = "";
|
|
|
ruleForm.maintenanceTime = "";
|
|
|
+ ruleForm.schoolId = 1;
|
|
|
ruleForm.id = "";
|
|
|
+ clickArticleSel.id = ""
|
|
|
+ clickArticleSel.name = ""
|
|
|
+
|
|
|
+ changeSchool(1)
|
|
|
+
|
|
|
nextTick(() => {
|
|
|
articleIdsRef.value.setCheckedKeys([]);
|
|
|
buildIdsRef.value.setCheckedKeys([]);
|
|
|
});
|
|
|
};
|
|
|
-// 种类是否全选按钮
|
|
|
-// const handleCheckAllChange = (val) => {
|
|
|
+
|
|
|
+// 种类是否全选操作
|
|
|
+// const articleAllChange = (val) => {
|
|
|
// console.log(val);
|
|
|
// console.log(articleIdsList.value);
|
|
|
-// let checkedCitie = [];
|
|
|
-// articleIdsList.value.forEach((item) => {
|
|
|
-// checkedCitie.push(item.name);
|
|
|
-// });
|
|
|
-// checkedCities.value = val ? checkedCitie : [];
|
|
|
-// isIndeterminate.value = false;
|
|
|
+// let articleIds = []
|
|
|
+// // 黄家湖
|
|
|
+// if (val) {
|
|
|
+// articleIdsList.value.forEach((item) => {
|
|
|
+// articleIds.push(item.id);
|
|
|
+// });
|
|
|
+// articleIdsRef.value.setCheckedKeys(articleIds)
|
|
|
+// } else {
|
|
|
+// console.log("取消全选");
|
|
|
+// articleIdsRef.value.setCheckedKeys([])
|
|
|
+// // articleIndeterminate.value = false;
|
|
|
+// }
|
|
|
// };
|
|
|
// //单独勾选种类
|
|
|
// const handleCheckedCitiesChange = (value) => {
|
|
|
@@ -422,60 +579,200 @@ const addlist = async () => {
|
|
|
// checkedCount > 0 && checkedCount < articleIdsList.value.length;
|
|
|
// };
|
|
|
|
|
|
-// 关联报修类型 当复选框被点击的时候触发
|
|
|
+// 单独勾选种类 当复选框被点击的时候触发
|
|
|
const handleArticleIds = (data, checked, indeterminate) => {
|
|
|
- console.log(data, checked, indeterminate);
|
|
|
+ console.log(data, checked, indeterminate, "单独勾选种类");
|
|
|
// let keys = articleIdsRef.value.getCheckedNodes();
|
|
|
+
|
|
|
+ // 判断当前勾选的是哪个种类
|
|
|
+ // if (checked) {
|
|
|
+ // clickArticleSel.name = data.name
|
|
|
+ // clickArticleSel.id = data.id
|
|
|
+ // }
|
|
|
+ clickArticleSel.name = data.name
|
|
|
+ clickArticleSel.id = data.id
|
|
|
+
|
|
|
let keys = articleIdsRef.value.getCheckedKeys();
|
|
|
- // console.log(keys);
|
|
|
- // let arr = [];
|
|
|
- // keys.forEach((item) => {
|
|
|
- // if (item.parentId != 1) {
|
|
|
- // arr.push(item.id);
|
|
|
- // }
|
|
|
- // });
|
|
|
- ruleForm.articleIds = keys;
|
|
|
+ console.log(keys);
|
|
|
+ // 黄家湖
|
|
|
+ // if (keys.length == articleIdsList.value.length) {
|
|
|
+ // articleIndeterminate.value = false;
|
|
|
+ // articleAll.value = true
|
|
|
+ // } else if (keys.length) {
|
|
|
+ // articleAll.value = false
|
|
|
+ // articleIndeterminate.value = true;
|
|
|
+ // } else {
|
|
|
+ // articleAll.value = false
|
|
|
+ // articleIndeterminate.value = false;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // 判断是否勾选时赋值
|
|
|
+ articleBuilds.list.forEach(item => {
|
|
|
+ // console.log(item);
|
|
|
+
|
|
|
+ if (item.article.id == data.id) {
|
|
|
+ item.article.flag = checked
|
|
|
+ // if (item.article.flag) {
|
|
|
+ // buildIdsRef.value.setCheckedKeys(item.build);
|
|
|
+ // }
|
|
|
+ buildIdsRef.value.setCheckedKeys(item.build);
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ console.log(articleBuilds.list);
|
|
|
+ // ruleForm.articleIds = keys;
|
|
|
};
|
|
|
-// 关联楼栋 当复选框被点击的时候触发
|
|
|
+
|
|
|
+// 关联种类 被点击时触发
|
|
|
+const articleNodeClick = (data, node, component) => {
|
|
|
+ // * @description: node - click 节点被点击时的回调
|
|
|
+ // * @param {*} data 该节点所对应的对象
|
|
|
+ // * @param {*} node 节点对应的 Node
|
|
|
+ // * @param {*} component 节点组件本身
|
|
|
+ console.log('子组件触发 node-click 事件', data, node, component);
|
|
|
+ // 判断是否击
|
|
|
+ clickArticleSel.name = data.name
|
|
|
+ clickArticleSel.id = data.id
|
|
|
+ articleBuilds.list.forEach(item => {
|
|
|
+ // console.log(item);
|
|
|
+
|
|
|
+ if (item.article.id == data.id) {
|
|
|
+ // item.article.flag = checked
|
|
|
+ // if (item.article.flag) {
|
|
|
+ // buildIdsRef.value.setCheckedKeys(item.build);
|
|
|
+ // }
|
|
|
+ buildIdsRef.value.setCheckedKeys(item.build);
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+// 关联楼栋 当复选框被勾选的时候触发
|
|
|
const handleCheckChange = (data, checked, indeterminate) => {
|
|
|
// console.log(data, checked);
|
|
|
let keys = buildIdsRef.value.getCheckedNodes();
|
|
|
+ console.log(keys);
|
|
|
+
|
|
|
+ // let buildAllLength = 0;
|
|
|
+ // buildAllLength = treeValue.list.reduce((pre, cur) => {
|
|
|
+ // return cur.children.length + pre
|
|
|
+ // }, treeValue.list.length)
|
|
|
+
|
|
|
+ // if (keys.length == buildAllLength) {
|
|
|
+ // buildIndeterminate.value = false;
|
|
|
+ // buildAll.value = true
|
|
|
+ // } else if (keys.length) {
|
|
|
+ // buildAll.value = false
|
|
|
+ // buildIndeterminate.value = true;
|
|
|
+ // } else {
|
|
|
+ // buildAll.value = false
|
|
|
+ // buildIndeterminate.value = false;
|
|
|
+ // }
|
|
|
+
|
|
|
let arr = [];
|
|
|
keys.forEach((item) => {
|
|
|
if (item.parentId != 1) {
|
|
|
arr.push(item.id);
|
|
|
}
|
|
|
});
|
|
|
- ruleForm.buildIds = arr;
|
|
|
+ articleBuilds.list.forEach(item => {
|
|
|
+ if (item.article.id == clickArticleSel.id) {
|
|
|
+ item.build = arr
|
|
|
+ }
|
|
|
+ })
|
|
|
+ console.log(articleBuilds.list);
|
|
|
};
|
|
|
|
|
|
+// 楼栋被全选时
|
|
|
+const buildAllChange = (val) => {
|
|
|
+ console.log(val);
|
|
|
+ console.log(treeValue.list);
|
|
|
+
|
|
|
+ nextTick(() => {
|
|
|
+ if (val) {
|
|
|
+ let buildIds = []
|
|
|
+ treeValue.list.forEach(item => {
|
|
|
+ item.children.forEach(i => {
|
|
|
+ buildIds.push(i.id)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ buildIdsRef.value.setCheckedKeys(buildIds);
|
|
|
+ } else {
|
|
|
+ buildIdsRef.value.setCheckedKeys([]);
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
//编辑按钮 (-------------------------------------------)
|
|
|
const edit = (row) => {
|
|
|
- changeSchool(row.schoolId);
|
|
|
- // console.log(row.articleIds, row.buildIds);
|
|
|
dialongTitle.value = "编辑员工";
|
|
|
addDialogVisible.value = true;
|
|
|
- ruleForm.userName = row.userName;
|
|
|
- ruleForm.cardNumber = row.cardNumber;
|
|
|
- ruleForm.userzzId = row.userZzid;
|
|
|
- ruleForm.userPhone = row.userPhone;
|
|
|
- ruleForm.schoolId = row.schoolId;
|
|
|
- ruleForm.workType = row.workType;
|
|
|
- ruleForm.teamId = row.teamId;
|
|
|
- ruleForm.acceptanceTime = row.acceptanceTime;
|
|
|
- ruleForm.maintenanceTime = row.maintenanceTime;
|
|
|
- ruleForm.id = row.id;
|
|
|
- nextTick(() => {
|
|
|
- articleIdsRef.value.setCheckedKeys(row.articleIds);
|
|
|
- buildIdsRef.value.setCheckedKeys(row.buildIds);
|
|
|
- });
|
|
|
- ruleForm.articleIds = row.articleIds;
|
|
|
- ruleForm.buildIds = row.buildIds;
|
|
|
+
|
|
|
+ clickArticleSel.id = "";
|
|
|
+ clickArticleSel.name = "";
|
|
|
+
|
|
|
+ changeSchool(row.schoolId).then(res => {
|
|
|
+ if (row.userZzid == 4) {
|
|
|
+ ruleForm.userName = row.userName;
|
|
|
+ ruleForm.userzzId = row.userZzid;
|
|
|
+ ruleForm.workType = row.workType;
|
|
|
+ ruleForm.teamId = row.teamId;
|
|
|
+ ruleForm.schoolId = row.schoolId;
|
|
|
+ ruleForm.id = row.id;
|
|
|
+ } else {
|
|
|
+ ruleForm.userName = row.userName;
|
|
|
+ ruleForm.cardNumber = row.cardNumber;
|
|
|
+ ruleForm.userzzId = row.userZzid;
|
|
|
+ ruleForm.userPhone = row.userPhone;
|
|
|
+ ruleForm.schoolId = row.schoolId;
|
|
|
+ ruleForm.workType = row.workType;
|
|
|
+ ruleForm.teamId = row.teamId;
|
|
|
+ ruleForm.acceptanceTime = row.acceptanceTime;
|
|
|
+ ruleForm.maintenanceTime = row.maintenanceTime;
|
|
|
+ ruleForm.id = row.id;
|
|
|
+
|
|
|
+ let articleArr = []
|
|
|
+ articleBuilds.list.forEach(item => {
|
|
|
+ row.articleBuilds.forEach(i => {
|
|
|
+ if (item.article.id == i.articleId) {
|
|
|
+ console.log(item);
|
|
|
+
|
|
|
+ articleArr.push(i.articleId)
|
|
|
+ item.article.flag = true;
|
|
|
+ item.id = i.id;
|
|
|
+ item.build = i.buildIds;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ console.log(articleArr);
|
|
|
+
|
|
|
+ nextTick(() => {
|
|
|
+ articleIdsRef.value.setCheckedKeys(articleArr);
|
|
|
+ // buildIdsRef.value.setCheckedKeys(row.buildIds);
|
|
|
+ });
|
|
|
+ // ruleForm.articleIds = row.articleIds;
|
|
|
+ // ruleForm.buildIds = row.buildIds;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ console.log(row);
|
|
|
+ // console.log(row.articleIds, row.buildIds);
|
|
|
+
|
|
|
+ // let keys = row.articleIds;
|
|
|
+ // if (keys.length == articleIdsList.value.length) {
|
|
|
+ // articleIndeterminate.value = false;
|
|
|
+ // articleAll.value = true
|
|
|
+ // } else if (keys.length) {
|
|
|
+ // articleAll.value = false
|
|
|
+ // articleIndeterminate.value = true;
|
|
|
+ // } else {
|
|
|
+ // articleAll.value = false
|
|
|
+ // articleIndeterminate.value = false;
|
|
|
+ // }
|
|
|
+
|
|
|
};
|
|
|
// 取消添加员工
|
|
|
const cancelAdd = () => {
|
|
|
- ruleForm.articleIds = [];
|
|
|
- ruleForm.buildIds = [];
|
|
|
+ // ruleForm.articleIds = [];
|
|
|
+ // ruleForm.buildIds = [];
|
|
|
nextTick(() => {
|
|
|
articleIdsRef.value.setCheckedKeys([]);
|
|
|
buildIdsRef.value.setCheckedKeys([]);
|
|
|
@@ -489,19 +786,41 @@ const submitAdd = async (formEl) => {
|
|
|
await formEl.validate(async (valid, fields) => {
|
|
|
if (valid) {
|
|
|
if (dialongTitle.value == "添加员工") {
|
|
|
- let data = {
|
|
|
- userName: ruleForm.userName,
|
|
|
- cardNumber: ruleForm.cardNumber,
|
|
|
- userZzid: ruleForm.userzzId,
|
|
|
- userPhone: ruleForm.userPhone,
|
|
|
- schoolId: ruleForm.schoolId,
|
|
|
- workType: ruleForm.workType,
|
|
|
- articleIds: ruleForm.articleIds,
|
|
|
- buildIds: ruleForm.buildIds,
|
|
|
- teamId: ruleForm.teamId,
|
|
|
- acceptanceAssessTime: ruleForm.acceptanceTime,
|
|
|
- maintenanceAssessTime: ruleForm.maintenanceTime,
|
|
|
- };
|
|
|
+ // 如果身份为 线下人员(4),做出以下判断
|
|
|
+ let data = {}
|
|
|
+ if (ruleForm.userzzId == 4) {
|
|
|
+ data = {
|
|
|
+ userName: ruleForm.userName, // 名字
|
|
|
+ userZzid: ruleForm.userzzId, // 身份Id
|
|
|
+ schoolId: ruleForm.schoolId, // 校区Id
|
|
|
+ workType: ruleForm.workType, // 工作Id
|
|
|
+ teamId: ruleForm.teamId // 维修班Id
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ let arr = []
|
|
|
+ articleBuilds.list.forEach(item => {
|
|
|
+ if (item.article.flag && item.build.length != 0) {
|
|
|
+ arr.push({
|
|
|
+ articleId: item.article.id,
|
|
|
+ buildIds: item.build
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ data = {
|
|
|
+ userName: ruleForm.userName,
|
|
|
+ cardNumber: ruleForm.cardNumber,
|
|
|
+ userZzid: ruleForm.userzzId,
|
|
|
+ userPhone: ruleForm.userPhone,
|
|
|
+ schoolId: ruleForm.schoolId,
|
|
|
+ teamId: ruleForm.teamId,
|
|
|
+ workType: ruleForm.workType,
|
|
|
+ // articleIds: ruleForm.articleIds,
|
|
|
+ // buildIds: ruleForm.buildIds,
|
|
|
+ acceptanceAssessTime: ruleForm.acceptanceTime,
|
|
|
+ maintenanceAssessTime: ruleForm.maintenanceTime,
|
|
|
+ articleBuilds: arr
|
|
|
+ };
|
|
|
+ }
|
|
|
console.log(data, "添加员工数据");
|
|
|
|
|
|
let res = await axios({
|
|
|
@@ -522,8 +841,8 @@ const submitAdd = async (formEl) => {
|
|
|
message: res.data.message,
|
|
|
center: true,
|
|
|
});
|
|
|
- ruleForm.articleIds = [];
|
|
|
- ruleForm.buildIds = [];
|
|
|
+ // ruleForm.articleIds = [];
|
|
|
+ // ruleForm.buildIds = [];
|
|
|
nextTick(() => {
|
|
|
articleIdsRef.value.setCheckedKeys([]);
|
|
|
buildIdsRef.value.setCheckedKeys([]);
|
|
|
@@ -539,20 +858,44 @@ const submitAdd = async (formEl) => {
|
|
|
});
|
|
|
}
|
|
|
} else {
|
|
|
- let data = {
|
|
|
- userName: ruleForm.userName,
|
|
|
- cardNumber: ruleForm.cardNumber,
|
|
|
- userZzid: ruleForm.userzzId,
|
|
|
- userPhone: ruleForm.userPhone,
|
|
|
- schoolId: ruleForm.schoolId,
|
|
|
- workType: ruleForm.workType,
|
|
|
- articleIds: ruleForm.articleIds,
|
|
|
- buildIds: ruleForm.buildIds,
|
|
|
- teamId: ruleForm.teamId,
|
|
|
- acceptanceAssessTime: ruleForm.acceptanceTime,
|
|
|
- maintenanceAssessTime: ruleForm.maintenanceTime,
|
|
|
- id: ruleForm.id,
|
|
|
- };
|
|
|
+ // 如果身份为 线下人员(4),做出以下判断
|
|
|
+ let data = {}
|
|
|
+ if (ruleForm.userzzId == 4) {
|
|
|
+ data = {
|
|
|
+ userName: ruleForm.userName, // 名字
|
|
|
+ userZzid: ruleForm.userzzId, // 身份Id
|
|
|
+ schoolId: ruleForm.schoolId, // 校区Id
|
|
|
+ workType: ruleForm.workType, // 工作Id
|
|
|
+ teamId: ruleForm.teamId, // 维修班Id
|
|
|
+ id: ruleForm.id // 数据ID
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ let arr = []
|
|
|
+ articleBuilds.list.forEach(item => {
|
|
|
+ if (item.article.flag && item.build.length != 0) {
|
|
|
+ arr.push({
|
|
|
+ articleId: item.article.id,
|
|
|
+ buildIds: item.build,
|
|
|
+ id: item.id
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ data = {
|
|
|
+ userName: ruleForm.userName,
|
|
|
+ cardNumber: ruleForm.cardNumber,
|
|
|
+ userZzid: ruleForm.userzzId,
|
|
|
+ userPhone: ruleForm.userPhone,
|
|
|
+ schoolId: ruleForm.schoolId,
|
|
|
+ workType: ruleForm.workType,
|
|
|
+ articleIds: ruleForm.articleIds,
|
|
|
+ buildIds: ruleForm.buildIds,
|
|
|
+ teamId: ruleForm.teamId,
|
|
|
+ acceptanceAssessTime: ruleForm.acceptanceTime,
|
|
|
+ maintenanceAssessTime: ruleForm.maintenanceTime,
|
|
|
+ id: ruleForm.id,
|
|
|
+ articleBuilds: arr
|
|
|
+ };
|
|
|
+ }
|
|
|
console.log(data, "修改员工数据");
|
|
|
let res = await axios({
|
|
|
method: "post",
|
|
|
@@ -572,8 +915,8 @@ const submitAdd = async (formEl) => {
|
|
|
message: res.data.message,
|
|
|
center: true,
|
|
|
});
|
|
|
- ruleForm.articleIds = [];
|
|
|
- ruleForm.buildIds = [];
|
|
|
+ // ruleForm.articleIds = [];
|
|
|
+ // ruleForm.buildIds = [];
|
|
|
nextTick(() => {
|
|
|
articleIdsRef.value.setCheckedKeys([]);
|
|
|
buildIdsRef.value.setCheckedKeys([]);
|
|
|
@@ -729,6 +1072,8 @@ onBeforeMount(async () => {
|
|
|
console.log(ress, "查询工种下拉数据");
|
|
|
workTypeList.value = ress.data.data;
|
|
|
|
|
|
+ // treeValueList(1) // 调用黄家湖 种类和楼栋 数据
|
|
|
+ // treeValueList(2) // 调用墨轩湖 种类和楼栋 数据
|
|
|
getList();
|
|
|
});
|
|
|
onUnmounted(() => {
|
|
|
@@ -922,7 +1267,7 @@ onUnmounted(() => {
|
|
|
|
|
|
.el-dialog__body {
|
|
|
padding: 30px 20px 10px 20px;
|
|
|
- height: 700px;
|
|
|
+ max-height: 700px;
|
|
|
overflow: auto;
|
|
|
|
|
|
.el-input {
|
|
|
@@ -930,17 +1275,57 @@ onUnmounted(() => {
|
|
|
}
|
|
|
|
|
|
// 关联报修类型样式(-----------------)
|
|
|
- // .checkbox {
|
|
|
- // .el-form-item__content {
|
|
|
- // display: flex;
|
|
|
- // flex-direction: column;
|
|
|
- // align-items: flex-start;
|
|
|
- // .el-checkbox-group {
|
|
|
- // display: flex;
|
|
|
- // flex-direction: column;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
+ .checkbox {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ .el-form-item__content {
|
|
|
+ // width: 200px;
|
|
|
+ // display: flex;
|
|
|
+ // flex-direction: column;
|
|
|
+ // align-items: flex-start;
|
|
|
+ // border: 1px solid red;
|
|
|
+
|
|
|
+ .type {
|
|
|
+ display: flex;
|
|
|
+
|
|
|
+ .articleType {
|
|
|
+ padding-right: 30px;
|
|
|
+
|
|
|
+ .el-tree {
|
|
|
+ .el-tree-node__content {
|
|
|
+ .el-icon {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .custom-tree-node {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ img {
|
|
|
+ width: 18px;
|
|
|
+ margin-left: 5px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .buildType {
|
|
|
+ .allAriticle {
|
|
|
+ margin-left: 24px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .articleTitle {
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
.options {
|
|
|
.el-form-item__content {
|