Commit 1a3dadd2 authored by 廖旭伟's avatar 廖旭伟

Merge remote-tracking branch 'origin/master'

parents 3ffd0f32 230fd3b8
<template>
<span>
<el-button v-if='!noEdit' type="text" icon="el-icon-edit" size='mini' @click='$emit("edit", row)' title="编辑">编辑</el-button>
<el-button
v-if="!noEdit"
type="text"
icon="el-icon-edit"
size="mini"
@click="$emit('edit', row)"
title="编辑"
>编辑</el-button
>
<span>&nbsp;</span>
<el-button v-if='!noView' type="text" icon="el-icon-view" size='mini' @click='$emit("view", row)' title="查看">查看</el-button>
<span>&nbsp;</span>
<Confirm @confirm='$emit("del", row.id)' message='确定要删除该条记录吗?'>
<el-button v-if='!noDel' type="text" icon="el-icon-delete" size='mini' title="删除">删除</el-button>
<el-button
v-if="!noView"
type="text"
icon="el-icon-view"
size="mini"
@click="$emit('view', row)"
title="查看"
>查看</el-button
>
<span>&nbsp;</span>
<el-button
v-if="reCheck"
type="text"
icon="el-icon-edit"
size="mini"
@click="$emit('edit', row)"
title="核查"
>核查</el-button
>
<span>&nbsp;</span>
<Confirm @confirm="$emit('del', row.id)" message="确定要删除该条记录吗?">
<el-button
v-if="!noDel"
type="text"
icon="el-icon-delete"
size="mini"
title="删除"
>删除</el-button
>
</Confirm>
</span>
</template>
<script>
import Confirm from '@/components/Confirm.vue';
import Confirm from "@/components/Confirm.vue";
export default {
props: {
noEdit: {
type: Boolean,
default: false
default: false,
},
noDel: {
type: Boolean,
default: false
default: false,
},
noAdd: {
type: Boolean,
default: false
default: false,
},
reCheck: {
type: Boolean,
default: false,
},
noView: {
type: Boolean,
default: false
default: false,
},
row: {
type: Object,
required: true,
default: () => {}
default: () => {},
},
},
components: {
Confirm,
},
methods: {
},
methods: {},
data() {
return {
}
}
}
return {};
},
};
</script>
<template>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%"
>
<div class="dra_content">
<div class="dra_top box">
<div class="title">异常情况</div>
<div class="content">
<el-row>
<el-col :span="12"
>员工:{{ obj.staffName ? obj.staffName : "--" }}</el-col
>
<el-col :span="12"
>所属部门:{{ obj.deptName ? obj.deptName : "--" }}</el-col
>
</el-row>
<el-row>
<el-col :span="12"
>窗口编号:{{ obj.windowNum ? obj.windowNum : "--" }}</el-col
>
<el-col :span="12"
>考勤组:{{
obj.attendanceGroupName ? obj.attendanceGroupName : "--"
}}</el-col
>
</el-row>
<el-row>
<el-col :span="12"
>实际打卡时间:{{
obj.actualAttendTime ? obj.actualAttendTime : "--"
}}</el-col
>
<el-col :span="12"
>上下班时间:{{
obj.goOffTimeStr ? obj.goOffTimeStr : "--"
}}</el-col
>
</el-row>
<el-row>
<el-col :span="12"
>异常时间:{{ obj.errorTime ? obj.errorTime : "--" }}</el-col
>
<el-col :span="12"
>异常结果:{{ obj.errorTime ? obj.errorTime : "--" }}</el-col
>
</el-row>
<el-row>
<el-col :span="12"
>扣分方式:{{ obj.subMethod ? obj.subMethod : "--" }}</el-col
>
<el-col :span="12"
>扣分时间:{{ obj.deductTime ? obj.deductTime : "--" }}</el-col
>
</el-row>
<el-row>
<el-col :span="12"
>扣分人员:{{
obj.deductPerson ? obj.deductPerson : "--"
}}</el-col
>
<el-col :span="12"
>图片凭证:{{ obj.snapPath ? obj.snapPath : "--" }}</el-col
>
</el-row>
</div>
</div>
<div class="dra_down box">
<div class="title">核查情况</div>
<div class="content">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="记录ID" prop="recordId" v-model="form.recordId" placeholder="请输入记录ID"/>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/>
<Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/>
<Field label="所属考勤组ID" prop="attendanceGroupId" v-model="form.attendanceGroupId" placeholder="请输入所属考勤组ID"/>
<Field label="所属考勤组名称" prop="attendanceGroupName" v-model="form.attendanceGroupName" placeholder="请输入所属考勤组名称"/>
<Field label="考勤时间" prop="attendanceDate" v-model="form.attendanceDate" type="date" />
<Field label="绩效规则id" prop="ruleId" v-model="form.ruleId" placeholder="请输入绩效规则id"/>
<Field label="规则名称" prop="ruleName" v-model="form.ruleName" placeholder="请输入规则名称"/>
<Field label="增减类型" prop="subAddType" v-model="form.subAddType" type="select" :enumData="dict.subAddType" placeholder="请选择增减类型"/>
<Field label="扣分或增加分值" prop="score" v-model="form.score" placeholder="请输入扣分或增加分值"/>
<Field label="上下班时间" prop="goOffTimeStr" v-model="form.goOffTimeStr" placeholder="请输入上下班时间"/>
<Field label="异常时间" prop="errorTime" v-model="form.errorTime" type="date" />
<Field label="实际打卡时间" prop="actualAttendTime" v-model="form.actualAttendTime" type="date" />
<Field label="异常处理结果" prop="errorResult" v-model="form.errorResult" placeholder="请输入异常处理结果"/>
<Field label="核查人员" prop="checkPerson" v-model="form.checkPerson" placeholder="请输入核查人员"/>
<Field label="核查时间" prop="checkTime" v-model="form.checkTime" type="date" />
<Field label="核查说明" prop="checkDesc" v-model="form.checkDesc" type="textarea" placeholder="请输入核查说明"/>
<Field label="核查结果" prop="checkResult" v-model="form.checkResult" placeholder="请输入核查结果"/>
<Field label="处理状态" prop="checkStatus" v-model="form.checkStatus" type="select" :enumData="dict.checkStatus" placeholder="请选择处理状态"/>
<el-form-item label="核查结果:">
<p v-if="obj.view == '查看'">{{ obj.checkResult }}</p>
<el-radio-group v-model="form.checkResult" v-else>
<el-radio :label="1">扣分</el-radio>
<el-radio :label="2">不扣分</el-radio>
</el-radio-group>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="绩效规则:">
<p v-if="obj.view == '查看'">{{ obj.ruleName }}</p>
<div v-else>
<el-col :span="22">
<el-select
v-model="form.attendanceGroupId"
style="width: 100%;"
>
<el-option
v-for="item in kaoqinArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option
></el-select>
</el-col>
<el-col :span="22">
<el-select
v-model="form.attendanceGroupId"
style="width: 100%;margin-top: 10px;"
>
<el-option
v-for="item in kaoqinArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option></el-select
></el-col>
</div>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="扣除分值:">
<p v-if="obj.view == '查看'">{{ obj.score }}</p>
<p v-else>{{ form.score }}</p>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="说明:">
<p v-if="obj.view == '查看'">{{ obj.checkDesc }}</p>
<el-input
v-else
v-model="form.checkDesc"
type="textarea"
></el-input>
</el-form-item>
</el-row>
<el-row v-if="obj.view == '查看'">
<el-col :span="24">核查人员:{{ obj.checkPerson }}</el-col>
</el-row>
<el-row v-if="obj.view == '查看'">
<el-col :span="24">核查时间:{{ obj.checkTime }}</el-col>
</el-row>
<form-buttons
v-show="obj.view == '核查'"
@submit="submitForm"
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form>
</div>
</div>
</div>
<!-- <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field
label="记录ID"
prop="recordId"
v-model="form.recordId"
placeholder="请输入记录ID"
/>
<Field
label="员工ID"
prop="staffId"
v-model="form.staffId"
placeholder="请输入员工ID"
/>
<Field
label="员工姓名"
prop="staffName"
v-model="form.staffName"
placeholder="请输入员工姓名"
/>
<Field
label="工号"
prop="workNum"
v-model="form.workNum"
placeholder="请输入工号"
/>
<Field
label="所属部门"
prop="deptId"
v-model="form.deptId"
placeholder="请输入所属部门"
/>
<Field
label="所属部门名称"
prop="deptName"
v-model="form.deptName"
placeholder="请输入所属部门名称"
/>
<Field
label="所属考勤组ID"
prop="attendanceGroupId"
v-model="form.attendanceGroupId"
placeholder="请输入所属考勤组ID"
/>
<Field
label="所属考勤组名称"
prop="attendanceGroupName"
v-model="form.attendanceGroupName"
placeholder="请输入所属考勤组名称"
/>
<Field
label="考勤时间"
prop="attendanceDate"
v-model="form.attendanceDate"
type="date"
/>
<Field
label="绩效规则id"
prop="ruleId"
v-model="form.ruleId"
placeholder="请输入绩效规则id"
/>
<Field
label="规则名称"
prop="ruleName"
v-model="form.ruleName"
placeholder="请输入规则名称"
/>
<Field
label="增减类型"
prop="subAddType"
v-model="form.subAddType"
type="select"
:enumData="dict.subAddType"
placeholder="请选择增减类型"
/>
<Field
label="扣分或增加分值"
prop="score"
v-model="form.score"
placeholder="请输入扣分或增加分值"
/>
<Field
label="上下班时间"
prop="goOffTimeStr"
v-model="form.goOffTimeStr"
placeholder="请输入上下班时间"
/>
<Field
label="异常时间"
prop="errorTime"
v-model="form.errorTime"
type="date"
/>
<Field
label="实际打卡时间"
prop="actualAttendTime"
v-model="form.actualAttendTime"
type="date"
/>
<Field
label="异常处理结果"
prop="errorResult"
v-model="form.errorResult"
placeholder="请输入异常处理结果"
/>
<Field
label="核查人员"
prop="checkPerson"
v-model="form.checkPerson"
placeholder="请输入核查人员"
/>
<Field
label="核查时间"
prop="checkTime"
v-model="form.checkTime"
type="date"
/>
<Field
label="核查说明"
prop="checkDesc"
v-model="form.checkDesc"
type="textarea"
placeholder="请输入核查说明"
/>
<Field
label="核查结果"
prop="checkResult"
v-model="form.checkResult"
placeholder="请输入核查结果"
/>
<Field
label="处理状态"
prop="checkStatus"
v-model="form.checkStatus"
type="select"
:enumData="dict.checkStatus"
placeholder="请选择处理状态"
/>
</el-row>
<form-buttons @submit='submitForm' v-if="pageInfo.type!='view'" noCancelBtn />
</el-form>
</el-drawer>
<form-buttons
@submit="submitForm"
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form> -->
</el-drawer>
</template>
<script>
import form from "@/assets/mixins/formdialog";
export default {
name: "CheckAttendRecordDetail",
mixins: [form],
components: {
},
created() {
this.changePath("check/attend/record")
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "考勤绩效记录核查信息",
// 是否显示弹出层
open: false,
direction:"rtl",
toString:[
"subAddType",
"checkStatus",
],
toDate:[
"attendanceDate",
"errorTime",
"actualAttendTime",
"checkTime",
],
// 表单校验
rules: {
staffName: [
{required: true,message: "请输入员工姓名", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
import form from "@/assets/mixins/formdialog";
export default {
name: "CheckAttendRecordDetail",
mixins: [form],
components: {},
created() {
this.changePath("check/attend/record");
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "考勤绩效记录核查信息",
// 是否显示弹出层
open: false,
direction: "rtl",
toString: ["subAddType", "checkStatus"],
toDate: ["attendanceDate", "errorTime", "actualAttendTime", "checkTime"],
// 表单校验
rules: {
staffName: [
{ required: true, message: "请输入员工姓名", trigger: "blur" },
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" },
],
createTime: [{ required: true, message: "请选择创建时间" }],
},
obj: {},
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="check/attend/record/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改考勤绩效记录核查信息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "check/attend/record/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增考勤绩效记录核查信息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="check/attend/record/view";
this.getData();
this.pageInfo.type="view"
this.title = "考勤绩效记录核查信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
methods: {
/** 编辑 */
edit(row) {
console.log(this.form);
this.obj = row;
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "check/attend/record/edit";
this.getData();
this.pageInfo.type = "edit";
row.view == "核查"
? (this.title = "考勤绩效记录核查")
: (this.title = "修改考勤绩效记录核查信息");
},
/** 新增 */
add(row) {
this.reset();
this.urls.currUrl = "check/attend/record/add";
this.getData();
this.pageInfo.type = "add";
this.title = "新增考勤绩效记录核查信息";
},
/** 查看*/
view(row) {
this.obj = row;
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "check/attend/record/view";
this.getData();
this.pageInfo.type = "view";
this.title = "考勤绩效记录核查信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
recordId : null,
staffId : null,
staffName : "",
workNum : "",
deptId : null,
deptName : "",
attendanceGroupId : null,
attendanceGroupName : "",
attendanceDate : null,
ruleId : null,
ruleName : "",
subAddType : 1,
score : 0.00,
goOffTimeStr : "",
errorTime : null,
actualAttendTime : null,
errorResult : "",
checkPerson : "",
checkTime : null,
checkDesc : "",
checkResult : "",
checkStatus : 1,
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
// 表单重置
reset() {
this.form = {
recordId: null,
staffId: null,
staffName: "",
workNum: "",
deptId: null,
deptName: "",
attendanceGroupId: null,
attendanceGroupName: "",
attendanceDate: null,
ruleId: null,
ruleName: "",
subAddType: 1,
score: 0.0,
goOffTimeStr: "",
errorTime: null,
actualAttendTime: null,
errorResult: "",
checkPerson: "",
checkTime: null,
checkDesc: "",
checkResult: "",
checkStatus: 1,
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<style lang="less" scoped>
.dra_content {
width: 100%;
height: 100%;
padding: 20px;
.box {
width: 100%;
height: auto;
.title {
color: #1890ff;
font-size: 16px;
padding-left: 10px;
position: relative;
margin-bottom: 30px;
&::after {
content: "";
display: block;
border-left: 3px solid #1890ff;
left: 0;
top: 0;
bottom: 0;
position: absolute;
}
}
.content {
width: 100%;
padding: 10px;
font-family: "微软雅黑", sans-serif;
font-weight: 400;
font-style: normal;
font-size: 14px;
margin-left: 0 auto;
margin-bottom: 30px;
/deep/.el-row {
margin-bottom: 20px;
}
}
}
}
</style>
<template>
<div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button
slot="table-head-left2"
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="doExport"
:disabled="isExport"
>导出</el-button>
</LayoutTable>
<!-- 考勤绩效记录核查信息导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<el-checkbox
v-model="upload.updateSupport"
/>是否更新已经存在的数据
<el-link type="primary" style="font-size: 14px" @click="downloadTemplate"
>下载模板</el-link
>
</div>
<div class="el-upload__tip" style="color: red" slot="tip">
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<drawer-show ref="drawerform" @ok="getData" />
</div>
<div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button
slot="table-head-left2"
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="doExport"
:disabled="isExport"
>导出</el-button
>
</LayoutTable>
<!-- 考勤绩效记录核查信息导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
<el-link
type="primary"
style="font-size: 14px"
@click="downloadTemplate"
>下载模板</el-link
>
</div>
<div class="el-upload__tip" style="color: red" slot="tip">
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<drawer-show ref="drawerform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "CheckAttendRecordList",
components: {
drawerShow
},
mixins: [table],
created() {
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "CheckAttendRecordList",
components: {
drawerShow,
},
mixins: [table],
created() {},
methods: {
/** 导入 */
handleImport() {
this.upload.title = "考勤绩效记录核查信息导入";
this.upload.open = true;
},
/** 下载模板操作 */
downloadTemplate() {
this.isExport = true;
this.$download(
"/check/attend/record/downloadTemplate",
{},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 文件上传中处理 */
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
/** 文件上传成功处理 */
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getData();
},
/** 提交上传文件 */
submitFileForm() {
this.$refs.upload.submit();
},
/** 导出Excel */
doExport() {
this.isExport = true;
this.$download(
"/check/attend/record/exportExcel",
{
idList: this.selection,
},
methods: {
/** 导入 */
handleImport() {
this.upload.title = "考勤绩效记录核查信息导入";
this.upload.open = true;
},
/** 下载模板操作 */
downloadTemplate() {
this.isExport = true;
this.$download("/check/attend/record/downloadTemplate", {}, { type: "excel" })
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 文件上传中处理 */
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
/** 文件上传成功处理 */
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getData();
},
/** 提交上传文件 */
submitFileForm() {
this.$refs.upload.submit();
},
/** 导出Excel */
doExport() {
this.isExport = true;
this.$download("/check/attend/record/exportExcel", {
"idList": this.selection,
}, { type: "excel" }).then(() => this.isExport = false).catch(error => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.drawerform.view(row);
},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
row.view = "核查";
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
row.view = "查看";
this.$refs.drawerform.view(row);
},
},
data() {
return {
// 用户导入参数
upload: {
// 是否显示弹出层(考勤绩效记录核查信息导入)
open: false,
// 弹出层标题(考勤绩效记录核查信息导入)
title: "导入考勤绩效记录核查信息数据",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的数据
updateSupport: 0,
// 上传的地址
url: "/attendance/check/attend/record/importData",
},
isExport: false,
config: {
isshowTabPane: true,
search: [
{
name: "status",
type: "select",
label: "全部状态",
fuzzy: false,
},
{
name: "deptId",
type: "select",
label: "全部部门",
fuzzy: false,
},
{
name: "date",
type: "date",
label: "请选择日期",
fuzzy: false,
},
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
fuzzy: false,
},
],
columns: [
{ type: "selection", width: 50 },
{ type: "index", label: "序号", width: 50 },
},
data() {
return {
// 用户导入参数
upload: {
// 是否显示弹出层(考勤绩效记录核查信息导入)
open: false,
// 弹出层标题(考勤绩效记录核查信息导入)
title: "导入考勤绩效记录核查信息数据",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的数据
updateSupport: 0,
// 上传的地址
url: "/attendance/check/attend/record/importData",
},
isExport: false,
config: {
isshowTabPane:true,
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{ label: "姓名", prop: "staffName" },
{label: "员工姓名", prop: "staffName"},
{ label: "窗口编号", prop: "windowNum" },
{label: "工号", prop: "workNum"},
{ label: "所属部门", prop: "deptName" },
{label: "所属部门名称", prop: "deptName"},
{ label: "考勤组", prop: "attendanceGroupName" },
{label: "所属考勤组名称", prop: "attendanceGroupName"},
{
label: "异常时间",
prop: "errorTime",
formatter: this.formatterDate,
},
{label: "考勤时间", prop: "attendanceDate", formatter: this.formatterDate},
{ label: "上下班时间", prop: "goOffTimeStr" },
{label: "规则名称", prop: "ruleName"},
{
label: "实际打卡时间",
prop: "actualAttendTime",
formatter: this.formatterDate,
},
{label: "增减类型", prop: "subAddType",formatter: this.formatter},
{ label: "异常结果", prop: "errorResult" },
{label: "扣分或增加分值",fixed:"right", prop: "score", formatter: this.formatter},
{ label: "图片凭证", prop: "snapPath" },
{label: "上下班时间", prop: "goOffTimeStr"},
{ label: "绩效规则", prop: "ruleNme" },
{label: "异常时间", prop: "errorTime", formatter: this.formatterDate},
{ label: "扣分方式", prop: "subMethod", formatter: this.formatter },
{label: "实际打卡时间", prop: "actualAttendTime", formatter: this.formatterDate},
{
label: "扣分时间",
prop: "deductTime",
formatter: this.formatterDate,
},
{label: "异常处理结果", prop: "errorResult"},
{ label: "扣分人员", prop: "deductPerson" },
{label: "核查时间", prop: "checkTime", formatter: this.formatterDate},
{ label: "扣分分值", prop: "score", formatter: this.formatter },
{label: "核查说明", prop: "checkDesc"},
{
label: "处理状态",
prop: "processStatus",
formatter: this.formatter,
},
{label: "核查结果", prop: "checkResult"},
{label: "处理状态",fixed:"right", prop: "checkStatus",formatter: this.formatter},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{
label: "操作",
fixed:"right",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
{
label: "操作",
width: 200,
formatter: (row) => {
return (
<table-buttons
noAdd
noDel
noEdit
reCheck
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
},
},
],
},
};
},
};
</script>
<template>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="记录ID" prop="recordId" v-model="form.recordId" placeholder="请输入记录ID"/>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/>
<Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="窗口编号" prop="windowNum" v-model="form.windowNum" placeholder="请输入窗口编号"/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/>
<Field label="投诉标题" prop="complainTitle" v-model="form.complainTitle" placeholder="请输入投诉标题"/>
<Field label="投诉内容"><editor v-model="form.complainContent" :min-height="256"/></Field>
<Field label="投诉人真实姓名" prop="complainRealName" v-model="form.complainRealName" placeholder="请输入投诉人真实姓名"/>
<Field label="联系电话" prop="contact" v-model="form.contact" placeholder="请输入联系电话"/>
<Field label="投诉时间" prop="complainTime" v-model="form.complainTime" type="date" />
<Field label="投诉来源" prop="complainSource" v-model="form.complainSource" placeholder="请输入投诉来源"/>
<Field label="投诉设备" prop="complainDevice" v-model="form.complainDevice" placeholder="请输入投诉设备"/>
<Field label="绩效规则id" prop="ruleId" v-model="form.ruleId" placeholder="请输入绩效规则id"/>
<Field label="规则名称" prop="ruleName" v-model="form.ruleName" placeholder="请输入规则名称"/>
<Field label="扣分方式" prop="subMethod" v-model="form.subMethod" type="select" :enumData="dict.subMethod" placeholder="请选择扣分方式"/>
<Field label="扣分人员" prop="deductPerson" v-model="form.deductPerson" placeholder="请输入扣分人员"/>
<Field label="扣分时间" prop="deductTime" v-model="form.deductTime" type="date" />
<Field label="扣分或增加分值" prop="score" v-model="form.score" placeholder="请输入扣分或增加分值"/>
<Field label="核查人员" prop="checkPerson" v-model="form.checkPerson" placeholder="请输入核查人员"/>
<Field label="核查时间" prop="checkTime" v-model="form.checkTime" type="date" />
<Field label="核查说明" prop="checkDesc" v-model="form.checkDesc" type="textarea" placeholder="请输入核查说明"/>
<Field label="核查结果" prop="checkResult" v-model="form.checkResult" placeholder="请输入核查结果"/>
<Field label="处理状态" prop="checkStatus" v-model="form.checkStatus" type="select" :enumData="dict.checkStatus" placeholder="请选择处理状态"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%"
>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field
label="记录ID"
prop="recordId"
v-model="form.recordId"
placeholder="请输入记录ID"
/>
<Field
label="员工ID"
prop="staffId"
v-model="form.staffId"
placeholder="请输入员工ID"
/>
<Field
label="员工姓名"
prop="staffName"
v-model="form.staffName"
placeholder="请输入员工姓名"
/>
<Field
label="工号"
prop="workNum"
v-model="form.workNum"
placeholder="请输入工号"
/>
<Field
label="窗口编号"
prop="windowNum"
v-model="form.windowNum"
placeholder="请输入窗口编号"
/>
<Field
label="所属部门"
prop="deptId"
v-model="form.deptId"
placeholder="请输入所属部门"
/>
<Field
label="所属部门名称"
prop="deptName"
v-model="form.deptName"
placeholder="请输入所属部门名称"
/>
<Field
label="投诉标题"
prop="complainTitle"
v-model="form.complainTitle"
placeholder="请输入投诉标题"
/>
<Field label="投诉内容"
><editor v-model="form.complainContent" :min-height="256"
/></Field>
<Field
label="投诉人真实姓名"
prop="complainRealName"
v-model="form.complainRealName"
placeholder="请输入投诉人真实姓名"
/>
<Field
label="联系电话"
prop="contact"
v-model="form.contact"
placeholder="请输入联系电话"
/>
<Field
label="投诉时间"
prop="complainTime"
v-model="form.complainTime"
type="date"
/>
<Field
label="投诉来源"
prop="complainSource"
v-model="form.complainSource"
placeholder="请输入投诉来源"
/>
<Field
label="投诉设备"
prop="complainDevice"
v-model="form.complainDevice"
placeholder="请输入投诉设备"
/>
<Field
label="绩效规则id"
prop="ruleId"
v-model="form.ruleId"
placeholder="请输入绩效规则id"
/>
<Field
label="规则名称"
prop="ruleName"
v-model="form.ruleName"
placeholder="请输入规则名称"
/>
<Field
label="扣分方式"
prop="subMethod"
v-model="form.subMethod"
type="select"
:enumData="dict.subMethod"
placeholder="请选择扣分方式"
/>
<Field
label="扣分人员"
prop="deductPerson"
v-model="form.deductPerson"
placeholder="请输入扣分人员"
/>
<Field
label="扣分时间"
prop="deductTime"
v-model="form.deductTime"
type="date"
/>
<Field
label="扣分或增加分值"
prop="score"
v-model="form.score"
placeholder="请输入扣分或增加分值"
/>
<Field
label="核查人员"
prop="checkPerson"
v-model="form.checkPerson"
placeholder="请输入核查人员"
/>
<Field
label="核查时间"
prop="checkTime"
v-model="form.checkTime"
type="date"
/>
<Field
label="核查说明"
prop="checkDesc"
v-model="form.checkDesc"
type="textarea"
placeholder="请输入核查说明"
/>
<Field
label="核查结果"
prop="checkResult"
v-model="form.checkResult"
placeholder="请输入核查结果"
/>
<Field
label="处理状态"
prop="checkStatus"
v-model="form.checkStatus"
type="select"
:enumData="dict.checkStatus"
placeholder="请选择处理状态"
/>
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row>
</el-row>
<form-buttons @submit='submitForm' v-if="pageInfo.type!='view'" noCancelBtn />
</el-form>
</el-drawer>
<form-buttons
@submit="submitForm"
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form>
</el-drawer>
</template>
<script>
import form from "@/assets/mixins/formdialog";
export default {
name: "CheckComplainRecordDetail",
mixins: [form],
components: {
},
created() {
this.changePath("check/complain/record")
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "评价绩效投诉核查信息",
// 是否显示弹出层
open: false,
direction:"rtl",
toString:[
"subMethod",
"checkStatus",
],
toDate:[
"complainTime",
"deductTime",
"checkTime",
],
// 表单校验
rules: {
staffName: [
{required: true,message: "请输入员工姓名", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
import form from "@/assets/mixins/formdialog";
export default {
name: "CheckComplainRecordDetail",
mixins: [form],
components: {},
created() {
this.changePath("check/complain/record");
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "评价绩效投诉核查信息",
// 是否显示弹出层
open: false,
direction: "rtl",
toString: ["subMethod", "checkStatus"],
toDate: ["complainTime", "deductTime", "checkTime"],
// 表单校验
rules: {
staffName: [
{ required: true, message: "请输入员工姓名", trigger: "blur" },
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" },
],
createTime: [{ required: true, message: "请选择创建时间" }],
},
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="check/complain/record/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改评价绩效投诉核查信息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "check/complain/record/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增评价绩效投诉核查信息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="check/complain/record/view";
this.getData();
this.pageInfo.type="view"
this.title = "评价绩效投诉核查信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
methods: {
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "check/complain/record/edit";
this.getData();
this.pageInfo.type = "edit";
row.view == "核查"
? (this.title = "评价绩效投诉核查")
: (this.title = "修改评价绩效投诉核查信息");
},
/** 新增 */
add(row) {
this.reset();
this.urls.currUrl = "check/complain/record/add";
this.getData();
this.pageInfo.type = "add";
this.title = "新增评价绩效投诉核查信息";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "check/complain/record/view";
this.getData();
this.pageInfo.type = "view";
this.title = "评价绩效投诉核查信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
recordId : null,
staffId : null,
staffName : "",
workNum : "",
windowNum : "",
deptId : null,
deptName : "",
complainTitle : "",
complainContent : "",
complainRealName : "",
contact : "",
complainTime : null,
complainSource : "",
complainDevice : "",
ruleId : null,
ruleName : "",
subMethod : 1,
deductPerson : "",
deductTime : null,
score : 0.00,
checkPerson : "",
checkTime : null,
checkDesc : "",
checkResult : "",
checkStatus : 1,
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
// 表单重置
reset() {
this.form = {
recordId: null,
staffId: null,
staffName: "",
workNum: "",
windowNum: "",
deptId: null,
deptName: "",
complainTitle: "",
complainContent: "",
complainRealName: "",
contact: "",
complainTime: null,
complainSource: "",
complainDevice: "",
ruleId: null,
ruleName: "",
subMethod: 1,
deductPerson: "",
deductTime: null,
score: 0.0,
checkPerson: "",
checkTime: null,
checkDesc: "",
checkResult: "",
checkStatus: 1,
remark: "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button
slot="table-head-left2"
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="doExport"
:disabled="isExport"
>导出</el-button>
</LayoutTable>
<!-- 评价绩效投诉核查信息导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<el-checkbox
v-model="upload.updateSupport"
/>是否更新已经存在的数据
<el-link type="primary" style="font-size: 14px" @click="downloadTemplate"
>下载模板</el-link
>
</div>
<div class="el-upload__tip" style="color: red" slot="tip">
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<drawer-show ref="drawerform" @ok="getData" />
</div>
<div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button
slot="table-head-left2"
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="doExport"
:disabled="isExport"
>导出</el-button
>
</LayoutTable>
<!-- 评价绩效投诉核查信息导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
<el-link
type="primary"
style="font-size: 14px"
@click="downloadTemplate"
>下载模板</el-link
>
</div>
<div class="el-upload__tip" style="color: red" slot="tip">
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<drawer-show ref="drawerform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "CheckComplainRecordList",
components: {
drawerShow
},
mixins: [table],
created() {
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "CheckComplainRecordList",
components: {
drawerShow,
},
mixins: [table],
created() {},
methods: {
/** 导入 */
handleImport() {
this.upload.title = "评价绩效投诉核查信息导入";
this.upload.open = true;
},
/** 下载模板操作 */
downloadTemplate() {
this.isExport = true;
this.$download(
"/check/complain/record/downloadTemplate",
{},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 文件上传中处理 */
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
/** 文件上传成功处理 */
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getData();
},
/** 提交上传文件 */
submitFileForm() {
this.$refs.upload.submit();
},
/** 导出Excel */
doExport() {
this.isExport = true;
this.$download(
"/check/complain/record/exportExcel",
{
idList: this.selection,
},
methods: {
/** 导入 */
handleImport() {
this.upload.title = "评价绩效投诉核查信息导入";
this.upload.open = true;
},
/** 下载模板操作 */
downloadTemplate() {
this.isExport = true;
this.$download("/check/complain/record/downloadTemplate", {}, { type: "excel" })
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 文件上传中处理 */
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
/** 文件上传成功处理 */
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getData();
},
/** 提交上传文件 */
submitFileForm() {
this.$refs.upload.submit();
},
/** 导出Excel */
doExport() {
this.isExport = true;
this.$download("/check/complain/record/exportExcel", {
"idList": this.selection,
}, { type: "excel" }).then(() => this.isExport = false).catch(error => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.drawerform.view(row);
},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
row.view = "核查";
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
row.view = "查看";
this.$refs.drawerform.view(row);
},
},
data() {
return {
// 用户导入参数
upload: {
// 是否显示弹出层(评价绩效投诉核查信息导入)
open: false,
// 弹出层标题(评价绩效投诉核查信息导入)
title: "导入评价绩效投诉核查信息数据",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的数据
updateSupport: 0,
// 上传的地址
url: "/m/check/complain/record/importData",
},
isExport: false,
},
data() {
return {
// 用户导入参数
upload: {
// 是否显示弹出层(评价绩效投诉核查信息导入)
open: false,
// 弹出层标题(评价绩效投诉核查信息导入)
title: "导入评价绩效投诉核查信息数据",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的数据
updateSupport: 0,
// 上传的地址
url: "/m/check/complain/record/importData",
},
isExport: false,
config: {
isshowTabPane:true,
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "员工姓名", prop: "staffName"},
{label: "所属部门名称", prop: "deptName"},
{label: "投诉时间", prop: "complainTime", formatter: this.formatterDate},
{label: "扣分方式", prop: "subMethod",formatter: this.formatter},
{label: "扣分时间", prop: "deductTime", formatter: this.formatterDate},
{label: "扣分或增加分值", prop: "score", formatter: this.formatter},
{label: "核查时间", prop: "checkTime", formatter: this.formatterDate},
{label: "处理状态", prop: "checkStatus",formatter: this.formatter},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
config: {
isshowTabPane: true,
search: [
{
name: "status",
type: "select",
label: "全部状态",
fuzzy: false,
},
{
name: "deptId",
type: "select",
label: "全部部门",
fuzzy: false,
},
{
name: "source",
type: "select",
label: "全部来源",
fuzzy: false,
},
{
name: "date",
type: "date",
label: "请选择日期",
fuzzy: false,
},
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
fuzzy: false,
},
],
columns: [
{ type: "selection", width: 50 },
{ type: "index", label: "序号", width: 50 },
{ label: "姓名", prop: "staffName" },
{ label: "窗口编号", prop: "windowNum" },
{ label: "所属部门", prop: "deptName" },
{ label: "投诉标题", prop: "complainTitle" },
{ label: "投诉内容", prop: "complainContent" },
{ label: "投诉人真实姓名", prop: "complainRealName" },
{ label: "联系电话", prop: "contact" },
{
label: "投诉时间",
prop: "complainTime",
formatter: this.formatterDate,
},
{ label: "投诉来源", prop: "complainSource" },
{ label: "图片凭证", prop: "snapPath" },
{ label: "投诉设备", prop: "complainDevice" },
{ label: "绩效规则", prop: "ruleNme" },
{ label: "扣分方式", prop: "subMethod", formatter: this.formatter },
{
label: "扣分时间",
prop: "deductTime",
formatter: this.formatterDate,
},
{ label: "扣分人员", prop: "deductPerson" },
{ label: "扣分分值", prop: "score", formatter: this.formatter },
{
label: "处理状态",
prop: "processStatus",
formatter: this.formatter,
},
{
label: "操作",
width: 200,
formatter: (row) => {
return (
<table-buttons
noAdd
noDel
reCheck
noEdit
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
},
},
],
},
};
},
};
</script>
<template>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="记录ID" prop="recordId" v-model="form.recordId" placeholder="请输入记录ID"/>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/>
<Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="窗口编号" prop="windowNum" v-model="form.windowNum" placeholder="请输入窗口编号"/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/>
<Field label="违规类型" prop="irregularType" v-model="form.irregularType" type="select" :enumData="dict.irregularType" placeholder="请选择违规类型"/>
<Field label="发生时间" prop="happenTime" v-model="form.happenTime" type="date" />
<Field label="持续时间,秒" prop="duration" v-model="form.duration" placeholder="请输入持续时间,秒"/>
<Field label="报警时间" prop="alarmTime" v-model="form.alarmTime" type="date" />
<Field label="图片凭证地址" prop="snapPath" v-model="form.snapPath" type="textarea" placeholder="请输入图片凭证地址"/>
<Field label="绩效规则id" prop="ruleId" v-model="form.ruleId" placeholder="请输入绩效规则id"/>
<Field label="规则名称" prop="ruleName" v-model="form.ruleName" placeholder="请输入规则名称"/>
<Field label="扣分方式" prop="subMethod" v-model="form.subMethod" type="select" :enumData="dict.subMethod" placeholder="请选择扣分方式"/>
<Field label="扣分人员" prop="deductPerson" v-model="form.deductPerson" placeholder="请输入扣分人员"/>
<Field label="扣分时间" prop="deductTime" v-model="form.deductTime" type="date" />
<Field label="扣分或增加分值" prop="score" v-model="form.score" placeholder="请输入扣分或增加分值"/>
<Field label="核查人员" prop="checkPerson" v-model="form.checkPerson" placeholder="请输入核查人员"/>
<Field label="核查时间" prop="checkTime" v-model="form.checkTime" type="date" />
<Field label="核查说明" prop="checkDesc" v-model="form.checkDesc" type="textarea" placeholder="请输入核查说明"/>
<Field label="核查结果" prop="checkResult" v-model="form.checkResult" placeholder="请输入核查结果"/>
<Field label="处理状态" prop="checkStatus" v-model="form.checkStatus" type="select" :enumData="dict.checkStatus" placeholder="请选择处理状态"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%"
>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field
label="记录ID"
prop="recordId"
v-model="form.recordId"
placeholder="请输入记录ID"
/>
<Field
label="员工ID"
prop="staffId"
v-model="form.staffId"
placeholder="请输入员工ID"
/>
<Field
label="员工姓名"
prop="staffName"
v-model="form.staffName"
placeholder="请输入员工姓名"
/>
<Field
label="工号"
prop="workNum"
v-model="form.workNum"
placeholder="请输入工号"
/>
<Field
label="窗口编号"
prop="windowNum"
v-model="form.windowNum"
placeholder="请输入窗口编号"
/>
<Field
label="所属部门"
prop="deptId"
v-model="form.deptId"
placeholder="请输入所属部门"
/>
<Field
label="所属部门名称"
prop="deptName"
v-model="form.deptName"
placeholder="请输入所属部门名称"
/>
<Field
label="违规类型"
prop="irregularType"
v-model="form.irregularType"
type="select"
:enumData="dict.irregularType"
placeholder="请选择违规类型"
/>
<Field
label="发生时间"
prop="happenTime"
v-model="form.happenTime"
type="date"
/>
<Field
label="持续时间,秒"
prop="duration"
v-model="form.duration"
placeholder="请输入持续时间,秒"
/>
<Field
label="报警时间"
prop="alarmTime"
v-model="form.alarmTime"
type="date"
/>
<Field
label="图片凭证地址"
prop="snapPath"
v-model="form.snapPath"
type="textarea"
placeholder="请输入图片凭证地址"
/>
<Field
label="绩效规则id"
prop="ruleId"
v-model="form.ruleId"
placeholder="请输入绩效规则id"
/>
<Field
label="规则名称"
prop="ruleName"
v-model="form.ruleName"
placeholder="请输入规则名称"
/>
<Field
label="扣分方式"
prop="subMethod"
v-model="form.subMethod"
type="select"
:enumData="dict.subMethod"
placeholder="请选择扣分方式"
/>
<Field
label="扣分人员"
prop="deductPerson"
v-model="form.deductPerson"
placeholder="请输入扣分人员"
/>
<Field
label="扣分时间"
prop="deductTime"
v-model="form.deductTime"
type="date"
/>
<Field
label="扣分或增加分值"
prop="score"
v-model="form.score"
placeholder="请输入扣分或增加分值"
/>
<Field
label="核查人员"
prop="checkPerson"
v-model="form.checkPerson"
placeholder="请输入核查人员"
/>
<Field
label="核查时间"
prop="checkTime"
v-model="form.checkTime"
type="date"
/>
<Field
label="核查说明"
prop="checkDesc"
v-model="form.checkDesc"
type="textarea"
placeholder="请输入核查说明"
/>
<Field
label="核查结果"
prop="checkResult"
v-model="form.checkResult"
placeholder="请输入核查结果"
/>
<Field
label="处理状态"
prop="checkStatus"
v-model="form.checkStatus"
type="select"
:enumData="dict.checkStatus"
placeholder="请选择处理状态"
/>
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row>
</el-row>
<form-buttons @submit='submitForm' v-if="pageInfo.type!='view'" noCancelBtn />
</el-form>
</el-drawer>
<form-buttons
@submit="submitForm"
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form>
</el-drawer>
</template>
<script>
import form from "@/assets/mixins/formdialog";
export default {
name: "CheckEffectRecordDetail",
mixins: [form],
components: {
},
created() {
this.changePath("check/effect/record")
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "效能绩效核查信息",
// 是否显示弹出层
open: false,
direction:"rtl",
toString:[
"irregularType",
"subMethod",
"checkStatus",
],
toDate:[
"happenTime",
"alarmTime",
"deductTime",
"checkTime",
],
// 表单校验
rules: {
staffName: [
{required: true,message: "请输入员工姓名", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
import form from "@/assets/mixins/formdialog";
export default {
name: "CheckEffectRecordDetail",
mixins: [form],
components: {},
created() {
this.changePath("check/effect/record");
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "效能绩效核查信息",
// 是否显示弹出层
open: false,
direction: "rtl",
toString: ["irregularType", "subMethod", "checkStatus"],
toDate: ["happenTime", "alarmTime", "deductTime", "checkTime"],
// 表单校验
rules: {
staffName: [
{ required: true, message: "请输入员工姓名", trigger: "blur" },
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" },
],
createTime: [{ required: true, message: "请选择创建时间" }],
},
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="check/effect/record/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改效能绩效核查信息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "check/effect/record/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增效能绩效核查信息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="check/effect/record/view";
this.getData();
this.pageInfo.type="view"
this.title = "效能绩效核查信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
methods: {
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "check/effect/record/edit";
this.getData();
this.pageInfo.type = "edit";
row.view == "核查"
? (this.title = "效能绩效核查")
: (this.title = "修改效能绩效核查信息");
},
/** 新增 */
add(row) {
this.reset();
this.urls.currUrl = "check/effect/record/add";
this.getData();
this.pageInfo.type = "add";
this.title = "新增效能绩效核查信息";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "check/effect/record/view";
this.getData();
this.pageInfo.type = "view";
this.title = "效能绩效核查信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
recordId : null,
staffId : null,
staffName : "",
workNum : "",
windowNum : "",
deptId : null,
deptName : "",
irregularType : null,
happenTime : null,
duration : 0,
alarmTime : null,
snapPath : "",
ruleId : null,
ruleName : "",
subMethod : 1,
deductPerson : "",
deductTime : null,
score : 0.00,
checkPerson : "",
checkTime : null,
checkDesc : "",
checkResult : "",
checkStatus : 1,
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
// 表单重置
reset() {
this.form = {
recordId: null,
staffId: null,
staffName: "",
workNum: "",
windowNum: "",
deptId: null,
deptName: "",
irregularType: null,
happenTime: null,
duration: 0,
alarmTime: null,
snapPath: "",
ruleId: null,
ruleName: "",
subMethod: 1,
deductPerson: "",
deductTime: null,
score: 0.0,
checkPerson: "",
checkTime: null,
checkDesc: "",
checkResult: "",
checkStatus: 1,
remark: "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button
slot="table-head-left2"
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="doExport"
:disabled="isExport"
>导出</el-button>
</LayoutTable>
<!-- 效能绩效核查信息导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<el-checkbox
v-model="upload.updateSupport"
/>是否更新已经存在的数据
<el-link type="primary" style="font-size: 14px" @click="downloadTemplate"
>下载模板</el-link
>
</div>
<div class="el-upload__tip" style="color: red" slot="tip">
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<drawer-show ref="drawerform" @ok="getData" />
</div>
<div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button
slot="table-head-left2"
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="doExport"
:disabled="isExport"
>导出</el-button
>
</LayoutTable>
<!-- 效能绩效核查信息导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
<el-link
type="primary"
style="font-size: 14px"
@click="downloadTemplate"
>下载模板</el-link
>
</div>
<div class="el-upload__tip" style="color: red" slot="tip">
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<drawer-show ref="drawerform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "CheckEffectRecordList",
components: {
drawerShow
},
mixins: [table],
created() {
},
methods: {
/** 导入 */
handleImport() {
this.upload.title = "效能绩效核查信息导入";
this.upload.open = true;
},
/** 下载模板操作 */
downloadTemplate() {
this.isExport = true;
this.$download("/check/effect/record/downloadTemplate", {}, { type: "excel" })
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 文件上传中处理 */
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
/** 文件上传成功处理 */
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getData();
},
/** 提交上传文件 */
submitFileForm() {
this.$refs.upload.submit();
},
/** 导出Excel */
doExport() {
this.isExport = true;
this.$download("/check/effect/record/exportExcel", {
"idList": this.selection,
}, { type: "excel" }).then(() => this.isExport = false).catch(error => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.drawerform.view(row);
},
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "CheckEffectRecordList",
components: {
drawerShow,
},
mixins: [table],
created() {},
methods: {
/** 导入 */
handleImport() {
this.upload.title = "效能绩效核查信息导入";
this.upload.open = true;
},
/** 下载模板操作 */
downloadTemplate() {
this.isExport = true;
this.$download(
"/check/effect/record/downloadTemplate",
{},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 文件上传中处理 */
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
/** 文件上传成功处理 */
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getData();
},
/** 提交上传文件 */
submitFileForm() {
this.$refs.upload.submit();
},
/** 导出Excel */
doExport() {
this.isExport = true;
this.$download(
"/check/effect/record/exportExcel",
{
idList: this.selection,
},
data() {
return {
// 用户导入参数
upload: {
// 是否显示弹出层(效能绩效核查信息导入)
open: false,
// 弹出层标题(效能绩效核查信息导入)
title: "导入效能绩效核查信息数据",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的数据
updateSupport: 0,
// 上传的地址
url: "/m/check/effect/record/importData",
},
isExport: false,
config: {
isshowTabPane:true,
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "员工姓名", prop: "staffName"},
{label: "工号", prop: "workNum"},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
row.view = "核查";
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
row.view = "查看";
this.$refs.drawerform.view(row);
},
},
data() {
return {
// 用户导入参数
upload: {
// 是否显示弹出层(效能绩效核查信息导入)
open: false,
// 弹出层标题(效能绩效核查信息导入)
title: "导入效能绩效核查信息数据",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的数据
updateSupport: 0,
// 上传的地址
url: "/m/check/effect/record/importData",
},
isExport: false,
config: {
isshowTabPane: true,
search: [
{
name: "status",
type: "select",
label: "全部状态",
fuzzy: false,
},
{
name: "deptId",
type: "select",
label: "全部部门",
fuzzy: false,
},
{label: "窗口编号", prop: "windowNum"},
{
name: "date",
type: "date",
label: "请选择日期",
fuzzy: false,
},
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
fuzzy: false,
},
],
columns: [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{label: "所属部门", prop: "deptId", formatter: this.formatter},
{ label: "姓名", prop: "staffName" },
{label: "所属部门名称", prop: "deptName"},
{ label: "窗口编号", prop: "windowNum" },
{label: "违规类型", prop: "irregularType",formatter: this.formatter},
{ label: "所属部门", prop: "deptName" },
{label: "发生时间", prop: "happenTime", formatter: this.formatterDate},
{
label: "违规类型",
prop: "irregularType",
formatter: this.formatter,
},
{label: "持续时间,秒", prop: "duration",formatter: this.formatter},
{
label: "发生时间",
prop: "happenTime",
formatter: this.formatterDate,
},
{label: "报警时间", prop: "alarmTime", formatter: this.formatterDate},
{
label: "时长",
prop: "duration",
formatter: this.formatter,
},
{label: "图片凭证地址", prop: "snapPath"},
{
label: "报警时间",
prop: "alarmTime",
formatter: this.formatterDate,
},
{label: "绩效规则id", prop: "ruleId", formatter: this.formatter},
{ label: "图片凭证", prop: "snapPath" },
{label: "规则名称", prop: "ruleName"},
{ label: "绩效规则", prop: "ruleName" },
{label: "扣分方式", prop: "subMethod",formatter: this.formatter},
{ label: "扣分方式", prop: "subMethod", formatter: this.formatter },
{label: "扣分人员", prop: "deductPerson"},
{
label: "扣分时间",
prop: "deductTime",
formatter: this.formatterDate,
},
{label: "扣分时间", prop: "deductTime", formatter: this.formatterDate},
{ label: "扣分人员", prop: "deductPerson" },
{label: "扣分或增加分值", prop: "score", formatter: this.formatter},
{ label: "扣分分值", prop: "score", formatter: this.formatter },
{label: "核查人员", prop: "checkPerson"},
{
label: "处理状态",
prop: "processStatus",
formatter: this.formatter,
},
{label: "核查时间", prop: "checkTime", formatter: this.formatterDate},
{label: "核查说明", prop: "checkDesc"},
{label: "核查结果", prop: "checkResult"},
{label: "处理状态", prop: "checkStatus",formatter: this.formatter},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
{
label: "操作",
width: 240,
formatter: (row) => {
return (
<table-buttons
noAdd
noDel
noEdit
reCheck
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
},
},
],
},
};
},
};
</script>
<template>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="记录ID" prop="recordId" v-model="form.recordId" placeholder="请输入记录ID"/>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/>
<Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="窗口编号" prop="windowNum" v-model="form.windowNum" placeholder="请输入窗口编号"/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/>
<Field label="办件编码" prop="goworkCode" v-model="form.goworkCode" placeholder="请输入办件编码"/>
<Field label="办件所属部门" prop="goworkDepts" v-model="form.goworkDepts" type="textarea" placeholder="请输入办件所属部门"/>
<Field label="事项名称" prop="matterlName" v-model="form.matterlName" type="textarea" placeholder="请输入事项名称"/>
<Field label="办理时间" prop="goworkTime" v-model="form.goworkTime" type="date" />
<Field label="绩效规则id" prop="ruleId" v-model="form.ruleId" placeholder="请输入绩效规则id"/>
<Field label="规则名称" prop="ruleName" v-model="form.ruleName" placeholder="请输入规则名称"/>
<Field label="扣分方式" prop="subMethod" v-model="form.subMethod" type="select" :enumData="dict.subMethod" placeholder="请选择扣分方式"/>
<Field label="扣分人员" prop="deductPerson" v-model="form.deductPerson" placeholder="请输入扣分人员"/>
<Field label="扣分时间" prop="deductTime" v-model="form.deductTime" type="date" />
<Field label="扣分或增加分值" prop="score" v-model="form.score" placeholder="请输入扣分或增加分值"/>
<Field label="核查人员" prop="checkPerson" v-model="form.checkPerson" placeholder="请输入核查人员"/>
<Field label="核查时间" prop="checkTime" v-model="form.checkTime" type="date" />
<Field label="核查说明" prop="checkDesc" v-model="form.checkDesc" type="textarea" placeholder="请输入核查说明"/>
<Field label="核查结果" prop="checkResult" v-model="form.checkResult" placeholder="请输入核查结果"/>
<Field label="处理状态" prop="checkStatus" v-model="form.checkStatus" type="select" :enumData="dict.checkStatus" placeholder="请选择处理状态"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%"
>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field
label="记录ID"
prop="recordId"
v-model="form.recordId"
placeholder="请输入记录ID"
/>
<Field
label="员工ID"
prop="staffId"
v-model="form.staffId"
placeholder="请输入员工ID"
/>
<Field
label="员工姓名"
prop="staffName"
v-model="form.staffName"
placeholder="请输入员工姓名"
/>
<Field
label="工号"
prop="workNum"
v-model="form.workNum"
placeholder="请输入工号"
/>
<Field
label="窗口编号"
prop="windowNum"
v-model="form.windowNum"
placeholder="请输入窗口编号"
/>
<Field
label="所属部门"
prop="deptId"
v-model="form.deptId"
placeholder="请输入所属部门"
/>
<Field
label="所属部门名称"
prop="deptName"
v-model="form.deptName"
placeholder="请输入所属部门名称"
/>
<Field
label="办件编码"
prop="goworkCode"
v-model="form.goworkCode"
placeholder="请输入办件编码"
/>
<Field
label="办件所属部门"
prop="goworkDepts"
v-model="form.goworkDepts"
type="textarea"
placeholder="请输入办件所属部门"
/>
<Field
label="事项名称"
prop="matterlName"
v-model="form.matterlName"
type="textarea"
placeholder="请输入事项名称"
/>
<Field
label="办理时间"
prop="goworkTime"
v-model="form.goworkTime"
type="date"
/>
<Field
label="绩效规则id"
prop="ruleId"
v-model="form.ruleId"
placeholder="请输入绩效规则id"
/>
<Field
label="规则名称"
prop="ruleName"
v-model="form.ruleName"
placeholder="请输入规则名称"
/>
<Field
label="扣分方式"
prop="subMethod"
v-model="form.subMethod"
type="select"
:enumData="dict.subMethod"
placeholder="请选择扣分方式"
/>
<Field
label="扣分人员"
prop="deductPerson"
v-model="form.deductPerson"
placeholder="请输入扣分人员"
/>
<Field
label="扣分时间"
prop="deductTime"
v-model="form.deductTime"
type="date"
/>
<Field
label="扣分或增加分值"
prop="score"
v-model="form.score"
placeholder="请输入扣分或增加分值"
/>
<Field
label="核查人员"
prop="checkPerson"
v-model="form.checkPerson"
placeholder="请输入核查人员"
/>
<Field
label="核查时间"
prop="checkTime"
v-model="form.checkTime"
type="date"
/>
<Field
label="核查说明"
prop="checkDesc"
v-model="form.checkDesc"
type="textarea"
placeholder="请输入核查说明"
/>
<Field
label="核查结果"
prop="checkResult"
v-model="form.checkResult"
placeholder="请输入核查结果"
/>
<Field
label="处理状态"
prop="checkStatus"
v-model="form.checkStatus"
type="select"
:enumData="dict.checkStatus"
placeholder="请选择处理状态"
/>
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row>
</el-row>
<form-buttons @submit='submitForm' v-if="pageInfo.type!='view'" noCancelBtn />
</el-form>
</el-drawer>
<form-buttons
@submit="submitForm"
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form>
</el-drawer>
</template>
<script>
import form from "@/assets/mixins/formdialog";
export default {
name: "CheckGoworkRecordDetail",
mixins: [form],
components: {
},
created() {
this.changePath("check/gowork/record")
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "办件绩效核查信息",
// 是否显示弹出层
open: false,
direction:"rtl",
toString:[
"subMethod",
"checkStatus",
],
toDate:[
"goworkTime",
"deductTime",
"checkTime",
],
// 表单校验
rules: {
staffName: [
{required: true,message: "请输入员工姓名", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
import form from "@/assets/mixins/formdialog";
export default {
name: "CheckGoworkRecordDetail",
mixins: [form],
components: {},
created() {
this.changePath("check/gowork/record");
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "办件绩效核查信息",
// 是否显示弹出层
open: false,
direction: "rtl",
toString: ["subMethod", "checkStatus"],
toDate: ["goworkTime", "deductTime", "checkTime"],
// 表单校验
rules: {
staffName: [
{ required: true, message: "请输入员工姓名", trigger: "blur" },
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" },
],
createTime: [{ required: true, message: "请选择创建时间" }],
},
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="check/gowork/record/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改办件绩效核查信息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "check/gowork/record/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增办件绩效核查信息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="check/gowork/record/view";
this.getData();
this.pageInfo.type="view"
this.title = "办件绩效核查信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
methods: {
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "check/gowork/record/edit";
this.getData();
this.pageInfo.type = "edit";
row.view == "核查"
? (this.title = "办件绩效核查")
: (this.title = "修改办件绩效核查信息");
},
/** 新增 */
add(row) {
this.reset();
this.urls.currUrl = "check/gowork/record/add";
this.getData();
this.pageInfo.type = "add";
this.title = "新增办件绩效核查信息";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "check/gowork/record/view";
this.getData();
this.pageInfo.type = "view";
this.title = "办件绩效核查信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
recordId : null,
staffId : null,
staffName : "",
workNum : "",
windowNum : "",
deptId : null,
deptName : "",
goworkCode : "",
goworkDepts : "",
matterlName : "",
goworkTime : null,
ruleId : null,
ruleName : "",
subMethod : 1,
deductPerson : "",
deductTime : null,
score : 0.00,
checkPerson : "",
checkTime : null,
checkDesc : "",
checkResult : "",
checkStatus : 1,
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
// 表单重置
reset() {
this.form = {
recordId: null,
staffId: null,
staffName: "",
workNum: "",
windowNum: "",
deptId: null,
deptName: "",
goworkCode: "",
goworkDepts: "",
matterlName: "",
goworkTime: null,
ruleId: null,
ruleName: "",
subMethod: 1,
deductPerson: "",
deductTime: null,
score: 0.0,
checkPerson: "",
checkTime: null,
checkDesc: "",
checkResult: "",
checkStatus: 1,
remark: "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button
slot="table-head-left2"
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="doExport"
:disabled="isExport"
>导出</el-button>
</LayoutTable>
<!-- 办件绩效核查信息导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<el-checkbox
v-model="upload.updateSupport"
/>是否更新已经存在的数据
<el-link type="primary" style="font-size: 14px" @click="downloadTemplate"
>下载模板</el-link
>
</div>
<div class="el-upload__tip" style="color: red" slot="tip">
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<drawer-show ref="drawerform" @ok="getData" />
</div>
<div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button
slot="table-head-left2"
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="doExport"
:disabled="isExport"
>导出</el-button
>
</LayoutTable>
<!-- 办件绩效核查信息导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
<el-link
type="primary"
style="font-size: 14px"
@click="downloadTemplate"
>下载模板</el-link
>
</div>
<div class="el-upload__tip" style="color: red" slot="tip">
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<drawer-show ref="drawerform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "CheckGoworkRecordList",
components: {
drawerShow
},
mixins: [table],
created() {
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "CheckGoworkRecordList",
components: {
drawerShow,
},
mixins: [table],
created() {},
methods: {
/** 导入 */
handleImport() {
this.upload.title = "办件绩效核查信息导入";
this.upload.open = true;
},
/** 下载模板操作 */
downloadTemplate() {
this.isExport = true;
this.$download(
"/check/gowork/record/downloadTemplate",
{},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 文件上传中处理 */
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
/** 文件上传成功处理 */
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getData();
},
/** 提交上传文件 */
submitFileForm() {
this.$refs.upload.submit();
},
/** 导出Excel */
doExport() {
this.isExport = true;
this.$download(
"/check/gowork/record/exportExcel",
{
idList: this.selection,
},
methods: {
/** 导入 */
handleImport() {
this.upload.title = "办件绩效核查信息导入";
this.upload.open = true;
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
row.view = "核查";
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
row.view = "查看";
this.$refs.drawerform.view(row);
},
},
data() {
return {
// 用户导入参数
upload: {
// 是否显示弹出层(办件绩效核查信息导入)
open: false,
// 弹出层标题(办件绩效核查信息导入)
title: "导入办件绩效核查信息数据",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的数据
updateSupport: 0,
// 上传的地址
url: "/m/check/gowork/record/importData",
},
isExport: false,
config: {
isshowTabPane: true,
search: [
{
name: "status",
type: "select",
label: "全部状态",
fuzzy: false,
},
{
name: "deptId",
type: "select",
label: "全部部门",
fuzzy: false,
},
{
name: "date",
type: "date",
label: "请选择日期",
fuzzy: false,
},
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
fuzzy: false,
},
],
columns: [
{ type: "selection", width: 50 },
{ type: "index", label: "序号", width: 50 },
{ label: "姓名", prop: "staffName" },
{ label: "窗口编号", prop: "windowNum" },
{ label: "所属部门", prop: "deptName" },
{ label: "办件编码", prop: "goworkCode" },
{ label: "办件所属部门", prop: "goworkDepts" },
{ label: "事项名称", prop: "matterlName" },
{
label: "办理时间",
prop: "goworkTime",
formatter: this.formatterDate,
},
{ label: "图片凭证", prop: "snapPath" },
{ label: "绩效规则", prop: "ruleName" },
{ label: "扣分方式", prop: "subMethod", formatter: this.formatter },
{
label: "扣分时间",
prop: "deductTime",
formatter: this.formatterDate,
},
{ label: "扣分人员", prop: "deductPerson" },
{ label: "扣分分值", prop: "score", formatter: this.formatter },
{
label: "处理状态",
prop: "processStatus",
formatter: this.formatter,
},
{
label: "操作",
width: 240,
formatter: (row) => {
return (
<table-buttons
noAdd
noDel
noEdit
reCheck
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
},
/** 下载模板操作 */
downloadTemplate() {
this.isExport = true;
this.$download("/check/gowork/record/downloadTemplate", {}, { type: "excel" })
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 文件上传中处理 */
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
/** 文件上传成功处理 */
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getData();
},
/** 提交上传文件 */
submitFileForm() {
this.$refs.upload.submit();
},
/** 导出Excel */
doExport() {
this.isExport = true;
this.$download("/check/gowork/record/exportExcel", {
"idList": this.selection,
}, { type: "excel" }).then(() => this.isExport = false).catch(error => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.drawerform.view(row);
},
},
data() {
return {
// 用户导入参数
upload: {
// 是否显示弹出层(办件绩效核查信息导入)
open: false,
// 弹出层标题(办件绩效核查信息导入)
title: "导入办件绩效核查信息数据",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的数据
updateSupport: 0,
// 上传的地址
url: "/m/check/gowork/record/importData",
},
isExport: false,
config: {
isshowTabPane:true,
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "员工姓名", prop: "staffName"},
{label: "工号", prop: "workNum"},
{label: "窗口编号", prop: "windowNum"},
{label: "所属部门", prop: "deptId", formatter: this.formatter},
{label: "所属部门名称", prop: "deptName"},
{label: "办件编码", prop: "goworkCode"},
{label: "办件所属部门", prop: "goworkDepts"},
{label: "事项名称", prop: "matterlName"},
{label: "办理时间", prop: "goworkTime", formatter: this.formatterDate},
{label: "绩效规则id", prop: "ruleId", formatter: this.formatter},
{label: "规则名称", prop: "ruleName"},
{label: "扣分方式", prop: "subMethod",formatter: this.formatter},
{label: "扣分人员", prop: "deductPerson"},
{label: "扣分时间", prop: "deductTime", formatter: this.formatterDate},
{label: "扣分或增加分值", prop: "score", formatter: this.formatter},
{label: "核查人员", prop: "checkPerson"},
{label: "核查时间", prop: "checkTime", formatter: this.formatterDate},
{label: "核查说明", prop: "checkDesc"},
{label: "核查结果", prop: "checkResult"},
{label: "处理状态", prop: "checkStatus",formatter: this.formatter},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
},
],
},
};
},
};
</script>
<template>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="记录ID" prop="recordId" v-model="form.recordId" placeholder="请输入记录ID"/>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/>
<Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/>
<Field label="窗口编号" prop="windowNum" v-model="form.windowNum" placeholder="请输入窗口编号"/>
<Field label="违规类型" prop="irregularOtherType" v-model="form.irregularOtherType" type="select" :enumData="dict.irregularOtherType" placeholder="请选择违规类型"/>
<Field label="发生时间" prop="happenTime" v-model="form.happenTime" type="date" />
<Field label="持续时间,秒" prop="duration" v-model="form.duration" placeholder="请输入持续时间,秒"/>
<Field label="绩效规则id" prop="ruleId" v-model="form.ruleId" placeholder="请输入绩效规则id"/>
<Field label="规则名称" prop="ruleName" v-model="form.ruleName" placeholder="请输入规则名称"/>
<Field label="评分标准" prop="ruleDesc" v-model="form.ruleDesc" type="textarea" placeholder="请输入评分标准"/>
<Field label="扣分方式" prop="subMethod" v-model="form.subMethod" type="select" :enumData="dict.subMethod" placeholder="请选择扣分方式"/>
<Field label="扣分人员" prop="deductPerson" v-model="form.deductPerson" placeholder="请输入扣分人员"/>
<Field label="扣分时间" prop="deductTime" v-model="form.deductTime" type="date" />
<Field label="扣分或增加分值" prop="score" v-model="form.score" placeholder="请输入扣分或增加分值"/>
<Field label="核查人员" prop="checkPerson" v-model="form.checkPerson" placeholder="请输入核查人员"/>
<Field label="核查时间" prop="checkTime" v-model="form.checkTime" type="date" />
<Field label="核查说明" prop="checkDesc" v-model="form.checkDesc" type="textarea" placeholder="请输入核查说明"/>
<Field label="核查结果" prop="checkResult" v-model="form.checkResult" placeholder="请输入核查结果"/>
<Field label="处理状态" prop="checkStatus" v-model="form.checkStatus" type="select" :enumData="dict.checkStatus" placeholder="请选择处理状态"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%"
>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field
label="记录ID"
prop="recordId"
v-model="form.recordId"
placeholder="请输入记录ID"
/>
<Field
label="员工ID"
prop="staffId"
v-model="form.staffId"
placeholder="请输入员工ID"
/>
<Field
label="员工姓名"
prop="staffName"
v-model="form.staffName"
placeholder="请输入员工姓名"
/>
<Field
label="工号"
prop="workNum"
v-model="form.workNum"
placeholder="请输入工号"
/>
<Field
label="所属部门"
prop="deptId"
v-model="form.deptId"
placeholder="请输入所属部门"
/>
<Field
label="所属部门名称"
prop="deptName"
v-model="form.deptName"
placeholder="请输入所属部门名称"
/>
<Field
label="窗口编号"
prop="windowNum"
v-model="form.windowNum"
placeholder="请输入窗口编号"
/>
<Field
label="违规类型"
prop="irregularOtherType"
v-model="form.irregularOtherType"
type="select"
:enumData="dict.irregularOtherType"
placeholder="请选择违规类型"
/>
<Field
label="发生时间"
prop="happenTime"
v-model="form.happenTime"
type="date"
/>
<Field
label="持续时间,秒"
prop="duration"
v-model="form.duration"
placeholder="请输入持续时间,秒"
/>
<Field
label="绩效规则id"
prop="ruleId"
v-model="form.ruleId"
placeholder="请输入绩效规则id"
/>
<Field
label="规则名称"
prop="ruleName"
v-model="form.ruleName"
placeholder="请输入规则名称"
/>
<Field
label="评分标准"
prop="ruleDesc"
v-model="form.ruleDesc"
type="textarea"
placeholder="请输入评分标准"
/>
<Field
label="扣分方式"
prop="subMethod"
v-model="form.subMethod"
type="select"
:enumData="dict.subMethod"
placeholder="请选择扣分方式"
/>
<Field
label="扣分人员"
prop="deductPerson"
v-model="form.deductPerson"
placeholder="请输入扣分人员"
/>
<Field
label="扣分时间"
prop="deductTime"
v-model="form.deductTime"
type="date"
/>
<Field
label="扣分或增加分值"
prop="score"
v-model="form.score"
placeholder="请输入扣分或增加分值"
/>
<Field
label="核查人员"
prop="checkPerson"
v-model="form.checkPerson"
placeholder="请输入核查人员"
/>
<Field
label="核查时间"
prop="checkTime"
v-model="form.checkTime"
type="date"
/>
<Field
label="核查说明"
prop="checkDesc"
v-model="form.checkDesc"
type="textarea"
placeholder="请输入核查说明"
/>
<Field
label="核查结果"
prop="checkResult"
v-model="form.checkResult"
placeholder="请输入核查结果"
/>
<Field
label="处理状态"
prop="checkStatus"
v-model="form.checkStatus"
type="select"
:enumData="dict.checkStatus"
placeholder="请选择处理状态"
/>
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row>
</el-row>
<form-buttons @submit='submitForm' v-if="pageInfo.type!='view'" noCancelBtn />
</el-form>
</el-drawer>
<form-buttons
@submit="submitForm"
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form>
</el-drawer>
</template>
<script>
import form from "@/assets/mixins/formdialog";
export default {
name: "CheckOtherRecordDetail",
mixins: [form],
components: {
},
created() {
this.changePath("check/other/record")
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "其它绩效核查信息",
// 是否显示弹出层
open: false,
direction:"rtl",
toString:[
"irregularOtherType",
"subMethod",
"checkStatus",
],
toDate:[
"happenTime",
"deductTime",
"checkTime",
],
// 表单校验
rules: {
staffName: [
{required: true,message: "请输入员工姓名", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
import form from "@/assets/mixins/formdialog";
export default {
name: "CheckOtherRecordDetail",
mixins: [form],
components: {},
created() {
this.changePath("check/other/record");
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "其它绩效核查信息",
// 是否显示弹出层
open: false,
direction: "rtl",
toString: ["irregularOtherType", "subMethod", "checkStatus"],
toDate: ["happenTime", "deductTime", "checkTime"],
// 表单校验
rules: {
staffName: [
{ required: true, message: "请输入员工姓名", trigger: "blur" },
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" },
],
createTime: [{ required: true, message: "请选择创建时间" }],
},
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="check/other/record/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改其它绩效核查信息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "check/other/record/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增其它绩效核查信息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="check/other/record/view";
this.getData();
this.pageInfo.type="view"
this.title = "其它绩效核查信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
methods: {
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "check/other/record/edit";
this.getData();
this.pageInfo.type = "edit";
row.view == "核查"
? (this.title = "其它绩效核查")
: (this.title = "修改其它绩效核查信息");
},
/** 新增 */
add(row) {
this.reset();
this.urls.currUrl = "check/other/record/add";
this.getData();
this.pageInfo.type = "add";
this.title = "新增其它绩效核查信息";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "check/other/record/view";
this.getData();
this.pageInfo.type = "view";
this.title = "其它绩效核查信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
recordId : null,
staffId : null,
staffName : "",
workNum : "",
deptId : null,
deptName : "",
windowNum : "",
irregularOtherType : null,
happenTime : null,
duration : 0,
ruleId : null,
ruleName : "",
ruleDesc : "",
subMethod : 1,
deductPerson : "",
deductTime : null,
score : 0.00,
checkPerson : "",
checkTime : null,
checkDesc : "",
checkResult : "",
checkStatus : 1,
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
// 表单重置
reset() {
this.form = {
recordId: null,
staffId: null,
staffName: "",
workNum: "",
deptId: null,
deptName: "",
windowNum: "",
irregularOtherType: null,
happenTime: null,
duration: 0,
ruleId: null,
ruleName: "",
ruleDesc: "",
subMethod: 1,
deductPerson: "",
deductTime: null,
score: 0.0,
checkPerson: "",
checkTime: null,
checkDesc: "",
checkResult: "",
checkStatus: 1,
remark: "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button
slot="table-head-left2"
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="doExport"
:disabled="isExport"
>导出</el-button>
</LayoutTable>
<!-- 其它绩效核查信息导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<el-checkbox
v-model="upload.updateSupport"
/>是否更新已经存在的数据
<el-link type="primary" style="font-size: 14px" @click="downloadTemplate"
>下载模板</el-link
>
</div>
<div class="el-upload__tip" style="color: red" slot="tip">
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<drawer-show ref="drawerform" @ok="getData" />
</div>
<div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button
slot="table-head-left2"
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="doExport"
:disabled="isExport"
>导出</el-button
>
</LayoutTable>
<!-- 其它绩效核查信息导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
<el-link
type="primary"
style="font-size: 14px"
@click="downloadTemplate"
>下载模板</el-link
>
</div>
<div class="el-upload__tip" style="color: red" slot="tip">
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<drawer-show ref="drawerform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "CheckOtherRecordList",
components: {
drawerShow
},
mixins: [table],
created() {
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "CheckOtherRecordList",
components: {
drawerShow,
},
mixins: [table],
created() {},
methods: {
/** 导入 */
handleImport() {
this.upload.title = "其它绩效核查信息导入";
this.upload.open = true;
},
/** 下载模板操作 */
downloadTemplate() {
this.isExport = true;
this.$download(
"/check/other/record/downloadTemplate",
{},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 文件上传中处理 */
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
/** 文件上传成功处理 */
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getData();
},
/** 提交上传文件 */
submitFileForm() {
this.$refs.upload.submit();
},
/** 导出Excel */
doExport() {
this.isExport = true;
this.$download(
"/check/other/record/exportExcel",
{
idList: this.selection,
},
methods: {
/** 导入 */
handleImport() {
this.upload.title = "其它绩效核查信息导入";
this.upload.open = true;
},
/** 下载模板操作 */
downloadTemplate() {
this.isExport = true;
this.$download("/check/other/record/downloadTemplate", {}, { type: "excel" })
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 文件上传中处理 */
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
/** 文件上传成功处理 */
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getData();
},
/** 提交上传文件 */
submitFileForm() {
this.$refs.upload.submit();
},
/** 导出Excel */
doExport() {
this.isExport = true;
this.$download("/check/other/record/exportExcel", {
"idList": this.selection,
}, { type: "excel" }).then(() => this.isExport = false).catch(error => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.drawerform.view(row);
},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
row.view = "核查";
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
row.view = "查看";
this.$refs.drawerform.view(row);
},
},
data() {
return {
// 用户导入参数
upload: {
// 是否显示弹出层(其它绩效核查信息导入)
open: false,
// 弹出层标题(其它绩效核查信息导入)
title: "导入其它绩效核查信息数据",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的数据
updateSupport: 0,
// 上传的地址
url: "/m/check/other/record/importData",
},
isExport: false,
config: {
isshowTabPane: true,
search: [
{
name: "status",
type: "select",
label: "全部状态",
fuzzy: false,
},
{
name: "deptId",
type: "select",
label: "全部部门",
fuzzy: false,
},
{
name: "date",
type: "date",
label: "请选择日期",
fuzzy: false,
},
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
fuzzy: false,
},
],
columns: [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
},
data() {
return {
// 用户导入参数
upload: {
// 是否显示弹出层(其它绩效核查信息导入)
open: false,
// 弹出层标题(其它绩效核查信息导入)
title: "导入其它绩效核查信息数据",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的数据
updateSupport: 0,
// 上传的地址
url: "/m/check/other/record/importData",
},
isExport: false,
config: {
isshowTabPane:true,
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "员工姓名", prop: "staffName"},
{label: "发生时间", prop: "happenTime", formatter: this.formatterDate},
{label: "扣分方式", prop: "subMethod",formatter: this.formatter},
{label: "扣分时间", prop: "deductTime", formatter: this.formatterDate},
{label: "扣分或增加分值", prop: "score", formatter: this.formatter},
{label: "核查时间", prop: "checkTime", formatter: this.formatterDate},
{label: "处理状态", prop: "checkStatus",formatter: this.formatter},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
{ label: "姓名", prop: "staffName" },
{ label: "窗口编号", prop: "windowNum" },
{ label: "所属部门", prop: "deptName" },
{
label: "违规类型",
prop: "irregularOtherType",
formatter: this.formatter,
},
{
label: "发生时间",
prop: "happenTime",
formatter: this.formatterDate,
},
{ label: "评分标准", prop: "ruleDesc" },
// {
// label: "持续时间,秒",
// prop: "duration",
// formatter: this.formatter,
// },
// { label: "绩效规则id", prop: "ruleId", formatter: this.formatter },
{ label: "图片凭证", prop: "snapPath" },
{ label: "绩效规则", prop: "ruleName" },
{ label: "扣分方式", prop: "subMethod", formatter: this.formatter },
{
label: "扣分时间",
prop: "deductTime",
formatter: this.formatterDate,
},
{ label: "扣分人员", prop: "deductPerson" },
{ label: "扣分分值", prop: "score", formatter: this.formatter },
{
label: "处理状态",
prop: "processStatus",
formatter: this.formatter,
},
{
label: "操作",
width: 240,
formatter: (row) => {
return (
<table-buttons
noAdd
noDel
noEdit
reCheck
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
},
},
],
},
};
},
};
</script>
<template>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="记录ID" prop="recordId" v-model="form.recordId" placeholder="请输入记录ID"/>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/>
<Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="窗口编号" prop="windowNum" v-model="form.windowNum" placeholder="请输入窗口编号"/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/>
<Field label="评价结果" prop="reviewResult" v-model="form.reviewResult" type="select" :enumData="dict.reviewResult" placeholder="请选择评价结果"/>
<Field label="评价时间" prop="reviewTime" v-model="form.reviewTime" type="date" />
<Field label="评价来源" prop="reviewSource" v-model="form.reviewSource" type="select" :enumData="dict.reviewSource" placeholder="请选择评价来源"/>
<Field label="评价设备" prop="reviewDevice" v-model="form.reviewDevice" placeholder="请输入评价设备"/>
<Field label="绩效规则id" prop="ruleId" v-model="form.ruleId" placeholder="请输入绩效规则id"/>
<Field label="规则名称" prop="ruleName" v-model="form.ruleName" placeholder="请输入规则名称"/>
<Field label="扣分方式" prop="subMethod" v-model="form.subMethod" type="select" :enumData="dict.subMethod" placeholder="请选择扣分方式"/>
<Field label="扣分人员" prop="deductPerson" v-model="form.deductPerson" placeholder="请输入扣分人员"/>
<Field label="扣分时间" prop="deductTime" v-model="form.deductTime" type="date" />
<Field label="扣分或增加分值" prop="score" v-model="form.score" placeholder="请输入扣分或增加分值"/>
<Field label="核查人员" prop="checkPerson" v-model="form.checkPerson" placeholder="请输入核查人员"/>
<Field label="核查时间" prop="checkTime" v-model="form.checkTime" type="date" />
<Field label="核查说明" prop="checkDesc" v-model="form.checkDesc" type="textarea" placeholder="请输入核查说明"/>
<Field label="核查结果" prop="checkResult" v-model="form.checkResult" placeholder="请输入核查结果"/>
<Field label="处理状态" prop="checkStatus" v-model="form.checkStatus" type="select" :enumData="dict.checkStatus" placeholder="请选择处理状态"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%"
>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field
label="记录ID"
prop="recordId"
v-model="form.recordId"
placeholder="请输入记录ID"
/>
<Field
label="员工ID"
prop="staffId"
v-model="form.staffId"
placeholder="请输入员工ID"
/>
<Field
label="员工姓名"
prop="staffName"
v-model="form.staffName"
placeholder="请输入员工姓名"
/>
<Field
label="工号"
prop="workNum"
v-model="form.workNum"
placeholder="请输入工号"
/>
<Field
label="窗口编号"
prop="windowNum"
v-model="form.windowNum"
placeholder="请输入窗口编号"
/>
<Field
label="所属部门"
prop="deptId"
v-model="form.deptId"
placeholder="请输入所属部门"
/>
<Field
label="所属部门名称"
prop="deptName"
v-model="form.deptName"
placeholder="请输入所属部门名称"
/>
<Field
label="评价结果"
prop="reviewResult"
v-model="form.reviewResult"
type="select"
:enumData="dict.reviewResult"
placeholder="请选择评价结果"
/>
<Field
label="评价时间"
prop="reviewTime"
v-model="form.reviewTime"
type="date"
/>
<Field
label="评价来源"
prop="reviewSource"
v-model="form.reviewSource"
type="select"
:enumData="dict.reviewSource"
placeholder="请选择评价来源"
/>
<Field
label="评价设备"
prop="reviewDevice"
v-model="form.reviewDevice"
placeholder="请输入评价设备"
/>
<Field
label="绩效规则id"
prop="ruleId"
v-model="form.ruleId"
placeholder="请输入绩效规则id"
/>
<Field
label="规则名称"
prop="ruleName"
v-model="form.ruleName"
placeholder="请输入规则名称"
/>
<Field
label="扣分方式"
prop="subMethod"
v-model="form.subMethod"
type="select"
:enumData="dict.subMethod"
placeholder="请选择扣分方式"
/>
<Field
label="扣分人员"
prop="deductPerson"
v-model="form.deductPerson"
placeholder="请输入扣分人员"
/>
<Field
label="扣分时间"
prop="deductTime"
v-model="form.deductTime"
type="date"
/>
<Field
label="扣分或增加分值"
prop="score"
v-model="form.score"
placeholder="请输入扣分或增加分值"
/>
<Field
label="核查人员"
prop="checkPerson"
v-model="form.checkPerson"
placeholder="请输入核查人员"
/>
<Field
label="核查时间"
prop="checkTime"
v-model="form.checkTime"
type="date"
/>
<Field
label="核查说明"
prop="checkDesc"
v-model="form.checkDesc"
type="textarea"
placeholder="请输入核查说明"
/>
<Field
label="核查结果"
prop="checkResult"
v-model="form.checkResult"
placeholder="请输入核查结果"
/>
<Field
label="处理状态"
prop="checkStatus"
v-model="form.checkStatus"
type="select"
:enumData="dict.checkStatus"
placeholder="请选择处理状态"
/>
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row>
</el-row>
<form-buttons @submit='submitForm' v-if="pageInfo.type!='view'" noCancelBtn />
</el-form>
</el-drawer>
<form-buttons
@submit="submitForm"
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form>
</el-drawer>
</template>
<script>
import form from "@/assets/mixins/formdialog";
export default {
name: "CheckReviewRecordDetail",
mixins: [form],
components: {
},
created() {
this.changePath("check/review/record")
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "评价差评绩效核查信息",
// 是否显示弹出层
open: false,
direction:"rtl",
toString:[
"reviewResult",
"subMethod",
"checkStatus",
],
toDate:[
"reviewTime",
"deductTime",
"checkTime",
],
// 表单校验
rules: {
staffName: [
{required: true,message: "请输入员工姓名", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
import form from "@/assets/mixins/formdialog";
export default {
name: "CheckReviewRecordDetail",
mixins: [form],
components: {},
created() {
this.changePath("check/review/record");
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "评价差评绩效核查信息",
// 是否显示弹出层
open: false,
direction: "rtl",
toString: ["reviewResult", "subMethod", "checkStatus"],
toDate: ["reviewTime", "deductTime", "checkTime"],
// 表单校验
rules: {
staffName: [
{ required: true, message: "请输入员工姓名", trigger: "blur" },
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" },
],
createTime: [{ required: true, message: "请选择创建时间" }],
},
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="check/review/record/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改评价差评绩效核查信息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "check/review/record/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增评价差评绩效核查信息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="check/review/record/view";
this.getData();
this.pageInfo.type="view"
this.title = "评价差评绩效核查信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
methods: {
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "check/review/record/edit";
this.getData();
this.pageInfo.type = "edit";
row.view == "核查"
? (this.title = "评价差评绩效核查")
: (this.title = "修改评价差评绩效核查信息");
},
/** 新增 */
add(row) {
this.reset();
this.urls.currUrl = "check/review/record/add";
this.getData();
this.pageInfo.type = "add";
this.title = "新增评价差评绩效核查信息";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "check/review/record/view";
this.getData();
this.pageInfo.type = "view";
this.title = "评价差评绩效核查信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
recordId : null,
staffId : null,
staffName : "",
workNum : "",
windowNum : "",
deptId : null,
deptName : "",
reviewResult : null,
reviewTime : null,
reviewSource : "",
reviewDevice : "",
ruleId : null,
ruleName : "",
subMethod : 1,
deductPerson : "",
deductTime : null,
score : 0.00,
checkPerson : "",
checkTime : null,
checkDesc : "",
checkResult : "",
checkStatus : 1,
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
// 表单重置
reset() {
this.form = {
recordId: null,
staffId: null,
staffName: "",
workNum: "",
windowNum: "",
deptId: null,
deptName: "",
reviewResult: null,
reviewTime: null,
reviewSource: "",
reviewDevice: "",
ruleId: null,
ruleName: "",
subMethod: 1,
deductPerson: "",
deductTime: null,
score: 0.0,
checkPerson: "",
checkTime: null,
checkDesc: "",
checkResult: "",
checkStatus: 1,
remark: "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button
slot="table-head-left2"
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="doExport"
:disabled="isExport"
>导出</el-button>
</LayoutTable>
<!-- 评价差评绩效核查信息导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<el-checkbox
v-model="upload.updateSupport"
/>是否更新已经存在的数据
<el-link type="primary" style="font-size: 14px" @click="downloadTemplate"
>下载模板</el-link
>
</div>
<div class="el-upload__tip" style="color: red" slot="tip">
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<drawer-show ref="drawerform" @ok="getData" />
</div>
<div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button
slot="table-head-left2"
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="doExport"
:disabled="isExport"
>导出</el-button
>
</LayoutTable>
<!-- 评价差评绩效核查信息导入对话框 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
<el-link
type="primary"
style="font-size: 14px"
@click="downloadTemplate"
>下载模板</el-link
>
</div>
<div class="el-upload__tip" style="color: red" slot="tip">
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<drawer-show ref="drawerform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "CheckReviewRecordList",
components: {
drawerShow
},
mixins: [table],
created() {
},
methods: {
/** 导入 */
handleImport() {
this.upload.title = "评价差评绩效核查信息导入";
this.upload.open = true;
},
/** 下载模板操作 */
downloadTemplate() {
this.isExport = true;
this.$download("/check/review/record/downloadTemplate", {}, { type: "excel" })
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 文件上传中处理 */
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
/** 文件上传成功处理 */
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getData();
},
/** 提交上传文件 */
submitFileForm() {
this.$refs.upload.submit();
},
/** 导出Excel */
doExport() {
this.isExport = true;
this.$download("/check/review/record/exportExcel", {
"idList": this.selection,
}, { type: "excel" }).then(() => this.isExport = false).catch(error => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.drawerform.view(row);
},
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "CheckReviewRecordList",
components: {
drawerShow,
},
mixins: [table],
created() {},
methods: {
/** 导入 */
handleImport() {
this.upload.title = "评价差评绩效核查信息导入";
this.upload.open = true;
},
/** 下载模板操作 */
downloadTemplate() {
this.isExport = true;
this.$download(
"/check/review/record/downloadTemplate",
{},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 文件上传中处理 */
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
/** 文件上传成功处理 */
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getData();
},
/** 提交上传文件 */
submitFileForm() {
this.$refs.upload.submit();
},
/** 导出Excel */
doExport() {
this.isExport = true;
this.$download(
"/check/review/record/exportExcel",
{
idList: this.selection,
},
data() {
return {
// 用户导入参数
upload: {
// 是否显示弹出层(评价差评绩效核查信息导入)
open: false,
// 弹出层标题(评价差评绩效核查信息导入)
title: "导入评价差评绩效核查信息数据",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的数据
updateSupport: 0,
// 上传的地址
url: "/m/check/review/record/importData",
},
isExport: false,
config: {
isshowTabPane:true,
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "员工姓名", prop: "staffName"},
{label: "工号", prop: "workNum"},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
row.view = "核查";
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
row.view = "查看";
this.$refs.drawerform.view(row);
},
},
data() {
return {
// 用户导入参数
upload: {
// 是否显示弹出层(评价差评绩效核查信息导入)
open: false,
// 弹出层标题(评价差评绩效核查信息导入)
title: "导入评价差评绩效核查信息数据",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的数据
updateSupport: 0,
// 上传的地址
url: "/m/check/review/record/importData",
},
isExport: false,
config: {
isshowTabPane: true,
search: [
{
name: "status",
type: "select",
label: "全部状态",
fuzzy: false,
},
{
name: "deptId",
type: "select",
label: "全部部门",
fuzzy: false,
},
{
name: "source",
type: "select",
label: "全部来源",
fuzzy: false,
},
{
name: "date",
type: "date",
label: "请选择日期",
fuzzy: false,
},
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
fuzzy: false,
},
],
columns: [
{ type: "selection", width: 50 },
{ type: "index", label: "序号", width: 50 },
{label: "窗口编号", prop: "windowNum"},
{ label: "姓名", prop: "staffName" },
{label: "所属部门", prop: "deptId", formatter: this.formatter},
{ label: "窗口编号", prop: "windowNum" },
{label: "所属部门名称", prop: "deptName"},
{ label: "所属部门", prop: "deptName" },
{label: "评价结果", prop: "reviewResult",formatter: this.formatter},
{
label: "评价结果",
prop: "reviewResult",
formatter: this.formatter,
},
{label: "评价时间", prop: "reviewTime", formatter: this.formatterDate},
{ label: "评价来源", prop: "reviewSource" },
{label: "评价来源", prop: "reviewSource"},
{ label: "评价设备", prop: "reviewDevice" },
{label: "评价设备", prop: "reviewDevice"},
{
label: "评价时间",
prop: "reviewTime",
formatter: this.formatterDate,
},
{label: "绩效规则id", prop: "ruleId", formatter: this.formatter},
{ label: "图片凭证", prop: "snapPath" },
{label: "规则名称", prop: "ruleName"},
{ label: "绩效规则", prop: "ruleNme" },
{label: "扣分方式", prop: "subMethod",formatter: this.formatter},
{ label: "扣分方式", prop: "subMethod", formatter: this.formatter },
{label: "扣分人员", prop: "deductPerson"},
{
label: "扣分时间",
prop: "deductTime",
formatter: this.formatterDate,
},
{label: "扣分时间", prop: "deductTime", formatter: this.formatterDate},
{ label: "扣分人员", prop: "deductPerson" },
{label: "扣分或增加分值", prop: "score", formatter: this.formatter},
{ label: "扣分分值", prop: "score", formatter: this.formatter },
{label: "核查人员", prop: "checkPerson"},
{
label: "处理状态",
prop: "processStatus",
formatter: this.formatter,
},
{label: "核查时间", prop: "checkTime", formatter: this.formatterDate},
{label: "核查说明", prop: "checkDesc"},
{label: "核查结果", prop: "checkResult"},
{label: "处理状态", prop: "checkStatus",formatter: this.formatter},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
{
label: "操作",
width: 200,
formatter: (row) => {
return (
<table-buttons
noAdd
noDel
noEdit
reCheck
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
},
},
],
},
};
},
};
</script>
......@@ -6,7 +6,10 @@
<el-tab-pane label="设计问卷" name="1">
<fc-designer style="height: 79vh;" ref="designer">
<template slot="handle">
<ElButton icon="el-icon-upload" type="success" size="small" @click="showDrawer" round>移动端预览
<ElButton style="margin-left: 10px;" icon="el-icon-upload" type="primary" size="small"
@click="issueBtn" round>问卷发布
</ElButton>
<ElButton icon="el-icon-view" type="success" size="small" @click="showDrawer" round>H5预览
</ElButton>
</template>
</fc-designer>
......@@ -31,6 +34,30 @@
</div>
</div>
</el-drawer>
<el-dialog title="问卷发布" :visible.sync="issueDialog" width="30%" top="25vh">
<el-form :model="issueForm">
<el-form-item label="问卷封面:" label-width="125px">
<div style="display: flex;align-items: center;">
<img style="width:80px; height: 50px; margin-right: 10px;cursor: pointer;"
v-for="i in issueForm.cover" :src="i" alt="">
</div>
<!-- <el-input v-model="issueForm.cover" autocomplete="off"></el-input> -->
</el-form-item>
<el-form-item label="反馈期限:" label-width="125px">
<el-date-picker v-model="issueForm.time" type="datetimerange" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="邀请人员:" label-width="125px">
<el-button type="success" size="small">选择人员</el-button>
</el-form-item>
<div style="text-align: center;">
<el-button size="small" @click="issueDialog = false">取消</el-button>
<el-button type="primary" size="small" @click="issueFormBtn">发布</el-button>
</div>
</el-form>
</el-dialog>
</el-tab-pane>
</el-tabs>
</div>
......@@ -43,8 +70,15 @@ export default {
return {
tabs: '1',
drawer: 0,
Frule: '',
Frule: [],
Fopthion: '',
issueDialog: false,
issueForm: {
cover: [
'http://sy.scsmile.cn/YX-JXgl/v1.0/HT/images/%E6%96%B0%E5%A2%9E%E5%8F%8D%E9%A6%88_%E7%AC%AC3%E6%AD%A5_/u26101.svg',
'http://sy.scsmile.cn/YX-JXgl/v1.0/HT/images/%E6%96%B0%E5%A2%9E%E5%8F%8D%E9%A6%88_%E7%AC%AC3%E6%AD%A5_/u26102.svg'
]
},
}
},
mounted() {
......@@ -75,11 +109,31 @@ export default {
this.$refs.designer.removeMenuItem("timePicker")
this.$refs.designer.removeMenuItem("switch")
this.$refs.designer.removeMenuItem("tree")
this.$refs.designer.removeMenuItem("inputNumber")
this.$refs.designer.removeMenuItem("select")
this.$refs.designer.removeMenuItem("fc-editor")
this.$refs.designer.removeMenuItem("el-button")
this.$refs.designer.removeMenuItem("el-divider")
//配置组件生成规则---直接配置显示在页面上
// const rule = [{ "type": "input", "field": "int", "title": "输入框", "info": "", "_fc_drag_tag": "input", "hidden": false, "display": true }]
// this.$refs.designer.setRule(rule)
},
methods: {
//问卷发布
issueBtn() {
this.Frule = formCreate.parseJson(this.getFormJson())
this.Fopthion = formCreate.parseJson(this.getFormOption())
console.log(this.Frule)
//判断是否配置了表单
if (this.Frule.length > 0) {
this.issueDialog = true
} else {
this.$message({
message: '请配置表单后发布',
type: 'warning'
});
}
},
//预览生成按钮的输出
onSubmit(formData) {
console.log(formData)
......@@ -101,12 +155,20 @@ export default {
const FcDesignerOptions = this.$refs.designer.getOption();
console.log(FcDesignerOptions)
return JSON.stringify(FcDesignerOptions)
},
issueFormBtn() {
console.log(this.issueForm)
}
}
}
</script>
<style lang="less" scoped>
/deep/._fc-m-tools {
flex-direction: row-reverse;
justify-content: flex-start;
}
/deep/._fc-l-title {
text-align: center;
margin-bottom: 10px;
......
......@@ -18,22 +18,65 @@
</div>
<div class="content">
<div class="cLeft"></div>
<div class="cLeft">
<div class="title">
全部数据(220)
<span style="font-weight: 400; font-size: 16px;margin-left: 20px;">已反馈(1)</span>
<span style="font-weight: 400; font-size: 16px;margin-left: 20px;">未反馈(219)</span>
</div>
<el-button class="m15" type="primary" size="small">导出数据</el-button>
<div class="lBox m15">
<div class="treeS">
<el-tree :data="treeData" :props="defaultProps" @node-click="treeSub"></el-tree>
</div>
<el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55">
</el-table-column>
<el-table-column label="日期" width="120">
<template slot-scope="scope">{{ scope.row.date }}</template>
</el-table-column>
<el-table-column prop="name" label="姓名" width="120">
</el-table-column>
<el-table-column prop="address" label="地址" show-overflow-tooltip>
</el-table-column>
</el-table>
</div>
</div>
<div class="cRight">
<div class="title">
题型数据分析
</div>
<div class="box">
<div style="display: flex;align-items: center;">
<el-tag type="primary" effect="plain">单项选择</el-tag>
<div style="margin-left: 10px;">1.你是男性还是女性</div>
<div class="scroll">
<div class="box" v-for="i in 2">
<div style="display: flex;align-items: center;">
<el-tag type="primary" effect="plain">单项选择</el-tag>
<div style="margin-left: 10px;">1.你是男性还是女性</div>
</div>
<div class="m15"
style="display: flex;align-items: center;justify-content: space-around; width: 40%;">
<div style="text-align: center;">
<el-progress type="circle" :percentage="45" show-text width="75"></el-progress>
<div></div>
</div>
<div style="text-align: center;">
<el-progress type="circle" :percentage="45" show-text width="75"></el-progress>
<div></div>
</div>
</div>
</div>
<div>
<el-progress type="circle" :percentage="45"></el-progress>
<el-progress type="circle" :percentage="55"></el-progress>
<div class="box m15" v-for="i in 4">
<div style="display: flex;align-items: center;">
<el-tag type="primary" effect="plain">单项选择</el-tag>
<div style="margin-left: 10px;">1.你是男性还是女性</div>
</div>
<el-button class="m15" type="primary" size="small"
@click="drawerAnswer = 1">查看详情答案</el-button>
</div>
</div>
</div>
</div>
......@@ -51,6 +94,22 @@
</div>
</div>
</el-drawer>
<el-drawer :visible.sync="drawerAnswer" title="反馈详情" size="40%">
<div class="answerBox">
<div class="aTop">
问题:你的具体想法?
</div>
<el-table class="m15" :data="tableData" border style="width: 100%;">
<el-table-column prop="date" label="日期" width="180">
</el-table-column>
<el-table-column prop="name" label="姓名" width="180">
</el-table-column>
<el-table-column prop="address" label="地址">
</el-table-column>
</el-table>
</div>
</el-drawer>
</div>
</template>
......@@ -63,6 +122,63 @@ export default {
drawer: false,
Frule: '',
Fopthion: '',
drawerAnswer: false,
tableData: [{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}],
treeData: [{
label: '一级 1',
children: [{
label: '二级 1-1',
children: [{
label: '三级 1-1-1'
}]
}]
}, {
label: '一级 2',
children: [{
label: '二级 2-1',
children: [{
label: '三级 2-1-1'
}]
}, {
label: '二级 2-2',
children: [{
label: '三级 2-2-1'
}]
}]
}, {
label: '一级 3',
children: [{
label: '二级 3-1',
children: [{
label: '三级 3-1-1'
}]
}, {
label: '二级 3-2',
children: [{
label: '三级 3-2-1'
}]
}]
}],
defaultProps: {
children: 'children',
label: 'label'
}
}
},
mounted() {
......@@ -158,11 +274,32 @@ export default {
"resetBtn": false
}
},
methods: {
treeSub(data) {
console.log(data)
},
handleSelectionChange(val) {
this.multipleSelection = val;
}
}
}
</script>
<style lang="less" scoped>
.treeS {
width: 20%;
margin-left: 10px;
}
/deep/.el-tree {
background-color: transparent;
}
.m15 {
margin-top: 15px;
}
.font {
font-size: 16px;
line-height: 1.5;
......@@ -240,6 +377,21 @@ export default {
}
}
.answerBox {
padding: 0 20px;
box-sizing: border-box;
.aTop {
border-left: 4px solid #3377ff;
background-color: #eff4ff;
color: #3377ff;
line-height: 70px;
padding-left: 20px;
box-sizing: border-box;
font-weight: bold;
}
}
.content {
display: flex;
align-items: center;
......@@ -252,6 +404,15 @@ export default {
height: 100%;
border-radius: 4px;
width: 49%;
box-sizing: border-box;
padding: 20px;
.lBox {
display: flex;
// align-items: center
justify-content: space-between;
}
}
.cRight {
......@@ -261,6 +422,32 @@ export default {
width: 49%;
box-sizing: border-box;
padding: 20px;
.scroll {
height: 93%;
overflow-y: auto;
overflow-x: hidden;
// border: 1px solid;
}
/* 侧边滚动条 */
.scroll::-webkit-scrollbar {
width: 3px;
}
/* 滚动条上的滚动滑块 */
.scroll::-webkit-scrollbar-thumb {
background: #CCCCCC;
border-radius: 4px;
}
/* 滚动条轨道 */
.scroll::-webkit-scrollbar-track {
background: #EEEEEE;
border-radius: 4px;
}
}
.title {
......
......@@ -233,7 +233,7 @@ export default {
{
label: "处理状态",
prop: "processStatus",
prop: "checkStatus",
formatter: this.formatter,
},
......
<template>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/>
<Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="窗口编号" prop="windowNum" v-model="form.windowNum" placeholder="请输入窗口编号"/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/>
<Field label="投诉标题" prop="complainTitle" v-model="form.complainTitle" placeholder="请输入投诉标题"/>
<Field label="投诉内容"><editor v-model="form.complainContent" :min-height="256"/></Field>
<Field label="投诉人真实姓名" prop="complainRealName" v-model="form.complainRealName" placeholder="请输入投诉人真实姓名"/>
<Field label="联系电话" prop="contact" v-model="form.contact" placeholder="请输入联系电话"/>
<Field label="投诉时间" prop="complainTime" v-model="form.complainTime" type="date" />
<Field label="投诉来源" prop="complainSource" v-model="form.complainSource" placeholder="请输入投诉来源"/>
<Field label="投诉设备" prop="complainDevice" v-model="form.complainDevice" placeholder="请输入投诉设备"/>
<Field label="绩效规则id" prop="ruleId" v-model="form.ruleId" placeholder="请输入绩效规则id"/>
<Field label="规则名称" prop="ruleName" v-model="form.ruleName" placeholder="请输入规则名称"/>
<Field label="扣分方式" prop="subMethod" v-model="form.subMethod" type="select" :enumData="dict.subMethod" placeholder="请选择扣分方式"/>
<Field label="扣分人员" prop="deductPerson" v-model="form.deductPerson" placeholder="请输入扣分人员"/>
<Field label="扣分时间" prop="deductTime" v-model="form.deductTime" type="date" />
<Field label="扣分或增加分值" prop="score" v-model="form.score" placeholder="请输入扣分或增加分值"/>
<Field label="处理状态" prop="processStatus" v-model="form.processStatus" type="select" :enumData="dict.processStatus" placeholder="请选择处理状态"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%"
>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="22">
<el-form-item label="姓名:">
<el-select v-model="form.staffId" style="width: 100%;">
<el-option
v-for="item in staffArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="所属部门:">
<el-select v-model="form.deptId" style="width: 100%;">
<el-option
v-for="item in deptArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="窗口编号:">
<el-input
v-model="form.windowNum"
placeholder="请输入窗口编号"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="投诉来源:">
<el-select
v-model="form.deptId"
style="width: 100%;"
placeholder="请选择投诉来源"
>
<el-option
v-for="item in deptArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="投诉设备:">
<el-input
v-model="form.windowNum"
placeholder="请输入投诉设备"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="投诉标题:">
<el-input
v-model="form.windowNum"
placeholder="请输入投诉标题"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="投诉内容:">
<el-input
v-model="form.windowNum"
placeholder="请输入投诉内容"
type="textarea"
style="width: 100%;"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="真实姓名:">
<el-input
v-model="form.windowNum"
placeholder="请输入真实姓名"
type="textarea"
style="width: 100%;"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="联系电话:">
<el-input
v-model="form.windowNum"
placeholder="请输入联系电话"
type="textarea"
style="width: 100%;"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="投诉时间:">
<el-col :span="11">
<el-date-picker
v-model="dateValue"
type="date"
placeholder="选择日期"
style="width: 100%;"
>
</el-date-picker>
</el-col>
<el-col :span="11">
<el-time-select
v-model="timeValue"
:picker-options="{
start: '06:00',
step: '00:15',
end: '18:30',
}"
placeholder="选择时间"
style="width: 100%;margin-left: 10px;"
>
</el-time-select
></el-col>
</el-form-item>
</el-col>
</el-row>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="图片凭证:">
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList"
>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">
只能上传jpg/png等图片文件
</div>
</el-upload>
</el-form-item>
</el-col>
</el-row>
<form-buttons @submit='submitForm' v-if="pageInfo.type!='view'" noCancelBtn />
</el-form>
<el-row>
<el-col :span="22">
<el-form-item label="绩效规则:">
<el-col :span="22">
<el-select v-model="form.attendanceGroupId" style="width: 100%;">
<el-option
v-for="item in kaoqinArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option
></el-select>
</el-col>
<el-col :span="22">
<el-select
v-model="form.attendanceGroupId"
style="width: 100%;margin-top: 10px;"
>
<el-option
v-for="item in kaoqinArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option></el-select
></el-col>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="扣分分值:">
<p>{{ form.score }}</p>
</el-form-item>
</el-col>
</el-row>
</el-drawer>
<form-buttons
@submit="submitForm"
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form>
<!-- <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field
label="员工ID"
prop="staffId"
v-model="form.staffId"
placeholder="请输入员工ID"
/>
<Field
label="员工姓名"
prop="staffName"
v-model="form.staffName"
placeholder="请输入员工姓名"
/>
<Field
label="工号"
prop="workNum"
v-model="form.workNum"
placeholder="请输入工号"
/>
<Field
label="窗口编号"
prop="windowNum"
v-model="form.windowNum"
placeholder="请输入窗口编号"
/>
<Field
label="所属部门"
prop="deptId"
v-model="form.deptId"
placeholder="请输入所属部门"
/>
<Field
label="所属部门名称"
prop="deptName"
v-model="form.deptName"
placeholder="请输入所属部门名称"
/>
<Field
label="投诉标题"
prop="complainTitle"
v-model="form.complainTitle"
placeholder="请输入投诉标题"
/>
<Field label="投诉内容"
><editor v-model="form.complainContent" :min-height="256"
/></Field>
<Field
label="投诉人真实姓名"
prop="complainRealName"
v-model="form.complainRealName"
placeholder="请输入投诉人真实姓名"
/>
<Field
label="联系电话"
prop="contact"
v-model="form.contact"
placeholder="请输入联系电话"
/>
<Field
label="投诉时间"
prop="complainTime"
v-model="form.complainTime"
type="date"
/>
<Field
label="投诉来源"
prop="complainSource"
v-model="form.complainSource"
placeholder="请输入投诉来源"
/>
<Field
label="投诉设备"
prop="complainDevice"
v-model="form.complainDevice"
placeholder="请输入投诉设备"
/>
<Field
label="绩效规则id"
prop="ruleId"
v-model="form.ruleId"
placeholder="请输入绩效规则id"
/>
<Field
label="规则名称"
prop="ruleName"
v-model="form.ruleName"
placeholder="请输入规则名称"
/>
<Field
label="扣分方式"
prop="subMethod"
v-model="form.subMethod"
type="select"
:enumData="dict.subMethod"
placeholder="请选择扣分方式"
/>
<Field
label="扣分人员"
prop="deductPerson"
v-model="form.deductPerson"
placeholder="请输入扣分人员"
/>
<Field
label="扣分时间"
prop="deductTime"
v-model="form.deductTime"
type="date"
/>
<Field
label="扣分或增加分值"
prop="score"
v-model="form.score"
placeholder="请输入扣分或增加分值"
/>
<Field
label="处理状态"
prop="processStatus"
v-model="form.processStatus"
type="select"
:enumData="dict.processStatus"
placeholder="请选择处理状态"
/>
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row>
<form-buttons
@submit="submitForm"
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form> -->
</el-drawer>
</template>
<script>
import form from "@/assets/mixins/formdialog";
export default {
name: "PerformComplainRecordDetail",
mixins: [form],
components: {
},
created() {
this.changePath("perform/complain/record")
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "评价绩效投诉记录信息",
// 是否显示弹出层
open: false,
direction:"rtl",
toString:[
"subMethod",
"processStatus",
],
toDate:[
"complainTime",
"deductTime",
],
// 表单校验
rules: {
staffName: [
{required: true,message: "请输入员工姓名", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
import form from "@/assets/mixins/formdialog";
export default {
name: "PerformComplainRecordDetail",
mixins: [form],
components: {},
created() {
this.changePath("perform/complain/record");
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "评价绩效投诉记录信息",
// 是否显示弹出层
open: false,
direction: "rtl",
toString: ["subMethod", "processStatus"],
toDate: ["complainTime", "deductTime"],
// 表单校验
rules: {
staffName: [
{ required: true, message: "请输入员工姓名", trigger: "blur" },
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" },
],
createTime: [{ required: true, message: "请选择创建时间" }],
},
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="perform/complain/record/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改评价绩效投诉记录信息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "perform/complain/record/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增评价绩效投诉记录信息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="perform/complain/record/view";
this.getData();
this.pageInfo.type="view"
this.title = "评价绩效投诉记录信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
methods: {
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "perform/complain/record/edit";
this.getData();
this.pageInfo.type = "edit";
this.title = "修改评价绩效投诉记录信息";
},
/** 新增 */
add(row) {
this.reset();
this.urls.currUrl = "perform/complain/record/add";
this.getData();
this.pageInfo.type = "add";
this.title = "新增评价绩效投诉记录信息";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "perform/complain/record/view";
this.getData();
this.pageInfo.type = "view";
this.title = "评价绩效投诉记录信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
staffId : null,
staffName : "",
workNum : "",
windowNum : "",
deptId : null,
deptName : "",
complainTitle : "",
complainContent : "",
complainRealName : "",
contact : "",
complainTime : null,
complainSource : "",
complainDevice : "",
ruleId : null,
ruleName : "",
subMethod : 1,
deductPerson : "",
deductTime : null,
score : 0.00,
processStatus : 1,
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
// 表单重置
reset() {
this.form = {
staffId: null,
staffName: "",
workNum: "",
windowNum: "",
deptId: null,
deptName: "",
complainTitle: "",
complainContent: "",
complainRealName: "",
contact: "",
complainTime: null,
complainSource: "",
complainDevice: "",
ruleId: null,
ruleName: "",
subMethod: 1,
deductPerson: "",
deductTime: null,
score: 0.0,
processStatus: 1,
remark: "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/>
<Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="窗口编号" prop="windowNum" v-model="form.windowNum" placeholder="请输入窗口编号"/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/>
<Field label="违规类型" prop="irregularType" v-model="form.irregularType" type="select" :enumData="dict.irregularType" placeholder="请选择违规类型"/>
<Field label="发生时间" prop="happenTime" v-model="form.happenTime" type="date" />
<Field label="持续时间,秒" prop="duration" v-model="form.duration" placeholder="请输入持续时间,秒"/>
<Field label="报警时间" prop="alarmTime" v-model="form.alarmTime" type="date" />
<Field label="图片凭证地址" prop="snapPath" v-model="form.snapPath" type="textarea" placeholder="请输入图片凭证地址"/>
<Field label="绩效规则id" prop="ruleId" v-model="form.ruleId" placeholder="请输入绩效规则id"/>
<Field label="规则名称" prop="ruleName" v-model="form.ruleName" placeholder="请输入规则名称"/>
<Field label="扣分方式" prop="subMethod" v-model="form.subMethod" type="select" :enumData="dict.subMethod" placeholder="请选择扣分方式"/>
<Field label="扣分人员" prop="deductPerson" v-model="form.deductPerson" placeholder="请输入扣分人员"/>
<Field label="扣分时间" prop="deductTime" v-model="form.deductTime" type="date" />
<Field label="扣分或增加分值" prop="score" v-model="form.score" placeholder="请输入扣分或增加分值"/>
<Field label="处理状态" prop="processStatus" v-model="form.processStatus" type="select" :enumData="dict.processStatus" placeholder="请选择处理状态"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%"
>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="22">
<el-form-item label="姓名:">
<el-select v-model="form.staffId" style="width: 100%;">
<el-option
v-for="item in staffArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="所属部门:">
<el-select v-model="form.deptId" style="width: 100%;">
<el-option
v-for="item in deptArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="窗口编号:">
<el-input
v-model="form.windowNum"
placeholder="请输入窗口编号"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="违规类型:">
<el-select v-model="form.goworkDepts" style="width: 100%;">
<el-option
v-for="item in kaoqinArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="发生时间:">
<el-col :span="11">
<el-date-picker
v-model="dateValue"
type="date"
placeholder="选择日期"
style="width: 100%;"
>
</el-date-picker>
</el-col>
<el-col :span="11">
<el-time-select
v-model="timeValue"
:picker-options="{
start: '06:00',
step: '00:15',
end: '18:30',
}"
placeholder="选择时间"
style="width: 100%;margin-left: 10px;"
>
</el-time-select
></el-col>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="时长:">
<el-input
v-model="form.windowNum"
placeholder="请输入时长(xx分xx秒)"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="报警时间:">
<el-col :span="11">
<el-date-picker
v-model="dateValue1"
type="date"
placeholder="选择日期"
style="width: 100%;"
>
</el-date-picker>
</el-col>
<el-col :span="11">
<el-time-select
v-model="timeValue1"
:picker-options="{
start: '06:00',
step: '00:15',
end: '18:30',
}"
placeholder="选择时间"
style="width: 100%;margin-left: 10px;"
>
</el-time-select
></el-col>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="图片凭证:">
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList"
>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">
只能上传jpg/png等图片文件
</div>
</el-upload>
</el-form-item>
</el-col>
</el-row>
<form-buttons @submit='submitForm' v-if="pageInfo.type!='view'" noCancelBtn />
</el-form>
<el-row>
<el-col :span="22">
<el-form-item label="绩效规则:">
<el-col :span="22">
<el-select v-model="form.attendanceGroupId" style="width: 100%;">
<el-option
v-for="item in kaoqinArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option
></el-select>
</el-col>
<el-col :span="22">
<el-select
v-model="form.attendanceGroupId"
style="width: 100%;margin-top: 10px;"
>
<el-option
v-for="item in kaoqinArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option></el-select
></el-col>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="扣分分值:">
<p>{{ form.score }}</p>
</el-form-item>
</el-col>
</el-row>
</el-drawer>
<form-buttons
@submit="submitForm"
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form>
<!-- <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field
label="员工ID"
prop="staffId"
v-model="form.staffId"
placeholder="请输入员工ID"
/>
<Field
label="员工姓名"
prop="staffName"
v-model="form.staffName"
placeholder="请输入员工姓名"
/>
<Field
label="工号"
prop="workNum"
v-model="form.workNum"
placeholder="请输入工号"
/>
<Field
label="窗口编号"
prop="windowNum"
v-model="form.windowNum"
placeholder="请输入窗口编号"
/>
<Field
label="所属部门"
prop="deptId"
v-model="form.deptId"
placeholder="请输入所属部门"
/>
<Field
label="所属部门名称"
prop="deptName"
v-model="form.deptName"
placeholder="请输入所属部门名称"
/>
<Field
label="违规类型"
prop="irregularType"
v-model="form.irregularType"
type="select"
:enumData="dict.irregularType"
placeholder="请选择违规类型"
/>
<Field
label="发生时间"
prop="happenTime"
v-model="form.happenTime"
type="date"
/>
<Field
label="持续时间,秒"
prop="duration"
v-model="form.duration"
placeholder="请输入持续时间,秒"
/>
<Field
label="报警时间"
prop="alarmTime"
v-model="form.alarmTime"
type="date"
/>
<Field
label="图片凭证地址"
prop="snapPath"
v-model="form.snapPath"
type="textarea"
placeholder="请输入图片凭证地址"
/>
<Field
label="绩效规则id"
prop="ruleId"
v-model="form.ruleId"
placeholder="请输入绩效规则id"
/>
<Field
label="规则名称"
prop="ruleName"
v-model="form.ruleName"
placeholder="请输入规则名称"
/>
<Field
label="扣分方式"
prop="subMethod"
v-model="form.subMethod"
type="select"
:enumData="dict.subMethod"
placeholder="请选择扣分方式"
/>
<Field
label="扣分人员"
prop="deductPerson"
v-model="form.deductPerson"
placeholder="请输入扣分人员"
/>
<Field
label="扣分时间"
prop="deductTime"
v-model="form.deductTime"
type="date"
/>
<Field
label="扣分或增加分值"
prop="score"
v-model="form.score"
placeholder="请输入扣分或增加分值"
/>
<Field
label="处理状态"
prop="processStatus"
v-model="form.processStatus"
type="select"
:enumData="dict.processStatus"
placeholder="请选择处理状态"
/>
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row>
<form-buttons
@submit="submitForm"
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form> -->
</el-drawer>
</template>
<script>
import form from "@/assets/mixins/formdialog";
export default {
name: "PerformEffectRecordDetail",
mixins: [form],
components: {
},
created() {
this.changePath("perform/effect/record")
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "效能绩效记录信息",
// 是否显示弹出层
open: false,
direction:"rtl",
toString:[
"irregularType",
"subMethod",
"processStatus",
],
toDate:[
"happenTime",
"alarmTime",
"deductTime",
],
// 表单校验
rules: {
staffName: [
{required: true,message: "请输入员工姓名", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
import form from "@/assets/mixins/formdialog";
export default {
name: "PerformEffectRecordDetail",
mixins: [form],
components: {},
created() {
this.changePath("perform/effect/record");
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "效能绩效记录信息",
// 是否显示弹出层
open: false,
direction: "rtl",
toString: ["irregularType", "subMethod", "processStatus"],
toDate: ["happenTime", "alarmTime", "deductTime"],
// 表单校验
rules: {
staffName: [
{ required: true, message: "请输入员工姓名", trigger: "blur" },
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" },
],
createTime: [{ required: true, message: "请选择创建时间" }],
},
staffArr: [
{
label: "员工1",
value: "1",
},
],
deptArr: [],
kaoqinArr: [],
fileList: [],
dateValue: "",
timeValue: "",
dateValue1: "",
timeValue1: "",
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="perform/effect/record/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改效能绩效记录信息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "perform/effect/record/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增效能绩效记录信息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="perform/effect/record/view";
this.getData();
this.pageInfo.type="view"
this.title = "效能绩效记录信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
methods: {
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "perform/effect/record/edit";
this.getData();
this.pageInfo.type = "edit";
this.title = "修改效能绩效记录信息";
},
/** 新增 */
add(row) {
this.reset();
this.urls.currUrl = "perform/effect/record/add";
this.getData();
this.pageInfo.type = "add";
this.title = "新增效能绩效记录信息";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "perform/effect/record/view";
this.getData();
this.pageInfo.type = "view";
this.title = "效能绩效记录信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
staffId : null,
staffName : "",
workNum : "",
windowNum : "",
deptId : null,
deptName : "",
irregularType : null,
happenTime : null,
duration : 0,
alarmTime : null,
snapPath : "",
ruleId : null,
ruleName : "",
subMethod : 1,
deductPerson : "",
deductTime : null,
score : 0.00,
processStatus : 1,
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
// 表单重置
reset() {
this.form = {
staffId: null,
staffName: "",
workNum: "",
windowNum: "",
deptId: null,
deptName: "",
irregularType: null,
happenTime: null,
duration: 0,
alarmTime: null,
snapPath: "",
ruleId: null,
ruleName: "",
subMethod: 1,
deductPerson: "",
deductTime: null,
score: 0.0,
processStatus: 1,
remark: "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
......@@ -82,19 +82,6 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="异常时间:">
<el-date-picker
v-model="form.errorTime"
type="date"
placeholder="选择日期"
style="width: 100%;"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="办件时间:">
......
<template>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/>
<Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="窗口编号" prop="windowNum" v-model="form.windowNum" placeholder="请输入窗口编号"/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/>
<Field label="评价结果" prop="reviewResult" v-model="form.reviewResult" type="select" :enumData="dict.reviewResult" placeholder="请选择评价结果"/>
<Field label="评价时间" prop="reviewTime" v-model="form.reviewTime" type="date" />
<Field label="评价来源" prop="reviewSource" v-model="form.reviewSource" type="select" :enumData="dict.reviewSource" placeholder="请选择评价来源"/>
<Field label="评价设备" prop="reviewDevice" v-model="form.reviewDevice" placeholder="请输入评价设备"/>
<Field label="绩效规则id" prop="ruleId" v-model="form.ruleId" placeholder="请输入绩效规则id"/>
<Field label="规则名称" prop="ruleName" v-model="form.ruleName" placeholder="请输入规则名称"/>
<Field label="扣分方式" prop="subMethod" v-model="form.subMethod" type="select" :enumData="dict.subMethod" placeholder="请选择扣分方式"/>
<Field label="扣分人员" prop="deductPerson" v-model="form.deductPerson" placeholder="请输入扣分人员"/>
<Field label="扣分时间" prop="deductTime" v-model="form.deductTime" type="date" />
<Field label="扣分或增加分值" prop="score" v-model="form.score" placeholder="请输入扣分或增加分值"/>
<Field label="处理状态" prop="processStatus" v-model="form.processStatus" type="select" :enumData="dict.processStatus" placeholder="请选择处理状态"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="50%"
>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="22">
<el-form-item label="姓名:">
<el-select v-model="form.staffId" style="width: 100%;">
<el-option
v-for="item in staffArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="所属部门:">
<el-select v-model="form.deptId" style="width: 100%;">
<el-option
v-for="item in deptArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="窗口编号:">
<el-input
v-model="form.windowNum"
placeholder="请输入窗口编号"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="评价结果:">
<el-radio-group v-model="form.reviewResult">
<el-radio :label="1">非常不满意</el-radio>
<el-radio :label="2">差评</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="评价来源:">
<el-select
v-model="form.deptId"
style="width: 100%;"
placeholder="请选择评价来源"
>
<el-option
v-for="item in deptArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="评价设备:">
<el-input
v-model="form.windowNum"
placeholder="请输入评价设备"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="评价时间">
<el-col :span="11">
<el-date-picker
v-model="dateValue"
type="date"
placeholder="选择日期"
style="width: 100%;"
>
</el-date-picker>
</el-col>
<el-col :span="11">
<el-time-select
v-model="timeValue"
:picker-options="{
start: '06:00',
step: '00:15',
end: '18:30',
}"
placeholder="选择时间"
style="width: 100%;margin-left: 10px;"
>
</el-time-select
></el-col>
</el-form-item>
</el-col>
</el-row>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="图片凭证:">
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList"
>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">
只能上传jpg/png等图片文件
</div>
</el-upload>
</el-form-item>
</el-col>
</el-row>
<form-buttons @submit='submitForm' v-if="pageInfo.type!='view'" noCancelBtn />
</el-form>
<el-row>
<el-col :span="22">
<el-form-item label="绩效规则:">
<el-col :span="22">
<el-select v-model="form.attendanceGroupId" style="width: 100%;">
<el-option
v-for="item in kaoqinArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option
></el-select>
</el-col>
<el-col :span="22">
<el-select
v-model="form.attendanceGroupId"
style="width: 100%;margin-top: 10px;"
>
<el-option
v-for="item in kaoqinArr"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option></el-select
></el-col>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
<el-form-item label="扣分分值:">
<p>{{ form.score }}</p>
</el-form-item>
</el-col>
</el-row>
</el-drawer>
<form-buttons
@submit="submitForm"
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form>
<!-- <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field
label="员工ID"
prop="staffId"
v-model="form.staffId"
placeholder="请输入员工ID"
/>
<Field
label="员工姓名"
prop="staffName"
v-model="form.staffName"
placeholder="请输入员工姓名"
/>
<Field
label="工号"
prop="workNum"
v-model="form.workNum"
placeholder="请输入工号"
/>
<Field
label="窗口编号"
prop="windowNum"
v-model="form.windowNum"
placeholder="请输入窗口编号"
/>
<Field
label="所属部门"
prop="deptId"
v-model="form.deptId"
placeholder="请输入所属部门"
/>
<Field
label="所属部门名称"
prop="deptName"
v-model="form.deptName"
placeholder="请输入所属部门名称"
/>
<Field
label="评价结果"
prop="reviewResult"
v-model="form.reviewResult"
type="select"
:enumData="dict.reviewResult"
placeholder="请选择评价结果"
/>
<Field
label="评价时间"
prop="reviewTime"
v-model="form.reviewTime"
type="date"
/>
<Field
label="评价来源"
prop="reviewSource"
v-model="form.reviewSource"
type="select"
:enumData="dict.reviewSource"
placeholder="请选择评价来源"
/>
<Field
label="评价设备"
prop="reviewDevice"
v-model="form.reviewDevice"
placeholder="请输入评价设备"
/>
<Field
label="绩效规则id"
prop="ruleId"
v-model="form.ruleId"
placeholder="请输入绩效规则id"
/>
<Field
label="规则名称"
prop="ruleName"
v-model="form.ruleName"
placeholder="请输入规则名称"
/>
<Field
label="扣分方式"
prop="subMethod"
v-model="form.subMethod"
type="select"
:enumData="dict.subMethod"
placeholder="请选择扣分方式"
/>
<Field
label="扣分人员"
prop="deductPerson"
v-model="form.deductPerson"
placeholder="请输入扣分人员"
/>
<Field
label="扣分时间"
prop="deductTime"
v-model="form.deductTime"
type="date"
/>
<Field
label="扣分或增加分值"
prop="score"
v-model="form.score"
placeholder="请输入扣分或增加分值"
/>
<Field
label="处理状态"
prop="processStatus"
v-model="form.processStatus"
type="select"
:enumData="dict.processStatus"
placeholder="请选择处理状态"
/>
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row>
<form-buttons
@submit="submitForm"
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form> -->
</el-drawer>
</template>
<script>
import form from "@/assets/mixins/formdialog";
export default {
name: "PerformReviewRecordDetail",
mixins: [form],
components: {
},
created() {
this.changePath("perform/review/record")
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "评价差评绩效记录信息",
// 是否显示弹出层
open: false,
direction:"rtl",
toString:[
"reviewResult",
"subMethod",
"processStatus",
],
toDate:[
"reviewTime",
"deductTime",
],
// 表单校验
rules: {
staffName: [
{required: true,message: "请输入员工姓名", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
import form from "@/assets/mixins/formdialog";
export default {
name: "PerformReviewRecordDetail",
mixins: [form],
components: {},
created() {
this.changePath("perform/review/record");
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "评价差评绩效记录信息",
// 是否显示弹出层
open: false,
direction: "rtl",
toString: ["reviewResult", "subMethod", "processStatus"],
toDate: ["reviewTime", "deductTime"],
// 表单校验
rules: {
staffName: [
{ required: true, message: "请输入员工姓名", trigger: "blur" },
{ max: 64, message: "最多只能录入64个字符", trigger: "blur" },
],
createTime: [{ required: true, message: "请选择创建时间" }],
},
staffArr: [
{
label: "员工1",
value: "1",
},
],
deptArr: [],
kaoqinArr: [],
fileList: [],
dateValue: "",
timeValue: "",
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="perform/review/record/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改评价差评绩效记录信息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "perform/review/record/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增评价差评绩效记录信息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="perform/review/record/view";
this.getData();
this.pageInfo.type="view"
this.title = "评价差评绩效记录信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
methods: {
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "perform/review/record/edit";
this.getData();
this.pageInfo.type = "edit";
this.title = "修改评价差评绩效记录信息";
},
/** 新增 */
add(row) {
this.reset();
this.urls.currUrl = "perform/review/record/add";
this.getData();
this.pageInfo.type = "add";
this.title = "新增评价差评绩效记录信息";
},
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "perform/review/record/view";
this.getData();
this.pageInfo.type = "view";
this.title = "评价差评绩效记录信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
staffId : null,
staffName : "",
workNum : "",
windowNum : "",
deptId : null,
deptName : "",
reviewResult : null,
reviewTime : null,
reviewSource : "",
reviewDevice : "",
ruleId : null,
ruleName : "",
subMethod : 1,
deductPerson : "",
deductTime : null,
score : 0.00,
processStatus : 1,
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
// 表单重置
reset() {
this.form = {
staffId: null,
staffName: "",
workNum: "",
windowNum: "",
deptId: null,
deptName: "",
reviewResult: null,
reviewTime: null,
reviewSource: "",
reviewDevice: "",
ruleId: null,
ruleName: "",
subMethod: 1,
deductPerson: "",
deductTime: null,
score: 0.0,
processStatus: 1,
remark: "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
},
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${
files.length
} 个文件,共选择了 ${files.length + fileList.length} 个文件`
);
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}?`);
},
},
};
</script>
......@@ -27,4 +27,11 @@ public interface RoleUserService extends ICRUDService<RoleUserEntity,Long> {
void doDistributionUser(RoleUserQuery query);
void doDistributionRole(RoleUserQuery query);
/**
* 给用户分配角色
* @param query
*/
void assignRoleToUser(RoleUserQuery query);
}
\ No newline at end of file
......@@ -70,6 +70,26 @@ public class RoleUserServiceImpl extends AbstractCRUDServiceImpl<RoleUserDao,Rol
this.dao.insertBatch(list);
}
@Override
public void assignRoleToUser(RoleUserQuery query) {
//删除当前用户所有关联角色
Long userId = query.getUserId();
Map<String, Object> condition = new HashMap<>(1);
condition.put("userId", userId);
dao.delete(condition);
//新增用户角色
List<Long> roleIdList = query.getRoleIdList();
List<RoleUserEntity> list = new ArrayList<>();
for (Long roleId : roleIdList) {
RoleUserEntity rolseUser = new RoleUserEntity();
rolseUser.setRoleId(roleId);
rolseUser.setUserId(userId);
list.add(rolseUser);
}
this.save(list);
}
}
\ No newline at end of file
......@@ -4,6 +4,7 @@
package com.mortals.xhx.base.system.task.service.impl;
import cn.hutool.core.net.NetUtil;
import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.common.code.ExcuteStatus;
import com.mortals.framework.common.code.TaskExcuteStrategy;
......@@ -148,7 +149,8 @@ public class TaskServiceImpl extends AbstractCRUDServiceImpl<TaskDao, TaskEntity
@Override
public void start() throws AppException {
final String localIp = SystemUtil.getLocalHostIp();
// final String localIp = SystemUtil.getLocalHostIp();
final String localIp = NetUtil.getLocalhostStr();
log.info("任务执行线程启动...-->" + localIp);
thread = new Thread(() -> {
// 将本机上次执行而未完成的任务状态变更
......
......@@ -48,7 +48,7 @@ public class UserEntity extends UserVo implements IUser {
*/
private String qq;
/**
* 用户类型(0.系统用户,1.普通用户,2.工作人员)
* 用户类型(0.系统用户,1.普通用户,2.工作人员,3.普通员工)
*/
private Integer userType;
......@@ -232,7 +232,7 @@ public class UserEntity extends UserVo implements IUser {
this.qq = qq;
}
/**
* 获取 用户类型(0.系统用户,1.普通用户,2.工作人员)
* 获取 用户类型(0.系统用户,1.普通用户,2.工作人员,3.普通员工)
* @return Integer
*/
public Integer getUserType(){
......
......@@ -6,6 +6,7 @@ import com.mortals.framework.ap.CookieService;
import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.ap.SysConstains;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.IAuthTokenService;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.service.IUser;
......@@ -32,6 +33,8 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
......@@ -46,34 +49,12 @@ public class ApiLoginController extends BaseJsonBodyController {
@Autowired
private UserService userService;
@Autowired
private ValidCodeService validCodeService;
@Autowired
private ResourceService resourceService;
@Autowired
private MenuService menuService;
// @Autowired
// private ITokenService tokenService;
@Autowired
private ICacheService cacheService;
@Autowired
private IAuthTokenService authTokenService;
@RequestMapping("login")
public String login(@RequestBody LoginForm loginForm) throws Exception {
/*
JSONObject ret = new JSONObject();
String loginName = loginForm.getLoginName();
String password = loginForm.getPassword();
UserPdu userPdu = new UserPdu();
userPdu.setLoginName(loginName);
userPdu.setPassword(password);
String resp = userFeign.portalLogin(userPdu);
return resp;
*/
JSONObject ret = new JSONObject();
String loginName = loginForm.getLoginName();
String password = loginForm.getPassword();
......@@ -88,42 +69,35 @@ public class ApiLoginController extends BaseJsonBodyController {
loginForm.validate();
userEntity = userService.doLogin(loginName, password, ip);
userEntity.setLastLoginAddress(ip);
recordSysLog(request, userEntity, "用户登录系统成功!");
// 返回拥有的菜单数据
Set<String> urls = resourceService.findUrlSetByUserId(userEntity.getId());
List<MenuEntity> outlookBarList = menuService.findTreeMenu(userEntity, urls);
recordSysLog(request, userEntity, "H5用户登录系统成功!");
String currUserName = userEntity.getRealName();
if (currUserName == null || currUserName.trim().length() == 0) {
currUserName = "管理员";
}
JSONObject data = new JSONObject();
data.put("currUserName", currUserName);
data.put("barList", outlookBarList);
data.put("id", userEntity.getId());
data.put("userType", userEntity.getUserType());
HashSet<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
if (ObjectUtils.isEmpty(userEntity.getUserType()) || !set.contains(userEntity.getUserType())) {
throw new AppException("当前用户不支持H5登录!");
}
userEntity.setLoginTime(System.currentTimeMillis());
userEntity.setToken(IdUtil.fastSimpleUUID());
userEntity.setExpireTime(DateUtils.addCurrDate(7).getTime());
userEntity.setMenuUrl(generateMenuUrlCode(urls));
String token = authTokenService.createToken(userEntity);
data.put("token", token);
//设置token 和过期时间
//data.put("expiresTime", DateUtils.addCurrDate(7).getTime());
generateMenuUrlCode(urls);
//this.generateBlackCookie(request, response, loginName, urls);
ret.put(KEY_RESULT_DATA, data);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, "用户登录系统成功!");
ret.put("resources", urls);
return ret.toJSONString();
} catch (Exception e) {
log.error("login error ", e);
if (userEntity == null) {
userEntity = new UserEntity();
userEntity.setLoginName(loginName);
}
log.error("h5 login error ", e);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, super.convertException(e));
return ret.toJSONString();
......@@ -136,78 +110,6 @@ public class ApiLoginController extends BaseJsonBodyController {
super.removeCurrUser(request);
}
@RequestMapping("index")
public String index() throws Exception {
JSONObject ret = new JSONObject();
IUser user = this.getCurUser();
if (user == null) {
return JSONObject.toJSONString(Rest.fail(ERROR_TOKEN_EXPIRED, ERROR_TOKEN_EXPIRED_CONTENT));
}
Set<String> urls = resourceService.findUrlSetByUserId(user.getId());
List<MenuEntity> outlookBarList = menuService.findTreeMenu(user, urls);
String currUserName = user.getRealName();
if (currUserName == null || currUserName.trim().length() == 0) {
currUserName = "管理员";
}
JSONObject data = new JSONObject();
String token = authTokenService.getToken(request);
data.put("token", token);
data.put("currUserName", currUserName);
data.put("barList", outlookBarList);
data.put("id", user.getId());
data.put("userType", user.getUserType());
ret.put(KEY_RESULT_DATA, data);
//this.generateBlackCookie(request, response, user.getLoginName(), urls);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, "用户登录系统成功!");
ret.put("resources", urls);
return ret.toJSONString();
}
private void generateBlackCookie(HttpServletRequest request, HttpServletResponse response, String loginName, Set<String> urls) {
try {
String cacheKey = RedisKey.KEY_MENU_CACHE + loginName;
String securityKey = GlobalSysInfo.getPropertyValue(SysConstains.PROP_COOKIE_SECURITY_KEY);
//应为Cookie会超长,所以改为仅存储key将值放入redis
//CookieService.setCookieForAuth(request, response, securityKey, null);
StringBuilder sb = new StringBuilder();
if (urls != null && urls.size() > 0) {
for (String url : urls) {
int index = url.hashCode() & (Integer.MAX_VALUE - 1);
sb.append(index).append(",");
}
}
String menuUrl = sb.toString();
menuUrl = AESUtil.encrypt(menuUrl, securityKey);
cacheService.set(cacheKey, menuUrl, 604800);
HttpUtil.setCookieValue(request, response, SysConstains.COOKIE_MENU, cacheKey, -1);
} catch (Throwable e) {
}
}
private String generateMenuUrlCode(Set<String> urls) {
try {
String securityKey = GlobalSysInfo.getPropertyValue(SysConstains.PROP_COOKIE_SECURITY_KEY);
StringBuilder sb = new StringBuilder();
if (urls != null && urls.size() > 0) {
for (String url : urls) {
int index = url.hashCode() & (Integer.MAX_VALUE - 1);
sb.append(index).append(",");
}
}
String menuUrl = sb.toString();
return AESUtil.encrypt(menuUrl, securityKey);
} catch (Throwable e) {
log.error("编码异常", e);
return null;
}
}
@RequestMapping("parseToken")
public IUser parseToken() throws Exception {
......
......@@ -55,7 +55,7 @@ public class AppealApiController extends BaseJsonBodyController {
/**
* 个人申诉绩效统计
*/
@PostMapping(value = "appeal/stat")
@PostMapping(value = "stat")
public Rest<AppealStatInfo> appealStat() {
String busiDesc = "H5个人申诉绩效统计";
Rest<AppealStatInfo> rest = Rest.ok(busiDesc + " 【成功】");
......@@ -72,7 +72,7 @@ public class AppealApiController extends BaseJsonBodyController {
/**
* 申诉列表
*/
@PostMapping(value = "appeal/list")
@PostMapping(value = "list")
public Rest<List<PerformAttendAppealEntity>> performList(@RequestBody AppealReq appealReq) {
String busiDesc = "个人申诉列表";
Rest<List<PerformAttendAppealEntity>> rest = Rest.ok(busiDesc + " 【成功】");
......@@ -95,8 +95,8 @@ public class AppealApiController extends BaseJsonBodyController {
/**
* 申诉详细
*/
@PostMapping(value = "appeal/detail")
public Rest<PerformAttendAppealEntity> performDetail(@RequestBody AppealReq appealReq) {
@PostMapping(value = "info")
public Rest<PerformAttendAppealEntity> performInfo(@RequestBody AppealReq appealReq) {
String busiDesc = "个人申诉详细";
Rest<PerformAttendAppealEntity> rest = Rest.ok(busiDesc + " 【成功】");
try {
......@@ -116,7 +116,7 @@ public class AppealApiController extends BaseJsonBodyController {
/**
* 申诉新增
*/
@PostMapping(value = "appeal/save")
@PostMapping(value = "save")
public Rest<String> appealSave(@RequestBody PerformAttendAppealEntity appealEntity) {
String busiDesc = "个人申诉新增";
Rest<String> rest = Rest.ok(busiDesc + " 【成功】");
......
......@@ -48,7 +48,7 @@ public class FeedbackApiController extends BaseJsonBodyController {
/**
* 反馈列表
*/
@PostMapping(value = "feedback/list")
@PostMapping(value = "list")
public Rest<List<PerformAttendAppealEntity>> feedbackList(@RequestBody FeedbackReq feedbackReq) {
String busiDesc = "个人反馈列表";
Rest<List<PerformAttendAppealEntity>> rest = Rest.ok(busiDesc + " 【成功】");
......@@ -71,7 +71,7 @@ public class FeedbackApiController extends BaseJsonBodyController {
/**
* 反馈详细
*/
@PostMapping(value = "feedback/question")
@PostMapping(value = "question")
public Rest<PerformAttendAppealEntity> performDetail(@RequestBody AppealReq appealReq) {
String busiDesc = "个人申诉详细";
Rest<PerformAttendAppealEntity> rest = Rest.ok(busiDesc + " 【成功】");
......@@ -92,9 +92,9 @@ public class FeedbackApiController extends BaseJsonBodyController {
/**
* 申诉新增
*/
@PostMapping(value = "appeal/save")
public Rest<String> appealSave(@RequestBody PerformAttendAppealEntity appealEntity) {
String busiDesc = "个人申诉新增";
@PostMapping(value = "save")
public Rest<String> feedbackSave(@RequestBody PerformAttendAppealEntity appealEntity) {
String busiDesc = "反馈回答";
Rest<String> rest = Rest.ok(busiDesc + " 【成功】");
try {
......
......@@ -47,7 +47,7 @@ public class PerformApiController extends BaseJsonBodyController {
/**
* 个人当天绩效统计
*/
@PostMapping(value = "perform/stat")
@PostMapping(value = "stat")
public Rest<PerformStatInfo> performStat() {
String busiDesc = "H5 个人绩效统计";
Rest<PerformStatInfo> rest = Rest.ok(busiDesc + " 【成功】");
......@@ -65,7 +65,7 @@ public class PerformApiController extends BaseJsonBodyController {
/**
* 个人当月绩效加分扣分列表
*/
@PostMapping(value = "perform/list")
@PostMapping(value = "list")
public Rest<List<PerformInfo>> performList(@RequestBody PerformReq performReq) {
String busiDesc = "个人绩效列表";
Rest<List<PerformInfo>> rest = Rest.ok(busiDesc + " 【成功】");
......@@ -107,7 +107,7 @@ public class PerformApiController extends BaseJsonBodyController {
/**
* 详细
*/
@PostMapping(value = "perform/info")
@PostMapping(value = "info")
public Rest<PerformDetailInfo> performInfo(@RequestBody PerformReq performReq) {
String busiDesc = "个人绩效增减详细";
Rest<PerformDetailInfo> rest = Rest.ok(busiDesc + " 【成功】");
......
......@@ -2,6 +2,7 @@ package com.mortals.xhx.daemon.task;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.PageUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.common.Rest;
......@@ -115,7 +116,7 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
List<AttendanceRecordHikEntity> attRecords = doorEventsRest.getData().getList().stream().map(item -> {
AttendanceRecordHikEntity recordHikEntity = new AttendanceRecordHikEntity();
recordHikEntity.initAttrValue();
StaffEntity staffCache = staffService.getExtCache(item.getJobNo());
StaffEntity staffCache = staffService.getExtCache(StrUtil.padPre(item.getJobNo(), 8, "0"));
if (ObjectUtils.isEmpty(staffCache)) {
log.info("staff is null !staffCode:{}",item.getJobNo());
return null;
......
package com.mortals.xhx.daemon.task;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.common.Rest;
......@@ -57,8 +58,6 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
@Autowired
private DeptService deptService;
@Autowired
private StaffService service;
@Autowired
private AttendanceStatService attendanceStatService;
......@@ -70,12 +69,11 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
@Override
public void excuteTask(ITask task) throws AppException {
log.info("同步用户--部门");
try {
//同步部门
syncDepts();
//同步员工
log.info("同步用户");
syncPersons();
log.info("同步部门");
syncDepts();
} catch (Exception e) {
log.error("同步人事异常", e);
}
......@@ -89,7 +87,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
if (personRest.getCode() == YesNoEnum.YES.getValue()) {
List<PersonInfo> personInfoList = personRest.getData().getList();
for (PersonInfo personInfo : personInfoList) {
StaffEntity staffEntity = staffService.getExtCache(personInfo.getJobNo());
StaffEntity staffEntity = staffService.getExtCache(StrUtil.padPre(personInfo.getJobNo(), 8, "0"));
DeptEntity deptEntity = deptService.selectOne(new DeptQuery().deptCode(personInfo.getOrgIndexCode()));
// AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId()));
// AttendanceStatEntity statEntity = attendanceStatService.selectOne(new AttendanceStatQuery().staffId(staffEntity.getId()));
......@@ -111,7 +109,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
staffEntity.setPhoneNumber(personInfo.getPhoneNo());
staffEntity.setCreateUserId(1L);
staffEntity.setCreateTime(new Date());
service.save(staffEntity);
staffService.save(staffEntity);
AttendanceVacationBalanceEntity balanceEntity = new AttendanceVacationBalanceEntity();
balanceEntity.initAttrValue();
......@@ -181,7 +179,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
staffEntity.setPhoneNumber(personInfo.getPhoneNo());
staffEntity.setUpdateUserId(1L);
staffEntity.setUpdateTime(new Date());
service.update(staffEntity);
staffService.update(staffEntity);
//统计各级部门员工数量
String ancestor = deptEntity.getAncestors().split(",", 2)[1];
String[] ancestors = ancestor.split(",");
......
package com.mortals.xhx.module.staff.service.impl;
import cn.hutool.core.util.StrUtil;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
import com.mortals.framework.util.SecurityUtil;
import com.mortals.xhx.base.system.role.model.RoleUserQuery;
import com.mortals.xhx.base.system.role.service.RoleUserService;
import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.common.code.StaffSatusEnum;
import com.mortals.xhx.common.code.StaffTypeEnum;
import com.mortals.xhx.common.code.StatusEnum;
import com.mortals.xhx.common.code.UserStatus;
import com.mortals.xhx.module.staff.dao.StaffDao;
import com.mortals.xhx.module.staff.dao.ibatis.StaffDaoImpl;
import com.mortals.xhx.module.staff.dao.ibatis.StaffLeaveDaoImpl;
......@@ -13,8 +22,10 @@ import com.mortals.xhx.module.staff.model.vo.StaffInfoVo;
import com.mortals.xhx.module.staff.service.StaffService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
......@@ -29,10 +40,17 @@ import java.util.stream.Collectors;
@Service("staffService")
public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, StaffEntity, Long> implements StaffService {
@Autowired
private UserService userService;
@Autowired
private RoleUserService roleUserService;
@Override
protected String getExtKey(StaffEntity data) {
//工号作为redis 扩展key
return data.getWorkNum();
return StrUtil.padPre(data.getWorkNum(), 8, "0");
// return "1000"+data.getWorkNum();
}
@Override
......@@ -68,4 +86,51 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
return staffEntities.size();
}
@Override
protected void saveAfter(StaffEntity entity, Context context) throws AppException {
try {
UserEntity userEntity = new UserEntity();
if (ObjectUtils.isEmpty(entity.getLoginName())) {
//姓名加工号作为登录名
entity.setLoginName(entity.getName() + entity.getWorkNum());
}
if (ObjectUtils.isEmpty(entity.getLoginPwd())) {
//设置初始密码
entity.setLoginPwd("123456");
}
userEntity.setLoginName(StrUtil.cleanBlank(entity.getLoginName()));
userEntity.setRealName(entity.getName());
userEntity.setUserType(2);
userEntity.setSiteIds("1");
userEntity.setAreaCodes("511500000000");
userEntity.setStatus(UserStatus.NORMAL.getValue());
userEntity.setCreateUserId(this.getContextUserId(context));
userEntity.setCreateTime(new Date());
userEntity.setCustomerId(entity.getId());
userEntity.setLoginPwd(SecurityUtil.md5DoubleEncoding(entity.getLoginPwd()));
int insert = userService.getUserDao().insert(userEntity);
if (insert > 0) {
RoleUserQuery roleUserQuery = new RoleUserQuery();
roleUserQuery.setUserId(userEntity.getId());
roleUserQuery.setRoleIdList(Arrays.asList(4L));
roleUserService.assignRoleToUser(roleUserQuery);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
super.saveAfter(entity, context);
}
public static void main(String[] args) {
System.out.println("1" + StrUtil.padPre("125", 7, "0"));
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.user.dao.ibatis.UserDaoImpl">
<mapper namespace="com.mortals.xhx.base.system.user.dao.ibatis.UserDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="UserEntity" id="UserEntity-Map">
......
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