Commit 4e2dc3d1 authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents 8dd1d535 74bf86ab
...@@ -226,7 +226,6 @@ export default { ...@@ -226,7 +226,6 @@ export default {
}, },
maxLength: { maxLength: {
type: Number, type: Number,
default: 256,
}, },
}, },
methods: { methods: {
......
<template> <template>
<div class="page"> <div class="page">
<div > <div>
<tab-pane <tab-pane
:thirdList="thirdList" :thirdList="thirdList"
:activeName="activeName" :activeName="activeName"
...@@ -66,14 +66,14 @@ ...@@ -66,14 +66,14 @@
@click="lookexportHis" @click="lookexportHis"
>导出记录</el-button >导出记录</el-button
> >
<!-- <el-button <el-button
slot="table-head-left2" slot="table-head-left2"
style="margin-left: 10px" style="margin-left: 10px"
icon="el-icon-tickets" icon="el-icon-tickets"
size="mini" size="mini"
@click="setdialog" @click="setdialog"
>表格设置</el-button >表格设置</el-button
> --> >
</LayoutTable> </LayoutTable>
<drawer-show ref="drawerform" @ok="getData" /> <drawer-show ref="drawerform" @ok="getData" />
<!-- 导出记录查看 --> <!-- 导出记录查看 -->
...@@ -189,7 +189,7 @@ import drawerShow from "./drawershow"; ...@@ -189,7 +189,7 @@ import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import TabPane from "@/components/tabPane.vue"; import TabPane from "@/components/tabPane.vue";
import { timestampToTime } from "@/assets/utils/dateFormat"; import { timestampToTime } from "@/assets/utils/dateFormat";
import {formatterDateOnly} from "@/assets/utils/table"; import { formatterDateOnly } from "@/assets/utils/table";
export default { export default {
name: "AttendanceRecordList", name: "AttendanceRecordList",
components: { components: {
...@@ -401,12 +401,30 @@ export default { ...@@ -401,12 +401,30 @@ export default {
/** 子表列元素 */ /** 子表列元素 */
columnSet: [ columnSet: [
{ prop: "shiftsName", label: "班次名称", width: 150 }, { prop: "shiftsName", label: "班次名称", width: 150 },
{ prop: "goWorkDate", label: "上班打卡时间", width: 100 , formatter: this.formatterDate}, {
{ prop: "goWorkResult", label: "上班打卡结果", width: 100, formatter: this.formatterString }, prop: "goWorkDate",
{ prop: "offWorkDate", label: "下班打卡时间", width: 100 , formatter: this.formatterDate}, label: "上班打卡时间",
{ prop: "offWorkResult", label: "下班打卡结果", width: 100 , formatter: this.formatterString} width: 100,
formatter: this.formatterDate,
},
{
prop: "goWorkResult",
label: "上班打卡结果",
width: 100,
formatter: this.formatterString,
},
{
prop: "offWorkDate",
label: "下班打卡时间",
width: 100,
formatter: this.formatterDate,
},
{
prop: "offWorkResult",
label: "下班打卡结果",
width: 100,
formatter: this.formatterString,
},
], ],
config: { config: {
search: [ search: [
...@@ -459,7 +477,6 @@ export default { ...@@ -459,7 +477,6 @@ export default {
label: "考勤结束时间", label: "考勤结束时间",
fuzzy: false, fuzzy: false,
}, },
], ],
columns: [ columns: [
{ type: "selection", width: 60 }, { type: "selection", width: 60 },
...@@ -479,24 +496,35 @@ export default { ...@@ -479,24 +496,35 @@ export default {
{ label: "部门", prop: "deptName", formatter: this.formatters }, { label: "部门", prop: "deptName", formatter: this.formatters },
{ label: "职位", prop: "positionName", formatter: this.formatters }, { label: "职位", prop: "positionName", formatter: this.formatters },
{ label: "班次", prop: "shiftsName", formatter: this.formatters }, { label: "班次", prop: "shiftsName", formatter: this.formatters },
{ label: "签到结果", prop: "signInResult", formatter: this.formatter }, {
{ label: "签退结果", prop: "signOutResult", formatter: this.formatter }, label: "签到结果",
prop: "signInResult",
formatter: this.formatter,
},
{
label: "签退结果",
prop: "signOutResult",
formatter: this.formatter,
},
{ label: "打卡结果", prop: "punchResult", formatter: this.formatter }, { label: "打卡结果", prop: "punchResult", formatter: this.formatter },
{ label: "考勤类型", prop: "attendType", formatter: this.formatter }, { label: "考勤类型", prop: "attendType", formatter: this.formatter },
{label: "考勤打卡记录详细信息", {
label: "考勤打卡记录详细信息",
width: 120, width: 120,
prop: "subColumns", prop: "subColumns",
formatter: (row) => { formatter: (row) => {
let widthsize = this.columnSet.reduce((pre, cur) => { let widthsize = this.columnSet.reduce((pre, cur) => {
return pre + Number(cur.width); return pre + Number(cur.width);
}, 50); }, 50);
return ( return (
<el-popover placement="right" width={widthsize} trigger="click"> <el-popover placement="right" width={widthsize} trigger="click">
{this.renderTable(row.attendanceRecordDetailList)} {this.renderTable(row.attendanceRecordDetailList)}
<el-button type="text" slot="reference">详细</el-button> <el-button type="text" slot="reference">
</el-popover> 详细
); </el-button>
</el-popover>
);
}, },
}, },
// { // {
......
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" :config="tableConfig" notAdd notDel> <LayoutTable :data="tableData" :config="tableConfig" notAdd notDel>
<el-button <el-button
slot="table-head-left2" slot="table-head-left2"
style="margin-left: 10px" style="margin-left: 10px"
icon="el-icon-tickets" icon="el-icon-tickets"
size="mini" size="mini"
type="primary" type="primary"
@click="doExport" @click="doExport"
:disabled="isExport" :disabled="isExport"
>导出</el-button> >导出</el-button
<el-button >
slot="table-head-left2" <el-button
style="margin-left: 10px" slot="table-head-left2"
icon="el-icon-tickets" style="margin-left: 10px"
size="mini" icon="el-icon-tickets"
type="success" size="mini"
@click="lookexportHis" type="success"
>导出记录</el-button> @click="lookexportHis"
<!-- <el-button >导出记录</el-button
slot="table-head-left2" >
style="margin-left: 10px" <el-button
icon="el-icon-tickets" slot="table-head-left2"
size="mini" style="margin-left: 10px"
@click="setdialog" icon="el-icon-tickets"
>表格设置</el-button> --> size="mini"
</LayoutTable> @click="setdialog"
<dialog-show ref="dialogform" @ok="getData" /> >表格设置</el-button
<!-- 表格设置 --> >
<el-dialog :visible.sync="isdialog" title="导出表格设置"> </LayoutTable>
<div class="tipsword">请选择表格展示字段,导出的表格中的内容选中的字段将保持一致。</div> <dialog-show ref="dialogform" @ok="getData" />
<el-checkbox-group v-model="checkList"> <!-- 表格设置 -->
<el-checkbox v-for="(item,index) in setcolum" :key="index" :label="item.label"> <el-dialog :visible.sync="isdialog" title="导出表格设置">
</el-checkbox> <div class="tipsword">
</el-checkbox-group> 请选择表格展示字段,导出的表格中的内容选中的字段将保持一致。
<div class="mt20" style="text-align:right"> </div>
<el-button>取消</el-button> <el-checkbox-group v-model="checkList">
<el-button type="primary">确定</el-button> <el-checkbox
</div> v-for="(item, index) in setcolum"
</el-dialog> :key="index"
<!-- 导出记录查看 --> :label="item.label"
<el-drawer >
title="导出记录" </el-checkbox>
:visible.sync="drawerhistory" </el-checkbox-group>
:direction="direction"> <div class="mt20" style="text-align:right">
<div class="hisList"> <el-button>取消</el-button>
<div class="list mt10" v-for="item in 10" :key="item"> <el-button type="primary">确定</el-button>
<div class="flex flex-align-center flex-pack-justify"> </div>
<div>打卡记录汇总</div> </el-dialog>
<el-button type="text">导出成功</el-button> <!-- 导出记录查看 -->
</div> <el-drawer
<div class="times"> title="导出记录"
导出时间:2020-08-13 :visible.sync="drawerhistory"
</div> :direction="direction"
</div> >
</div> <div class="hisList">
</el-drawer> <div class="list mt10" v-for="item in 10" :key="item">
</div> <div class="flex flex-align-center flex-pack-justify">
<div>打卡记录汇总</div>
<el-button type="text">导出成功</el-button>
</div>
<div class="times">
导出时间:2020-08-13
</div>
</div>
</div>
</el-drawer>
</div>
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow"; import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import {getFirstDay,getLastDay,getdiffdate,timestampToTime,getMyDay} from '@/assets/utils/dateFormat.js' import {
export default { getFirstDay,
name: "AttendanceStatList", getLastDay,
components: { getdiffdate,
dialogShow timestampToTime,
}, getMyDay,
mixins: [table], } from "@/assets/utils/dateFormat.js";
created() { export default {
this.query.startTime = getFirstDay() name: "AttendanceStatList",
this.query.endTime = getLastDay() components: {
this.initalArr = this.config.columns dialogShow,
}, },
methods: { mixins: [table],
// 处理 created() {
handleArr(arr,currentTime){ this.query.startTime = getFirstDay();
let index = arr.findIndex(item => item.createTime === currentTime) this.query.endTime = getLastDay();
if(index > -1){ this.initalArr = this.config.columns;
return arr[index].attendanceSummary },
}else{ methods: {
return '-' // 处理
} handleArr(arr, currentTime) {
}, let index = arr.findIndex((item) => item.createTime === currentTime);
afterRender(data) { if (index > -1) {
this.addColumn = getdiffdate(this.query.startTime,this.query.endTime) return arr[index].attendanceSummary;
// 动态处理 } else {
let addobjArr = [] return "-";
this.addColumn.map((item,index) => { }
let obj = { },
label:item +'('+ getMyDay(new Date(item))+')', afterRender(data) {
prop:'attendanceStaffStatEntities', this.addColumn = getdiffdate(this.query.startTime, this.query.endTime);
formatter: (row) => { // 动态处理
if(row.attendanceStaffStatEntities.length>0){ let addobjArr = [];
return this.handleArr(row.attendanceStaffStatEntities,item) this.addColumn.map((item, index) => {
}else{ let obj = {
return '-' label: item + "(" + getMyDay(new Date(item)) + ")",
} prop: "attendanceStaffStatEntities",
} formatter: (row) => {
} if (row.attendanceStaffStatEntities.length > 0) {
addobjArr.push(obj) return this.handleArr(row.attendanceStaffStatEntities, item);
}) } else {
this.config.columns = [...this.initalArr,...addobjArr] return "-";
this.$forceUpdate()
},
beforeRender(row) {
row.data.forEach(element => {
if(element.attendanceStaffStatEntities.length>0){
element.attendanceStaffStatEntities.forEach(item1 => {
item1.createTime = timestampToTime(item1.createTime,3)
})
}
})
return row
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
setdialog(){
this.isdialog = true
this.setcolum = this.config.columns.filter(item => item.label&&item.prop)
},
lookexportHis(){
this.drawerhistory = true
},
/** 导出Excel */
doExport() {
this.isExport = true;
let params = {}
for(let value of this.config.search){
if(this.query[value.name]){
params[value.name] = this.query[value.name]
}
}
if(this.selection.length>0){
params['idList'] = this.selection
}
this.$download("/attendance/stat/exportExcel", {
...params
}, { type: "excel" }).then(() => this.isExport = false).catch(error => {
this.isExport = false;
this.$message.error(error.message);
})
} }
},
};
addobjArr.push(obj);
});
this.config.columns = [...this.initalArr, ...addobjArr];
this.$forceUpdate();
},
beforeRender(row) {
row.data.forEach((element) => {
if (element.attendanceStaffStatEntities.length > 0) {
element.attendanceStaffStatEntities.forEach((item1) => {
item1.createTime = timestampToTime(item1.createTime, 3);
});
}
});
return row;
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
setdialog() {
this.isdialog = true;
this.setcolum = this.config.columns.filter(
(item) => item.label && item.prop
);
},
lookexportHis() {
this.drawerhistory = true;
},
/** 导出Excel */
doExport() {
this.isExport = true;
let params = {};
for (let value of this.config.search) {
if (this.query[value.name]) {
params[value.name] = this.query[value.name];
}
}
if (this.selection.length > 0) {
params["idList"] = this.selection;
}
this.$download(
"/attendance/stat/exportExcel",
{
...params,
}, },
data() { { type: "excel" }
return { )
config: { .then(() => (this.isExport = false))
isshowTabPane:true, .catch((error) => {
search: [ this.isExport = false;
{ this.$message.error(error.message);
name: "deptId", });
type: "select", },
label: "全部部门", },
fuzzy: false data() {
}, return {
{ config: {
name: "groupId", isshowTabPane: true,
type: "select", search: [
label: "全部考勤组", {
fuzzy: false name: "deptId",
}, type: "select",
{ label: "全部部门",
name: "classId", fuzzy: false,
type: "select", },
label: "全部班次", {
fuzzy: false name: "groupId",
}, type: "select",
{ label: "全部考勤组",
name:'startTime', fuzzy: false,
type: "date", },
label: "考勤开始时间", {
fuzzy: false name: "classId",
}, type: "select",
{ label: "全部班次",
name:'endTime', fuzzy: false,
type: "date", },
label: "考勤结束时间", {
fuzzy: false name: "startTime",
}, type: "date",
{ label: "考勤开始时间",
name: "staffName", fuzzy: false,
type: "text", },
label: "员工姓名", {
fuzzy: true name: "endTime",
}, type: "date",
{ label: "考勤结束时间",
name: "phoneNumber", fuzzy: false,
type: "text", },
label: "手机号", {
fuzzy: true name: "staffName",
} type: "text",
], label: "员工姓名",
columns: [ fuzzy: true,
{type: "selection", width: 60,fixed:'left'}, },
{type: "index",label: "序号",width: 50,fixed:'left'}, {
name: "phoneNumber",
{label: "窗口类别", prop: "windowCategory",fixed:'left',width:100}, type: "text",
label: "手机号",
{label: "员工姓名", prop: "staffName",fixed:'left',width:100}, fuzzy: true,
{label:"部门",prop:"deptName"}, },
{label: "出勤天数", prop: "goTimes",formatter: this.formatter}, ],
columns: [
{label: "上午缺卡次数", prop: "morningTimes",formatter: this.formatter}, { type: "selection", width: 60, fixed: "left" },
{ type: "index", label: "序号", width: 50, fixed: "left" },
{label: "下午缺卡次数", prop: "afternoonTimes",formatter: this.formatter},
{label: "回单位(天)", prop: "backToUnit"}, {
label: "窗口类别",
{label: "因公请假(天)", prop: "onDutyLeave"}, prop: "windowCategory",
fixed: "left",
{label: "外出勘验(天)", prop: "outOfOffice"}, width: 100,
},
{label: "值班补班(天)", prop: "shiftCompensation"},
{ label: "员工姓名", prop: "staffName", fixed: "left", width: 100 },
{label: "体检(天)", prop: "physicalExamination"}, { label: "部门", prop: "deptName" },
{ label: "出勤天数", prop: "goTimes", formatter: this.formatter },
{label: "隔离(天)", prop: "quarantine"},
{
{label: "因公外出(与窗口工作无关/天)", prop: "businessTrip"}, label: "上午缺卡次数",
prop: "morningTimes",
{label: "公休(天)", prop: "publicHoliday"}, formatter: this.formatter,
},
{label: "病假(天)", prop: "sickLeave"},
{
label: "下午缺卡次数",
prop: "afternoonTimes",
formatter: this.formatter,
},
{ label: "回单位(天)", prop: "backToUnit" },
{ label: "因公请假(天)", prop: "onDutyLeave" },
{ label: "外出勘验(天)", prop: "outOfOffice" },
{ label: "值班补班(天)", prop: "shiftCompensation" },
{ label: "体检(天)", prop: "physicalExamination" },
{ label: "隔离(天)", prop: "quarantine" },
{ label: "因公外出(与窗口工作无关/天)", prop: "businessTrip" },
{ label: "公休(天)", prop: "publicHoliday" },
{ label: "病假(天)", prop: "sickLeave" },
{ label: "丧假(天)", prop: "funeralLeave" },
{ label: "婚假(天)", prop: "marriageLeave" },
{ label: "育儿假(天)", prop: "childRearingLeave" },
{ label: "产假(陪护假/天)", prop: "maternityLeave" },
{ label: "调回单位(或离职/天)", prop: "transferBack" },
{ label: "探亲假(天)", prop: "homeLeave" },
{ label: "事假(天)", prop: "personalLeave" },
{ label: "旷工(天)", prop: "absenteeismDays" },
{ label: "其他(天)", prop: "otherDays" },
{ label: "出勤率%", prop: "attendanceRate" },
{ label: "未按规定打卡(含忘记打卡)", prop: "nonCompliancePunch" },
{ label: "迟到(次)", prop: "lateTimes" },
{ label: "上网耍手机(次)", prop: "surfingMobileTimes" },
{label: "丧假(天)", prop: "funeralLeave"}, { label: "溜班(次)", prop: "overtimeTimes" },
{label: "婚假(天)", prop: "marriageLeave"}, { label: "空岗(次)", prop: "vacancy" },
{label: "育儿假(天)", prop: "childRearingLeave"}, { label: "未规范着装(次)", prop: "nonStandardDressTimes" },
{label: "产假(陪护假/天)", prop: "maternityLeave"}, { label: "无故缺席会议(次)", prop: "unexcusedMeetingAbsence" },
{label: "调回单位(或离职/天)", prop: "transferBack"}, { label: "会议早退", prop: "earlyLeaveMeeting" },
],
{label: "探亲假(天)", prop: "homeLeave"}, },
setcolum: [],
{label: "事假(天)", prop: "personalLeave"}, isdialog: false,
checkList: [],
{label: "旷工(天)", prop: "absenteeismDays"}, drawerhistory: false,
// 动态新增列表
{label: "其他(天)", prop: "otherDays"}, addColumn: [],
initalArr: [],
{label: "出勤率%", prop: "attendanceRate"}, };
},
{label: "未按规定打卡(含忘记打卡)", prop: "nonCompliancePunch"}, };
{label: "迟到(次)", prop: "lateTimes"},
{label: "上网耍手机(次)", prop: "surfingMobileTimes"},
{label: "溜班(次)", prop: "overtimeTimes"},
{label: "空岗(次)", prop: "vacancy"},
{label: "未规范着装(次)", prop: "nonStandardDressTimes"},
{label: "无故缺席会议(次)", prop: "unexcusedMeetingAbsence"},
{label: "会议早退", prop: "earlyLeaveMeeting"}
]
},
setcolum:[],
isdialog:false,
checkList:[],
drawerhistory:false,
// 动态新增列表
addColumn:[],
initalArr:[]
}
}
}
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
.hisList{ .hisList {
padding: 15px; padding: 15px;
.list{ .list {
background-color: rgba(64, 158, 255, 0.1); background-color: rgba(64, 158, 255, 0.1);
font-size: 14px; font-size: 14px;
border-radius: 10px; border-radius: 10px;
padding: 10px; padding: 10px;
.times{ .times {
font-size: 12px; font-size: 12px;
color: #999; color: #999;
}
} }
}
} }
.tipsword{ .tipsword {
margin: 20px 0; margin: 20px 0;
color: #999; color: #999;
} }
</style> </style>
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" notDel :config="tableConfig"> <LayoutTable :data="tableData" notDel :config="tableConfig"> </LayoutTable>
</LayoutTable> <drawer-show ref="drawerform" @ok="getData" />
<drawer-show ref="drawerform" @ok="getData" /> </div>
</div>
</template> </template>
<script> <script>
...@@ -11,140 +10,190 @@ ...@@ -11,140 +10,190 @@
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
export default { export default {
name: "FeedbackList", name: "FeedbackList",
components: { components: {
drawerShow drawerShow,
},
mixins: [table],
created() {},
methods: {
renderTable(tableData) {
return (
<el-table stripe data={tableData} class="total-table">
{this.columnSet.map((item) => this.renderTableColumn(item))}
</el-table>
);
}, },
mixins: [table], renderTableColumn(options) {
created() { return (
<el-table-column
prop={options.prop}
label={options.label}
width={options.width}
formatter={options.formatter}
></el-table-column>
);
}, },
methods: { /** 重写新增方法 */
renderTable(tableData) { toAdd(row) {
return ( // this.$refs.drawerform.add(row);
<el-table stripe data={tableData} class="total-table"> this.$router.push("/feedback/addQuestion/list");
{this.columnSet.map((item) => this.renderTableColumn(item))} },
</el-table> /** 重写编辑方法 */
); toEdit(row) {
}, // this.$refs.drawerform.edit(row);
renderTableColumn(options) { this.$router.push({ path: `/feedback/addQuestion/list?id=${row.id}` });
return ( localStorage.setItem("editFeedback", JSON.stringify(row));
<el-table-column },
prop={options.prop} /** 重写查看方法 */
label={options.label} toView(row) {
width={options.width} console.log(row);
formatter={options.formatter} localStorage.setItem("checkFeedbackId", row.id);
> // this.$refs.drawerform.view(row);
</el-table-column> this.$router.push("/feedback/questionnaire/list");
); },
}, goPage(path) {
/** 重写新增方法 */ this.$router.push(path);
toAdd(row) { },
// this.$refs.drawerform.add(row); },
this.$router.push("/feedback/addQuestion/list"); data() {
}, return {
/** 重写编辑方法 */ /** 子表列元素 */
toEdit(row) { columnSet: [
// this.$refs.drawerform.edit(row); {
this.$router.push({ path: `/feedback/addQuestion/list?id=${row.id}` }); label: "反馈问卷id号",
localStorage.setItem('editFeedback', JSON.stringify(row)) prop: "feedbackId",
}, formatter: this.formatter,
/** 重写查看方法 */
toView(row) {
console.log(row)
localStorage.setItem('checkFeedbackId', row.id)
// this.$refs.drawerform.view(row);
this.$router.push('/feedback/questionnaire/list')
}, },
goPage(path) { { label: "问题内容", prop: "content" },
this.$router.push(path) { label: "问题类型 ", prop: "questionType", formatter: this.formatter },
} { label: "是否必填", prop: "require", formatter: this.formatter },
{ label: "备注", prop: "remark" },
],
config: {
isshowTabPane: true,
search: [
{
name: "feedbackTimeStart",
type: "datetime",
label: "请选择日期",
fuzzy: false,
},
{
name: "title",
type: "text",
label: "输入问卷标题关键字搜索",
fuzzy: false,
},
],
columns: [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
}, { label: "问卷标题", prop: "title" },
data() {
return {
/** 子表列元素 */
columnSet: [
{ label: "反馈问卷id号", prop: "feedbackId", formatter: this.formatter },
{ label: "问题内容", prop: "content" },
{ label: "问题类型 ", prop: "questionType", formatter: this.formatter },
{ label: "是否必填", prop: "require", formatter: this.formatter },
{ label: "备注", prop: "remark" },
],
config: {
isshowTabPane: true,
search: [
],
columns: [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{ label: "问卷标题", prop: "title" }, {
label: "更新时间",
prop: "createTime",
formatter: this.formatterDate,
},
{ label: "更新时间", prop: "createTime", formatter: this.formatterDate }, {
label: "反馈开始时间",
{ label: "反馈开始时间", prop: "feedbackTimeStart", formatter: this.formatterDate }, prop: "feedbackTimeStart",
formatter: this.formatterDate,
},
{ label: "反馈结束时间", prop: "feedbackTimeEnd", formatter: this.formatterDate }, {
label: "反馈结束时间",
prop: "feedbackTimeEnd",
formatter: this.formatterDate,
},
{ label: "邀请人数", prop: "inviteNum", formatter: this.formatter }, { label: "邀请人数", prop: "inviteNum", formatter: this.formatter },
{ label: "反馈人数", prop: "feedbackNum", formatter: this.formatter }, { label: "反馈人数", prop: "feedbackNum", formatter: this.formatter },
// { label: "创建用户", prop: "createUserId", formatter: this.formatter }, // { label: "创建用户", prop: "createUserId", formatter: this.formatter },
{ {
label: "状态", prop: "processStatus", formatter: (row) => { label: "状态",
let str = "未开始" prop: "processStatus",
if (row.processStatus == 1) { formatter: (row) => {
str = "进行中" let str = "未开始";
} else if (row.processStatus == 2) { if (row.processStatus == 1) {
str = "已结束" str = "进行中";
} } else if (row.processStatus == 2) {
return ( str = "已结束";
<el-tag type={row.processStatus ? row.processStatus == 1 ? 'success' : 'info' : 'danger'} size="small"> }
{str} return (
</el-tag> <el-tag
) type={
} row.processStatus
}, ? row.processStatus == 1
// { ? "success"
// label: "绩效反馈问题", : "info"
// width: 120, : "danger"
// prop: "subColumns", }
// formatter: (row) => { size="small"
// return pre + Number(cur.width); >
// }, 50); {str}
// return ( </el-tag>
// <el-popover placement="right" width={widthsize} trigger="click"> );
// {this.renderTable(row.feedbackQuestionList)} },
// <el-button type="text" slot="reference">详细</el-button> },
// </el-popover> // {
// ); // label: "绩效反馈问题",
// }, // width: 120,
// }, // prop: "subColumns",
{ // formatter: (row) => {
label: "操作", // return pre + Number(cur.width);
width: 240, // }, 50);
formatter: row => { // return (
if (row.processStatus == 0) { // <el-popover placement="right" width={widthsize} trigger="click">
return ( // {this.renderTable(row.feedbackQuestionList)}
<table-buttons noAdd noView row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> // <el-button type="text" slot="reference">详细</el-button>
); // </el-popover>
} else { // );
return ( // },
<table-buttons noAdd noEdit row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> // },
); {
} label: "操作",
// return <table-buttons noAdd noEdit row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> width: 240,
} formatter: (row) => {
} if (row.processStatus == 0) {
] return (
} <table-buttons
}; noAdd
} noView
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
} else {
return (
<table-buttons
noAdd
noEdit
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
);
}
// return <table-buttons noAdd noEdit row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
},
},
],
},
};
},
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
/deep/ .buttons { /deep/ .buttons {
margin-bottom: 10px; margin-bottom: 10px;
} }
</style> </style>
...@@ -1174,7 +1174,7 @@ export default { ...@@ -1174,7 +1174,7 @@ export default {
dataList = [...dataList, ...data]; dataList = [...dataList, ...data];
this.$app.loading = true; this.$app.loading = true;
this.$app.percentage = parseInt((dataList.length / total) * 100); this.$app.percentage = parseInt((dataList.length / total) * 100);
if (dataList.length >= total || data.data.length == 0) { if (dataList.length >= total || data.length == 0) {
if (callback) callback(dataList); if (callback) callback(dataList);
this.$app.loading = false; this.$app.loading = false;
this.$app.percentage = 1; this.$app.percentage = 1;
......
...@@ -115,7 +115,7 @@ export default { ...@@ -115,7 +115,7 @@ export default {
{ label: "分类", prop: "categoryId", formatter: this.formatter }, { label: "分类", prop: "categoryId", formatter: this.formatter },
{ label: "考核内容简称", prop: "name" }, { label: "考核内容简称", prop: "name" },
{ label: "考核编码", prop: "ruleCode" }, // { label: "考核编码", prop: "ruleCode" },
{ label: "评分标准", prop: "content" }, { label: "评分标准", prop: "content" },
......
<template> <template>
<!-- 弹出框表单 --> <!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row> <el-row>
<Field label="员工姓名" prop="name" v-model="form.name" placeholder="请输入员工姓名"/> <Field
<Field label="性别" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="请选择性别"/> label="员工姓名"
<Field label="出生日期" prop="birthday" v-model="form.birthday" type="date" /> prop="name"
<Field label="照片" prop="photoPath" v-model="form.photoPath" type="textarea" placeholder="请输入照片"/> v-model="form.name"
<Field label="联系电话" prop="phoneNumber" v-model="form.phoneNumber" placeholder="请输入联系电话"/> placeholder="请输入员工姓名"
<Field label="身份证号码" prop="idCard" v-model="form.idCard" placeholder="请输入身份证号码"/> />
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/> <Field
<Field label="政治面貌 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="请选择政治面貌 "/> label="性别"
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/> prop="gender"
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/> v-model="form.gender"
<Field label="职位ID" prop="positionId" v-model="form.positionId" placeholder="请输入职位ID"/> type="select"
<Field label="职位名称" prop="positionName" v-model="form.positionName" placeholder="请输入职位名称"/> :enumData="dict.gender"
<Field label="员工类型" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="请选择员工类型"/> placeholder="请选择性别"
<Field label="员工状态" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="请选择员工状态"/> />
<Field label="入职登记表" prop="registerPath" v-model="form.registerPath" type="textarea" placeholder="请输入入职登记表"/> <Field
<Field label="入职时间" prop="entryDate" v-model="form.entryDate" type="date" /> label="出生日期"
<Field label="转正时间" prop="regularDate" v-model="form.regularDate" type="date" /> prop="birthday"
<Field label="离职时间" prop="leaveDate" v-model="form.leaveDate" type="date" /> v-model="form.birthday"
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/> type="date"
/>
</el-row> <Field
label="照片"
</el-form> prop="photoPath"
<div slot="footer" class="dialog-footer"> v-model="form.photoPath"
<el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">确 定</el-button> type="textarea"
<el-button @click="cancel">取 消</el-button> placeholder="请输入照片"
</div> />
</el-dialog> <Field
label="联系电话"
prop="phoneNumber"
v-model="form.phoneNumber"
placeholder="请输入联系电话"
/>
<Field
label="身份证号码"
prop="idCard"
v-model="form.idCard"
placeholder="请输入身份证号码"
/>
<Field
label="工号"
prop="workNum"
v-model="form.workNum"
placeholder="请输入工号"
/>
<Field
label="政治面貌 "
prop="politicalstatus"
v-model="form.politicalstatus"
type="select"
:enumData="dict.politicalstatus"
placeholder="请选择政治面貌 "
/>
<Field
label="所属部门"
prop="deptId"
v-model="form.deptId"
placeholder="请输入所属部门"
/>
<Field
label="所属部门名称"
prop="deptName"
v-model="form.deptName"
placeholder="请输入所属部门名称"
/>
<Field
label="职位ID"
prop="positionId"
v-model="form.positionId"
placeholder="请输入职位ID"
/>
<Field
label="职位名称"
prop="positionName"
v-model="form.positionName"
placeholder="请输入职位名称"
/>
<Field
label="员工类型"
prop="staffType"
v-model="form.staffType"
type="select"
:enumData="dict.staffType"
placeholder="请选择员工类型"
/>
<Field
label="员工状态"
prop="status"
v-model="form.status"
type="select"
:enumData="dict.status"
placeholder="请选择员工状态"
/>
<Field
label="入职登记表"
prop="registerPath"
v-model="form.registerPath"
type="textarea"
placeholder="请输入入职登记表"
/>
<Field
label="入职时间"
prop="entryDate"
v-model="form.entryDate"
type="date"
/>
<Field
label="转正时间"
prop="regularDate"
v-model="form.regularDate"
type="date"
/>
<Field
label="离职时间"
prop="leaveDate"
v-model="form.leaveDate"
type="date"
/>
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button
type="primary"
v-if="pageInfo.type !== 'view'"
@click="submitForm"
>确 定</el-button
>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template> </template>
<script> <script>
import form from "@/assets/mixins/formdialog"; import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow"; import dialogShow from "./dialogshow";
export default { export default {
mixins: [form], mixins: [form],
components: { components: {
dialogShow , dialogShow,
}, },
data() { data() {
return { return {
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 弹出层标题 // 弹出层标题
title: "员工基本信息", title: "员工基本信息",
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
toString:[ toString: ["gender", "politicalstatus", "staffType", "status"],
"gender", // 表单校验
"politicalstatus", rules: {
"staffType", name: [
"status", { required: true, message: "请输入员工姓名", trigger: "blur" },
], { max: 64, message: "最多只能录入64个字符", trigger: "blur" },
// 表单校验 ],
rules: { createTime: [{ required: true, message: "请选择创建时间" }],
name: [ },
{required: true,message: "请输入员工姓名", trigger: "blur" }, };
{max: 64,message: "最多只能录入64个字符",trigger: "blur",}, },
],
createTime: [
{required: true,message: "请选择创建时间" },
],
}
};
},
methods: { methods: {
/** 编辑 */ /** 编辑 */
edit(row) { edit(row) {
this.reset() this.reset();
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl ="staff/edit"; this.urls.currUrl = "staff/edit";
this.getData(); this.getData();
this.pageInfo.type="edit" this.pageInfo.type = "edit";
this.title = "修改员工基本信息"; this.title = "修改员工基本信息";
}, },
/** 新增 */ /** 新增 */
add(row) { add(row) {
this.reset() this.reset();
this.urls.currUrl = "staff/add"; this.urls.currUrl = "staff/add";
this.getData(); this.getData();
this.pageInfo.type="add" this.pageInfo.type = "add";
this.title = "新增员工基本信息"; this.title = "新增员工基本信息";
}, },
/** 查看*/ /** 查看*/
view(row) { view(row) {
this.reset() this.reset();
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl ="staff/view"; this.urls.currUrl = "staff/view";
this.getData(); this.getData();
this.pageInfo.type="view" this.pageInfo.type = "view";
this.title = "员工基本信息详细"; this.title = "员工基本信息详细";
}, },
/**取消按钮 */ /**取消按钮 */
cancel() { cancel() {
this.open = false; this.open = false;
}, },
/**获取数据后弹框 */ /**获取数据后弹框 */
afterRender(data) { afterRender(data) {
this.open = true; this.open = true;
}, },
afterSubmit(data) { afterSubmit(data) {
this.open = false; this.open = false;
this.$emit("ok"); this.$emit("ok");
}, },
// 表单重置 // 表单重置
reset() { reset() {
this.form = { this.form = {
name : "", name: "",
gender : 1, gender: 1,
birthday : null, birthday: null,
photoPath : "", photoPath: "",
phoneNumber : "", phoneNumber: "",
idCard : "", idCard: "",
workNum : "", workNum: "",
politicalstatus : 1, politicalstatus: 1,
deptId : null, deptId: null,
deptName : "", deptName: "",
positionId : null, positionId: null,
positionName : "", positionName: "",
staffType : 1, staffType: 1,
status : 1, status: 1,
registerPath : "", registerPath: "",
entryDate : null, entryDate: null,
regularDate : null, regularDate: null,
leaveDate : null, leaveDate: null,
remark : "", remark: "",
}; };
this.resetForm("form"); this.resetForm("form");
}, },
resetForm(refName) { resetForm(refName) {
if (this.$refs[refName]) { if (this.$refs[refName]) {
this.$refs[refName].resetFields(); this.$refs[refName].resetFields();
} }
}, },
}, },
}; };
</script> </script>
...@@ -183,7 +183,12 @@ ...@@ -183,7 +183,12 @@
</div> </div>
</el-dialog> </el-dialog>
<drawer-show ref="drawerform" @ok="getData" :bumentree="areaData" :currentNode="currentNode"/> <drawer-show
ref="drawerform"
@ok="getData"
:bumentree="areaData"
:currentNode="currentNode"
/>
</div> </div>
</template> </template>
...@@ -249,7 +254,7 @@ export default { ...@@ -249,7 +254,7 @@ export default {
}, },
handleNodeClick(node) { handleNodeClick(node) {
console.log(node,123123); console.log(node, 123123);
this.currentNode = node; this.currentNode = node;
this.query = { deptId: node.id }; this.query = { deptId: node.id };
this.getData(); this.getData();
......
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