Commit 84bb548f authored by 廖旭伟's avatar 廖旭伟

Merge remote-tracking branch 'origin/master'

parents 05b68d67 165fa452
...@@ -29,11 +29,31 @@ ...@@ -29,11 +29,31 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="22">
<el-form-item label="所属大厅:">
<p v-if="form.view == '查看'">{{ form.salaName }}</p>
<el-select
v-else
v-model="form.salaId"
style="width: 100%;"
disabled
>
<el-option
v-for="item in salaArr"
:key="item.id"
:label="item.deptName"
:value="item.id"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="所属部门:"> <el-form-item label="所属部门:">
<p v-if="form.view == '查看'">{{ form.deptName }}</p> <p v-if="form.view == '查看'">{{ form.deptName }}</p>
<el-select <el-select
v-else v-else
v-model="form.deptId" v-model="form.deptId"
...@@ -87,7 +107,7 @@ ...@@ -87,7 +107,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="异常时间:"> <el-form-item label="异常时间:" prop="errorTime">
<p v-if="form.view == '查看'">{{ form.errorTime }}</p> <p v-if="form.view == '查看'">{{ form.errorTime }}</p>
<el-date-picker <el-date-picker
v-else v-else
...@@ -103,7 +123,7 @@ ...@@ -103,7 +123,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="实际打卡时间:"> <el-form-item label="实际打卡时间:" prop="actualAttendTime">
<p v-if="form.view == '查看'">{{ form.actualAttendTime }}</p> <p v-if="form.view == '查看'">{{ form.actualAttendTime }}</p>
<el-date-picker <el-date-picker
...@@ -368,6 +388,16 @@ export default { ...@@ -368,6 +388,16 @@ export default {
this.staffArr = []; this.staffArr = [];
} }
}); });
// 获取大厅列表
this.$get("/dept/getSalaList")
.then((res) => {
if (res.code == 1) {
this.salaArr = res.data.data;
}
})
.catch((error) => {
this.$message.error(error.message);
});
// 获取部门列表 // 获取部门列表
this.$post("/dept/list", { page: 1, size: -1 }).then((res) => { this.$post("/dept/list", { page: 1, size: -1 }).then((res) => {
if (res.code == 1) { if (res.code == 1) {
...@@ -415,9 +445,12 @@ export default { ...@@ -415,9 +445,12 @@ export default {
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" }, { max: 64, message: "最多只能录入64个字符", trigger: "blur" },
], ],
createTime: [{ required: true, message: "请选择创建时间" }], createTime: [{ required: true, message: "请选择创建时间" }],
errorTime: [{ required: true, message: "请选择异常时间" }],
actualAttendTime: [{ required: true, message: "请选择实际打卡时间" }],
}, },
staffArr: [], staffArr: [],
deptArr: [], deptArr: [],
salaArr: [],
kaoqinArr: [], kaoqinArr: [],
fileList: [], fileList: [],
kaoqinCateArr: [], kaoqinCateArr: [],
...@@ -465,9 +498,9 @@ export default { ...@@ -465,9 +498,9 @@ export default {
this.$forceUpdate(this.form); this.$forceUpdate(this.form);
}, },
staffChange(val) { staffChange(val) {
console.log(val);
let arr = this.staffArr.filter((v) => v.id == val); let arr = this.staffArr.filter((v) => v.id == val);
this.form.deptId = arr && arr.length > 0 ? arr[0].deptId : ""; this.form.deptId = arr && arr.length > 0 ? arr[0].deptId : "";
this.form.salaId = arr && arr.length > 0 ? arr[0].salaId : "";
}, },
/** 编辑 */ /** 编辑 */
edit(row) { edit(row) {
...@@ -608,6 +641,8 @@ export default { ...@@ -608,6 +641,8 @@ export default {
subAddType: "", subAddType: "",
subMethod: "", subMethod: "",
workNum: "", workNum: "",
salaId: null,
salaName: "",
}; };
this.resetForm("form"); this.resetForm("form");
}, },
......
...@@ -29,6 +29,27 @@ ...@@ -29,6 +29,27 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="22">
<el-form-item label="所属大厅:">
<p v-if="form.view == '查看'">{{ form.salaName }}</p>
<el-select
v-else
v-model="form.salaId"
style="width: 100%;"
disabled
>
<el-option
v-for="item in salaArr"
:key="item.id"
:label="item.deptName"
:value="item.id"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="所属部门:"> <el-form-item label="所属部门:">
...@@ -155,7 +176,7 @@ ...@@ -155,7 +176,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="投诉时间:"> <el-form-item label="投诉时间:" prop="complainTime">
<p v-if="form.view == '查看'">{{ form.complainTime }}</p> <p v-if="form.view == '查看'">{{ form.complainTime }}</p>
<el-date-picker <el-date-picker
...@@ -415,6 +436,16 @@ export default { ...@@ -415,6 +436,16 @@ export default {
this.staffArr = []; this.staffArr = [];
} }
}); });
// 获取大厅列表
this.$get("/dept/getSalaList")
.then((res) => {
if (res.code == 1) {
this.salaArr = res.data.data;
}
})
.catch((error) => {
this.$message.error(error.message);
});
// 获取部门列表 // 获取部门列表
this.$post("/dept/list", { page: 1, size: -1 }).then((res) => { this.$post("/dept/list", { page: 1, size: -1 }).then((res) => {
if (res.code == 1) { if (res.code == 1) {
...@@ -455,11 +486,13 @@ export default { ...@@ -455,11 +486,13 @@ export default {
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" }, { max: 64, message: "最多只能录入64个字符", trigger: "blur" },
], ],
createTime: [{ required: true, message: "请选择创建时间" }], createTime: [{ required: true, message: "请选择创建时间" }],
complainTime: [{ required: true, message: "请选择投诉时间" }],
}, },
staffArr: [], staffArr: [],
deptArr: [], deptArr: [],
kaoqinArr: [], kaoqinArr: [],
fileList: [], fileList: [],
salaArr: [],
kaoqinCateArr: [], kaoqinCateArr: [],
ruleArr: [], ruleArr: [],
sourceArr: [ sourceArr: [
...@@ -531,6 +564,7 @@ export default { ...@@ -531,6 +564,7 @@ export default {
staffChange(val) { staffChange(val) {
let arr = this.staffArr.filter((v) => v.id == val); let arr = this.staffArr.filter((v) => v.id == val);
this.form.deptId = arr && arr.length > 0 ? arr[0].deptId : ""; this.form.deptId = arr && arr.length > 0 ? arr[0].deptId : "";
this.form.salaId = arr && arr.length > 0 ? arr[0].salaId : "";
}, },
/** 编辑 */ /** 编辑 */
edit(row) { edit(row) {
...@@ -609,6 +643,8 @@ export default { ...@@ -609,6 +643,8 @@ export default {
remark: "", remark: "",
filePaths: "", filePaths: "",
fileNames: "", fileNames: "",
salaId: null,
salaName: "",
}; };
this.open = true; this.open = true;
...@@ -693,6 +729,8 @@ export default { ...@@ -693,6 +729,8 @@ export default {
score: "", score: "",
processStatus: 1, processStatus: 1,
remark: "", remark: "",
salaId: null,
salaName: "",
}; };
this.resetForm("form"); this.resetForm("form");
}, },
......
...@@ -29,6 +29,27 @@ ...@@ -29,6 +29,27 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="22">
<el-form-item label="所属大厅:">
<p v-if="form.view == '查看'">{{ form.salaName }}</p>
<el-select
v-else
v-model="form.salaId"
style="width: 100%;"
disabled
>
<el-option
v-for="item in salaArr"
:key="item.id"
:label="item.deptName"
:value="item.id"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="所属部门:"> <el-form-item label="所属部门:">
...@@ -101,7 +122,7 @@ ...@@ -101,7 +122,7 @@
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="发生时间:"> <el-form-item label="发生时间:" prop="happenTime">
<p v-if="form.view == '查看'">{{ form.happenTime }}</p> <p v-if="form.view == '查看'">{{ form.happenTime }}</p>
<el-date-picker <el-date-picker
...@@ -131,7 +152,7 @@ ...@@ -131,7 +152,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="报警时间:"> <el-form-item label="报警时间:" prop="alarmTime">
<p v-if="form.view == '查看'">{{ form.alarmTime }}</p> <p v-if="form.view == '查看'">{{ form.alarmTime }}</p>
<el-date-picker <el-date-picker
...@@ -385,6 +406,16 @@ export default { ...@@ -385,6 +406,16 @@ export default {
this.staffArr = []; this.staffArr = [];
} }
}); });
// 获取大厅列表
this.$get("/dept/getSalaList")
.then((res) => {
if (res.code == 1) {
this.salaArr = res.data.data;
}
})
.catch((error) => {
this.$message.error(error.message);
});
// 获取部门列表 // 获取部门列表
this.$post("/dept/list", { page: 1, size: -1 }).then((res) => { this.$post("/dept/list", { page: 1, size: -1 }).then((res) => {
if (res.code == 1) { if (res.code == 1) {
...@@ -425,6 +456,8 @@ export default { ...@@ -425,6 +456,8 @@ export default {
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" }, { max: 64, message: "最多只能录入64个字符", trigger: "blur" },
], ],
createTime: [{ required: true, message: "请选择创建时间" }], createTime: [{ required: true, message: "请选择创建时间" }],
alarmTime: [{ required: true, message: "请选择创建时间" }],
happenTime: [{ required: true, message: "请选择创建时间" }],
}, },
staffArr: [ staffArr: [
{ {
...@@ -436,6 +469,7 @@ export default { ...@@ -436,6 +469,7 @@ export default {
deptArr: [], deptArr: [],
kaoqinArr: [], kaoqinArr: [],
fileList: [], fileList: [],
salaArr: [],
kaoqinCateArr: [], kaoqinCateArr: [],
ruleArr: [], ruleArr: [],
sourceArr: [ sourceArr: [
...@@ -504,6 +538,7 @@ export default { ...@@ -504,6 +538,7 @@ export default {
console.log(val); console.log(val);
let arr = this.staffArr.filter((v) => v.id == val); let arr = this.staffArr.filter((v) => v.id == val);
this.form.deptId = arr && arr.length > 0 ? arr[0].deptId : ""; this.form.deptId = arr && arr.length > 0 ? arr[0].deptId : "";
this.form.salaId = arr && arr.length > 0 ? arr[0].salaId : "";
}, },
/** 编辑 */ /** 编辑 */
edit(row) { edit(row) {
...@@ -644,6 +679,8 @@ export default { ...@@ -644,6 +679,8 @@ export default {
processStatus: 1, processStatus: 1,
remark: "", remark: "",
categoryId: "", categoryId: "",
salaId: null,
salaName: "",
}; };
this.resetForm("form"); this.resetForm("form");
}, },
......
...@@ -29,6 +29,27 @@ ...@@ -29,6 +29,27 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="22">
<el-form-item label="所属大厅:">
<p v-if="form.view == '查看'">{{ form.salaName }}</p>
<el-select
v-else
v-model="form.salaId"
style="width: 100%;"
disabled
>
<el-option
v-for="item in salaArr"
:key="item.id"
:label="item.deptName"
:value="item.id"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="所属部门:"> <el-form-item label="所属部门:">
...@@ -108,7 +129,7 @@ ...@@ -108,7 +129,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="办件时间:"> <el-form-item label="办件时间:" prop="goworkTime">
<p v-if="form.view == '查看'">{{ form.goworkTime }}</p> <p v-if="form.view == '查看'">{{ form.goworkTime }}</p>
<el-date-picker <el-date-picker
...@@ -355,6 +376,16 @@ export default { ...@@ -355,6 +376,16 @@ export default {
this.staffArr = []; this.staffArr = [];
} }
}); });
// 获取大厅列表
this.$get("/dept/getSalaList")
.then((res) => {
if (res.code == 1) {
this.salaArr = res.data.data;
}
})
.catch((error) => {
this.$message.error(error.message);
});
// 获取部门列表 // 获取部门列表
this.$post("/dept/list", { page: 1, size: -1 }).then((res) => { this.$post("/dept/list", { page: 1, size: -1 }).then((res) => {
if (res.code == 1) { if (res.code == 1) {
...@@ -395,6 +426,7 @@ export default { ...@@ -395,6 +426,7 @@ export default {
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" }, { max: 64, message: "最多只能录入64个字符", trigger: "blur" },
], ],
createTime: [{ required: true, message: "请选择创建时间" }], createTime: [{ required: true, message: "请选择创建时间" }],
goworkTime: [{ required: true, message: "请选择办件时间" }],
}, },
staffArr: [], staffArr: [],
deptArr: [], deptArr: [],
...@@ -402,6 +434,7 @@ export default { ...@@ -402,6 +434,7 @@ export default {
fileList: [], fileList: [],
kaoqinCateArr: [], kaoqinCateArr: [],
ruleArr: [], ruleArr: [],
salaArr: [],
sourceArr: [ sourceArr: [
{ {
label: "窗口评价系统", label: "窗口评价系统",
...@@ -469,9 +502,9 @@ export default { ...@@ -469,9 +502,9 @@ export default {
this.$forceUpdate(this.form); this.$forceUpdate(this.form);
}, },
staffChange(val) { staffChange(val) {
console.log(val);
let arr = this.staffArr.filter((v) => v.id == val); let arr = this.staffArr.filter((v) => v.id == val);
this.form.deptId = arr && arr.length > 0 ? arr[0].deptId : ""; this.form.deptId = arr && arr.length > 0 ? arr[0].deptId : "";
this.form.salaId = arr && arr.length > 0 ? arr[0].salaId : "";
}, },
/** 编辑 */ /** 编辑 */
edit(row) { edit(row) {
...@@ -606,6 +639,8 @@ export default { ...@@ -606,6 +639,8 @@ export default {
score: "", score: "",
processStatus: 1, processStatus: 1,
remark: "", remark: "",
salaId: null,
salaName: "",
}; };
this.resetForm("form"); this.resetForm("form");
}, },
......
...@@ -29,6 +29,27 @@ ...@@ -29,6 +29,27 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="22">
<el-form-item label="所属大厅:">
<p v-if="form.view == '查看'">{{ form.salaName }}</p>
<el-select
v-else
v-model="form.salaId"
style="width: 100%;"
disabled
>
<el-option
v-for="item in salaArr"
:key="item.id"
:label="item.deptName"
:value="item.id"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="所属部门:"> <el-form-item label="所属部门:">
...@@ -67,7 +88,7 @@ ...@@ -67,7 +88,7 @@
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="发生时间:"> <el-form-item label="发生时间:" prop="happenTime">
<p v-if="form.view == '查看'">{{ form.happenTime }}</p> <p v-if="form.view == '查看'">{{ form.happenTime }}</p>
<el-date-picker <el-date-picker
v-else v-else
...@@ -315,6 +336,16 @@ export default { ...@@ -315,6 +336,16 @@ export default {
this.staffArr = []; this.staffArr = [];
} }
}); });
// 获取大厅列表
this.$get("/dept/getSalaList")
.then((res) => {
if (res.code == 1) {
this.salaArr = res.data.data;
}
})
.catch((error) => {
this.$message.error(error.message);
});
// 获取部门列表 // 获取部门列表
this.$post("/dept/list", { page: 1, size: -1 }).then((res) => { this.$post("/dept/list", { page: 1, size: -1 }).then((res) => {
if (res.code == 1) { if (res.code == 1) {
...@@ -355,6 +386,7 @@ export default { ...@@ -355,6 +386,7 @@ export default {
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" }, { max: 64, message: "最多只能录入64个字符", trigger: "blur" },
], ],
createTime: [{ required: true, message: "请选择创建时间" }], createTime: [{ required: true, message: "请选择创建时间" }],
happenTime: [{ required: true, message: "请选择发生时间" }],
}, },
staffArr: [], staffArr: [],
deptArr: [], deptArr: [],
...@@ -362,6 +394,7 @@ export default { ...@@ -362,6 +394,7 @@ export default {
fileList: [], fileList: [],
kaoqinCateArr: [], kaoqinCateArr: [],
ruleArr: [], ruleArr: [],
salaArr: [],
sourceArr: [ sourceArr: [
{ {
label: "窗口评价系统", label: "窗口评价系统",
...@@ -432,6 +465,7 @@ export default { ...@@ -432,6 +465,7 @@ export default {
console.log(val); console.log(val);
let arr = this.staffArr.filter((v) => v.id == val); let arr = this.staffArr.filter((v) => v.id == val);
this.form.deptId = arr && arr.length > 0 ? arr[0].deptId : ""; this.form.deptId = arr && arr.length > 0 ? arr[0].deptId : "";
this.form.salaId = arr && arr.length > 0 ? arr[0].salaId : "";
}, },
/** 编辑 */ /** 编辑 */
edit(row) { edit(row) {
...@@ -569,6 +603,8 @@ export default { ...@@ -569,6 +603,8 @@ export default {
categoryId: "", categoryId: "",
happenTime: "", happenTime: "",
filePaths: "", filePaths: "",
salaId: null,
salaName: "",
}; };
this.resetForm("form"); this.resetForm("form");
}, },
......
...@@ -29,6 +29,27 @@ ...@@ -29,6 +29,27 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="22">
<el-form-item label="所属大厅:">
<p v-if="form.view == '查看'">{{ form.salaName }}</p>
<el-select
v-else
v-model="form.salaId"
style="width: 100%;"
disabled
>
<el-option
v-for="item in salaArr"
:key="item.id"
:label="item.deptName"
:value="item.id"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="所属部门:"> <el-form-item label="所属部门:">
...@@ -120,7 +141,7 @@ ...@@ -120,7 +141,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="评价时间"> <el-form-item label="评价时间" prop="reviewTime">
<p v-if="form.view == '查看'">{{ form.reviewTime }}</p> <p v-if="form.view == '查看'">{{ form.reviewTime }}</p>
<el-date-picker <el-date-picker
...@@ -370,6 +391,16 @@ export default { ...@@ -370,6 +391,16 @@ export default {
this.staffArr = []; this.staffArr = [];
} }
}); });
// 获取大厅列表
this.$get("/dept/getSalaList")
.then((res) => {
if (res.code == 1) {
this.salaArr = res.data.data;
}
})
.catch((error) => {
this.$message.error(error.message);
});
// 获取部门列表 // 获取部门列表
this.$post("/dept/list", { page: 1, size: -1 }).then((res) => { this.$post("/dept/list", { page: 1, size: -1 }).then((res) => {
if (res.code == 1) { if (res.code == 1) {
...@@ -410,12 +441,14 @@ export default { ...@@ -410,12 +441,14 @@ export default {
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" }, { max: 64, message: "最多只能录入64个字符", trigger: "blur" },
], ],
createTime: [{ required: true, message: "请选择创建时间" }], createTime: [{ required: true, message: "请选择创建时间" }],
reviewTime: [{ required: true, message: "请选择评价时间" }],
}, },
staffArr: [], staffArr: [],
deptArr: [], deptArr: [],
kaoqinArr: [], kaoqinArr: [],
fileList: [], fileList: [],
kaoqinCateArr: [], kaoqinCateArr: [],
salaArr: [],
ruleArr: [], ruleArr: [],
sourceArr: [ sourceArr: [
{ {
...@@ -487,6 +520,7 @@ export default { ...@@ -487,6 +520,7 @@ export default {
console.log(val); console.log(val);
let arr = this.staffArr.filter((v) => v.id == val); let arr = this.staffArr.filter((v) => v.id == val);
this.form.deptId = arr && arr.length > 0 ? arr[0].deptId : ""; this.form.deptId = arr && arr.length > 0 ? arr[0].deptId : "";
this.form.salaId = arr && arr.length > 0 ? arr[0].salaId : "";
}, },
/** 编辑 */ /** 编辑 */
edit(row) { edit(row) {
...@@ -627,6 +661,8 @@ export default { ...@@ -627,6 +661,8 @@ export default {
windowNum: "", windowNum: "",
workNum: "", workNum: "",
categoryId: "", categoryId: "",
salaId: null,
salaName: "",
}; };
this.resetForm("form"); this.resetForm("form");
}, },
......
...@@ -111,13 +111,30 @@ export default { ...@@ -111,13 +111,30 @@ export default {
{ label: "姓名", prop: "staffName", formatter: this.formatter }, { label: "姓名", prop: "staffName", formatter: this.formatter },
{ label: "工号", prop: "workNum", formatter: this.formatter }, {
label: "工号",
prop: "workNum",
formatter: this.formatter,
width: 80,
},
{ label: "手机号", prop: "phoneNumber", formatter: this.formatter }, {
label: "手机号",
prop: "phoneNumber",
formatter: this.formatter,
},
{ label: "所属大厅", prop: "salaName", formatter: this.formatter }, {
label: "所属大厅",
prop: "salaName",
formatter: this.formatter,
},
{ label: "所属部门", prop: "deptName", formatter: this.formatter }, {
label: "所属部门",
prop: "deptName",
formatter: this.formatter,
},
{ {
label: "所属中心", label: "所属中心",
formatter: (row) => { formatter: (row) => {
...@@ -128,32 +145,129 @@ export default { ...@@ -128,32 +145,129 @@ export default {
{ {
label: "考勤绩效指标分数", label: "考勤绩效指标分数",
prop: "attendScore", prop: "attendScore",
width: 140,
formatter: (row) => {
console.log(row, this.tableData.dict, "1111");
return (
this.tableData.dict.weightPdu.attendWeight - row.attendScore
).toFixed(2) > 0 ? (
<span style="color:red">
{row.attendScore +
"(-" +
(
this.tableData.dict.weightPdu.attendWeight -
row.attendScore
).toFixed(2) +
""}
</span>
) : (
row.attendScore +
`(${(
this.tableData.dict.weightPdu.attendWeight - row.attendScore
).toFixed(2)})`
);
},
}, },
{ {
label: "评价绩效指标分数", label: "评价绩效指标分数",
prop: "reviewScore", prop: "reviewScore",
width: 140,
formatter: (row) => {
return (
this.tableData.dict.weightPdu.reviewWeight - row.reviewScore
).toFixed(2) > 0 ? (
<span style="color:red">
{row.reviewScore +
"(-" +
(
this.tableData.dict.weightPdu.reviewWeight -
row.reviewScore
).toFixed(2) +
""}
</span>
) : (
row.reviewScore +
`(${(
this.tableData.dict.weightPdu.reviewWeight - row.reviewScore
).toFixed(2)})`
);
}, },
{
label: "投诉绩效指标分数",
prop: "complainScore",
}, },
// {
// label: "投诉绩效指标分数",
// prop: "complainScore",
// formatter: (row) => {
// return (
// row.complainScore +
// `(${this.tableData.dict.attendWeight - row.complainScore})`
// );
// },
// },
{ {
label: "办件绩效分数", label: "办件绩效分数",
prop: "goworkScore", prop: "goworkScore",
width: 140,
formatter: (row) => {
return (
this.tableData.dict.weightPdu.goworkWeight - row.goworkScore
).toFixed(2) > 0 ? (
<span style="color:red">
{row.goworkScore +
"(-" +
(
this.tableData.dict.weightPdu.goworkWeight -
row.goworkScore
).toFixed(2) +
""}
</span>
) : (
row.goworkScore +
`(${(
this.tableData.dict.weightPdu.goworkWeight - row.goworkScore
).toFixed(2)})`
);
},
}, },
{ {
label: "效能绩效分数", label: "效能绩效分数",
prop: "effectScore", prop: "effectScore",
width: 140,
formatter: (row) => {
return (
this.tableData.dict.weightPdu.effectWeight - row.effectScore
).toFixed(2) > 0 ? (
<span style="color:red">
{row.effectScore +
"(-" +
(
this.tableData.dict.weightPdu.effectWeight -
row.effectScore
).toFixed(2) +
""}
</span>
) : (
row.effectScore +
`(${(
this.tableData.dict.weightPdu.effectWeight - row.effectScore
).toFixed(2)})`
);
}, },
{
label: "自评绩效分数",
prop: "otherScore",
}, },
// {
// label: "自评绩效分数",
// prop: "otherScore",
// formatter: (row) => {
// return (
// row.attendScore +
// `(${this.tableData.dict.selfWeight - row.attendScore})`
// );
// },
// },
// { // {
// label: "累计异常分数", // label: "累计异常分数",
// prop: "errorScore", // prop: "errorScore",
...@@ -167,7 +281,7 @@ export default { ...@@ -167,7 +281,7 @@ export default {
{ label: "", prop: "month", formatter: this.formatter }, { label: "", prop: "month", formatter: this.formatter },
{ {
label: "操作", label: "操作",
width: 240, width: 120,
formatter: (row) => { formatter: (row) => {
return ( return (
<table-buttons <table-buttons
......
package com.mortals.xhx.daemon.task; package com.mortals.xhx.daemon.task;
import cn.hutool.http.HttpUtil;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ITask; import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService; import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.framework.utils.ServletUtils; import com.mortals.framework.utils.ServletUtils;
import com.mortals.xhx.base.system.upload.service.UploadService; import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.module.door.model.DoorEntity;
import com.mortals.xhx.module.door.model.DoorQuery;
import com.mortals.xhx.module.door.service.DoorService;
import com.mortals.xhx.module.hik.face.model.req.img.ImgReq; import com.mortals.xhx.module.hik.face.model.req.img.ImgReq;
import com.mortals.xhx.module.hik.face.service.IHikFaceService; import com.mortals.xhx.module.hik.face.service.IHikFaceService;
import com.mortals.xhx.module.staff.model.StaffEntity; import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.model.StaffQuery; import com.mortals.xhx.module.staff.model.StaffQuery;
import com.mortals.xhx.module.staff.service.StaffService; import com.mortals.xhx.module.staff.service.StaffService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -38,11 +38,25 @@ public class SyncRegisterUserPicTaskImpl implements ITaskExcuteService { ...@@ -38,11 +38,25 @@ public class SyncRegisterUserPicTaskImpl implements ITaskExcuteService {
@Autowired @Autowired
private StaffService staffService; private StaffService staffService;
@Value("${hik.host:}")
protected String hikhost;
@Autowired
private DoorService doorService;
@Override @Override
public void excuteTask(ITask task) throws AppException { public void excuteTask(ITask task) throws AppException {
log.info("同步员工照片任务"); log.info("同步员工照片任务");
syncRegisterUsersPhotos(); if (!ObjectUtils.isEmpty(hikhost)) {
staffService.syncRegisterUsersPhotos();
} else {
List<DoorEntity> doorEntities = doorService.find(new DoorQuery());
for (DoorEntity doorEntity : doorEntities) {
//todo 直连设备
}
}
// syncRegisterUsersPhotos();
log.info("同步员工任务照片完成"); log.info("同步员工任务照片完成");
} }
...@@ -53,7 +67,6 @@ public class SyncRegisterUserPicTaskImpl implements ITaskExcuteService { ...@@ -53,7 +67,6 @@ public class SyncRegisterUserPicTaskImpl implements ITaskExcuteService {
.filter(item -> ObjectUtils.isEmpty(item.getPhotoPath())) .filter(item -> ObjectUtils.isEmpty(item.getPhotoPath()))
.filter(item -> !ObjectUtils.isEmpty(item.getPicUri())).collect(Collectors.toList()); .filter(item -> !ObjectUtils.isEmpty(item.getPicUri())).collect(Collectors.toList());
for (StaffEntity staff : staffList) { for (StaffEntity staff : staffList) {
ImgReq imgReq = new ImgReq(); ImgReq imgReq = new ImgReq();
imgReq.setServerIndexCode(staff.getServerIndexCode()); imgReq.setServerIndexCode(staff.getServerIndexCode());
......
...@@ -23,6 +23,7 @@ import com.mortals.xhx.module.staff.service.StaffLeaveService; ...@@ -23,6 +23,7 @@ import com.mortals.xhx.module.staff.service.StaffLeaveService;
import com.mortals.xhx.module.staff.service.StaffService; import com.mortals.xhx.module.staff.service.StaffService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
...@@ -47,10 +48,13 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -47,10 +48,13 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
private IHikPersonService hikPersonService; private IHikPersonService hikPersonService;
@Autowired @Autowired
private IDingPersonService dingPersonService; private IDingPersonService dingPersonService;
@Value("${hik.host:}")
protected String hikhost;
@Override @Override
public void excuteTask(ITask task) throws AppException { public void excuteTask(ITask task) throws AppException {
try { try {
if (!ObjectUtils.isEmpty(hikhost)) {
log.info("同步部门"); log.info("同步部门");
deptService.syncDept(null); deptService.syncDept(null);
log.info("同步用户"); log.info("同步用户");
...@@ -94,6 +98,17 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -94,6 +98,17 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
} catch (Exception e) { } catch (Exception e) {
log.error("同步钉钉usreId失败"); log.error("同步钉钉usreId失败");
} }
} else {
//todo 设备直连
deptService.syncDeptByDevice(null);
staffService.syncPersonsByDevices(null);
}
} catch (Exception e) { } catch (Exception e) {
log.error("同步人事异常", e); log.error("同步人事异常", e);
} }
......
...@@ -91,4 +91,12 @@ public interface DeptService extends ICRUDService<DeptEntity, Long> { ...@@ -91,4 +91,12 @@ public interface DeptService extends ICRUDService<DeptEntity, Long> {
*/ */
Rest<String> syncDept(Context context); Rest<String> syncDept(Context context);
/**
* 通过设备同步部门信息
* @param context
* @return
*/
Rest<String> syncDeptByDevice(Context context);
} }
\ No newline at end of file
...@@ -341,4 +341,12 @@ public class DeptServiceImpl extends AbstractCRUDServiceImpl<DeptDao, DeptEntity ...@@ -341,4 +341,12 @@ public class DeptServiceImpl extends AbstractCRUDServiceImpl<DeptDao, DeptEntity
return Rest.ok(); return Rest.ok();
} }
@Override
public Rest<String> syncDeptByDevice(Context context) {
//todo
return Rest.ok();
}
} }
package com.mortals.xhx.module.door.model; package com.mortals.xhx.module.door.model;
import java.util.List;
import java.util.ArrayList;
import java.math.BigDecimal;
import cn.hutool.core.date.DateUtil;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.door.model.vo.DoorVo; import com.mortals.xhx.module.door.model.vo.DoorVo;
import lombok.Data; import lombok.Data;
/** /**
* 门禁设备实体对象 * 门禁设备实体对象
* *
* @author zxfei * @author zxfei
* @date 2023-11-22 * @date 2024-03-18
*/ */
@Data @Data
public class DoorEntity extends DoorVo { public class DoorEntity extends DoorVo {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -35,6 +43,18 @@ public class DoorEntity extends DoorVo { ...@@ -35,6 +43,18 @@ public class DoorEntity extends DoorVo {
* 密码 * 密码
*/ */
private String password; private String password;
/**
* 所属部门id
*/
private String deptId;
/**
* 所属部门名称
*/
private String deptName;
/**
* 备注
*/
private String remark;
@Override @Override
public int hashCode() { public int hashCode() {
return this.getId().hashCode(); return this.getId().hashCode();
...@@ -58,5 +78,8 @@ public class DoorEntity extends DoorVo { ...@@ -58,5 +78,8 @@ public class DoorEntity extends DoorVo {
this.port = 0; this.port = 0;
this.username = ""; this.username = "";
this.password = ""; this.password = "";
this.deptId = "";
this.deptName = "";
this.remark = "";
} }
} }
\ No newline at end of file
package com.mortals.xhx.module.door.model; package com.mortals.xhx.module.door.model;
import java.util.List; import java.util.List;
import com.mortals.xhx.module.door.model.DoorEntity;
/** /**
* 门禁设备查询对象 * 门禁设备查询对象
* *
* @author zxfei * @author zxfei
* @date 2023-11-22 * @date 2024-03-18
*/ */
public class DoorQuery extends DoorEntity { public class DoorQuery extends DoorEntity {
/** 开始 序号,主键,自增长 */ /** 开始 序号,主键,自增长 */
private Long idStart; private Long idStart;
...@@ -106,6 +106,21 @@ public class DoorQuery extends DoorEntity { ...@@ -106,6 +106,21 @@ public class DoorQuery extends DoorEntity {
/** 结束 修改时间 */ /** 结束 修改时间 */
private String updateTimeEnd; private String updateTimeEnd;
/** 所属部门id */
private List<String> deptIdList;
/** 所属部门id排除列表 */
private List <String> deptIdNotList;
/** 所属部门名称 */
private List<String> deptNameList;
/** 所属部门名称排除列表 */
private List <String> deptNameNotList;
/** 备注 */
private List<String> remarkList;
/** 备注排除列表 */
private List <String> remarkNotList;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */ /** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<DoorQuery> orConditionList; private List<DoorQuery> orConditionList;
...@@ -662,6 +677,102 @@ public class DoorQuery extends DoorEntity { ...@@ -662,6 +677,102 @@ public class DoorQuery extends DoorEntity {
this.updateTimeEnd = updateTimeEnd; this.updateTimeEnd = updateTimeEnd;
} }
/**
* 获取 所属部门id
* @return deptIdList
*/
public List<String> getDeptIdList(){
return this.deptIdList;
}
/**
* 设置 所属部门id
* @param deptIdList
*/
public void setDeptIdList(List<String> deptIdList){
this.deptIdList = deptIdList;
}
/**
* 获取 所属部门id
* @return deptIdNotList
*/
public List<String> getDeptIdNotList(){
return this.deptIdNotList;
}
/**
* 设置 所属部门id
* @param deptIdNotList
*/
public void setDeptIdNotList(List<String> deptIdNotList){
this.deptIdNotList = deptIdNotList;
}
/**
* 获取 所属部门名称
* @return deptNameList
*/
public List<String> getDeptNameList(){
return this.deptNameList;
}
/**
* 设置 所属部门名称
* @param deptNameList
*/
public void setDeptNameList(List<String> deptNameList){
this.deptNameList = deptNameList;
}
/**
* 获取 所属部门名称
* @return deptNameNotList
*/
public List<String> getDeptNameNotList(){
return this.deptNameNotList;
}
/**
* 设置 所属部门名称
* @param deptNameNotList
*/
public void setDeptNameNotList(List<String> deptNameNotList){
this.deptNameNotList = deptNameNotList;
}
/**
* 获取 备注
* @return remarkList
*/
public List<String> getRemarkList(){
return this.remarkList;
}
/**
* 设置 备注
* @param remarkList
*/
public void setRemarkList(List<String> remarkList){
this.remarkList = remarkList;
}
/**
* 获取 备注
* @return remarkNotList
*/
public List<String> getRemarkNotList(){
return this.remarkNotList;
}
/**
* 设置 备注
* @param remarkNotList
*/
public void setRemarkNotList(List<String> remarkNotList){
this.remarkNotList = remarkNotList;
}
/** /**
* 设置 序号,主键,自增长 * 设置 序号,主键,自增长
* @param id * @param id
...@@ -975,6 +1086,63 @@ public class DoorQuery extends DoorEntity { ...@@ -975,6 +1086,63 @@ public class DoorQuery extends DoorEntity {
} }
/**
* 设置 所属部门id
* @param deptId
*/
public DoorQuery deptId(String deptId){
setDeptId(deptId);
return this;
}
/**
* 设置 所属部门id
* @param deptIdList
*/
public DoorQuery deptIdList(List<String> deptIdList){
this.deptIdList = deptIdList;
return this;
}
/**
* 设置 所属部门名称
* @param deptName
*/
public DoorQuery deptName(String deptName){
setDeptName(deptName);
return this;
}
/**
* 设置 所属部门名称
* @param deptNameList
*/
public DoorQuery deptNameList(List<String> deptNameList){
this.deptNameList = deptNameList;
return this;
}
/**
* 设置 备注
* @param remark
*/
public DoorQuery remark(String remark){
setRemark(remark);
return this;
}
/**
* 设置 备注
* @param remarkList
*/
public DoorQuery remarkList(List<String> remarkList){
this.remarkList = remarkList;
return this;
}
/** /**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) * 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList * @return orConditionList
......
...@@ -51,11 +51,6 @@ public class DoorServiceImpl extends AbstractCRUDServiceImpl<DoorDao, DoorEntity ...@@ -51,11 +51,6 @@ public class DoorServiceImpl extends AbstractCRUDServiceImpl<DoorDao, DoorEntity
@Autowired @Autowired
private IHikDoorService hikDoorService; private IHikDoorService hikDoorService;
private Integer day;
@Autowired
private ICacheService cacheService;
@Override @Override
public Rest<Void> syncDoorDeviceEvents(DoorEntity doorEntity, HikDoorEventReq hikDoorEventReq) { public Rest<Void> syncDoorDeviceEvents(DoorEntity doorEntity, HikDoorEventReq hikDoorEventReq) {
......
...@@ -53,4 +53,10 @@ public interface StaffService extends ICRUDCacheService<StaffEntity,Long> { ...@@ -53,4 +53,10 @@ public interface StaffService extends ICRUDCacheService<StaffEntity,Long> {
*/ */
void doUpdateSala(); void doUpdateSala();
/**
* 通过海康云同步用户 照片
* @return
*/
Rest<Void> syncRegisterUsersPhotos();
} }
\ No newline at end of file
...@@ -1175,29 +1175,6 @@ ADD COLUMN `salaId` bigint(20) COMMENT '所属大厅' AFTER `deptName`, ...@@ -1175,29 +1175,6 @@ ADD COLUMN `salaId` bigint(20) COMMENT '所属大厅' AFTER `deptName`,
ADD COLUMN `salaName` varchar(128) COMMENT '所属大厅名称' AFTER `salaId`; ADD COLUMN `salaName` varchar(128) COMMENT '所属大厅名称' AFTER `salaId`;
-- ----------------------------
2024-02-29
-- ----------------------------
-- ----------------------------
-- 门禁设备表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_door`;
CREATE TABLE mortals_xhx_door(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`deviceName` varchar(64) COMMENT '设备名称',
`deviceCode` varchar(64) COMMENT '设备编码',
`ip` varchar(64) COMMENT 'Ip地址',
`port` int(9) COMMENT '端口',
`username` varchar(64) COMMENT '用户名',
`password` varchar(64) COMMENT '密码',
`createTime` datetime COMMENT '创建时间',
`createUserId` bigint(20) COMMENT '创建用户',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '修改时间',
PRIMARY KEY (`id`)
,KEY `deviceCode` (`deviceCode`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='门禁设备';
-- ------------------ -- ------------------
-- 2024-03-12 -- 2024-03-12
-- 绩效表增加人员大厅字段 -- 绩效表增加人员大厅字段
...@@ -1271,3 +1248,30 @@ ALTER TABLE `mortals_xhx_staff_perform_stat` ...@@ -1271,3 +1248,30 @@ ALTER TABLE `mortals_xhx_staff_perform_stat`
ALTER TABLE `mortals_xhx_staff_perform_summary` ALTER TABLE `mortals_xhx_staff_perform_summary`
ADD COLUMN `salaId` bigint(20) DEFAULT NULL COMMENT '所属大厅' AFTER `deptName`, ADD COLUMN `salaId` bigint(20) DEFAULT NULL COMMENT '所属大厅' AFTER `deptName`,
ADD COLUMN `salaName` varchar(128) DEFAULT NULL COMMENT '所属大厅名称' AFTER `salaId`; ADD COLUMN `salaName` varchar(128) DEFAULT NULL COMMENT '所属大厅名称' AFTER `salaId`;
-- ----------------------------
2024-03-18
-- ----------------------------
-- ----------------------------
-- 门禁设备表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_door`;
CREATE TABLE mortals_xhx_door(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`deviceName` varchar(64) COMMENT '设备名称',
`deviceCode` varchar(64) COMMENT '设备编码',
`ip` varchar(64) COMMENT 'Ip地址',
`port` int(9) COMMENT '端口',
`username` varchar(64) COMMENT '用户名',
`password` varchar(64) COMMENT '密码',
`createTime` datetime COMMENT '创建时间',
`createUserId` bigint(20) COMMENT '创建用户',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '修改时间',
`deptId` bigint (20) COMMENT '所属部门id',
`deptName` varchar(64) COMMENT '所属部门名称',
`remark` varchar(256) COMMENT '备注',
PRIMARY KEY (`id`)
,KEY `deviceCode` (`deviceCode`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='门禁设备';
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment