Commit 7c1922b8 authored by 姬鋆屾's avatar 姬鋆屾
parents adcd440a af2344fb
...@@ -2260,8 +2260,6 @@ ...@@ -2260,8 +2260,6 @@
"version": "3.16.0", "version": "3.16.0",
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"optional": true,
"peer": true,
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/core-js" "url": "https://opencollective.com/core-js"
...@@ -4274,9 +4272,9 @@ ...@@ -4274,9 +4272,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001420", "version": "1.0.30001512",
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001420.tgz", "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz",
"integrity": "sha512-OnyeJ9ascFA9roEj72ok2Ikp7PHJTKubtEJIQ/VK3fdsS50q4KWy+Z5X0A1/GswEItKX0ctAp8n4SYDE7wTu6A==" "integrity": "sha512-2S9nK0G/mE+jasCUsMPlARhRCts1ebcp2Ji8Y8PWi4NDE1iRdLCnEPHkEfeBrGC45L4isBx5ur3IQ6yTE2mRZw=="
}, },
"node_modules/case-sensitive-paths-webpack-plugin": { "node_modules/case-sensitive-paths-webpack-plugin": {
"version": "2.4.0", "version": "2.4.0",
...@@ -19227,6 +19225,7 @@ ...@@ -19227,6 +19225,7 @@
"resolved": "https://registry.nlark.com/@vue/babel-preset-app/download/@vue/babel-preset-app-4.5.13.tgz", "resolved": "https://registry.nlark.com/@vue/babel-preset-app/download/@vue/babel-preset-app-4.5.13.tgz",
"integrity": "sha1-y0dTIeTHP38RDawppIwqnLgK/rY=", "integrity": "sha1-y0dTIeTHP38RDawppIwqnLgK/rY=",
"requires": { "requires": {
"@babel/core": "^7.11.0",
"@babel/helper-compilation-targets": "^7.9.6", "@babel/helper-compilation-targets": "^7.9.6",
"@babel/helper-module-imports": "^7.8.3", "@babel/helper-module-imports": "^7.8.3",
"@babel/plugin-proposal-class-properties": "^7.8.3", "@babel/plugin-proposal-class-properties": "^7.8.3",
...@@ -19239,14 +19238,13 @@ ...@@ -19239,14 +19238,13 @@
"@vue/babel-plugin-jsx": "^1.0.3", "@vue/babel-plugin-jsx": "^1.0.3",
"@vue/babel-preset-jsx": "^1.2.4", "@vue/babel-preset-jsx": "^1.2.4",
"babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-dynamic-import-node": "^2.3.3",
"core-js": "^3.6.5",
"core-js-compat": "^3.6.5", "core-js-compat": "^3.6.5",
"semver": "^6.1.0" "semver": "^6.1.0"
}, },
"dependencies": { "dependencies": {
"core-js": { "core-js": {
"version": "3.16.0", "version": "3.16.0"
"optional": true,
"peer": true
} }
} }
}, },
...@@ -20771,9 +20769,9 @@ ...@@ -20771,9 +20769,9 @@
} }
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001420", "version": "1.0.30001512",
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001420.tgz", "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz",
"integrity": "sha512-OnyeJ9ascFA9roEj72ok2Ikp7PHJTKubtEJIQ/VK3fdsS50q4KWy+Z5X0A1/GswEItKX0ctAp8n4SYDE7wTu6A==" "integrity": "sha512-2S9nK0G/mE+jasCUsMPlARhRCts1ebcp2Ji8Y8PWi4NDE1iRdLCnEPHkEfeBrGC45L4isBx5ur3IQ6yTE2mRZw=="
}, },
"case-sensitive-paths-webpack-plugin": { "case-sensitive-paths-webpack-plugin": {
"version": "2.4.0", "version": "2.4.0",
...@@ -203,11 +203,11 @@ export default { ...@@ -203,11 +203,11 @@ export default {
li { li {
span { span {
display: block; display: block;
padding: 0 16px; padding: 0 6px;
height: 100%; height: 100%;
color: #eee; color: #eee;
cursor: pointer; cursor: pointer;
margin-right: 20px; margin-right: 10px;
} }
.active { .active {
color: #fff; color: #fff;
......
...@@ -119,6 +119,21 @@ const router = new Router({ ...@@ -119,6 +119,21 @@ const router = new Router({
...restBuilder("check/gowork/record", "check/gowork/record"), //办件绩效核查信息 ...restBuilder("check/gowork/record", "check/gowork/record"), //办件绩效核查信息
...restBuilder("check/effect/record", "check/effect/record"), //效能绩效核查信息 ...restBuilder("check/effect/record", "check/effect/record"), //效能绩效核查信息
...restBuilder("check/other/record", "check/other/record"), //其它绩效核查信息 ...restBuilder("check/other/record", "check/other/record"), //其它绩效核查信息
...restBuilder("perform/attend/appeal", "perform/attend/appeal"), //绩效记录申诉信息
...restBuilder("perform/attend/appeal/files", "perform/attend/appeal/files"), //绩效记录申诉信息附件列表
...restBuilder("feedback", "feedback"), //反馈信息
...restBuilder("feedback/question", "feedback/question"), //反馈问题
...restBuilder("feedback/option", "feedback/option"), //反馈选项
...restBuilder("feedback/answer", "feedback/answer"), //回答问题
...restBuilder("feedback/answer/option", "feedback/answer/option"), //回答问题选项
...restBuilder("staff/perform/summary", "staff/perform/summary"), //员工绩效统计汇总
// 360评估 // 360评估
...restBuilder("homeCharts/record", "homeCharts/record"), ...restBuilder("homeCharts/record", "homeCharts/record"),
//以下为基础路由配置 //以下为基础路由配置
......
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" :config="tableConfig"> <LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button <el-button
slot="table-head-left2" slot="table-head-left2"
...@@ -139,7 +139,7 @@ ...@@ -139,7 +139,7 @@
// 是否更新已经存在的数据 // 是否更新已经存在的数据
updateSupport: 0, updateSupport: 0,
// 上传的地址 // 上传的地址
url: "/m/check/attend/record/importData", url: "/attendance/check/attend/record/importData",
}, },
isExport: false, isExport: false,
config: { config: {
......
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" :config="tableConfig"> <LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button <el-button
slot="table-head-left2" slot="table-head-left2"
......
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" :config="tableConfig"> <LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button <el-button
slot="table-head-left2" slot="table-head-left2"
...@@ -207,4 +207,4 @@ ...@@ -207,4 +207,4 @@
}; };
} }
}; };
</script> </script>
\ No newline at end of file
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" :config="tableConfig"> <LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button
slot="table-head-left2"
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="handleImport"
>导入</el-button>
<el-button <el-button
slot="table-head-left2" slot="table-head-left2"
style="margin-left: 10px" style="margin-left: 10px"
...@@ -212,4 +205,4 @@ ...@@ -212,4 +205,4 @@
}; };
} }
}; };
</script> </script>
\ No newline at end of file
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" :config="tableConfig"> <LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button <el-button
slot="table-head-left2" slot="table-head-left2"
...@@ -179,4 +179,4 @@ ...@@ -179,4 +179,4 @@
}; };
} }
}; };
</script> </script>
\ No newline at end of file
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" :config="tableConfig"> <LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button <el-button
slot="table-head-left2" slot="table-head-left2"
...@@ -205,4 +205,4 @@ ...@@ -205,4 +205,4 @@
}; };
} }
}; };
</script> </script>
\ No newline at end of file
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="反馈问卷id号" prop="feedbackId" v-model="form.feedbackId" placeholder="请输入反馈问卷id号"/>
<Field label="问题id号" prop="questionId" v-model="form.questionId" placeholder="请输入问题id号"/>
<Field label="用户id号" prop="staffId" v-model="form.staffId" placeholder="请输入用户id号"/>
<Field label="问题类型 " prop="questionType" v-model="form.questionType" type="select" :enumData="dict.questionType" placeholder="请选择问题类型 "/>
<Field label="适用于问题内容为文本内容"><editor v-model="form.content" :min-height="256"/></Field>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
</el-row>
<el-divider content-position="center">绩效问题回答选项信息</el-divider>
<br/>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddFeedbackAnswerOption">添加</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteFeedbackAnswerOption">删除</el-button>
</el-col>
</el-row>
<el-table :data="feedbackAnswerOptionList" :row-class-name="rowFeedbackAnswerOptionIndex" @selection-change="handleFeedbackAnswerOptionSelectionChange" ref="feedbackAnswerOption">
<el-table-column type="selection" width="50" align="center" />
<el-table-column label="序号" align="center" prop="index" width="50"/>
<el-table-column label="选项id号" prop="optionId">
<template slot-scope="scope">
<el-input v-model="scope.row.optionId" placeholder="请输入选项id号" />
</template>
</el-table-column>
<el-table-column label="选项内容" prop="optionContent">
<template slot-scope="scope">
<el-input v-model="scope.row.optionContent" placeholder="请输入选项内容" />
</template>
</el-table-column>
<el-table-column label="备注" prop="remark">
<template slot-scope="scope">
<el-input v-model="scope.row.remark" placeholder="请输入备注" />
</template>
</el-table-column>
<el-table-column label="创建用户" prop="createUserId">
<template slot-scope="scope">
<el-input v-model="scope.row.createUserId" placeholder="请输入创建用户" />
</template>
</el-table-column>
<el-table-column label="创建时间" prop="createTime">
<template slot-scope="scope">
<el-input v-model="scope.row.createTime" placeholder="请输入创建时间" />
</template>
</el-table-column>
<el-table-column label="更新用户" prop="updateUserId">
<template slot-scope="scope">
<el-input v-model="scope.row.updateUserId" placeholder="请输入更新用户" />
</template>
</el-table-column>
<el-table-column label="更新时间" prop="updateTime">
<template slot-scope="scope">
<el-input v-model="scope.row.updateTime" placeholder="请输入更新时间" />
</template>
</el-table-column>
</el-table>
</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>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
import Editor from '@/components/Editor';
export default {
mixins: [form],
components: {
dialogShow ,
Editor,
},
data() {
return {
// 子表选中数据
checkedFeedbackAnswerOption: [],
// 绩效问题回答选项表格数据
feedbackAnswerOptionList: [],
// 遮罩层
loading: true,
// 弹出层标题
title: "绩效问题回答",
// 是否显示弹出层
open: false,
toString:[
"questionType",
],
// 表单校验
rules: {
content: [
{required: true,message: "请输入适用于问题内容为文本内容", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
}
};
},
methods: {
/** 绩效问题回答选项序号 */
rowFeedbackAnswerOptionIndex({ row, rowIndex }) {
row.index = rowIndex + 1;
},
/** 绩效问题回答选项添加按钮操作 */
handleAddFeedbackAnswerOption() {
let obj = {};
obj.optionId = "";
obj.optionContent = "";
obj.remark = "";
obj.createUserId = "";
obj.createTime = "";
obj.updateUserId = "";
obj.updateTime = "";
this.feedbackAnswerOptionList.push(obj);
},
/** 绩效问题回答选项删除按钮操作 */
handleDeleteFeedbackAnswerOption() {
if (this.checkedFeedbackAnswerOption.length == 0) {
this.$alert("请先选择要删除的绩效问题回答选项数据", "提示", { confirmButtonText: "确定", });
} else {
this.feedbackAnswerOptionList.splice(this.checkedFeedbackAnswerOption[0].index - 1, 1);
}
},
/** 单选框选中数据 */
handleFeedbackAnswerOptionSelectionChange(selection) {
if (selection.length > 1) {
this.$refs.feedbackAnswerOption.clearSelection();
this.$refs.feedbackAnswerOption.toggleRowSelection(selection.pop());
} else {
this.checkedFeedbackAnswerOption = selection;
}
},
// 渲染前置处理
beforeRender(data) {
if(data.entity.feedbackAnswerOptionList) {
this.feedbackAnswerOptionList = data.entity.feedbackAnswerOptionList;
}
return data
},
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="feedback/answer/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改绩效问题回答";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "feedback/answer/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增绩效问题回答";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="feedback/answer/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");
},
// 表单重置
reset() {
this.form = {
feedbackId : 0,
questionId : 0,
staffId : 0,
questionType : 1,
content : "",
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"
:destroy-on-close="true"
size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="反馈问卷id号" prop="feedbackId" v-model="form.feedbackId" placeholder="请输入反馈问卷id号"/>
<Field label="问题id号" prop="questionId" v-model="form.questionId" placeholder="请输入问题id号"/>
<Field label="用户id号" prop="staffId" v-model="form.staffId" placeholder="请输入用户id号"/>
<Field label="适用于单选选择" prop="optionId" v-model="form.optionId" placeholder="请输入适用于单选选择"/>
<Field label="适用于问题内容,如果是多选,则以逗号做分割内容。"><editor v-model="form.content" :min-height="256"/></Field>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
</el-row>
<el-divider content-position="center">绩效问题回答选项信息</el-divider>
<br/>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddAnswerOption">添加</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteAnswerOption">删除</el-button>
</el-col>
</el-row>
<el-table :data="answerOptionList" :row-class-name="rowAnswerOptionIndex" @selection-change="handleAnswerOptionSelectionChange" ref="answerOption">
<el-table-column type="selection" width="50" align="center" />
<el-table-column label="序号" align="center" prop="index" width="50"/>
<el-table-column label="选项id号" prop="optionId">
<template slot-scope="scope">
<el-input v-model="scope.row.optionId" placeholder="请输入选项id号" />
</template>
</el-table-column>
<el-table-column label="选项内容" prop="optionContent">
<template slot-scope="scope">
<el-input v-model="scope.row.optionContent" placeholder="请输入选项内容" />
</template>
</el-table-column>
<el-table-column label="备注" prop="remark">
<template slot-scope="scope">
<el-input v-model="scope.row.remark" placeholder="请输入备注" />
</template>
</el-table-column>
<el-table-column label="创建用户" prop="createUserId">
<template slot-scope="scope">
<el-input v-model="scope.row.createUserId" placeholder="请输入创建用户" />
</template>
</el-table-column>
<el-table-column label="创建时间" prop="createTime">
<template slot-scope="scope">
<el-input v-model="scope.row.createTime" placeholder="请输入创建时间" />
</template>
</el-table-column>
<el-table-column label="更新用户" prop="updateUserId">
<template slot-scope="scope">
<el-input v-model="scope.row.updateUserId" placeholder="请输入更新用户" />
</template>
</el-table-column>
<el-table-column label="更新时间" prop="updateTime">
<template slot-scope="scope">
<el-input v-model="scope.row.updateTime" placeholder="请输入更新时间" />
</template>
</el-table-column>
</el-table>
<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: "FeedbackAnswerDetail",
mixins: [form],
components: {
},
created() {
this.changePath("feedback/answer")
},
data() {
return {
// 子表选中数据
checkedAnswerOption: [],
// 绩效问题回答选项表格数据
answerOptionList: [],
// 遮罩层
loading: true,
// 弹出层标题
title: "绩效问题回答",
// 是否显示弹出层
open: false,
direction:"rtl",
toString:[
],
toDate:[
],
// 表单校验
rules: {
content: [
{required: true,message: "请输入适用于问题内容,如果是多选,则以逗号做分割内容。", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
}
};
},
methods: {
/** 绩效问题回答选项序号 */
rowAnswerOptionIndex({ row, rowIndex }) {
row.index = rowIndex + 1;
},
/** 绩效问题回答选项添加按钮操作 */
handleAddAnswerOption() {
let obj = {};
obj.optionId = "";
obj.optionContent = "";
obj.remark = "";
obj.createUserId = "";
obj.createTime = "";
obj.updateUserId = "";
obj.updateTime = "";
this.answerOptionList.push(obj);
},
/** 绩效问题回答选项删除按钮操作 */
handleDeleteAnswerOption() {
if (this.checkedAnswerOption.length == 0) {
this.$alert("请先选择要删除的绩效问题回答选项数据", "提示", { confirmButtonText: "确定", });
} else {
this.answerOptionList.splice(this.checkedAnswerOption[0].index - 1, 1);
}
},
/** 单选框选中数据 */
handleAnswerOptionSelectionChange(selection) {
if (selection.length > 1) {
this.$refs.answerOption.clearSelection();
this.$refs.answerOption.toggleRowSelection(selection.pop());
} else {
this.checkedAnswerOption = selection;
}
},
// 渲染前置处理
beforeRender(data) {
if(data.entity.answerOptionList) {
this.answerOptionList = data.entity.answerOptionList;
}
return data
},
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="feedback/answer/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改绩效问题回答";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "feedback/answer/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增绩效问题回答";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="feedback/answer/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");
},
// 表单重置
reset() {
this.form = {
feedbackId : 0,
questionId : 0,
staffId : 0,
optionId : 0,
content : "",
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<dialog-show ref="dialogform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table";
export default {
name: "FeedbackAnswerList",
components: {
dialogShow
},
mixins: [table],
created() {
},
methods: {
renderTable(tableData) {
return (
<el-table stripe data={tableData} class="total-table">
{this.columnSet.map((item) => this.renderTableColumn(item))}
</el-table>
);
},
renderTableColumn(options) {
return (
<el-table-column
prop={options.prop}
label={options.label}
width={options.width}
formatter={options.formatter}
>
</el-table-column>
);
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
},
data() {
return {
/** 子表列元素 */
columnSet:[
{label: "回答问题id号", prop: "answerId", formatter: this.formatter},
{label: "选项id号", prop: "optionId", formatter: this.formatter},
{label: "选项内容", prop: "optionContent"},
{label: "备注", prop: "remark"},
],
config: {
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "适用于问题内容为文本内容", prop: "content"},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{label: "绩效问题回答选项",
width: 120,
prop: "subColumns",
formatter: (row) => {
let widthsize = this.columnSet.reduce((pre, cur) => {
return pre + Number(cur.width);
}, 50);
return (
<el-popover placement="right" width={widthsize} trigger="click">
{this.renderTable(row.feedbackAnswerOptionList)}
<el-button type="text" slot="reference">详细</el-button>
</el-popover>
);
},
},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</script>
\ No newline at end of file
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="回答问题id号" prop="answerId" v-model="form.answerId" placeholder="请输入回答问题id号"/>
<Field label="选项id号" prop="optionId" v-model="form.optionId" placeholder="请输入选项id号"/>
<Field label="选项内容"><editor v-model="form.optionContent" :min-height="256"/></Field>
<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>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
import Editor from '@/components/Editor';
export default {
mixins: [form],
components: {
dialogShow ,
Editor,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "绩效问题回答选项",
// 是否显示弹出层
open: false,
toString:[
],
// 表单校验
rules: {
optionContent: [
{required: true,message: "请输入选项内容", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="feedback/answer/option/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改绩效问题回答选项";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "feedback/answer/option/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增绩效问题回答选项";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="feedback/answer/option/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");
},
// 表单重置
reset() {
this.form = {
answerId : 0,
optionId : 0,
optionContent : "",
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<dialog-show ref="dialogform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table";
export default {
name: "FeedbackAnswerOptionList",
components: {
dialogShow
},
mixins: [table],
created() {
},
methods: {
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
},
data() {
return {
config: {
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "选项内容", prop: "optionContent"},
{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>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="回答问题id号" label-class-name="labelClass" content-class-name="contentClass">
{{form.answerId}}
</el-descriptions-item>
<el-descriptions-item label="选项id号" label-class-name="labelClass" content-class-name="contentClass">
{{form.optionId}}
</el-descriptions-item>
<el-descriptions-item label="选项内容" label-class-name="labelClass" content-class-name="contentClass">
<editor v-model="form.optionContent" :min-height="256"/>
</el-descriptions-item>
<el-descriptions-item label="备注" label-class-name="labelClass" content-class-name="contentClass">
{{form.remark}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
import Editor from '@/components/Editor';
export default {
mixins: [view],
components: {
Editor,
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="反馈问卷id号" label-class-name="labelClass" content-class-name="contentClass">
{{form.feedbackId}}
</el-descriptions-item>
<el-descriptions-item label="问题id号" label-class-name="labelClass" content-class-name="contentClass">
{{form.questionId}}
</el-descriptions-item>
<el-descriptions-item label="用户id号" label-class-name="labelClass" content-class-name="contentClass">
{{form.staffId}}
</el-descriptions-item>
<el-descriptions-item label="问题类型 " label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("questionType", form.questionType) }}
</el-descriptions-item>
<el-descriptions-item label="适用于问题内容为文本内容" label-class-name="labelClass" content-class-name="contentClass">
<editor v-model="form.content" :min-height="256"/>
</el-descriptions-item>
<el-descriptions-item label="备注" label-class-name="labelClass" content-class-name="contentClass">
{{form.remark}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
import Editor from '@/components/Editor';
export default {
mixins: [view],
components: {
Editor,
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
"questionType",
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<drawer-show ref="drawerform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "FeedbackList",
components: {
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>
);
},
renderTableColumn(options) {
return (
<el-table-column
prop={options.prop}
label={options.label}
width={options.width}
formatter={options.formatter}
>
</el-table-column>
);
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.drawerform.view(row);
},
},
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:false,
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "问卷标题", prop: "title"},
{label: "反馈开始时间", prop: "feedbackTimeStart", formatter: this.formatterDate},
{label: "反馈结束时间", prop: "feedbackTimeEnd", formatter: this.formatterDate},
{label: "邀请人数", prop: "inviteNum",formatter: this.formatter},
{label: "反馈人数", prop: "feedbackNum",formatter: this.formatter},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{label: "绩效反馈问题",
width: 120,
prop: "subColumns",
formatter: (row) => {
let widthsize = this.columnSet.reduce((pre, cur) => {
return pre + Number(cur.width);
}, 50);
return (
<el-popover placement="right" width={widthsize} trigger="click">
{this.renderTable(row.feedbackQuestionList)}
<el-button type="text" slot="reference">详细</el-button>
</el-popover>
);
},
},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</script>
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="问题id号" prop="questionId" v-model="form.questionId" placeholder="请输入问题id号"/>
<Field label="选项内容"><editor v-model="form.content" :min-height="256"/></Field>
<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>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
import Editor from '@/components/Editor';
export default {
mixins: [form],
components: {
dialogShow ,
Editor,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "绩效问题选项",
// 是否显示弹出层
open: false,
toString:[
],
// 表单校验
rules: {
content: [
{required: true,message: "请输入选项内容", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="feedback/option/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改绩效问题选项";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "feedback/option/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增绩效问题选项";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="feedback/option/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");
},
// 表单重置
reset() {
this.form = {
questionId : 0,
content : "",
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<dialog-show ref="dialogform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table";
export default {
name: "FeedbackOptionList",
components: {
dialogShow
},
mixins: [table],
created() {
},
methods: {
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
},
data() {
return {
config: {
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "选项内容", prop: "content"},
{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>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="问题id号" label-class-name="labelClass" content-class-name="contentClass">
{{form.questionId}}
</el-descriptions-item>
<el-descriptions-item label="选项内容" label-class-name="labelClass" content-class-name="contentClass">
<editor v-model="form.content" :min-height="256"/>
</el-descriptions-item>
<el-descriptions-item label="备注" label-class-name="labelClass" content-class-name="contentClass">
{{form.remark}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
import Editor from '@/components/Editor';
export default {
mixins: [view],
components: {
Editor,
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
<template>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
:destroy-on-close="true"
size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="反馈问卷id号" prop="feedbackId" v-model="form.feedbackId" placeholder="请输入反馈问卷id号"/>
<Field label="问题内容"><editor v-model="form.content" :min-height="256"/></Field>
<Field label="问题类型 " prop="questionType" v-model="form.questionType" type="select" :enumData="dict.questionType" placeholder="请选择问题类型 "/>
<Field label="是否必填" prop="require" v-model="form.require" type="select" :enumData="dict.require" placeholder="请选择是否必填"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
</el-row>
<el-divider content-position="center">绩效问题选项信息</el-divider>
<br/>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddFeedbackOption">添加</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteFeedbackOption">删除</el-button>
</el-col>
</el-row>
<el-table :data="feedbackOptionList" :row-class-name="rowFeedbackOptionIndex" @selection-change="handleFeedbackOptionSelectionChange" ref="feedbackOption">
<el-table-column type="selection" width="50" align="center" />
<el-table-column label="序号" align="center" prop="index" width="50"/>
<el-table-column label="选项内容" prop="content">
<template slot-scope="scope">
<el-input v-model="scope.row.content" placeholder="请输入选项内容" />
</template>
</el-table-column>
<el-table-column label="备注" prop="remark">
<template slot-scope="scope">
<el-input v-model="scope.row.remark" placeholder="请输入备注" />
</template>
</el-table-column>
<el-table-column label="创建用户" prop="createUserId">
<template slot-scope="scope">
<el-input v-model="scope.row.createUserId" placeholder="请输入创建用户" />
</template>
</el-table-column>
<el-table-column label="创建时间" prop="createTime">
<template slot-scope="scope">
<el-input v-model="scope.row.createTime" placeholder="请输入创建时间" />
</template>
</el-table-column>
<el-table-column label="更新用户" prop="updateUserId">
<template slot-scope="scope">
<el-input v-model="scope.row.updateUserId" placeholder="请输入更新用户" />
</template>
</el-table-column>
<el-table-column label="更新时间" prop="updateTime">
<template slot-scope="scope">
<el-input v-model="scope.row.updateTime" placeholder="请输入更新时间" />
</template>
</el-table-column>
</el-table>
<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: "FeedbackQuestionDetail",
mixins: [form],
components: {
},
created() {
this.changePath("feedback/question")
},
data() {
return {
// 子表选中数据
checkedFeedbackOption: [],
// 绩效问题选项表格数据
feedbackOptionList: [],
// 遮罩层
loading: true,
// 弹出层标题
title: "绩效反馈问题",
// 是否显示弹出层
open: false,
direction:"rtl",
toString:[
"questionType",
"require",
],
toDate:[
],
// 表单校验
rules: {
content: [
{required: true,message: "请输入问题内容", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",},
],
}
};
},
methods: {
/** 绩效问题选项序号 */
rowFeedbackOptionIndex({ row, rowIndex }) {
row.index = rowIndex + 1;
},
/** 绩效问题选项添加按钮操作 */
handleAddFeedbackOption() {
let obj = {};
obj.content = "";
obj.remark = "";
obj.createUserId = "";
obj.createTime = "";
obj.updateUserId = "";
obj.updateTime = "";
this.feedbackOptionList.push(obj);
},
/** 绩效问题选项删除按钮操作 */
handleDeleteFeedbackOption() {
if (this.checkedFeedbackOption.length == 0) {
this.$alert("请先选择要删除的绩效问题选项数据", "提示", { confirmButtonText: "确定", });
} else {
this.feedbackOptionList.splice(this.checkedFeedbackOption[0].index - 1, 1);
}
},
/** 单选框选中数据 */
handleFeedbackOptionSelectionChange(selection) {
if (selection.length > 1) {
this.$refs.feedbackOption.clearSelection();
this.$refs.feedbackOption.toggleRowSelection(selection.pop());
} else {
this.checkedFeedbackOption = selection;
}
},
// 渲染前置处理
beforeRender(data) {
if(data.entity.feedbackOptionList) {
this.feedbackOptionList = data.entity.feedbackOptionList;
}
return data
},
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="feedback/question/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改绩效反馈问题";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "feedback/question/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增绩效反馈问题";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="feedback/question/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");
},
// 表单重置
reset() {
this.form = {
feedbackId : 0,
content : "",
questionType : 0,
require : 0,
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<drawer-show ref="drawerform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "FeedbackQuestionList",
components: {
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>
);
},
renderTableColumn(options) {
return (
<el-table-column
prop={options.prop}
label={options.label}
width={options.width}
formatter={options.formatter}
>
</el-table-column>
);
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.drawerform.view(row);
},
},
data() {
return {
/** 子表列元素 */
columnSet:[
{label: "问题id号", prop: "questionId", formatter: this.formatter},
{label: "选项内容", prop: "content"},
{label: "备注", prop: "remark"},
],
config: {
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "问题内容", prop: "content"},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{label: "绩效问题选项",
width: 120,
prop: "subColumns",
formatter: (row) => {
let widthsize = this.columnSet.reduce((pre, cur) => {
return pre + Number(cur.width);
}, 50);
return (
<el-popover placement="right" width={widthsize} trigger="click">
{this.renderTable(row.feedbackOptionList)}
<el-button type="text" slot="reference">详细</el-button>
</el-popover>
);
},
},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</script>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="反馈问卷id号" label-class-name="labelClass" content-class-name="contentClass">
{{form.feedbackId}}
</el-descriptions-item>
<el-descriptions-item label="问题内容" label-class-name="labelClass" content-class-name="contentClass">
<editor v-model="form.content" :min-height="256"/>
</el-descriptions-item>
<el-descriptions-item label="问题类型 " label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("questionType", form.questionType) }}
</el-descriptions-item>
<el-descriptions-item label="是否必填" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("require", form.require) }}
</el-descriptions-item>
<el-descriptions-item label="备注" label-class-name="labelClass" content-class-name="contentClass">
{{form.remark}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
import Editor from '@/components/Editor';
export default {
mixins: [view],
components: {
Editor,
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
"questionType",
"require",
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="问卷标题" label-class-name="labelClass" content-class-name="contentClass">
{{form.title}}
</el-descriptions-item>
<el-descriptions-item label="反馈开始时间" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.feedbackTimeStart)}}
</el-descriptions-item>
<el-descriptions-item label="反馈结束时间" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.feedbackTimeEnd)}}
</el-descriptions-item>
<el-descriptions-item label="邀请人数" label-class-name="labelClass" content-class-name="contentClass">
{{form.inviteNum}}
</el-descriptions-item>
<el-descriptions-item label="反馈人数" label-class-name="labelClass" content-class-name="contentClass">
{{form.feedbackNum}}
</el-descriptions-item>
<el-descriptions-item label="状态 " label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("processStatus", form.processStatus) }}
</el-descriptions-item>
<el-descriptions-item label="问卷是否外链" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("weblink", form.weblink) }}
</el-descriptions-item>
<el-descriptions-item label="问题外链地址" label-class-name="labelClass" content-class-name="contentClass">
{{form.webUrl}}
</el-descriptions-item>
<el-descriptions-item label="备注" label-class-name="labelClass" content-class-name="contentClass">
{{form.remark}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
export default {
mixins: [view],
components: {
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
"processStatus",
"weblink",
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="申诉Id" prop="appealId" v-model="form.appealId" placeholder="请输入申诉Id"/>
<Field label="文件名称" prop="fileName" v-model="form.fileName" placeholder="请输入文件名称"/>
<Field label="文件地址"><fileUpload v-model="form.filePath" prePath="/file/fileupload"/></Field>
</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>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
import FileUpload from '@/components/FileUpload';
export default {
mixins: [form],
components: {
dialogShow ,
FileUpload,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "绩效记录申诉附件信息",
// 是否显示弹出层
open: false,
toString:[
],
// 表单校验
rules: {
fileName: [
{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/attend/appeal/files/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改绩效记录申诉附件信息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "perform/attend/appeal/files/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增绩效记录申诉附件信息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="perform/attend/appeal/files/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");
},
// 表单重置
reset() {
this.form = {
appealId : null,
fileName : "",
filePath : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
...@@ -4,18 +4,18 @@ ...@@ -4,18 +4,18 @@
</LayoutTable> </LayoutTable>
<drawer-show ref="drawerform" @ok="getData" /> <dialog-show ref="dialogform" @ok="getData" />
</div> </div>
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
export default { export default {
name: "PerformPerposeDeptList", name: "PerformAttendAppealFilesList",
components: { components: {
drawerShow dialogShow
}, },
mixins: [table], mixins: [table],
created() { created() {
...@@ -23,33 +23,30 @@ ...@@ -23,33 +23,30 @@
methods: { methods: {
/** 重写新增方法 */ /** 重写新增方法 */
toAdd(row) { toAdd(row) {
this.$refs.drawerform.add(row); this.$refs.dialogform.add(row);
}, },
/** 重写编辑方法 */ /** 重写编辑方法 */
toEdit(row) { toEdit(row) {
this.$refs.drawerform.edit(row); this.$refs.dialogform.edit(row);
}, },
/** 重写查看方法 */ /** 重写查看方法 */
toView(row) { toView(row) {
this.$refs.drawerform.view(row); this.$refs.dialogform.view(row);
}, },
}, },
data() { data() {
return { return {
config: { config: {
isshowTabPane:true,
search: [ search: [
], ],
columns: [ columns: [
{type: "selection", width: 60}, {type: "selection", width: 60},
{type: "index",label: "序号",width: 50}, {type: "index",label: "序号",width: 50},
{label: "考核目标id", prop: "purposeConfId", formatter: this.formatter}, {label: "文件名称", prop: "fileName"},
{label: "部门id", prop: "deptId", formatter: this.formatter}, {label: "文件地址", prop: "filePath"},
{label: "部门名称", prop: "deptName"},
{label: "创建用户", prop: "createUserId", formatter: this.formatter}, {label: "创建用户", prop: "createUserId", formatter: this.formatter},
{ {
...@@ -66,4 +63,4 @@ ...@@ -66,4 +63,4 @@
}; };
} }
}; };
</script> </script>
\ No newline at end of file
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="申诉Id" label-class-name="labelClass" content-class-name="contentClass">
{{form.appealId}}
</el-descriptions-item>
<el-descriptions-item label="文件名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.fileName}}
</el-descriptions-item>
<el-descriptions-item label="文件地址" label-class-name="labelClass" content-class-name="contentClass">
<fileUpload v-model="form.filePath" prePath="/file/fileupload"/>
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
import FileUpload from '@/components/FileUpload';
export default {
mixins: [view],
components: {
FileUpload,
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
</LayoutTable>
<drawer-show ref="drawerform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
name: "PerformAttendAppealList",
components: {
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>
);
},
renderTableColumn(options) {
return (
<el-table-column
prop={options.prop}
label={options.label}
width={options.width}
formatter={options.formatter}
>
</el-table-column>
);
},
/** 重写新增方法 */
toAdd(row) {
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.drawerform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.drawerform.view(row);
},
},
data() {
return {
/** 子表列元素 */
columnSet:[
{label: "申诉Id", prop: "appealId", formatter: this.formatter},
{label: "文件名称", prop: "fileName"},
{label: "文件地址", prop: "filePath"},
],
config: {
isshowTabPane:false,
search: [
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "姓名", prop: "staffName"},
{label: "窗口工号", prop: "workNum"},
{label: "所属部门", prop: "deptName"},
{label: "违规类型", prop: "ruleName"},
{label: "绩效规则", prop: "ruleName"},
{label: "扣分方式", prop: "subMethod",formatter: this.formatter},
{label: "扣分时间", prop: "attendanceDate" , formatter: this.formatterDate },
{label: "扣分分值", prop: "score", formatter: this.formatter},
{label: "申诉时间", prop: "appealTime", formatter: this.formatterDate},
{label: "处理状态", prop: "processStatus",formatter: this.formatter},
/* {label: "绩效记录申诉附件信息",
width: 120,
prop: "subColumns",
formatter: (row) => {
let widthsize = this.columnSet.reduce((pre, cur) => {
return pre + Number(cur.width);
}, 50);
return (
<el-popover placement="right" width={widthsize} trigger="click">
{this.renderTable(row.performAttendAppealFilesList)}
<el-button type="text" slot="reference">详细</el-button>
</el-popover>
);
},
},*/
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</script>
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="核查记录Id" label-class-name="labelClass" content-class-name="contentClass">
{{form.checkRecordId}}
</el-descriptions-item>
<el-descriptions-item label="员工ID" label-class-name="labelClass" content-class-name="contentClass">
{{form.staffId}}
</el-descriptions-item>
<el-descriptions-item label="员工姓名" label-class-name="labelClass" content-class-name="contentClass">
{{form.staffName}}
</el-descriptions-item>
<el-descriptions-item label="工号" label-class-name="labelClass" content-class-name="contentClass">
{{form.workNum}}
</el-descriptions-item>
<el-descriptions-item label="所属部门" label-class-name="labelClass" content-class-name="contentClass">
{{form.deptId}}
</el-descriptions-item>
<el-descriptions-item label="所属部门名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.deptName}}
</el-descriptions-item>
<el-descriptions-item label="所属考勤组ID" label-class-name="labelClass" content-class-name="contentClass">
{{form.attendanceGroupId}}
</el-descriptions-item>
<el-descriptions-item label="所属考勤组名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.attendanceGroupName}}
</el-descriptions-item>
<el-descriptions-item label="考勤时间" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.attendanceDate)}}
</el-descriptions-item>
<el-descriptions-item label="绩效规则id" label-class-name="labelClass" content-class-name="contentClass">
{{form.ruleId}}
</el-descriptions-item>
<el-descriptions-item label="规则名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.ruleName}}
</el-descriptions-item>
<el-descriptions-item label="扣分方式" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("subMethod", form.subMethod) }}
</el-descriptions-item>
<el-descriptions-item label="增减类型" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("subAddType", form.subAddType) }}
</el-descriptions-item>
<el-descriptions-item label="扣分或增加分值" label-class-name="labelClass" content-class-name="contentClass">
{{form.score}}
</el-descriptions-item>
<el-descriptions-item label="上下班时间" label-class-name="labelClass" content-class-name="contentClass">
{{form.goOffTimeStr}}
</el-descriptions-item>
<el-descriptions-item label="异常时间" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.errorTime)}}
</el-descriptions-item>
<el-descriptions-item label="实际打卡时间" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.actualAttendTime)}}
</el-descriptions-item>
<el-descriptions-item label="异常处理结果" label-class-name="labelClass" content-class-name="contentClass">
{{form.errorResult}}
</el-descriptions-item>
<el-descriptions-item label="核查人员" label-class-name="labelClass" content-class-name="contentClass">
{{form.checkPerson}}
</el-descriptions-item>
<el-descriptions-item label="核查时间" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.checkTime)}}
</el-descriptions-item>
<el-descriptions-item label="核查说明" label-class-name="labelClass" content-class-name="contentClass">
{{form.checkDesc}}
</el-descriptions-item>
<el-descriptions-item label="核查结果" label-class-name="labelClass" content-class-name="contentClass">
{{form.checkResult}}
</el-descriptions-item>
<el-descriptions-item label="处理状态" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("processStatus", form.processStatus) }}
</el-descriptions-item>
<el-descriptions-item label="申诉说明" label-class-name="labelClass" content-class-name="contentClass">
{{form.appealDesc}}
</el-descriptions-item>
<el-descriptions-item label="申诉时间" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.appealTime)}}
</el-descriptions-item>
<el-descriptions-item label="申诉结果" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("appealResult", form.appealResult) }}
</el-descriptions-item>
<el-descriptions-item label="说明" label-class-name="labelClass" content-class-name="contentClass">
{{form.remark}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
export default {
mixins: [view],
components: {
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
"subMethod",
"subAddType",
"processStatus",
"appealResult",
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<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="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="人员名称" prop="staffName" v-model="form.staffName" type="textarea" placeholder="请输入人员名称"/>
<Field label="部门id号" prop="deptId" v-model="form.deptId" placeholder="请输入部门id号"/>
<Field label="部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入部门名称"/>
<Field label="考勤绩效指标分数" prop="attendScore" v-model="form.attendScore" placeholder="请输入考勤绩效指标分数"/>
<Field label="评价绩效指标分数" prop="assessScore" v-model="form.assessScore" placeholder="请输入评价绩效指标分数"/>
<Field label="办件绩效分数" prop="workScore" v-model="form.workScore" placeholder="请输入办件绩效分数"/>
<Field label="效能绩效分数" prop="effectScore" v-model="form.effectScore" placeholder="请输入效能绩效分数"/>
<Field label="其它绩效分数" prop="otherScore" v-model="form.otherScore" placeholder="请输入其它绩效分数"/>
<Field label="累计异常分数" prop="errorScore" v-model="form.errorScore" placeholder="请输入累计异常分数"/>
<Field label="当月得分数" prop="totalScore" v-model="form.totalScore" placeholder="请输入当月得分数"/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
<Field label="年" prop="year" v-model="form.year" placeholder="请输入年"/>
<Field label="月" prop="month" v-model="form.month" type="select" :enumData="dict.month" 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>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
export default {
mixins: [form],
components: {
dialogShow ,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "员工绩效统计",
// 是否显示弹出层
open: false,
toString:[
"month",
],
// 表单校验
rules: {
year: [
{required: true,message: "请输入年", trigger: "blur" },
],
month: [
{required: true,message: "请输入月", trigger: "blur" },
],
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="staff/perform/summary/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改员工绩效统计";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "staff/perform/summary/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增员工绩效统计";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="staff/perform/summary/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");
},
// 表单重置
reset() {
this.form = {
staffId : 0,
workNum : "",
staffName : "",
deptId : 0,
deptName : "",
attendScore : null,
assessScore : null,
workScore : null,
effectScore : null,
otherScore : null,
errorScore : null,
totalScore : null,
remark : "",
year : null,
month : null,
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
<template>
<div class="page">
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
</LayoutTable>
<dialog-show ref="dialogform" @ok="getData" />
</div>
</template>
<script>
/** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table";
export default {
name: "StaffPerformSummaryList",
components: {
dialogShow
},
mixins: [table],
created() {
},
methods: {
/** 重写新增方法 */
toAdd(row) {
this.$refs.dialogform.add(row);
},
/** 重写编辑方法 */
toEdit(row) {
this.$refs.dialogform.edit(row);
},
/** 重写查看方法 */
toView(row) {
this.$refs.dialogform.view(row);
},
},
data() {
return {
config: {
isshowTabPane:true,
search: [
{
name: "createTimeStart",
type: "date",
label: "月份"
},
{
name: "deptId",
type: "select",
label: "所属部门"
},
{
name: "staffName",
type: "text",
label: "员工姓名"
},
],
columns: [
{type: "selection", width: 60},
{type: "index",label: "序号",width: 50},
{label: "姓名", prop: "staffName"},
{label: "工号", prop: "workNum"},
{label: "所属部门", prop: "deptName"},
{label: "考勤绩效", prop: "attendScore", formatter: this.formatter},
{label: "评价绩效", prop: "assessScore", formatter: this.formatter},
{label: "办件绩效", prop: "workScore", formatter: this.formatter},
{label: "效能绩效", prop: "effectScore", formatter: this.formatter},
{label: "其它绩效", prop: "otherScore", formatter: this.formatter},
{label: "累计异常分数", prop: "errorScore", formatter: this.formatter},
{label: "本月得分数", prop: "totalScore", formatter: this.formatter},
{
label: "操作",
width: 240,
formatter: row => {
return (
<table-buttons noAdd noEdit noDel row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
]
}
};
}
};
</script>
<template>
<layout-view>
<el-descriptions :title="title" :column="column" :size="size" :colon="false" border>
<template slot="title">
<i class="el-icon-tickets"></i>
基本详细信息
</template>
<template slot="extra">
<el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>
</template>
<el-descriptions-item label="人员id" label-class-name="labelClass" content-class-name="contentClass">
{{form.staffId}}
</el-descriptions-item>
<el-descriptions-item label="工号" label-class-name="labelClass" content-class-name="contentClass">
{{form.workNum}}
</el-descriptions-item>
<el-descriptions-item label="人员名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.staffName}}
</el-descriptions-item>
<el-descriptions-item label="部门id号" label-class-name="labelClass" content-class-name="contentClass">
{{form.deptId}}
</el-descriptions-item>
<el-descriptions-item label="部门名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.deptName}}
</el-descriptions-item>
<el-descriptions-item label="考勤绩效指标分数" label-class-name="labelClass" content-class-name="contentClass">
{{form.attendScore}}
</el-descriptions-item>
<el-descriptions-item label="评价绩效指标分数" label-class-name="labelClass" content-class-name="contentClass">
{{form.assessScore}}
</el-descriptions-item>
<el-descriptions-item label="办件绩效分数" label-class-name="labelClass" content-class-name="contentClass">
{{form.workScore}}
</el-descriptions-item>
<el-descriptions-item label="效能绩效分数" label-class-name="labelClass" content-class-name="contentClass">
{{form.effectScore}}
</el-descriptions-item>
<el-descriptions-item label="其它绩效分数" label-class-name="labelClass" content-class-name="contentClass">
{{form.otherScore}}
</el-descriptions-item>
<el-descriptions-item label="累计异常分数" label-class-name="labelClass" content-class-name="contentClass">
{{form.errorScore}}
</el-descriptions-item>
<el-descriptions-item label="当月得分数" label-class-name="labelClass" content-class-name="contentClass">
{{form.totalScore}}
</el-descriptions-item>
<el-descriptions-item label="备注" label-class-name="labelClass" content-class-name="contentClass">
{{form.remark}}
</el-descriptions-item>
<el-descriptions-item label="年" label-class-name="labelClass" content-class-name="contentClass">
{{form.year}}
</el-descriptions-item>
<el-descriptions-item label="月" label-class-name="labelClass" content-class-name="contentClass">
{{form.month}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<script>
import view from "@/assets/mixins/view";
export default {
mixins: [view],
components: {
},
methods: {
},
data() {
return {
size:"small",
column:2,
toString:[
"month",
],
toArrays: [
],
toDate: [
]
}
}
}
</script>
<style lang="less">
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
</style>
\ No newline at end of file
...@@ -17,7 +17,8 @@ module.exports = { ...@@ -17,7 +17,8 @@ module.exports = {
hot: true,//自动保存 hot: true,//自动保存
proxy: { proxy: {
'/attendance': { '/attendance': {
target: 'http://192.168.0.98:11039', //target: 'http://192.168.0.98:11039',
target: 'http://localhost:17500',
changeOrigin: true, changeOrigin: true,
secure: false, secure: false,
cookieDomainRewrite: 'localhost', cookieDomainRewrite: 'localhost',
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
"resolved" "https://registry.nlark.com/@babel/compat-data/download/@babel/compat-data-7.14.9.tgz?cache=0&sync_timestamp=1627804534988&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fcompat-data%2Fdownload%2F%40babel%2Fcompat-data-7.14.9.tgz" "resolved" "https://registry.nlark.com/@babel/compat-data/download/@babel/compat-data-7.14.9.tgz?cache=0&sync_timestamp=1627804534988&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fcompat-data%2Fdownload%2F%40babel%2Fcompat-data-7.14.9.tgz"
"version" "7.14.9" "version" "7.14.9"
"@babel/core@*", "@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0", "@babel/core@^7.9.6": "@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0", "@babel/core@^7.9.6":
"integrity" "sha1-IM33yEtdhtg/rIcQqLxgWnuj8BA=" "integrity" "sha1-IM33yEtdhtg/rIcQqLxgWnuj8BA="
"resolved" "https://registry.nlark.com/@babel/core/download/@babel/core-7.14.8.tgz" "resolved" "https://registry.nlark.com/@babel/core/download/@babel/core-7.14.8.tgz"
"version" "7.14.8" "version" "7.14.8"
...@@ -2417,9 +2417,9 @@ ...@@ -2417,9 +2417,9 @@
"lodash.uniq" "^4.5.0" "lodash.uniq" "^4.5.0"
"caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30001109", "caniuse-lite@^1.0.30001219": "caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30001109", "caniuse-lite@^1.0.30001219":
"integrity" "sha512-OnyeJ9ascFA9roEj72ok2Ikp7PHJTKubtEJIQ/VK3fdsS50q4KWy+Z5X0A1/GswEItKX0ctAp8n4SYDE7wTu6A==" "integrity" "sha512-2S9nK0G/mE+jasCUsMPlARhRCts1ebcp2Ji8Y8PWi4NDE1iRdLCnEPHkEfeBrGC45L4isBx5ur3IQ6yTE2mRZw=="
"resolved" "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001420.tgz" "resolved" "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz"
"version" "1.0.30001420" "version" "1.0.30001512"
"case-sensitive-paths-webpack-plugin@^2.3.0": "case-sensitive-paths-webpack-plugin@^2.3.0":
"integrity" "sha1-22QGbGQi7tLgjMFLmGykN5bbxtQ=" "integrity" "sha1-22QGbGQi7tLgjMFLmGykN5bbxtQ="
...@@ -2982,7 +2982,7 @@ ...@@ -2982,7 +2982,7 @@
"resolved" "https://registry.nlark.com/core-js/download/core-js-2.6.12.tgz" "resolved" "https://registry.nlark.com/core-js/download/core-js-2.6.12.tgz"
"version" "2.6.12" "version" "2.6.12"
"core-js@^3": "core-js@^3.6.5":
"version" "3.16.0" "version" "3.16.0"
"core-js@3.8.1": "core-js@3.8.1":
......
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 申诉结果(1.通过,2.不通过)枚举类
*
* @author zxfei
*/
public enum AppealResultEnum {
通过(1, "通过"),
不通过(2, "不通过");
private Integer value;
private String desc;
AppealResultEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public Integer getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static AppealResultEnum getByValue(Integer value) {
for (AppealResultEnum appealResultEnum : AppealResultEnum.values()) {
if (appealResultEnum.getValue() == value) {
return appealResultEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(Integer... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (AppealResultEnum item : AppealResultEnum.values()) {
try {
boolean hasE = false;
for (Integer e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
...@@ -4,13 +4,14 @@ import java.util.LinkedHashMap; ...@@ -4,13 +4,14 @@ import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
/** /**
* 处理状态(1.未核查,2.已核查)枚举类 * 状态 (0.未开始,1.进行中,2.已结束)枚举类
* *
* @author zxfei * @author zxfei
*/ */
public enum ProcessStatusEnum { public enum ProcessStatusEnum {
未核查(1, "未核查"), 未开始(0, "未开始"),
已核查(2, "已核查"); 进行中(1, "进行中"),
已结束(2, "已结束");
private Integer value; private Integer value;
private String desc; private String desc;
......
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 问题类型 (1.单项选择,2.多项选择,3.文本框,4.多项文本框,5.文字,6.上传附件)枚举类
*
* @author zxfei
*/
public enum QuestionTypeEnum {
单项选择(1, "单项选择"),
多项选择(2, "多项选择"),
文本框(3, "文本框"),
多项文本框(4, "多项文本框"),
文字(5, "文字"),
上传附件(6, "上传附件");
private Integer value;
private String desc;
QuestionTypeEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public Integer getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static QuestionTypeEnum getByValue(Integer value) {
for (QuestionTypeEnum questionTypeEnum : QuestionTypeEnum.values()) {
if (questionTypeEnum.getValue() == value) {
return questionTypeEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(Integer... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (QuestionTypeEnum item : QuestionTypeEnum.values()) {
try {
boolean hasE = false;
for (Integer e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 是否必填(0.否,1.是)枚举类
*
* @author zxfei
*/
public enum RequireEnum {
(0, "否"),
(1, "是");
private Integer value;
private String desc;
RequireEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public Integer getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static RequireEnum getByValue(Integer value) {
for (RequireEnum requireEnum : RequireEnum.values()) {
if (requireEnum.getValue() == value) {
return requireEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(Integer... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (RequireEnum item : RequireEnum.values()) {
try {
boolean hasE = false;
for (Integer e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
...@@ -4,13 +4,14 @@ import java.util.LinkedHashMap; ...@@ -4,13 +4,14 @@ import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
/** /**
* 扣分方式(1.系统自动,2.人工添加)枚举类 * 扣分方式(1.系统自动,2.人工添加,3.大厅巡查)枚举类
* *
* @author zxfei * @author zxfei
*/ */
public enum SubMethodEnum { public enum SubMethodEnum {
系统自动(1, "系统自动"), 系统自动(1, "系统自动"),
人工添加(2, "人工添加"); 人工添加(2, "人工添加"),
大厅巡查(3, "大厅巡查");
private Integer value; private Integer value;
private String desc; private String desc;
......
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 问卷是否外链(0.否,1.是)枚举类
*
* @author zxfei
*/
public enum WeblinkEnum {
(0, "否"),
(1, "是");
private Integer value;
private String desc;
WeblinkEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public Integer getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static WeblinkEnum getByValue(Integer value) {
for (WeblinkEnum weblinkEnum : WeblinkEnum.values()) {
if (weblinkEnum.getValue() == value) {
return weblinkEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(Integer... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (WeblinkEnum item : WeblinkEnum.values()) {
try {
boolean hasE = false;
for (Integer e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
package com.mortals.xhx.module.feedback.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.feedback.model.FeedbackAnswerEntity;
import java.util.List;
/**
* 绩效问题回答Dao
* 绩效问题回答 DAO接口
*
* @author zxfei
* @date 2023-07-05
*/
public interface FeedbackAnswerDao extends ICRUDDao<FeedbackAnswerEntity,Long>{
}
package com.mortals.xhx.module.feedback.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.feedback.model.FeedbackAnswerOptionEntity;
import java.util.List;
/**
* 绩效问题回答选项Dao
* 绩效问题回答选项 DAO接口
*
* @author zxfei
* @date 2023-07-05
*/
public interface FeedbackAnswerOptionDao extends ICRUDDao<FeedbackAnswerOptionEntity,Long>{
}
package com.mortals.xhx.module.feedback.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.feedback.model.FeedbackEntity;
import java.util.List;
/**
* 绩效反馈记录信息Dao
* 绩效反馈记录信息 DAO接口
*
* @author zxfei
* @date 2023-07-05
*/
public interface FeedbackDao extends ICRUDDao<FeedbackEntity,Long>{
}
package com.mortals.xhx.module.feedback.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.feedback.model.FeedbackOptionEntity;
import java.util.List;
/**
* 绩效问题选项Dao
* 绩效问题选项 DAO接口
*
* @author zxfei
* @date 2023-07-05
*/
public interface FeedbackOptionDao extends ICRUDDao<FeedbackOptionEntity,Long>{
}
package com.mortals.xhx.module.feedback.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.feedback.model.FeedbackQuestionEntity;
import java.util.List;
/**
* 绩效反馈问题Dao
* 绩效反馈问题 DAO接口
*
* @author zxfei
* @date 2023-07-05
*/
public interface FeedbackQuestionDao extends ICRUDDao<FeedbackQuestionEntity,Long>{
}
package com.mortals.xhx.module.feedback.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.feedback.dao.FeedbackAnswerDao;
import com.mortals.xhx.module.feedback.model.FeedbackAnswerEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 绩效问题回答DaoImpl DAO接口
*
* @author zxfei
* @date 2023-07-05
*/
@Repository("feedbackAnswerDao")
public class FeedbackAnswerDaoImpl extends BaseCRUDDaoMybatis<FeedbackAnswerEntity,Long> implements FeedbackAnswerDao {
}
package com.mortals.xhx.module.feedback.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.feedback.dao.FeedbackAnswerOptionDao;
import com.mortals.xhx.module.feedback.model.FeedbackAnswerOptionEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 绩效问题回答选项DaoImpl DAO接口
*
* @author zxfei
* @date 2023-07-05
*/
@Repository("feedbackAnswerOptionDao")
public class FeedbackAnswerOptionDaoImpl extends BaseCRUDDaoMybatis<FeedbackAnswerOptionEntity,Long> implements FeedbackAnswerOptionDao {
}
package com.mortals.xhx.module.feedback.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.feedback.dao.FeedbackDao;
import com.mortals.xhx.module.feedback.model.FeedbackEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 绩效反馈记录信息DaoImpl DAO接口
*
* @author zxfei
* @date 2023-07-05
*/
@Repository("feedbackDao")
public class FeedbackDaoImpl extends BaseCRUDDaoMybatis<FeedbackEntity,Long> implements FeedbackDao {
}
package com.mortals.xhx.module.feedback.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.feedback.dao.FeedbackOptionDao;
import com.mortals.xhx.module.feedback.model.FeedbackOptionEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 绩效问题选项DaoImpl DAO接口
*
* @author zxfei
* @date 2023-07-05
*/
@Repository("feedbackOptionDao")
public class FeedbackOptionDaoImpl extends BaseCRUDDaoMybatis<FeedbackOptionEntity,Long> implements FeedbackOptionDao {
}
package com.mortals.xhx.module.feedback.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.feedback.dao.FeedbackQuestionDao;
import com.mortals.xhx.module.feedback.model.FeedbackQuestionEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 绩效反馈问题DaoImpl DAO接口
*
* @author zxfei
* @date 2023-07-05
*/
@Repository("feedbackQuestionDao")
public class FeedbackQuestionDaoImpl extends BaseCRUDDaoMybatis<FeedbackQuestionEntity,Long> implements FeedbackQuestionDao {
}
package com.mortals.xhx.module.feedback.model;
import java.util.List;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.feedback.model.vo.FeedbackAnswerVo;
import com.mortals.xhx.module.feedback.model.FeedbackAnswerOptionEntity;
import lombok.Data;
/**
* 绩效问题回答实体对象
*
* @author zxfei
* @date 2023-07-05
*/
@Data
public class FeedbackAnswerEntity extends FeedbackAnswerVo {
private static final long serialVersionUID = 1L;
/**
* 反馈问卷id号
*/
private Long feedbackId;
/**
* 问题id号
*/
private Long questionId;
/**
* 用户id号
*/
private Long staffId;
/**
* 问题类型 (1.单项选择,2.多项选择,3.文本框,4.多项文本框,5.文字,6.上传附件)
*/
private Integer questionType;
/**
* 适用于问题内容为文本内容
*/
private String content;
/**
* 备注
*/
private String remark;
/**
* 绩效问题回答选项信息
*/
private List<FeedbackAnswerOptionEntity> feedbackAnswerOptionList=new ArrayList<>();;
public List<FeedbackAnswerOptionEntity> getFeedbackAnswerOptionList(){
return feedbackAnswerOptionList;
}
public void setFeedbackAnswerOptionList(List<FeedbackAnswerOptionEntity> feedbackAnswerOptionList){
this.feedbackAnswerOptionList = feedbackAnswerOptionList;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof FeedbackAnswerEntity) {
FeedbackAnswerEntity tmp = (FeedbackAnswerEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.feedbackId = 0L;
this.questionId = 0L;
this.staffId = 0L;
this.questionType = 1;
this.content = "";
this.remark = "";
}
}
\ No newline at end of file
package com.mortals.xhx.module.feedback.model;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.feedback.model.vo.FeedbackAnswerOptionVo;
import lombok.Data;
/**
* 绩效问题回答选项实体对象
*
* @author zxfei
* @date 2023-07-05
*/
@Data
public class FeedbackAnswerOptionEntity extends FeedbackAnswerOptionVo {
private static final long serialVersionUID = 1L;
/**
* 回答问题id号
*/
private Long answerId;
/**
* 选项id号
*/
private Long optionId;
/**
* 选项内容
*/
private String optionContent;
/**
* 备注
*/
private String remark;
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof FeedbackAnswerOptionEntity) {
FeedbackAnswerOptionEntity tmp = (FeedbackAnswerOptionEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.answerId = 0L;
this.optionId = 0L;
this.optionContent = "";
this.remark = "";
}
}
\ No newline at end of file
package com.mortals.xhx.module.feedback.model;
import java.util.List;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.feedback.model.vo.FeedbackVo;
import com.mortals.xhx.module.feedback.model.FeedbackQuestionEntity;
import lombok.Data;
/**
* 绩效反馈记录信息实体对象
*
* @author zxfei
* @date 2023-07-05
*/
@Data
public class FeedbackEntity extends FeedbackVo {
private static final long serialVersionUID = 1L;
/**
* 问卷标题
*/
private String title;
/**
* 反馈开始时间
*/
private Date feedbackTimeStart;
/**
* 反馈结束时间
*/
private Date feedbackTimeEnd;
/**
* 邀请人数
*/
private Integer inviteNum;
/**
* 反馈人数
*/
private Integer feedbackNum;
/**
* 状态 (0.未开始,1.进行中,2.已结束)
*/
private Integer processStatus;
/**
* 问卷是否外链(0.否,1.是)
*/
private Integer weblink;
/**
* 问题外链地址
*/
private String webUrl;
/**
* 备注说明
*/
private String remark;
/**
* 绩效反馈问题信息
*/
private List<FeedbackQuestionEntity> feedbackQuestionList=new ArrayList<>();;
public List<FeedbackQuestionEntity> getFeedbackQuestionList(){
return feedbackQuestionList;
}
public void setFeedbackQuestionList(List<FeedbackQuestionEntity> feedbackQuestionList){
this.feedbackQuestionList = feedbackQuestionList;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof FeedbackEntity) {
FeedbackEntity tmp = (FeedbackEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.title = "";
this.feedbackTimeStart = null;
this.feedbackTimeEnd = null;
this.inviteNum = 0;
this.feedbackNum = 0;
this.processStatus = 0;
this.weblink = 0;
this.webUrl = "";
this.remark = "";
}
}
\ No newline at end of file
package com.mortals.xhx.module.feedback.model;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.feedback.model.vo.FeedbackOptionVo;
import lombok.Data;
/**
* 绩效问题选项实体对象
*
* @author zxfei
* @date 2023-07-05
*/
@Data
public class FeedbackOptionEntity extends FeedbackOptionVo {
private static final long serialVersionUID = 1L;
/**
* 问题id号
*/
private Long questionId;
/**
* 选项内容
*/
private String content;
/**
* 备注
*/
private String remark;
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof FeedbackOptionEntity) {
FeedbackOptionEntity tmp = (FeedbackOptionEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.questionId = 0L;
this.content = "";
this.remark = "";
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
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