Commit 11e8a113 authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents 753c5c05 703a4781
......@@ -16,6 +16,9 @@ export default {
},
];
}
data.entity.inspect && data.entity.inspect == 0
? (data.entity.inspect = false)
: (data.entity.inspect = true);
return data;
},
// 渲染后置处理
......@@ -25,6 +28,30 @@ export default {
data.attachmentPathList && data.attachmentPathList.length > 0
? (data.attachmentPath = data.attachmentPathList[0].url)
: (data.attachmentPath = "");
if (data.leavePerson == 0 || data.leavePerson) {
if (this.dict.staffList) {
data.leavePerson = this.dict.staffList[this.form.leavePerson];
for (let key in this.dict.staffList) {
if (this.dict.staffList[key] == data.leavePerson) {
data.leavePersonId = Number(key);
}
}
}
}
data.windowWorkmanPerformDetailList &&
data.windowWorkmanPerformDetailList.length > 0
? (data.windowWorkmanPerformDetailList = data.windowWorkmanPerformDetailList.map(
(v) => {
v.bonusScore = Number(v.bonusScore);
v.discipline = Number(v.discipline);
v.specification = Number(v.specification);
v.management = Number(v.management);
v.efficiency = Number(v.efficiency);
v.sumScore = Number(v.sumScore);
return v;
}
))
: "";
return data;
},
......@@ -45,7 +72,6 @@ export default {
// 默认拉取数据
getData() {
this.loading = true;
this.$get(this.urls.currUrl || this.pageInfo.currUrl, this.query)
.then(({ data }) => {
const res = this.beforeRender(data);
......@@ -57,7 +83,14 @@ export default {
res.entity = this.util_toDateStr(res.entity, this.toDate);
this.form = Object.assign({}, this.form, res.entity);
this.dict = Object.assign({}, this.dict, res.dict);
this.$route.name == "window/owner/list"
? this.$post("/staff/list", { page: 1, size: -1 }).then((res) => {
if (res.code == 1) {
this.dict.staffList = res.data.data;
this.afterRender(res);
}
})
: this.afterRender(res);
})
.catch((error) => {
this.$message.error(error.message);
......@@ -91,6 +124,7 @@ export default {
this.form.leaveType
? (this.form.leaveType = this.form.leaveType.toString())
: "";
this.form.inspect ? (this.form.inspect = 1) : (this.form.inspect = 0);
this.$post(url, this.beforeSubmit(this.form))
.then((res) => {
this.$message.success(res.msg);
......
......@@ -46,6 +46,7 @@ export default {
delete this.query.errorTimeEnd;
}
}
this.getData();
},
},
......@@ -693,8 +694,9 @@ export default {
? "/check/window/perform/list"
: this.$route.path.indexOf("/window/workman/perform/list") == 0
? "/check/window/workman/perform/list"
: this.$route.path.indexOf("/window/workman/perform/detail/list") ==
0
: this.$route.path.indexOf(
"/check/window/workman/perform/detail/list"
) == 0
? "/window/workman/perform/detail/list"
: this.$route.path,
edit: this.$route.path.replace("/list", "/edit"),
......
......@@ -9,10 +9,11 @@ export const timestampToTime = (timestamp, transLength) => {
}
let Y = date.getFullYear() + "-";
let M =
(date.getMonth() + 1 < 10
date.getMonth() + 1 < 10
? "0" + (date.getMonth() + 1)
: date.getMonth() + 1) + "-";
let D = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
: date.getMonth() + 1;
let D =
date.getDate() < 10 ? "-" + "0" + date.getDate() : "-" + date.getDate();
let h =
" " +
(date.getHours() < 10 ? "0" + date.getHours() : date.getHours()) +
......@@ -23,6 +24,8 @@ export const timestampToTime = (timestamp, transLength) => {
let s =
date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
switch (transLength) {
case 2:
return Y + M;
case 3:
return Y + M + D;
case 6:
......
......@@ -133,7 +133,6 @@ export default {
val.length == 0 || val.length > 0
? (this.emptytxt = "暂无数据")
: (this.emptytxt = "加载中...");
// if (val.length > 0) {
// val.forEach((v) => {
// for (let key in v) {
......
......@@ -254,6 +254,11 @@ export default {
computed: {
field: {
get() {
if (Array.isArray(this.value)) {
this.value = this.value.map((v) => {
return typeof v == 'number' ? v + "" : v;
});
}
return this.value;
},
set(val) {
......
......@@ -256,11 +256,13 @@ export default {
this.$route.name == "attendance/stat/list" ||
this.$route.name == "check/window/perform/list" ||
this.$route.name == "check/window/workman/perform/list" ||
this.$route.name == "check/window/workman/perform/detail/list" ||
this.$route.name == "check/attend/record/list" ||
this.$route.name == "check/review/record/list" ||
this.$route.name == "check/complain/record/list" ||
this.$route.name == "check/gowork/record/list" ||
this.$route.name == "check/effect/record/list" ||
this.$route.name == "check/other/record/list" ||
this.$route.name == "window/perform/list" ||
this.$route.name == "window/workman/perform/list" ||
this.$route.name == "perform/attend/record/list" ||
......@@ -268,6 +270,9 @@ export default {
this.$route.name == "perform/complain/record/list" ||
this.$route.name == "perform/gowork/record/list" ||
this.$route.name == "perform/effect/record/list" ||
this.$route.name == "perform/other/record/list" ||
this.$route.name == "perform/attend/appeal/list" ||
this.$route.name == "window/owner/list" ||
this.$route.name == "staff/perform/summary/list"
) {
this.getArr();
......@@ -277,6 +282,7 @@ export default {
},
methods: {
salaChange() {
this.form.deptId = "";
this.$get("/dept/getDeptBySalaId", { salaId: this.form.salaId })
.then((res) => {
if (res.code == 1) {
......@@ -423,6 +429,7 @@ export default {
}
}
});
this.form = Object.assign({}, this.form, newFormData);
// this.form = Object.assign({}, this.form, data);
// console.log("after form",this.form)
......@@ -444,6 +451,7 @@ export default {
delete this.$route.query.yearmonth;
delete this.$route.query.createTimeMonth;
delete this.$route.query.orderColList;
this.form = Object.assign({}, this.form, newData);
this.onSubmit();
},
......@@ -457,16 +465,7 @@ export default {
this.form.year = undefined;
this.form.month = undefined;
}
if (this.form.orderCols1) {
this.form.orderColList = [
{
colName: "totalScore",
sortKind: this.form.orderCols1,
},
];
} else {
this.form.orderColList = "";
}
if (this.form.createTimeMonth) {
// this.form.createTimeStart = this.form.createTimeMonth + "-01";
// this.form.createTimeEnd = this.form.createTimeMonth + "-31";
......@@ -538,6 +537,10 @@ export default {
this.form.attendanceDateEnd = timestampToTime(new Date(), 3);
}
}
if (this.$route.name == "perform/effect/record/list") {
this.form.subMethod ? "" : (this.form.subMethod = "1");
console.log(this.form.subMethod);
}
let params = JSON.parse(JSON.stringify(this.form)); //不更改原始数据
let data = this.decode(params);
......@@ -558,6 +561,11 @@ export default {
query.errorTimeEnd = undefined;
}
}
if (this.$route.name == "check/window/workman/perform/detail/list") {
query.yearmonth = timestampToTime(new Date(), 2);
query.year = timestampToTime(new Date(), 2).slice(0, 4);
query.month = timestampToTime(new Date(), 2).slice(5);
}
console.log({
...query,
...data,
......
// 列表-条件查询
<template>
<div class="search-form-wapper">
<el-form :inline="true" :model="form" ref="search-form" size="small">
<el-form-item
v-for="(item, i) in search"
:key="i"
v-bind:class="{ search_new_line: item.newLine }"
>
<el-input
v-model="form[item.name]"
v-if="item.type === 'text'"
:placeholder="
item.placeholder ? item.placeholder : '请输入' + item.label
"
></el-input>
<el-checkbox-group
v-model="form[item.name]"
v-if="item.type === 'checkbox'"
>
<el-checkbox
v-for="(label, value) in table.dict[item.name]"
:label="value"
:key="value"
>{{ label }}</el-checkbox
>
</el-checkbox-group>
<el-select
v-model="form[item.name]"
:filterable="item.filterable"
:multiple="item.multiple"
:clearable="true"
@change="item.change && item.change"
@clear="item.clear && item.clear"
v-if="item.type === 'select'"
:placeholder="'请选择' + item.label"
>
<!-- <el-option
label=""
value=""
v-if="!item.multiple && !item.notShowAll"
></el-option> -->
<el-option
:label="label"
:value="value"
v-for="(label, value) in table.dict[item.name]"
:key="value"
></el-option>
</el-select>
<el-select
v-model="form[item.name]"
:filterable="item.filterable"
:multiple="item.multiple"
:clearable="true"
@change="salaChange"
@clear="item.clear && item.clear"
v-if="item.type === 'selectSalaId'"
:placeholder="'请选择' + item.label"
>
<el-option
:label="label.deptName"
:value="label.id"
v-for="(label, value) in salaArr"
:key="value"
></el-option>
</el-select>
<el-select
v-model="form[item.name]"
:filterable="item.filterable"
:multiple="item.multiple"
:clearable="true"
@change="deptChange"
@clear="item.clear && item.clear"
v-if="item.type === 'selectDeptId'"
:placeholder="'请选择' + item.label"
>
<!-- <el-option
label=""
value=""
v-if="!item.multiple && !item.notShowAll"
></el-option> -->
<el-option
:label="label.deptName"
:value="label.id"
v-for="(label, value) in deptArr"
:key="value"
></el-option>
</el-select>
<el-select
v-model="form[item.name]"
clearable
:multiple="item.multiple"
filterable
remote
v-if="item.type === 'remoteSelect'"
placeholder="请输入关键词"
searchType="item.searchType"
:remote-method="
(query) => {
remoteMethod(query, item.searchType);
}
"
>
<el-option
:label="label"
:value="value"
v-for="(label, value) in remoteOptions[item.searchType]"
:key="value"
></el-option>
</el-select>
<el-cascader
placeholder="选择区域"
v-if="item.type === 'cascader'"
v-model="selectedTreeID"
:filterable="item.filterable"
:clearable="true"
change-on-select
@change="treeSelecteds"
:options="treeDatas"
></el-cascader>
<el-select
v-model="form[item.name]"
:multiple="item.multiple"
:remote-method="userRemoteMethod"
:loading="loading"
@focus="userRemoteMethod"
:reserve-keyword="item.reserve - keyword"
:clearable="item.clearable"
:placeholder="item.placeholder ? item.placeholder : '请输入用户'"
filterable
remote
v-if="item.type === 'userLoginNameRemoteSelect'"
>
<el-option
v-for="i in userData"
:key="i.loginName"
:label="i.realName"
:value="i.loginName"
></el-option>
</el-select>
<el-date-picker
v-model="form[item.name]"
v-if="item.type === 'date' && !item.valueFormat"
type="date"
value-format="yyyy-MM-dd"
:placeholder="item.label ? item.label : '选择日期'"
>
</el-date-picker>
<el-date-picker
v-model="form[item.name]"
v-if="item.type === 'date' && item.valueFormat"
type="date"
:value-format="item.valueFormat"
:placeholder="item.label ? item.label : '选择日期'"
>
</el-date-picker>
<el-date-picker
v-model="form[item.name]"
v-if="item.type === 'month' && !item.valueFormat"
type="month"
value-format="yyyy-MM"
:placeholder="item.label ? item.label : '选择月份'"
>
</el-date-picker>
<el-date-picker
v-model="form[item.name]"
v-if="item.type === 'month' && item.valueFormat"
type="month"
:value-format="item.valueFormat"
:placeholder="item.label ? item.label : '选择月份'"
>
</el-date-picker>
<el-date-picker
v-model="form[item.name]"
v-if="item.type === 'datetime'"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
:placeholder="item.label"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
@click="onSubmit"
title="查询"
>查询</el-button
>
<!-- <el-button
icon="el-icon-tickets"
@click="resetTable"
v-if="visible"
title="重新汇总"
>重新汇总</el-button
> -->
<el-button
icon="el-icon-download"
@click="downloadFile"
:loading="isDownload"
v-if="downloadUrl"
>下载</el-button
>
<el-button icon="el-icon-refresh-left" @click="cleanForm" title="清空"
>清空</el-button
>
</el-form-item>
</el-form>
</div>
</template>
<script>
import Qs from "qs";
import { type } from "@/assets/utils";
import { isArray } from "util";
import {
getFirstDay,
getLastDay,
timestampToTime,
} from "@/assets/utils/dateFormat.js";
export default {
props: {
search: {
type: Array,
default: () => [],
},
table: {
type: Object,
default: () => {},
},
page: {
type: Number,
default: 1,
},
},
// watch: {
// $route(route) {
// this.initForm(route.query);
// },
// },
async created() {
this.cleanForm();
// this.$route.query ? (this.$route.query = {}) : console.log(456);
this.$route.name == "attendance/stat/list"
? (this.visible = true)
: (this.visible = false);
if (
this.$route.name == "attendance/stat/list" ||
this.$route.name == "check/window/perform/list" ||
this.$route.name == "check/window/workman/perform/list" ||
this.$route.name == "check/window/workman/perform/detail/list" ||
this.$route.name == "check/attend/record/list" ||
this.$route.name == "check/review/record/list" ||
this.$route.name == "check/complain/record/list" ||
this.$route.name == "check/gowork/record/list" ||
this.$route.name == "check/effect/record/list" ||
this.$route.name == "check/other/record/list" ||
this.$route.name == "window/perform/list" ||
this.$route.name == "window/workman/perform/list" ||
this.$route.name == "perform/attend/record/list" ||
this.$route.name == "perform/review/record/list" ||
this.$route.name == "perform/complain/record/list" ||
this.$route.name == "perform/gowork/record/list" ||
this.$route.name == "perform/effect/record/list" ||
this.$route.name == "perform/other/record/list" ||
this.$route.name == "perform/attend/appeal/list" ||
this.$route.name == "window/owner/list" ||
this.$route.name == "staff/perform/summary/list"
) {
this.getArr();
}
this.initForm(this.$route.query);
},
mounted() {
console.log(this.$route);
},
methods: {
salaChange() {
this.$get("/dept/getDeptBySalaId", { salaId: this.form.salaId })
.then((res) => {
if (res.code == 1) {
this.deptArr = res.data.data;
this.page = 1;
}
})
.catch((error) => {
this.$message.error(error.message);
});
},
deptChange() {
this.page = 1;
},
getArr() {
this.$get("/dept/getSalaList")
.then((res) => {
if (res.code == 1) {
this.salaArr = res.data.data;
}
})
.catch((error) => {
this.$message.error(error.message);
});
this.$get("/dept/getDeptBySalaId")
.then((res) => {
if (res.code == 1) {
this.deptArr = res.data.data;
}
})
.catch((error) => {
this.$message.error(error.message);
});
},
resetTable() {
let { path, query } = this.$route;
if (this.form.attendanceDateStart && this.form.attendanceDateEnd) {
let startValue = Date.parse(this.form.attendanceDateStart);
let endValue = Date.parse(this.form.attendanceDateEnd);
if (startValue > endValue) {
this.$message.error("查询-结束的日期需大于开始日期");
this.form.attendanceDateEnd = "";
return false;
}
}
if (this.form.startTime && this.form.endTime) {
let startValue = Date.parse(this.form.startTime);
let endValue = Date.parse(this.form.endTime);
if (startValue > endValue) {
this.$message.error("查询-结束的日期需大于开始日期");
this.form.endTime = "";
return false;
}
}
if (this.$route.name == "attendance/stat/list") {
if (this.form.summaryTimeStart && this.form.summaryTimeEnd) {
let startValue = Date.parse(this.form.summaryTimeStart);
let endValue = Date.parse(this.form.summaryTimeEnd);
if (startValue > endValue) {
this.$message.error("查询-结束的日期需大于开始日期");
this.form.summaryTimeEnd = "";
return false;
}
} else {
this.form.summaryTimeStart = getFirstDay();
this.form.summaryTimeEnd = getLastDay();
}
} else {
delete this.form.summaryTimeStart;
delete this.form.summaryTimeEnd;
}
if (this.$route.name == "attendance/record/hik/list") {
if (this.form.attendanceDateStart && this.form.attendanceDateEnd) {
let startValue = Date.parse(this.form.attendanceDateStart);
let endValue = Date.parse(this.form.attendanceDateEnd);
if (startValue > endValue) {
this.$message.error("查询-结束的日期需大于开始日期");
this.form.attendanceDateEnd = "";
return false;
}
} else {
this.form.attendanceDateStart = getFirstDay();
this.form.attendanceDateEnd = getFirstDay();
}
}
let params = JSON.parse(JSON.stringify(this.form)); //不更改原始数据
let data = this.decode(params);
data.size = -1;
this.$post("/attendance/stat/summary", data).then((res) => {
if (res.code == 1) {
this.$message.success(res.msg);
} else {
this.$message.error(res.msg);
}
});
},
remoteMethod(query, searchType) {
if (query == "") {
console.log("查询参数为空!");
return;
}
this.loading = true;
var param = {
name: query,
searchType: searchType,
};
try {
this.$post("/common/autoComplete/list", param).then(({ data }) => {
this.loading = false;
var tempOptions = {};
data.result.forEach(({ id, name }) => {
tempOptions[id] = name;
});
this.remoteOptions[searchType] = Object.assign({}, tempOptions);
sessionStorage.setItem(
searchType + "OptionsDict",
JSON.stringify(this.remoteOptions[searchType])
);
});
} catch (error) {}
},
async initForm(data) {
//初始化查询表单
let newFormData = {};
// this.form = this.encode(data, this.form);
this.search.forEach((item) => {
//复选框
if (item.type === "checkbox") {
if (this.form[item.name] == undefined) {
newFormData[item.name] = [];
} else if (Array.prototype.isPrototypeOf(this.form[item.name])) {
newFormData[item.name] = this.form[item.name];
} else {
newFormData[item.name] = [this.form[item.name]];
}
} else if (item.multiple === true) {
if (this.form[item.name] == undefined) {
this.form[item.name] = [];
newFormData[item.name] = [];
} else {
if (!isArray(this.form[item.name])) {
var temp = this.form[item.name];
this.form[item.name] = [temp];
newFormData[item.name] = [temp];
}
}
}
});
this.form = Object.assign({}, this.form, newFormData);
// this.form = Object.assign({}, this.form, data);
// console.log("after form",this.form)
},
cleanForm() {
this.clean();
},
// 清空表单值
clean() {
let newData = {};
this.search.forEach((item) => {
if (item.name === "groupList") {
newData[item.name] = [];
} else {
newData[item.name] = item.multiple ? [] : "";
}
});
delete this.$route.query.yearmonth;
delete this.$route.query.createTimeMonth;
delete this.$route.query.orderColList;
this.form = Object.assign({}, this.form, newData);
this.page = 1;
this.onSubmit();
},
onSubmit() {
this.form.name ? (this.form.page = 1) : (this.form.page = this.page);
this.$post("/staff/list", this.form).then((res) => {
if (res.code == 1) {
let obj = res.data;
obj.searchForm = this.form;
this.$emit("getData", obj);
}
});
},
// 解析url字符串,去除query字段
encode(data, formTemp) {
let newData = {};
Object.keys(Qs.parse(data)).forEach((item) => {
console.log(item);
if (/^query\./.test(item)) {
let val = data[item];
let key = item.replace(/^query\./, "");
this.search.forEach((obj) => {
if (
obj.name === key &&
obj.fuzzy === true &&
val &&
val.length > 0
) {
//支持模糊查询,首尾去掉百分号
val = val.substring(1, val.length - 1);
}
});
let isAreaTemp = ["areaId"];
let isAreaParam = isAreaTemp.includes(key);
newData[key] =
type(val) === "Array"
? val.map(isAreaParam ? Number : String)
: val;
}
});
return newData;
},
// 解析url字符串,加入query字段
decode(data) {
let newData = { page: 1 };
Object.keys(data).forEach((item) => {
let val = data[item];
this.search.forEach((obj) => {
if (
obj.name === item &&
obj.fuzzy === true &&
val &&
val.length > 0
) {
//支持模糊查询,收尾增加百分号
val = val.trim();
if (val.charAt(0) != "%") {
val = "%" + val;
}
if (val.charAt(val.length - 1) != "%") {
val = val + "%";
}
}
});
newData[item] = this.decodeVal(val);
});
return newData;
},
decodeVal(val) {
let valType = type(val);
if (["Number", "Boolean"].indexOf(valType) > -1) {
return val;
}
if (valType == "Undefined" || valType == "Null") {
return undefined;
}
if (valType == "String") {
let str = val.trim();
return str.length ? str : undefined;
}
return val;
},
listChange() {},
},
computed: {},
data() {
return {
downloadUrl: false,
form: {
// groupList: [],
},
remoteOptions: {},
visible: false,
salaArr: [],
deptArr: [],
};
},
};
</script>
<style lang="less">
.search_new_line {
width: 100%;
}
.search-form-wapper {
.el-input {
width: 170px;
}
.el-form-item {
margin-bottom: 10px;
}
.el-select .el-input {
width: 140px;
}
}
@media screen and (max-width: 800px) {
.search-form-wapper {
.el-form-item {
width: 100%;
margin-bottom: 10px;
.el-form-item__label {
min-width: 70px;
}
.el-input {
width: 200px;
}
.el-select .el-input {
width: 200px;
}
}
}
}
</style>
......@@ -242,6 +242,7 @@
:prePageResult="data.pageInfo.prePageResult"
/>
</div>
<slot name="table-foot" class="table-foot"></slot>
</div>
</template>
......
......@@ -130,8 +130,8 @@ const router = new Router({
"check/window/workman/perform"
), //自评绩效核查信息(工作人员)
...restBuilder(
"window/workman/perform/detail",
"window/workman/perform/detail"
"check/window/workman/perform/detail",
"check/window/workman/perform/detail"
), //自评绩效核查信息(工作人员一张表)
...restBuilder("perform/attend/appeal", "perform/attend/appeal"), //绩效记录申诉信息
......
......@@ -10,12 +10,24 @@
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<!-- <Field label="请假人" prop="leavePersonId" v-model="form.leavePersonId" placeholder="请输入请假人"/> -->
<!-- <Field
label="请假人"
prop="leavePerson"
v-model="form.leavePerson"
placeholder="请输入请假人"
:maxLength="10"
:disabled="pageInfo.type == 'view'"
/> -->
<Field
label="请假人"
prop="leavePerson"
type="select"
filterable
remote
v-model="form.leavePerson"
placeholder="请输入请假人"
:maxLength="10"
:enumData="staffList"
:disabled="pageInfo.type == 'view'"
/>
<Field
......@@ -163,6 +175,7 @@ export default {
loading: true,
// 弹出层标题
title: "请假记录信息",
staffList: {},
// 是否显示弹出层
open: false,
direction: "rtl",
......@@ -210,7 +223,25 @@ export default {
};
},
watch: {},
mounted() {
this.remoteMethod();
},
methods: {
async remoteMethod() {
await this.$post(`/staff/list`, {
page: 1,
size: -1,
}).then((res) => {
let data = res.data.data;
let obj = {};
console.log(data);
for (let key in data) {
obj[data[key].id] = data[key].name;
}
this.staffList = obj;
this.dict.staffList = this.staffList;
});
},
// beforeSubmit() {
// if (this.form.endTime.valueOf() > this.form.startTime.valueOf()) {
// // this.submitForm();
......@@ -283,6 +314,7 @@ export default {
this.open = false;
this.$emit("ok");
},
changedate(val) {
if (this.form.startTime && this.form.endTime) {
if (this.form.endTime.valueOf() > this.form.startTime.valueOf()) {
......
......@@ -466,7 +466,9 @@ export default {
{
label: "实到",
prop: "goTimes",
formatter: this.formatter,
formatter: (row) => {
return row.goTimes == 0 ? 0 : row.goTimes ? row.goTimes : "--";
},
show: true,
},
{
......
......@@ -101,14 +101,37 @@
label="工作纪律"
align="center"
>
<template slot-scope="scope">
<el-input
v-if="form.view !== '查看'"
class="item"
v-model="scope.row.discipline"
@input="handleInput(scope.row)"
placeholder="请输入内容"
></el-input>
<div v-else class="txt">{{ scope.row.discipline }}</div>
</template>
</el-table-column>
<el-table-column
prop="specification"
label="服务规范"
align="center"
>
<template slot-scope="scope">
<el-input
v-if="form.view !== '查看'"
class="item"
@input="handleInput(scope.row)"
v-model="scope.row.specification"
placeholder="请输入内容"
></el-input>
<div v-else class="txt">{{ scope.row.specification }}</div>
</template>
</el-table-column>
<el-table-column prop="bonusScore" label="加分" align="center">
<template slot-scope="scope">
<div class="txt">{{ scope.row.bonusScore }}</div>
</template>
</el-table-column>
<el-table-column prop="sumScore" label="合计得分" align="center">
</el-table-column>
......@@ -412,6 +435,15 @@ export default {
},
methods: {
handleInput(val) {
val.sumScore =
Number(val.bonusScore) +
Number(val.discipline) +
Number(val.specification);
this.form.discipline = Number(val.discipline);
this.form.specification = Number(val.specification);
this.form.sumScore = Number(val.sumScore);
},
functionTime(val) {
let time = timestampToTime(val, 6);
return time;
......
......@@ -72,7 +72,7 @@ export default {
: this.radio1 == 2
? this.$router.push("/check/window/workman/perform/list?page=1")
: this.radio1 == 3
? this.$router.push("/window/workman/perform/detail/list?page=1")
? this.$router.push("/check/window/workman/perform/detail/list?page=1")
: "";
},
},
......@@ -115,7 +115,103 @@ export default {
fuzzy: false,
},
],
columns: [
columns:
JSON.parse(sessionStorage.getItem("userData")).id == 1
? [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{ label: "窗口首席代表", prop: "ownerName" },
{
label: "登记年月",
formatter: (row) => {
return `${row.year ? row.year : "--"}-${
row.month
? [1, 2, 3, 4, 5, 6, 7, 8, 9].includes(row.month)
? "0" + row.month
: row.month
: "--"
}`;
},
},
{
label: "所属大厅",
prop: "salaName",
formatter: this.formatter,
},
{
label: "所属部门",
prop: "deptName",
},
{
label: "考核窗口",
formatter: (row) => {
return `${row.windowName ? row.windowName : "--"}`;
},
},
{ label: "表单名称", prop: "fromName" },
{
label: "总分分值",
prop: "sumScore",
formatter: this.formatter,
},
{
label: "提交时间",
prop: "submitDate",
formatter: this.formatterDate,
},
{
label: "核查人",
prop: "leaderCheckPerson",
formatter: this.formatter,
},
{
label: "最新核查时间",
prop: "leaderCheckTime",
formatter: this.formatterDate,
},
{
label: "处理状态",
prop: "checkStatus",
formatter: this.formatter,
},
{
label: "操作",
width: 240,
formatter: (row) => {
return row.checkStatus == 1 ? (
<table-buttons
noAdd
noEdit
noView
reCheck
text={"自评核查"}
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
) : (
<table-buttons
noAdd
noEdit
text={"自评核查"}
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
},
},
]
: [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{ label: "窗口负责人", prop: "ownerName" },
......@@ -133,7 +229,11 @@ export default {
},
},
{ label: "所属大厅", prop: "salaName", formatter: this.formatter },
{
label: "所属大厅",
prop: "salaName",
formatter: this.formatter,
},
{
label: "所属部门",
......@@ -149,13 +249,21 @@ export default {
{ label: "表单名称", prop: "fromName" },
{ label: "总分分值", prop: "sumScore", formatter: this.formatter },
{
label: "总分分值",
prop: "sumScore",
formatter: this.formatter,
},
{
label: "提交时间",
prop: "submitDate",
formatter: this.formatterDate,
},
{ label: "处理状态", prop: "checkStatus", formatter: this.formatter },
{
label: "处理状态",
prop: "checkStatus",
formatter: this.formatter,
},
{
label: "操作",
......
......@@ -16,33 +16,30 @@
>导出</el-button
>
</div>
<LayoutTable :data="tableData" :config="tableConfig"> </LayoutTable>
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
</LayoutTable>
</div>
</template>
<script>
import {
timestampToTime,
getFirstDay,
getLastDay,
} from "@/assets/utils/dateFormat";
/** 表单弹出框模式需引入 */
import table from "@/assets/mixins/table";
export default {
name: "WindowWorkmanPerformDetailList",
components: {
drawerShow,
},
mixins: [table],
created() {},
methods: {
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.drawerform.view(row);
created() {
this.query.yearmonth = timestampToTime(new Date(), 2);
this.query.year = timestampToTime(new Date(), 2).slice(0, 4);
this.query.month = timestampToTime(new Date(), 2).slice(5);
console.log(this.query);
},
methods: {
/** 导出Excel */
doExport() {
this.isExport = true;
......@@ -67,61 +64,116 @@ export default {
: this.radio1 == 2
? this.$router.push("/check/window/workman/perform/list?page=1")
: this.radio1 == 3
? this.$router.push("/window/workman/perform/detail/list?page=1")
? this.$router.push("/check/window/workman/perform/detail/list?page=1")
: "";
},
},
data() {
return {
config: {
radio1: "3",
isExport: false,
search: [],
config: {
isshowTabPane: true,
search: [
{
name: "salaId",
type: "selectSalaId",
label: "大厅",
fuzzy: false,
},
{
name: "deptId",
type: "selectDeptId",
label: "部门",
fuzzy: false,
},
{
name: "yearmonth",
type: "month",
label: "请选择考评年月",
fuzzy: false,
},
{
name: "staffName",
type: "text",
width: 200,
label: "工作人员姓名搜索",
fuzzy: false,
},
],
columns: [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{ label: "工作人员名称", prop: "staffName" },
{ label: "所属部门名称", prop: "deptName" },
{ label: "所属大厅名称", prop: "salaName" },
{
label: "考评年月",
formatter: (row) => {
return `${row.year ? row.year : "--"}-${
row.month
? [1, 2, 3, 4, 5, 6, 7, 8, 9].includes(row.month)
? "0" + row.month
: row.month
: "--"
}`;
},
},
{
label: "工作纪律得分",
label: "所属大厅",
prop: "salaName",
formatter: this.formatter,
},
{
label: "部门(单位)名称",
prop: "deptName",
formatter: this.formatter,
},
{
label: "工作纪律",
prop: "discipline",
formatter: this.formatter,
},
{
label: "服务规范得分",
label: "服务规范",
prop: "specification",
formatter: this.formatter,
},
{
label: "综合管理得分",
label: "综合管理",
prop: "management",
formatter: this.formatter,
},
{
label: "群众评议得分",
label: "群众评议",
prop: "evaluation",
formatter: this.formatter,
},
{
label: "工作效能得分",
label: "工作效能",
prop: "efficiency",
formatter: this.formatter,
},
{ label: "加分", prop: "bonusScore", formatter: this.formatter },
{
label: "加分",
prop: "bonusScore",
formatter: this.formatter,
},
{ label: "合计得分", prop: "sumScore", formatter: this.formatter },
{
label: "合计得分",
prop: "sumScore",
formatter: this.formatter,
},
{
label: "考核等级1好2较好3一般4较差",
label: "考核等级",
prop: "examineLevel",
formatter: this.formatter,
},
......@@ -131,3 +183,16 @@ export default {
},
};
</script>
<style lang="less" scoped>
/deep/.el-radio-button__inner {
border: 1px solid #eee !important;
height: 28px;
line-height: 3px;
}
/deep/.el-radio-button__orig-radio:checked + .el-radio-button__inner {
background: #00b565;
border: none !important;
color: #fff !important;
line-height: 3px;
}
</style>
......@@ -44,32 +44,82 @@
label="工作纪律"
align="center"
>
<template slot-scope="scope">
<el-input
v-if="form.view !== '查看'"
class="item"
v-model="scope.row.discipline"
@input="handleInput(scope.row)"
placeholder="请输入内容"
></el-input>
<div v-else class="txt">{{ scope.row.discipline }}</div>
</template>
</el-table-column>
<el-table-column
prop="specification"
label="服务规范"
align="center"
>
<template slot-scope="scope">
<el-input
v-if="form.view !== '查看'"
class="item"
v-model="scope.row.specification"
placeholder="请输入内容"
@input="handleInput(scope.row)"
></el-input>
<div v-else class="txt">{{ scope.row.specification }}</div>
</template>
</el-table-column>
<el-table-column
prop="management"
label="综合管理"
align="center"
>
<template slot-scope="scope">
<el-input
v-if="form.view !== '查看'"
class="item"
@input="handleInput(scope.row)"
v-model="scope.row.management"
placeholder="请输入内容"
></el-input>
<div v-else class="txt">{{ scope.row.management }}</div>
</template>
</el-table-column>
<el-table-column
<!-- <el-table-column
prop="evaluation"
label="群众评议"
align="center"
>
</el-table-column>
</el-table-column> -->
<el-table-column
prop="efficiency"
label="工作效能"
align="center"
>
<template slot-scope="scope">
<el-input
v-if="form.view !== '查看'"
class="item"
@input="handleInput(scope.row)"
v-model="scope.row.efficiency"
placeholder="请输入内容"
></el-input>
<div v-else class="txt">{{ scope.row.efficiency }}</div>
</template>
</el-table-column>
<el-table-column prop="bonusScore" label="加分" align="center">
<template slot-scope="scope">
<el-input
v-if="form.view !== '查看'"
class="item"
@input="handleInput(scope.row)"
v-model="scope.row.bonusScore"
placeholder="请输入内容"
></el-input>
<div v-else class="txt">{{ scope.row.bonusScore }}</div>
</template>
</el-table-column>
</el-table-column>
<el-table-column
......@@ -77,6 +127,9 @@
label="综合评定打分"
align="center"
>
<template slot-scope="scope">
<div class="txt">{{ scope.row.sumScore }}</div>
</template>
</el-table-column>
<el-table-column
prop="examineLevel"
......@@ -85,7 +138,23 @@
width="200"
>
<template slot-scope="scope">
<el-select
v-model="scope.row.examineLevel"
v-if="form.view !== '查看'"
placeholder="请选择"
>
<el-option
v-for="($label, $value) in dict.examineLevel"
:key="$value"
:label="$label"
:value="Number($value)"
>
<!-- {{ dict.examineLevel }} -->
</el-option>
</el-select>
<div v-else class="txt">
{{ dict.examineLevel[scope.row.examineLevel] }}
</div>
</template>
</el-table-column>
</el-table>
......@@ -319,6 +388,16 @@ export default {
},
methods: {
handleInput(val) {
val.sumScore =
Number(val.bonusScore) +
Number(val.discipline) +
Number(val.efficiency) +
Number(val.evaluation) +
Number(val.management) +
Number(val.specification);
console.log(val);
},
functionTime(val) {
let time = timestampToTime(val, 6);
return time;
......
......@@ -73,7 +73,7 @@ export default {
: this.radio1 == 2
? this.$router.push("/check/window/workman/perform/list?page=1")
: this.radio1 == 3
? this.$router.push("/window/workman/perform/detail/list?page=1")
? this.$router.push("/check/window/workman/perform/detail/list?page=1")
: "";
},
},
......@@ -116,7 +116,108 @@ export default {
fuzzy: false,
},
],
columns: [
columns:
JSON.parse(sessionStorage.getItem("userData")).id == 1
? [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{ label: "窗口首席代表", prop: "ownerName" },
{
label: "登记年月",
formatter: (row) => {
return `${row.year ? row.year : "--"}-${
row.month
? [1, 2, 3, 4, 5, 6, 7, 8, 9].includes(row.month)
? "0" + row.month
: row.month
: "--"
}`;
},
},
{
label: "所属大厅",
prop: "salaName",
formatter: this.formatter,
},
{
label: "所属部门",
prop: "deptName",
},
{
label: "窗口(单位)名称",
formatter: (row) => {
return `${row.windowName ? row.windowName : "--"}`;
},
},
{ label: "表单名称", prop: "fromName" },
// { label: "总分分值", prop: "sumScore", formatter: this.formatter },
{
label: "提交时间",
prop: "submitDate",
width: 110,
formatter: this.formatterDate,
},
{
label: "核查人",
formatter: (row) => {
return `${
row.leaderCheckPerson
? row.leaderCheckPerson
: row.manageCheckPerson
? row.manageCheckPerson
: "--"
}`;
},
},
{
label: "最新核查时间",
prop: "manageCheckTime",
width: 150,
formatter: this.formatterDate,
},
{
label: "处理状态",
prop: "checkStatus",
formatter: this.formatter,
},
{
label: "操作",
width: 240,
formatter: (row) => {
return row.checkStatus == 1 ? (
<table-buttons
noAdd
noEdit
reCheck
noView
text={"自评核查"}
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
) : (
<table-buttons
noAdd
noEdit
text={"自评核查"}
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
},
},
]
: [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{ label: "窗口负责人", prop: "ownerName" },
......@@ -134,7 +235,11 @@ export default {
},
},
{ label: "所属大厅", prop: "salaName", formatter: this.formatter },
{
label: "所属大厅",
prop: "salaName",
formatter: this.formatter,
},
{
label: "所属部门",
......@@ -163,7 +268,11 @@ export default {
width: 150,
formatter: this.formatterDate,
},
{ label: "处理状态", prop: "checkStatus", formatter: this.formatter },
{
label: "处理状态",
prop: "checkStatus",
formatter: this.formatter,
},
{
label: "操作",
......@@ -172,10 +281,10 @@ export default {
return row.checkStatus == 1 ? (
<table-buttons
noAdd
noDel
noEdit
reCheck
noView
noDel
text={"自评核查"}
row={row}
onEdit={this.toEdit}
......@@ -185,8 +294,8 @@ export default {
) : (
<table-buttons
noAdd
noDel
noEdit
noDel
text={"自评核查"}
row={row}
onEdit={this.toEdit}
......
......@@ -5,7 +5,11 @@
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
</LayoutTable>
</el-tab-pane>
<el-tab-pane label="已处理" name="2">
<el-tab-pane label="申诉通过" name="2">
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
</LayoutTable>
</el-tab-pane>
<el-tab-pane label="申诉不通过" name="3">
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
</LayoutTable>
</el-tab-pane>
......@@ -104,21 +108,160 @@ export default {
handleClick() {
this.query.page = 1;
this.query.size = 10;
console.log(this.tableConfig);
this.activeName == 1
? ""
: (this.tableConfig.columns = [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{
label: "窗口首席代表",
prop: "appealPerson",
},
{ label: "姓名", prop: "staffName", formatter: this.formatter },
{
label: "所属大厅",
prop: "salaName",
formatter: this.formatter,
},
{
label: "所属部门",
prop: "deptName",
formatter: this.formatter,
},
{
label: "违规类型",
prop: "irregularType",
formatter: this.formatter,
},
{
label: "绩效规则",
prop: "ruleId",
formatter: this.formatter,
},
{
label: "加分/扣分方式",
prop: "subMethod",
formatter: this.formatter,
},
// {
// label: "加分/扣分方式",
// prop: "subAddType",
// formatter: this.formatter,
// },
{
label: "加分/扣分时间",
prop: "deductTime",
formatter: this.formatterDate,
},
{ label: "分值", prop: "score", formatter: this.formatter },
{
label: "申诉时间",
prop: "appealTime",
formatter: this.formatterDate,
},
{
label: "申诉人",
prop: "appealPerson",
formatter: this.formatter,
},
{
label: "处理时间",
prop: "processTime",
formatter: this.formatterDate,
},
{
label: "处理人员",
prop: "processPerson",
formatter: this.formatter,
},
{
label: "是否核查",
prop: "checkStatus",
formatter: this.formatter,
},
{
label: "处理状态",
prop: "processStatus",
formatter: this.formatter,
},
/* {label: "绩效记录申诉附件信息",
width: 120,
prop: "subColumns",
formatter: (row) => {
let widthsize = this.columnSet.reduce((pre, cur) => {
return pre + Number(cur.width);
}, 50);
return (
<el-popover placement="right" width={widthsize} trigger="click">
{this.renderTable(row.performAttendAppealFilesList)}
<el-button type="text" slot="reference">详细</el-button>
</el-popover>
);
},
},*/
{
label: "操作",
formatter: (row) => {
return row.processStatus == 2 ? (
<table-buttons
noAdd
noDel
noEdit
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
) : (
<table-buttons
noAdd
noDel
noView
noEdit
chuli
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
},
},
]);
this.getData();
},
getData() {
this.activeName == 1 || this.activeName == 2
? this.$post("/perform/attend/appeal/list", {
processStatus: this.activeName,
let obj = {
processStatus: this.activeName == 1 ? "1" : "2",
page: this.query.page,
size: this.query.size,
appealTimeStart: this.query.yearmonth
? this.query.yearmonth + "-01"
: "",
appealTimeEnd: this.query.yearmonth
? this.query.yearmonth + "-31"
: "",
}).then((res) => {
appealTimeEnd: this.query.yearmonth ? this.query.yearmonth + "-31" : "",
staffName: this.query.staffName,
salaId:this.query.salaId,
deptId:this.query.deptId,
checkStatus: this.query.checkStatus,
irregularOtherType: this.query.irregularOtherType,
};
this.activeName == 2
? (obj.appealResult = 1)
: this.activeName == 3
? (obj.appealResult = 2)
: "";
this.activeName == 1 || this.activeName == 2 || this.activeName == 3
? this.$post("/perform/attend/appeal/list", obj).then((res) => {
if (res.code == 1) {
this.tableData = res.data;
this.dict = res.dict;
......@@ -193,16 +336,28 @@ export default {
config: {
isshowTabPane: false,
search: [
{
name: "checkStatus",
type: "select",
label: "核查情况",
fuzzy: false,
},
{
name: "irregularOtherType",
type: "select",
label: "全部类型",
fuzzy: false,
},
{
name: "salaId",
type: "selectSalaId",
label: "大厅",
fuzzy: false,
},
{
name: "deptId",
type: "select",
label: "全部部门",
type: "selectDeptId",
label: "部门",
fuzzy: false,
},
{
......@@ -222,9 +377,22 @@ export default {
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{
label: "窗口首席代表",
prop: "appealPerson",
formatter: this.formatter,
},
{ label: "姓名", prop: "staffName", formatter: this.formatter },
{ label: "所属部门", prop: "deptName", formatter: this.formatter },
{
label: "所属大厅",
prop: "salaName",
formatter: this.formatter,
},
{
label: "所属部门",
prop: "deptName",
formatter: this.formatter,
},
{
label: "违规类型",
......@@ -232,13 +400,22 @@ export default {
formatter: this.formatter,
},
{ label: "绩效规则", prop: "ruleId", formatter: this.formatter },
{
label: "绩效规则",
prop: "ruleId",
formatter: this.formatter,
},
{
label: "加分/扣分方式",
prop: "subAddType",
prop: "subMethod",
formatter: this.formatter,
},
// {
// label: "加分/扣分方式",
// prop: "subAddType",
// formatter: this.formatter,
// },
{
label: "加分/扣分时间",
......@@ -253,7 +430,26 @@ export default {
prop: "appealTime",
formatter: this.formatterDate,
},
{
label: "申诉人",
prop: "appealPerson",
formatter: this.formatter,
},
// {
// label: "处理时间",
// prop: "processTime",
// formatter: this.formatterDate,
// },
// {
// label: "处理人员",
// prop: "processPerson",
// formatter: this.formatter,
// },
{
label: "是否核查",
prop: "checkStatus",
formatter: this.formatter,
},
{
label: "处理状态",
prop: "processStatus",
......
......@@ -204,7 +204,7 @@ export default {
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
label: "员工姓名搜索",
fuzzy: false,
},
],
......
......@@ -210,7 +210,7 @@ export default {
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
label: "员工姓名搜索",
fuzzy: false,
},
],
......
......@@ -98,6 +98,8 @@
? "玩手机"
: form.irregularType == 4
? "睡觉"
: form.irregularType == 4
? "其他"
: "--"
}}
</p>
......@@ -188,7 +190,16 @@
"
>
</el-image> -->
<filepReview v-if="form.filePaths" :src="form.filePaths" />
<filepReview
v-if="form.filePaths || form.snapPath"
:src="
form.filePaths
? form.filePaths
: form.snapPath
? form.snapPath
: []
"
/>
<span v-else>--</span>
</div>
<ImageUpload
......@@ -240,7 +251,9 @@
</el-row>
<el-row>
<el-col :span="22">
<el-form-item :label="form.subAddType == 1 ? '加分分值:' : '扣分分值:'">
<el-form-item
:label="form.subAddType == 1 ? '加分分值:' : '扣分分值:'"
>
<p>{{ form.subAddType == 1 ? "+" : "-" }} {{ form.score }}</p>
</el-form-item>
</el-col>
......@@ -489,6 +502,10 @@ export default {
label: "睡觉",
value: 4,
},
{
label: "其他",
value: 5,
},
],
form: {},
baseUrl: process.env.VUE_APP_API_BASE_URL + "/",
......
......@@ -178,6 +178,12 @@ export default {
config: {
isshowTabPane: true,
search: [
{
name: "subMethod",
type: "select",
label: "效能分类",
fuzzy: false,
},
{
name: "processStatus",
type: "select",
......@@ -206,7 +212,7 @@ export default {
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
label: "员工姓名搜索",
fuzzy: false,
},
],
......@@ -316,9 +322,28 @@ export default {
width: 200,
fixed: "right",
formatter: (row) => {
return row.processStatus == 1 ? (
return row.subMethod == 1 && row.processStatus == 1 ? (
<table-buttons
noAdd
noEdit
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
) : row.subMethod == 2 && row.processStatus == 1 ? (
<table-buttons
noAdd
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
) : row.subMethod == 1 && row.processStatus == 2 ? (
<table-buttons
noAdd
noEdit
noDel
row={row}
onEdit={this.toEdit}
onView={this.toView}
......
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<LayoutTable :data="tableData" :config="tableConfig"> </LayoutTable>
<drawer-show ref="drawerform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "PerformErrorRecordList",
components: {
drawerShow
},
mixins: [table],
created() {
drawerShow,
},
mixins: [table],
created() {},
methods: {
/** 重写新增方法 */
toAdd(row) {
......@@ -33,7 +30,6 @@
toView(row) {
this.$refs.drawerform.view(row);
},
},
data() {
return {
......@@ -43,118 +39,152 @@
name: "staffName",
type: "text",
label: "员工姓名",
fuzzy: true
fuzzy: true,
},
{
name: "workNum",
type: "text",
label: "工号",
fuzzy: true
fuzzy: true,
},
{
name: "windowNum",
type: "text",
label: "窗口编号",
fuzzy: true
fuzzy: true,
},
{
name: "deptName",
type: "text",
label: "所属部门名称",
fuzzy: true
fuzzy: true,
},
{
name: "irregularType",
type: "select",
label: "违规类型",
fuzzy: true
fuzzy: true,
},
{
name: "happenTime",
type: "date",
label: "发生时间",
fuzzy: true
fuzzy: true,
},
{
name: "duration",
type: "text",
label: "持续时间,秒",
fuzzy: true
fuzzy: true,
},
{
name: "ruleName",
type: "text",
label: "规则名称",
fuzzy: true
fuzzy: true,
},
{
name: "deductPerson",
type: "text",
label: "扣分人员",
fuzzy: true
fuzzy: true,
},
{
name: "score",
type: "text",
label: "扣分或增加分值",
fuzzy: true
fuzzy: true,
},
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{label: "员工姓名", prop: "staffName"},
{ label: "员工姓名", prop: "staffName" },
{label: "工号", prop: "workNum"},
{ label: "工号", prop: "workNum" },
{label: "窗口编号", prop: "windowNum"},
{ label: "窗口编号", prop: "windowNum" },
{label: "所属部门", prop: "deptId", formatter: this.formatter},
{ label: "所属部门", prop: "deptId", formatter: this.formatter },
{label: "所属部门名称", prop: "deptName"},
{ label: "所属部门名称", prop: "deptName" },
{label: "违规类型", prop: "irregularType",formatter: this.formatter},
{
label: "违规类型",
prop: "irregularType",
formatter: this.formatter,
},
{label: "发生时间", prop: "happenTime", formatter: this.formatterDate},
{
label: "发生时间",
prop: "happenTime",
formatter: this.formatterDate,
},
{label: "持续时间,秒", prop: "duration",formatter: this.formatter},
{
label: "持续时间,秒",
prop: "duration",
formatter: this.formatter,
},
{label: "报警时间", prop: "alarmTime", formatter: this.formatterDate},
{
label: "报警时间",
prop: "alarmTime",
formatter: this.formatterDate,
},
{label: "图片凭证地址", prop: "snapPath"},
{ label: "图片凭证地址", prop: "snapPath" },
{label: "规则名称", prop: "categoryName"},
{ label: "规则名称", prop: "categoryName" },
{label: "绩效规则id", prop: "ruleId", formatter: this.formatter},
{ label: "绩效规则id", prop: "ruleId", formatter: this.formatter },
{label: "规则名称", prop: "ruleName"},
{ label: "规则名称", prop: "ruleName" },
{label: "扣分方式", prop: "subMethod",formatter: this.formatter},
{ label: "扣分方式", prop: "subMethod", formatter: this.formatter },
{label: "扣分人员", prop: "deductPerson"},
{ label: "扣分人员", prop: "deductPerson" },
{label: "扣分时间", prop: "deductTime", formatter: this.formatterDate},
{
label: "扣分时间",
prop: "deductTime",
formatter: this.formatterDate,
},
{label: "增减类型", prop: "subAddType",formatter: this.formatter},
{ label: "增减类型", prop: "subAddType", formatter: this.formatter },
{label: "扣分或增加分值", prop: "score", formatter: this.formatter},
{ label: "扣分或增加分值", prop: "score", formatter: this.formatter },
{label: "处理状态", prop: "processStatus",formatter: this.formatter},
{
label: "处理状态",
prop: "processStatus",
formatter: this.formatter,
},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{
label: "创建用户",
prop: "createUserId",
formatter: this.formatter,
},
{
label: "操作",
width: 240,
formatter: row => {
formatter: (row) => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
<table-buttons
noAdd
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
}
}
]
}
};
}
},
},
],
},
};
},
};
</script>
......@@ -204,7 +204,7 @@ export default {
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
label: "员工姓名搜索",
fuzzy: false,
},
],
......
......@@ -204,7 +204,7 @@ export default {
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
label: "员工姓名搜索",
fuzzy: false,
},
],
......
......@@ -191,8 +191,8 @@ export default {
},
{
name: "deptId",
type: "select",
label: "所属部门",
type: "selectDeptId",
label: "部门",
fuzzy: false,
},
{
......@@ -210,7 +210,7 @@ export default {
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
label: "员工姓名搜索",
fuzzy: false,
},
],
......@@ -222,7 +222,7 @@ export default {
{ label: "窗口编号", prop: "windowNum", formatter: this.formatter },
{ label: "所属大厅", prop: "salaName",formatter: this.formatter },
{ label: "所属大厅", prop: "salaName", formatter: this.formatter },
{ label: "所属部门", prop: "deptName", formatter: this.formatter },
......
......@@ -153,7 +153,8 @@ export default {
},
async getData() {
await this.$post(
this.type == 1 ? "/perform/dept/conf/list" : "/perform/staff/conf/list"
this.type == 1 ? "/perform/dept/conf/list" : "/perform/staff/conf/list",
{ page: 1, size: -1 }
).then((res) => {
if (res.code == 1) {
this.dataList = res.data.data;
......@@ -165,7 +166,6 @@ export default {
});
this.activeName == 2
? await this.$post("/window/owner/list").then((res) => {
console.log(res);
if (res.code == 1) {
this.tableData = res.data;
}
......
......@@ -71,9 +71,9 @@ export default {
this.$refs.dialogform.view(row);
},
afterRender(data) {
data.dict.orderCols1 = {
asc: "正序",
desc: "倒序",
data.dict.sortKind = {
2: "正序",
1: "倒序",
};
console.log(data);
this.config.columns.forEach((v) => {
......@@ -82,7 +82,7 @@ export default {
<p>
<span>服务规范</span>
<p>
{"(考勤绩效 *" + data.dict.weightPdu.attendWeight + "%"}
{"(考勤绩效/" + data.dict.weightPdu.attendWeight + ""}
</p>
</p>
))
......@@ -91,7 +91,7 @@ export default {
<p>
<span>群众评议</span>
<p>
{"(评价绩效 *" + data.dict.weightPdu.attendWeight + "%"}
{"(评价绩效/" + data.dict.weightPdu.reviewWeight + ""}
</p>
</p>
))
......@@ -100,7 +100,7 @@ export default {
<p>
<span>工作效能</span>
<p>
{"(办件绩效 *" + data.dict.weightPdu.attendWeight + "%"}
{"(办件绩效/" + data.dict.weightPdu.goworkWeight + ""}
</p>
</p>
))
......@@ -109,7 +109,7 @@ export default {
<p>
<span>工作纪律</span>
<p>
{"(效能绩效 *" + data.dict.weightPdu.attendWeight + "%"}
{"(效能绩效/" + data.dict.weightPdu.effectWeight + ""}
</p>
</p>
))
......@@ -117,9 +117,7 @@ export default {
? (v.label = (
<p>
<span>综合管理</span>
<p>
{"(自评绩效 *" + data.dict.weightPdu.attendWeight + "%)"}
</p>
<p>{"(自评绩效 *" + data.dict.weightPdu.selfWeight + "%)"}</p>
</p>
))
: v.label == "加分"
......@@ -152,7 +150,7 @@ export default {
fuzzy: false,
},
{
name: "orderCols1",
name: "sortKind",
type: "select",
label: "总分排序方式",
fuzzy: false,
......@@ -214,210 +212,215 @@ export default {
return "宜宾市民中心";
},
},
{
label: "服务规范",
prop: "attendScore",
label: "工作纪律",
prop: "effectScore",
width: 150,
formatter: (row) => {
return (
row.attendScore - this.tableData.dict.weightPdu.attendWeight
row.effectScore - this.tableData.dict.weightPdu.effectWeight
).toFixed(2) < 0 ? (
<span style="color:red">
{row.attendScore +
{row.effectScore +
"" +
(
row.attendScore -
this.tableData.dict.weightPdu.attendWeight
row.effectScore -
this.tableData.dict.weightPdu.effectWeight
).toFixed(2) +
""}
</span>
) : (
row.attendScore - this.tableData.dict.weightPdu.attendWeight
row.effectScore - this.tableData.dict.weightPdu.effectWeight
).toFixed(2) > 0 ? (
<span>
{row.attendScore +
{row.effectScore +
"" +
"+" +
(
row.attendScore -
this.tableData.dict.weightPdu.attendWeight
row.effectScore -
this.tableData.dict.weightPdu.effectWeight
).toFixed(2) +
""}
</span>
) : (
row.attendScore +
row.effectScore +
`(${(
row.attendScore - this.tableData.dict.weightPdu.attendWeight
row.effectScore - this.tableData.dict.weightPdu.effectWeight
).toFixed(2)})`
);
},
},
{
label: "群众评议",
prop: "reviewScore",
label: "服务规范",
prop: "attendScore",
width: 150,
formatter: (row) => {
return (
row.reviewScore - this.tableData.dict.weightPdu.reviewWeight
row.attendScore - this.tableData.dict.weightPdu.attendWeight
).toFixed(2) < 0 ? (
<span style="color:red">
{row.reviewScore +
{row.attendScore +
"" +
(
row.reviewScore -
this.tableData.dict.weightPdu.reviewWeight
row.attendScore -
this.tableData.dict.weightPdu.attendWeight
).toFixed(2) +
""}
</span>
) : (
row.reviewScore - this.tableData.dict.weightPdu.reviewWeight
row.attendScore - this.tableData.dict.weightPdu.attendWeight
).toFixed(2) > 0 ? (
<span>
{row.reviewScore +
{row.attendScore +
"" +
"+" +
(
row.reviewScore -
this.tableData.dict.weightPdu.reviewWeight
row.attendScore -
this.tableData.dict.weightPdu.attendWeight
).toFixed(2) +
""}
</span>
) : (
row.reviewScore +
row.attendScore +
`(${(
row.reviewScore - this.tableData.dict.weightPdu.reviewWeight
row.attendScore - this.tableData.dict.weightPdu.attendWeight
).toFixed(2)})`
);
},
},
// {
// label: "投诉绩效指标分数",
// prop: "complainScore",
// formatter: (row) => {
// return (
// row.complainScore +
// `(${this.tableData.dict.attendWeight - row.complainScore})`
// );
// },
// },
{
label: "工作效能",
prop: "goworkScore",
label: `综合管理`,
prop: "complainScore",
width: 150,
formatter: (row) => {
return (
row.goworkScore - this.tableData.dict.weightPdu.goworkWeight
row.complainScore - this.tableData.dict.weightPdu.selfWeight
).toFixed(2) < 0 ? (
<span style="color:red">
{row.goworkScore +
{row.complainScore +
"" +
(
row.goworkScore -
this.tableData.dict.weightPdu.goworkWeight
row.complainScore -
this.tableData.dict.weightPdu.selfWeight
).toFixed(2) +
""}
</span>
) : (
row.goworkScore - this.tableData.dict.weightPdu.goworkWeight
row.complainScore - this.tableData.dict.weightPdu.selfWeight
).toFixed(2) > 0 ? (
<span>
{row.goworkScore +
{row.complainScore +
"" +
"+" +
(
row.goworkScore -
this.tableData.dict.weightPdu.goworkWeight
row.complainScore -
this.tableData.dict.weightPdu.selfWeight
).toFixed(2) +
""}
</span>
) : (
row.goworkScore +
row.complainScore +
`(${(
row.goworkScore - this.tableData.dict.weightPdu.goworkWeight
row.complainScore - this.tableData.dict.weightPdu.selfWeight
).toFixed(2)})`
);
},
},
{
label: "工作纪律",
prop: "effectScore",
label: "群众评议",
prop: "reviewScore",
width: 150,
formatter: (row) => {
return (
row.effectScore - this.tableData.dict.weightPdu.effectWeight
row.reviewScore - this.tableData.dict.weightPdu.reviewWeight
).toFixed(2) < 0 ? (
<span style="color:red">
{row.effectScore +
{row.reviewScore +
"" +
(
row.effectScore -
this.tableData.dict.weightPdu.effectWeight
row.reviewScore -
this.tableData.dict.weightPdu.reviewWeight
).toFixed(2) +
""}
</span>
) : (
row.effectScore - this.tableData.dict.weightPdu.effectWeight
row.reviewScore - this.tableData.dict.weightPdu.reviewWeight
).toFixed(2) > 0 ? (
<span>
{row.effectScore +
{row.reviewScore +
"" +
"+" +
(
row.effectScore -
this.tableData.dict.weightPdu.effectWeight
row.reviewScore -
this.tableData.dict.weightPdu.reviewWeight
).toFixed(2) +
""}
</span>
) : (
row.effectScore +
row.reviewScore +
`(${(
row.effectScore - this.tableData.dict.weightPdu.effectWeight
row.reviewScore - this.tableData.dict.weightPdu.reviewWeight
).toFixed(2)})`
);
},
},
// {
// label: "投诉绩效指标分数",
// prop: "complainScore",
// formatter: (row) => {
// return (
// row.complainScore +
// `(${this.tableData.dict.attendWeight - row.complainScore})`
// );
// },
// },
{
label: `综合管理`,
prop: "otherScore",
label: "工作效能",
prop: "goworkScore",
width: 150,
formatter: (row) => {
return (
row.otherScore - this.tableData.dict.weightPdu.selfWeight
row.goworkScore - this.tableData.dict.weightPdu.goworkWeight
).toFixed(2) < 0 ? (
<span style="color:red">
{row.otherScore +
{row.goworkScore +
"" +
(
row.otherScore - this.tableData.dict.weightPdu.selfWeight
row.goworkScore -
this.tableData.dict.weightPdu.goworkWeight
).toFixed(2) +
""}
</span>
) : (
row.otherScore - this.tableData.dict.weightPdu.selfWeight
row.goworkScore - this.tableData.dict.weightPdu.goworkWeight
).toFixed(2) > 0 ? (
<span>
{row.otherScore +
{row.goworkScore +
"" +
"+" +
(
row.otherScore - this.tableData.dict.weightPdu.selfWeight
row.goworkScore -
this.tableData.dict.weightPdu.goworkWeight
).toFixed(2) +
""}
</span>
) : (
row.otherScore +
row.goworkScore +
`(${(
row.otherScore - this.tableData.dict.weightPdu.selfWeight
row.goworkScore - this.tableData.dict.weightPdu.goworkWeight
).toFixed(2)})`
);
},
},
{
label: `加分`,
prop: "otherScore",
width: 150,
formatter: this.formatter,
},
// {
// label: "累计异常分数",
// prop: "errorScore",
......
......@@ -46,8 +46,14 @@
v-model="form.mobile"
:maxLength="11"
/>
<Field label="用户类型" prop="userType" v-model="form.userType" :enumData='dict.userType' type='select' />
<!-- <Field label="用户状态" prop="status" v-model="form.status" :enumData='dict.status' type='select' />-->
<Field
label="用户类型"
prop="userType"
v-model="form.userType"
:enumData="dict.userType"
type="select"
/>
<!-- <Field label="用户状态" prop="status" v-model="form.status" :enumData='dict.status' type='select' />-->
<Field
label="角色分配"
:span="24"
......@@ -93,7 +99,7 @@ export default {
loginName: [
{ required: true, message: "请输入英文的用户名", trigger: "blur" },
{
validator: function (rule, value, callback) {
validator: function(rule, value, callback) {
// 校验英文的正则
if (/[A-Za-z0-9]$/.test(value) == false) {
callback(new Error("请输入英文"));
......@@ -145,24 +151,39 @@ export default {
},
/**获取数据后弹框 */
afterRender(data) {
let arr = [];
// for (let key in data.dict.roleIds) {
// let obj = {};
// obj["value"] = key;
// obj["label"] = data.dict.roleIds[key];
// arr.push(obj);
// }
// data.dict.roleIds = arr;
if (data.entity.roleIds && data.entity.roleIds.length) {
data.entity.roleIds = data.entity.roleIds.map((v) => {
return v + "";
});
}
console.log(data.entity.roleIds, "1111");
this.$forceUpdate();
this.open = true;
},
beforeSubmit(data) {
data.roleIds = data.roleIds
.filter((item) => {
return item !== "";
})
.join(",");
return data;
},
// beforeSubmit(data) {
// data.roleIds = data.roleIds
// .filter((item) => {
// return item !== "";
// })
// .join(",");
// return data;
// },
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {roleIds:""};
this.form = { roleIds: "" };
this.resetForm("form");
},
......@@ -193,5 +214,3 @@ export default {
},
};
</script>
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig" notDel/>
<dialog-show ref="dialogform" @ok="getData"/>
<LayoutTable :data="tableData" :config="tableConfig" notAdd notDel />
<dialog-show ref="dialogform" @ok="getData" />
<el-dialog title="用户已分配的角色" :visible.sync="role.visible">
<el-form :model="role.form">
<el-checkbox-group v-model="role.checkList" :min="500">
<el-checkbox
v-for="item in allRoles"
:key="item.id"
:label="item.id"
<el-checkbox v-for="item in allRoles" :key="item.id" :label="item.id"
>{{ item.name }}
</el-checkbox
>
</el-checkbox>
</el-checkbox-group>
</el-form>
<div slot="footer" class="dialog-footer">
......@@ -70,18 +66,13 @@
</div>
</el-dialog>
<el-dialog
:title="userPasswordDialog.title"
hei
:visible.sync="userPasswordDialog.open"
width="40%"
>
<el-form
ref="form"
label-width="110px"
label-position="right"
>
<el-form ref="form" label-width="110px" label-position="right">
<el-row>
<Field
:span="20"
......@@ -91,7 +82,6 @@
v-model="userPasswordDialog.data.loginName"
/>
<Field
:span="20"
label="重置密码"
......@@ -101,25 +91,20 @@
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="updatePasswordConfirm">确 定</el-button>
<el-button type="primary" @click="updatePasswordConfirm"
>确 定</el-button
>
<el-button @click="userPasswordDialog.open = false">取 消</el-button>
</div>
</el-dialog>
<el-dialog
:title="userLoginDialog.title"
:visible.sync="userLoginDialog.open"
width="40%"
>
<el-form
ref="form"
label-width="110px"
label-position="right"
>
<el-form ref="form" label-width="110px" label-position="right">
<el-row>
<Field
:span="20"
label="登录名称"
......@@ -139,9 +124,7 @@
<el-button type="primary" @click="updateLoginConfirm">确 定</el-button>
<el-button @click="userLoginDialog.open = false">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
......@@ -151,10 +134,10 @@ import table from "@/assets/mixins/table";
export default {
mixins: [table],
components: {dialogShow},
components: { dialogShow },
methods: {
// 打开弹窗
async findRole({id}) {
async findRole({ id }) {
try {
this.tableData.loading = true;
this.allRoles = await this.getUserRoles(id);
......@@ -167,7 +150,7 @@ export default {
this.tableData.loading = false;
},
renderContent: function (h, {node, data, store}) {
renderContent: function(h, { node, data, store }) {
return (
<span>
<i style="font-size:16px;color:#409EFF" class={data.icon}></i>
......@@ -181,7 +164,7 @@ export default {
}
this.$get("/dept/getListByParentId", {
parentId: node.data.id,
}).then(({data}) => {
}).then(({ data }) => {
resolve(data.result);
});
},
......@@ -250,14 +233,14 @@ export default {
this.$nextTick(() => {
this.$get("/dept/getListByParentId", {
parentId: 0,
}).then(({data}) => {
}).then(({ data }) => {
this.data = data.result;
this.node = {};
});
this.userDeptDialog.open = true;
}).catch(error => {
}).catch((error) => {
this.$message.error(error.message);
})
});
this.tableData.loading = false;
},
......@@ -279,9 +262,10 @@ export default {
this.tableData.loading = true;
this.$post("/user/save", {
"id": this.userPasswordDialog.data.id,
"loginPwd": this.userPasswordDialog.data.loginPwd,
}).then((res) => {
id: this.userPasswordDialog.data.id,
loginPwd: this.userPasswordDialog.data.loginPwd,
})
.then((res) => {
if (res && res.code == 1) {
this.userPasswordDialog.data = {};
this.$message.success("修改密码成功!");
......@@ -291,9 +275,10 @@ export default {
this.$message.error(res.msg);
}
this.tableData.loading = false;
}).catch(error => {
this.$message.error(error.message);
})
.catch((error) => {
this.$message.error(error.message);
});
},
updateLoginName(row) {
......@@ -313,10 +298,11 @@ export default {
console.log("修改登录名");
this.tableData.loading = true;
this.$post("/login/reLoginName", {
"id": this.userLoginDialog.data.id,
"loginName": this.userLoginDialog.data.loginName,
"userType": this.userLoginDialog.data.userType
}).then((res) => {
id: this.userLoginDialog.data.id,
loginName: this.userLoginDialog.data.loginName,
userType: this.userLoginDialog.data.userType,
})
.then((res) => {
if (res && res.code == 1) {
this.userLoginDialog.data = {};
this.$message.success("修改登录名成功!");
......@@ -326,16 +312,17 @@ export default {
this.$message.error(res.msg);
}
this.tableData.loading = false;
}).catch(error => {
this.$message.error(error.message);
})
.catch((error) => {
this.$message.error(error.message);
});
},
// 获取用户角色列表
getUserRoles(id) {
return new Promise((resolve, reject) => {
this.$post("/role/roleNameByUserId", {userId: id})
.then(({data}) => {
this.$post("/role/roleNameByUserId", { userId: id })
.then(({ data }) => {
resolve(data);
})
.catch(reject);
......@@ -347,7 +334,7 @@ export default {
userId: id,
size: -1,
})
.then(({data}) => {
.then(({ data }) => {
const result = data.data
.filter((i) => i.roleId + "")
.map((i) => i.roleId + "");
......@@ -420,8 +407,8 @@ export default {
config: {
isshowTabPane: true,
columns: [
{type: "selection", reserveSelection: true, width: 60},
{type: "index", label: "序号", align: "center", width: 50},
{ type: "selection", reserveSelection: true, width: 60 },
{ type: "index", label: "序号", align: "center", width: 50 },
{
prop: "loginName",
label: "登录名称",
......
......@@ -6,14 +6,20 @@
:direction="direction"
size="50%"
>
<el-form ref="form" :model="form" :rules="rules" label-width="100px" style="padding: 20px;">
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="100px"
style="padding: 20px;"
>
<el-row>
<Field
type="select"
label="负责人姓名"
prop="staffId"
filterable
:disabled="editId?true:false"
:disabled="editId ? true : false"
v-model="form.staffId"
:enumData="userList"
placeholder="请输入负责人姓名"
......@@ -24,6 +30,14 @@
v-model="form.phone"
placeholder="请输入联系电话"
/>
<Field
label="角色"
prop="roleType"
type="select"
v-model="form.roleType"
:enumData="dict.roleType"
placeholder="请选择角色"
/>
<Field
label="大厅"
prop="salaId"
......@@ -40,6 +54,17 @@
:enumData="dict.deptId"
placeholder="请选择部门"
/>
<Field
label="是否允许巡查"
prop="inspect"
type="checkbox"
v-model="form.inspect"
:enumData="inspectObj"
/>
<!-- <el-form-item label="是否允许巡查" prop="inspect">
<el-checkbox v-model="form.inspect">允许</el-checkbox>
</el-form-item> -->
<!-- <Field
label="工号"
prop="number"
......@@ -62,12 +87,19 @@
/> -->
</el-row>
<div style="background-color: rgba(242, 246, 252, 1);padding: 20px;">
<wintable :editId="editId" ref="wintable" :hallId="dict.hallId" class="wintabel" @selection-change="selectionChange"/>
<wintable
:editId="editId"
ref="wintable"
:hallId="dict.hallId"
class="wintabel"
:checkPeopleArr="checkPeopleArr"
@selection-change="selectionChange"
:staffList="dict.staffList"
v-if="refresh"
/>
</div>
<div style="padding: 20px;">
<el-button type="primary" @click="submitForm" >提交</el-button>
<el-button type="primary" @click="submitForm">提交</el-button>
</div>
</el-form>
</el-drawer>
......@@ -80,18 +112,22 @@ export default {
name: "WindowOwnerDetail",
mixins: [form],
components: {
wintable
wintable,
},
created() {
this.changePath("window/owner");
this.getUser()
this.getUser();
},
data() {
return {
refresh: true,
inspectObj: {
1: "允许",
},
// 大厅
options:[],
options: [],
//窗口
tableData:[],
tableData: [],
// 遮罩层
loading: true,
// 弹出层标题
......@@ -103,45 +139,48 @@ export default {
toDate: [],
// 表单校验
rules: {
name: [
{ required: true, message: "请输入姓名", trigger: "blur" },
{ max: 20, message: "最多只能录入20个字符", trigger: "blur" },
]
},
userList:{},
userarr:[],//人员数组
checkArr:[],//选中窗口
editId:''//编辑id
staffId: [{ required: true, message: "请选择负责人", trigger: "blur" }],
},
userList: {},
userarr: [], //人员数组
checkArr: [], //选中窗口
checkPeopleArr: [], //选中窗口
editId: "", //编辑id
};
},
methods: {
//重写表单
beforeSubmit(data){
data['deptName'] = this.dict.deptId[data.deptId]
data['salaName'] = this.dict.salaId[data.salaId]
data['staffName'] = this.userList[data.staffId]
beforeSubmit(data) {
data["deptName"] = this.dict.deptId[data.deptId];
data["salaName"] = this.dict.salaId[data.salaId];
data["staffName"] = this.userList[data.staffId];
try {
const userObj = this.userarr.find(v=>v.id == data.staffId) //工号
data['number'] = userObj.workNum
const userObj = this.userarr.find((v) => v.id == data.staffId); //工号
data["number"] = userObj.workNum;
// 窗口列表
const checkArr = []
this.checkArr.forEach(v=>{
const checkArr = [];
this.checkArr.forEach((v) => {
checkArr.push({
windowId:v.id,
windowName:v.name,
windowCode:v.fromnum,
building:v.building,
level:v.level
})
})
data['windowOwnerDetailList'] = checkArr
windowId: v.id,
windowName: v.name,
windowCode: v.fromnum,
building: v.building,
level: v.level,
});
});
data["windowOwnerDetailList"] = checkArr;
} catch (error) {}
return data
let arr = Array.from(new Set(this.$refs.wintable.checkAllList));
console.log(this.checkAllList);
data.staffIdList = arr ? arr : [];
return data;
},
// 选中窗口
selectionChange(v){
this.checkArr = v
selectionChange(v) {
// this.checkArr = v;
// this.checkPeopleArr = v;
console.log(v, "vvvvvv");
},
cascaderChange(val) {
if (this.deptList.length > 0) {
......@@ -152,44 +191,47 @@ export default {
console.log(this.form.deptId, "当前选择");
},
// 查询人员
getUser(){
this.$post("/staff/list",{page:1,size:-1}).then(res=>{
const {code,data} = res
if(code == 1){
this.userarr = data.data
const arr = {}
data.data.forEach(element => {
arr[element.id] = element.name
getUser() {
this.$post("/staff/list", { page: 1, size: -1 }).then((res) => {
const { code, data } = res;
if (code == 1) {
this.userarr = data.data;
const arr = {};
data.data.forEach((element) => {
arr[element.id] = element.name + "-" + element.deptName;
});
this.userList = arr
this.userList = arr;
}
})
},
onSubmitSearch(){
});
},
/** 编辑 */
edit(row) {
this.editId = row.staffId
this.refresh = false;
this.editId = row.staffId;
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "window/owner/edit";
this.getData();
this.checkPeopleArr = [];
this.checkPeopleArr = row.staffIdList;
this.pageInfo.type = "edit";
this.title = "修改窗口负责人";
},
/** 新增 */
add(row) {
this.editId = ''
this.refresh = false;
this.editId = "";
this.reset();
this.urls.currUrl = "window/owner/add";
this.getData();
this.checkPeopleArr = [];
this.checkPeopleArr = row.staffIdList;
this.pageInfo.type = "add";
this.title = "新增窗口负责人";
},
/** 查看*/
view(row) {
this.editId = row.staffId
this.editId = row.staffId;
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "window/owner/view";
......@@ -203,6 +245,7 @@ export default {
},
/**获取数据后弹框 */
afterRender(data) {
this.refresh = true;
this.open = true;
},
......@@ -214,13 +257,18 @@ export default {
// 表单重置
reset() {
this.form = {
deptId: 0,
deptName: "",
name: "",
inspect: 0,
number: "",
phone: "",
windowCount: null,
remark: "",
roleType: 0,
salaName: "",
staffIds: "",
staffName: "",
windowCount: 0,
staffIdList: [],
windowOwnerDetailList: [],
};
this.resetForm("form");
},
......@@ -233,7 +281,7 @@ export default {
};
</script>
<style lang="less">
.wintabel .table-body{
.wintabel .table-body {
height: 500px;
overflow-y: auto;
}
......
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig"> </LayoutTable>
<LayoutTable
:data="tableData"
:config="tableConfig"
@cell-click="handleCellClick"
>
</LayoutTable>
<drawer-show ref="drawerform" @ok="getData" />
</div>
......@@ -18,6 +23,12 @@ export default {
mixins: [table],
created() {},
methods: {
handleCellClick(row, column, cell, event) {
console.log(row, cell, column);
if (column.label == "关联人数") {
this.toEdit(row);
}
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
......@@ -36,6 +47,24 @@ export default {
config: {
isshowTabPane: true,
search: [
{
name: "salaId",
type: "selectSalaId",
label: "大厅",
fuzzy: false,
},
{
name: "deptId",
type: "selectDeptId",
label: "部门",
fuzzy: false,
},
{
name: "roleType",
type: "select",
label: "角色",
fuzzy: false,
},
{
name: "staffName",
type: "text",
......@@ -47,25 +76,31 @@ export default {
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{ label: "部门名称", prop: "deptName" },
{ label: "姓名", prop: "staffName" },
{ label: "负责人姓名", prop: "staffName" },
{ label: "角色", prop: "roleType", formatter: this.formatter },
{ label: "所属大厅", prop: "salaName" },
{ label: "所属部门", prop: "deptName" },
{ label: "工号", prop: "number" },
{ label: "电话号码", prop: "phone" },
{ label: "联系电话", prop: "phone", formatter: this.formatter },
{
label: "负责窗口数量",
prop: "windowCount",
formatter: this.formatter,
label: "关联人数",
prop: "staffCount",
formatter: (row) => {
return <a>{row.staffCount}</a>;
},
},
{
label: "创建时间",
prop: "createTime",
label: "更新时间",
prop: "updateTime",
formatter: this.formatterDate,
},
{
label: "更新人员",
prop: "updateUserId",
formatter: this.formatter,
},
{
label: "操作",
width: 240,
......@@ -88,3 +123,8 @@ export default {
},
};
</script>
<style lang="less" scoped>
a {
color: rgb(103, 116, 223);
}
</style>
<template>
<LayoutTable :toggleRowSelection="toggleRowSelection" ref="LayoutTable" :data="tableData" :config="tableConfig" @selection-change="handleSelectionChange">
<div slot="table-head-left"><div>请选择窗口</div></div>
<div slot="table-head-center"></div>
</LayoutTable>
<div>
<div class="search_box">
<SearchForm
:search="config.search"
:page="baseInfo.current_page"
@getData="onSubmit"
ref="search"
/>
</div>
<el-table
ref="multipleTable"
:data="baseInfo.data ? baseInfo.data : []"
tooltip-effect="dark"
style="width: 100%"
@select="handleSelectionChange"
@select-all="handleAllChange"
>
<el-table-column
v-for="(val, i) in config.columns"
:key="i"
:type="val.type"
:width="val.width"
:label="val.label"
:prop="val.prop"
:formatter="val.formatter"
:align="val.align ? val.align : 'center'"
>
</el-table-column>
</el-table>
<el-pagination
@current-change="handleCurrentChange"
:current-page.sync="baseInfo.current_page"
layout="total, prev, pager, next"
:total="baseInfo.total"
style="margin-top: 10px;width: 100%;text-align: end;"
>
</el-pagination>
</div>
</template>
<script>
import table from "@/assets/mixins/table";
import SearchForm from "@/components/SearchFormDrawer.vue";
export default {
props:['hallId','checkId','editId'],
mixins: [table],
methods:{
handleSelectionChange(v){
this.$emit("selection-change",v)
},
beforeFecth(){
this.pageInfo.list = '/window/owner/subWindowList'
components: { SearchForm },
props: ["hallId", "checkId", "editId", "checkPeopleArr", "staffList"],
methods: {
handleSelectionChange(selecteds, row) {
if (!this.checkAllList.includes(row.id)) {
// 回显数据里没有本条,把这条加进来(选中)
this.checkAllList.push(row.id);
} else {
// 回显数据里有本条,把这条删除(取消选中)
this.checkAllList.forEach((id, index) => {
if (id === row.id) {
this.checkAllList = this.checkAllList.filter((v) => id !== v);
}
});
this.checkPeopleArr.forEach((id) => {
if (id == row.id) {
this.checkPeopleArr = this.checkPeopleArr.filter((v) => id !== v);
}
});
}
let arr = Array.from(new Set(this.checkAllList));
this.checkAllList = arr;
console.log(this.checkAllList);
},
//重写
afterRender(info){
const {data} = info
if(this.editId){
// 编辑的时候回显
const toggleRowSelection = []
data.forEach(element => {
if(element.selected == 1){
toggleRowSelection.push(element)
// 全选、取消全选
handleAllChange(selecteds) {
selecteds = selecteds.filter((v) => (v ? v : ""));
console.log(selecteds);
if (selecteds.length > 0) {
selecteds.forEach((item) => {
if (!this.checkAllList.includes(item.id)) {
this.checkAllList.push(item.id);
}
});
setTimeout(()=>{
this.toggleRowSelection = toggleRowSelection
})
let arr = Array.from(new Set(this.checkAllList));
this.checkAllList = arr;
} else {
this.baseInfo.data.forEach((item) => {
this.checkAllList.forEach((id, index) => {
if (id === item.id) {
this.checkAllList.splice(index, 1);
}
});
});
let arr = Array.from(new Set(this.checkAllList));
this.checkAllList = arr;
this.baseInfo.data.forEach((item) => {
this.checkPeopleArr.forEach((id, index) => {
if (id === item.id) {
this.checkPeopleArr.splice(index, 1);
}
});
});
}
},
created(){
this.config.search[0].enumData = this.hallId
console.log(this.editId,"editId")
handleCurrentChange(val) {
this.baseInfo.current_page = val;
this.$refs.search.onSubmit();
},
watch: {
editId:{
handler:function(v){
if(v){
this.query = {staffId:v}
}else{
this.query = {}
onSubmit(val) {
this.baseInfo = val;
this.checkAllList = [...this.checkAllList, ...this.checkPeopleArr];
if (this.staffList && this.staffList.length) {
this.$nextTick(() => {
this.staffList
? this.staffList.forEach((v) => {
this.checkAllList.forEach((val, i) => {
if (v.id == val) {
this.checkAllList[i] = v.id;
}
this.getData()
},
immediate:true
});
})
: "";
this.baseInfo.data
? this.checkAllList.forEach((key) => {
this.$refs.multipleTable.toggleRowSelection(
this.baseInfo.data.find((row) => {
if (row.id == key) {
return row;
}
}),
true
);
})
: "";
});
}
},
},
data(){
created() {
this.config.search[0].enumData = this.hallId;
},
mounted() {},
watch: {},
data() {
return {
toggleRowSelection:[],
checkAllList: [],
checkList: [],
baseInfo: {},
total: 0,
currentPage: 1,
toggleRowSelection: [],
config: {
downloadUrl:"",
downloadUrl: "",
isshowTabPane: false,
search: [
{
name: "hallId",
type: "select",
name: "salaId",
type: "selectSalaId",
label: "大厅",
enumData:{}
fuzzy: false,
},
{
name: "deptId",
type: "selectDeptId",
label: "部门",
fuzzy: false,
},
{
name: "deptName",
name: "name",
type: "text",
label: "窗口名称",
label: "工作人员姓名",
fuzzy: true,
},
],
columns: [
{ type: "selection", width: 60 },
// { type: "index", label: "序号", width: 50 },
{
label: "序号",
width: 50,
formatter: (row, column, cellValue, index) => {
return index + 1;
},
},
{ label: "窗口名称", prop: "name" },
{ label: "工作人员姓名", prop: "name" },
{ label: "编号", prop: "fromnum" },
{ label: "工号", prop: "workNum" },
{ label: "所属楼栋", prop: "building" },
{ label: "手机号码", prop: "phoneNumber" },
{ label: "所属楼层", prop: "level" },
{ label: "所属大厅", prop: "salaName" },
{ label: "所属部门", prop: "deptName" },
// {
// label: "操作",
// width: 240,
// width: 100,
// formatter: (row) => {
// return (
// <table-buttons
// noAdd
// row={row}
// onEdit={this.toEdit}
// onView={this.toView}
// onDel={this.toDel}
// />
// );
// if (row.check) {
// return <span style="cursor:pointer;color:#ff0000">已选中</span>;
// } else {
// return <span style="cursor:pointer;color:#1890ff">选择</span>;
// }
// },
// },
],
},
}
};
},
}
};
</script>
......@@ -108,14 +108,14 @@ export default {
name: "ownerName",
type: "text",
width: 200,
label: "窗口负责人姓名搜索",
label: "窗口首席代表’姓名搜索",
fuzzy: false,
},
],
columns: [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{ label: "窗口负责人", prop: "ownerName" },
{ label: "窗口首席代表", prop: "ownerName" },
{
label: "登记年月",
......@@ -130,7 +130,7 @@ export default {
},
},
{ label: "所属大厅", prop: "salaName",formatter: this.formatter },
{ label: "所属大厅", prop: "salaName", formatter: this.formatter },
{
label: "所属部门",
......@@ -152,6 +152,16 @@ export default {
prop: "submitDate",
formatter: this.formatterDate,
},
{
label: "核查人",
prop: "leaderCheckPerson",
formatter: this.formatter,
},
{
label: "最新核查时间",
prop: "leaderCheckTime",
formatter: this.formatterDate,
},
{ label: "处理状态", prop: "checkStatus", formatter: this.formatter },
{
......
......@@ -16,7 +16,8 @@
>导出</el-button
>
</div>
<LayoutTable :data="tableData" :config="tableConfig"> </LayoutTable>
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
</LayoutTable>
</div>
</template>
......@@ -25,9 +26,7 @@
import table from "@/assets/mixins/table";
export default {
name: "WindowWorkmanPerformDetailList",
components: {
drawerShow,
},
mixins: [table],
created() {},
methods: {
......@@ -61,9 +60,9 @@ export default {
},
data() {
return {
config: {
radio1: "3",
isExport: false,
config: {
search: [],
columns: [
{ type: "selection", width: 60 },
......@@ -119,3 +118,16 @@ export default {
},
};
</script>
<style lang="less" scoped>
/deep/.el-radio-button__inner {
border: 1px solid #eee !important;
height: 28px;
line-height: 3px;
}
/deep/.el-radio-button__orig-radio:checked + .el-radio-button__inner {
background: #00b565;
border: none !important;
color: #fff !important;
line-height: 3px;
}
</style>
......@@ -106,14 +106,14 @@ export default {
name: "ownerName",
type: "text",
width: 200,
label: "窗口负责人姓名搜索",
label: "窗口首席代表’姓名搜索",
fuzzy: false,
},
],
columns: [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{ label: "窗口负责人", prop: "ownerName" },
{ label: "窗口首席代表", prop: "ownerName" },
{
label: "登记年月",
......@@ -151,9 +151,21 @@ export default {
width: 110,
formatter: this.formatterDate,
},
{
label: "核查人",
formatter: (row) => {
return `${
row.leaderCheckPerson
? row.leaderCheckPerson
: row.manageCheckPerson
? row.manageCheckPerson
: "--"
}`;
},
},
{
label: "最新核查时间",
prop: "updateTime",
prop: "manageCheckTime",
width: 150,
formatter: this.formatterDate,
},
......
module.exports = {
productionSourceMap: false,
lintOnSave:false,
lintOnSave: false,
devServer: {
inline: true,
disableHostCheck: true,
port: 8087,
hot: true,//自动保存
hot: true, //自动保存
proxy: {
'/attendance': {
"/attendance": {
target: 'http://192.168.0.98:11039',
// target: 'http://112.19.80.237:11039',
// target: "http://112.19.80.237:11039",
// target: 'http://localhost:17500',
// target: 'http://118.122.189.109:11039',
// target: "http://118.122.189.109:11039",
// target: 'http://10.102.252.13:11039',
changeOrigin: true,
secure: false,
cookieDomainRewrite: 'localhost',
cookieDomainRewrite: "localhost",
},
'/zwfw_api_xnjc': {
target: 'http://112.19.80.237:11031',
"/zwfw_api_xnjc": {
target: "http://112.19.80.237:11031",
changeOrigin: true,
secure: false,
cookieDomainRewrite: 'localhost',
}
}
}
}
cookieDomainRewrite: "localhost",
},
},
},
};
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