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

Merge remote-tracking branch 'origin/master'

parents 3ffd0f32 230fd3b8
<template> <template>
<span> <span>
<el-button v-if='!noEdit' type="text" icon="el-icon-edit" size='mini' @click='$emit("edit", row)' title="编辑">编辑</el-button> <el-button
v-if="!noEdit"
type="text"
icon="el-icon-edit"
size="mini"
@click="$emit('edit', row)"
title="编辑"
>编辑</el-button
>
<span>&nbsp;</span> <span>&nbsp;</span>
<el-button v-if='!noView' type="text" icon="el-icon-view" size='mini' @click='$emit("view", row)' title="查看">查看</el-button> <el-button
v-if="!noView"
type="text"
icon="el-icon-view"
size="mini"
@click="$emit('view', row)"
title="查看"
>查看</el-button
>
<span>&nbsp;</span> <span>&nbsp;</span>
<Confirm @confirm='$emit("del", row.id)' message='确定要删除该条记录吗?'> <el-button
<el-button v-if='!noDel' type="text" icon="el-icon-delete" size='mini' title="删除">删除</el-button> v-if="reCheck"
type="text"
icon="el-icon-edit"
size="mini"
@click="$emit('edit', row)"
title="核查"
>核查</el-button
>
<span>&nbsp;</span>
<Confirm @confirm="$emit('del', row.id)" message="确定要删除该条记录吗?">
<el-button
v-if="!noDel"
type="text"
icon="el-icon-delete"
size="mini"
title="删除"
>删除</el-button
>
</Confirm> </Confirm>
</span> </span>
</template> </template>
<script> <script>
import Confirm from '@/components/Confirm.vue'; import Confirm from "@/components/Confirm.vue";
export default { export default {
props: { props: {
noEdit: { noEdit: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
noDel: { noDel: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
noAdd: { noAdd: {
type: Boolean, type: Boolean,
default: false default: false,
},
reCheck: {
type: Boolean,
default: false,
}, },
noView: { noView: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
row: { row: {
type: Object, type: Object,
required: true, required: true,
default: () => {} default: () => {},
}, },
}, },
components: { components: {
Confirm, Confirm,
}, },
methods: { methods: {},
},
data() { data() {
return { return {};
},
} };
}
}
</script> </script>
<template> <template>
<div class="page"> <div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig"> <LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button <el-button
slot="table-head-left2" slot="table-head-left2"
style="margin-left: 10px" style="margin-left: 10px"
...@@ -9,7 +8,8 @@ ...@@ -9,7 +8,8 @@
size="mini" size="mini"
@click="doExport" @click="doExport"
:disabled="isExport" :disabled="isExport"
>导出</el-button> >导出</el-button
>
</LayoutTable> </LayoutTable>
<!-- 考勤绩效记录核查信息导入对话框 --> <!-- 考勤绩效记录核查信息导入对话框 -->
...@@ -37,10 +37,11 @@ ...@@ -37,10 +37,11 @@
<em>点击上传</em> <em>点击上传</em>
</div> </div>
<div class="el-upload__tip" slot="tip"> <div class="el-upload__tip" slot="tip">
<el-checkbox <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
v-model="upload.updateSupport" <el-link
/>是否更新已经存在的数据 type="primary"
<el-link type="primary" style="font-size: 14px" @click="downloadTemplate" style="font-size: 14px"
@click="downloadTemplate"
>下载模板</el-link >下载模板</el-link
> >
</div> </div>
...@@ -59,17 +60,16 @@ ...@@ -59,17 +60,16 @@
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
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: "CheckAttendRecordList", name: "CheckAttendRecordList",
components: { components: {
drawerShow drawerShow,
},
mixins: [table],
created() {
}, },
mixins: [table],
created() {},
methods: { methods: {
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
...@@ -79,7 +79,11 @@ ...@@ -79,7 +79,11 @@
/** 下载模板操作 */ /** 下载模板操作 */
downloadTemplate() { downloadTemplate() {
this.isExport = true; this.isExport = true;
this.$download("/check/attend/record/downloadTemplate", {}, { type: "excel" }) this.$download(
"/check/attend/record/downloadTemplate",
{},
{ type: "excel" }
)
.then(() => (this.isExport = false)) .then(() => (this.isExport = false))
.catch((error) => { .catch((error) => {
this.isExport = false; this.isExport = false;
...@@ -105,9 +109,15 @@ ...@@ -105,9 +109,15 @@
/** 导出Excel */ /** 导出Excel */
doExport() { doExport() {
this.isExport = true; this.isExport = true;
this.$download("/check/attend/record/exportExcel", { this.$download(
"idList": this.selection, "/check/attend/record/exportExcel",
}, { type: "excel" }).then(() => this.isExport = false).catch(error => { {
idList: this.selection,
},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false; this.isExport = false;
this.$message.error(error.message); this.$message.error(error.message);
}); });
...@@ -118,13 +128,14 @@ ...@@ -118,13 +128,14 @@
}, },
/** 重写编辑方法 */ /** 重写编辑方法 */
toEdit(row) { toEdit(row) {
row.view = "核查";
this.$refs.drawerform.edit(row); this.$refs.drawerform.edit(row);
}, },
/** 重写查看方法 */ /** 重写查看方法 */
toView(row) { toView(row) {
row.view = "查看";
this.$refs.drawerform.view(row); this.$refs.drawerform.view(row);
}, },
}, },
data() { data() {
return { return {
...@@ -143,59 +154,104 @@ ...@@ -143,59 +154,104 @@
}, },
isExport: false, isExport: false,
config: { config: {
isshowTabPane:true, isshowTabPane: true,
search: [ search: [
{
name: "status",
type: "select",
label: "全部状态",
fuzzy: false,
},
{
name: "deptId",
type: "select",
label: "全部部门",
fuzzy: false,
},
{
name: "date",
type: "date",
label: "请选择日期",
fuzzy: false,
},
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
fuzzy: false,
},
], ],
columns: [ columns: [
{type: "selection", width: 60}, { type: "selection", width: 50 },
{type: "index",label: "序号",width: 50}, { type: "index", label: "序号", width: 50 },
{label: "员工姓名", prop: "staffName"},
{label: "工号", prop: "workNum"}, { label: "姓名", prop: "staffName" },
{label: "所属部门名称", prop: "deptName"}, { label: "窗口编号", prop: "windowNum" },
{label: "所属考勤组名称", prop: "attendanceGroupName"}, { label: "所属部门", prop: "deptName" },
{label: "考勤时间", prop: "attendanceDate", formatter: this.formatterDate}, { label: "考勤组", prop: "attendanceGroupName" },
{label: "规则名称", prop: "ruleName"}, {
label: "异常时间",
prop: "errorTime",
formatter: this.formatterDate,
},
{label: "增减类型", prop: "subAddType",formatter: this.formatter}, { label: "上下班时间", prop: "goOffTimeStr" },
{label: "扣分或增加分值",fixed:"right", prop: "score", formatter: this.formatter}, {
label: "实际打卡时间",
prop: "actualAttendTime",
formatter: this.formatterDate,
},
{label: "上下班时间", prop: "goOffTimeStr"}, { label: "异常结果", prop: "errorResult" },
{label: "异常时间", prop: "errorTime", formatter: this.formatterDate}, { label: "图片凭证", prop: "snapPath" },
{label: "实际打卡时间", prop: "actualAttendTime", formatter: this.formatterDate}, { label: "绩效规则", prop: "ruleNme" },
{label: "异常处理结果", prop: "errorResult"}, { label: "扣分方式", prop: "subMethod", formatter: this.formatter },
{label: "核查时间", prop: "checkTime", formatter: this.formatterDate}, {
label: "扣分时间",
prop: "deductTime",
formatter: this.formatterDate,
},
{label: "核查说明", prop: "checkDesc"}, { label: "扣分人员", prop: "deductPerson" },
{label: "核查结果", prop: "checkResult"}, { label: "扣分分值", prop: "score", formatter: this.formatter },
{label: "处理状态",fixed:"right", prop: "checkStatus",formatter: this.formatter}, {
label: "处理状态",
prop: "processStatus",
formatter: this.formatter,
},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{ {
label: "操作", label: "操作",
fixed:"right", width: 200,
width: 240, formatter: (row) => {
formatter: row => {
return ( return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> <table-buttons
noAdd
noDel
noEdit
reCheck
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
); );
} },
} },
] ],
} },
};
}
}; };
},
};
</script> </script>
<template> <template>
<div class="page"> <div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig"> <LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button <el-button
slot="table-head-left2" slot="table-head-left2"
style="margin-left: 10px" style="margin-left: 10px"
...@@ -9,7 +8,8 @@ ...@@ -9,7 +8,8 @@
size="mini" size="mini"
@click="doExport" @click="doExport"
:disabled="isExport" :disabled="isExport"
>导出</el-button> >导出</el-button
>
</LayoutTable> </LayoutTable>
<!-- 评价绩效投诉核查信息导入对话框 --> <!-- 评价绩效投诉核查信息导入对话框 -->
...@@ -37,10 +37,11 @@ ...@@ -37,10 +37,11 @@
<em>点击上传</em> <em>点击上传</em>
</div> </div>
<div class="el-upload__tip" slot="tip"> <div class="el-upload__tip" slot="tip">
<el-checkbox <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
v-model="upload.updateSupport" <el-link
/>是否更新已经存在的数据 type="primary"
<el-link type="primary" style="font-size: 14px" @click="downloadTemplate" style="font-size: 14px"
@click="downloadTemplate"
>下载模板</el-link >下载模板</el-link
> >
</div> </div>
...@@ -59,17 +60,16 @@ ...@@ -59,17 +60,16 @@
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
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: "CheckComplainRecordList", name: "CheckComplainRecordList",
components: { components: {
drawerShow drawerShow,
},
mixins: [table],
created() {
}, },
mixins: [table],
created() {},
methods: { methods: {
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
...@@ -79,7 +79,11 @@ ...@@ -79,7 +79,11 @@
/** 下载模板操作 */ /** 下载模板操作 */
downloadTemplate() { downloadTemplate() {
this.isExport = true; this.isExport = true;
this.$download("/check/complain/record/downloadTemplate", {}, { type: "excel" }) this.$download(
"/check/complain/record/downloadTemplate",
{},
{ type: "excel" }
)
.then(() => (this.isExport = false)) .then(() => (this.isExport = false))
.catch((error) => { .catch((error) => {
this.isExport = false; this.isExport = false;
...@@ -105,9 +109,15 @@ ...@@ -105,9 +109,15 @@
/** 导出Excel */ /** 导出Excel */
doExport() { doExport() {
this.isExport = true; this.isExport = true;
this.$download("/check/complain/record/exportExcel", { this.$download(
"idList": this.selection, "/check/complain/record/exportExcel",
}, { type: "excel" }).then(() => this.isExport = false).catch(error => { {
idList: this.selection,
},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false; this.isExport = false;
this.$message.error(error.message); this.$message.error(error.message);
}); });
...@@ -118,13 +128,14 @@ ...@@ -118,13 +128,14 @@
}, },
/** 重写编辑方法 */ /** 重写编辑方法 */
toEdit(row) { toEdit(row) {
row.view = "核查";
this.$refs.drawerform.edit(row); this.$refs.drawerform.edit(row);
}, },
/** 重写查看方法 */ /** 重写查看方法 */
toView(row) { toView(row) {
row.view = "查看";
this.$refs.drawerform.view(row); this.$refs.drawerform.view(row);
}, },
}, },
data() { data() {
return { return {
...@@ -144,42 +155,110 @@ ...@@ -144,42 +155,110 @@
isExport: false, isExport: false,
config: { config: {
isshowTabPane:true, isshowTabPane: true,
search: [ search: [
{
name: "status",
type: "select",
label: "全部状态",
fuzzy: false,
},
{
name: "deptId",
type: "select",
label: "全部部门",
fuzzy: false,
},
{
name: "source",
type: "select",
label: "全部来源",
fuzzy: false,
},
{
name: "date",
type: "date",
label: "请选择日期",
fuzzy: false,
},
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
fuzzy: false,
},
], ],
columns: [ columns: [
{type: "selection", width: 60}, { type: "selection", width: 50 },
{type: "index",label: "序号",width: 50}, { type: "index", label: "序号", width: 50 },
{ label: "姓名", prop: "staffName" },
{label: "员工姓名", prop: "staffName"}, { label: "窗口编号", prop: "windowNum" },
{label: "所属部门名称", prop: "deptName"}, { label: "所属部门", prop: "deptName" },
{label: "投诉时间", prop: "complainTime", formatter: this.formatterDate}, { label: "投诉标题", prop: "complainTitle" },
{label: "扣分方式", prop: "subMethod",formatter: this.formatter}, { label: "投诉内容", prop: "complainContent" },
{label: "扣分时间", prop: "deductTime", formatter: this.formatterDate}, { label: "投诉人真实姓名", prop: "complainRealName" },
{label: "扣分或增加分值", prop: "score", formatter: this.formatter}, { label: "联系电话", prop: "contact" },
{label: "核查时间", prop: "checkTime", formatter: this.formatterDate}, {
label: "投诉时间",
prop: "complainTime",
formatter: this.formatterDate,
},
{ label: "投诉来源", prop: "complainSource" },
{ label: "图片凭证", prop: "snapPath" },
{ label: "投诉设备", prop: "complainDevice" },
{ label: "绩效规则", prop: "ruleNme" },
{ label: "扣分方式", prop: "subMethod", formatter: this.formatter },
{
label: "扣分时间",
prop: "deductTime",
formatter: this.formatterDate,
},
{label: "处理状态", prop: "checkStatus",formatter: this.formatter}, { label: "扣分人员", prop: "deductPerson" },
{ label: "扣分分值", prop: "score", formatter: this.formatter },
{
label: "处理状态",
prop: "processStatus",
formatter: this.formatter,
},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{ {
label: "操作", label: "操作",
width: 240, width: 200,
formatter: row => { formatter: (row) => {
return ( return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> <table-buttons
noAdd
noDel
reCheck
noEdit
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
); );
} },
} },
] ],
} },
};
}
}; };
},
};
</script> </script>
<template> <template>
<div class="page"> <div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig"> <LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button <el-button
slot="table-head-left2" slot="table-head-left2"
style="margin-left: 10px" style="margin-left: 10px"
...@@ -9,7 +8,8 @@ ...@@ -9,7 +8,8 @@
size="mini" size="mini"
@click="doExport" @click="doExport"
:disabled="isExport" :disabled="isExport"
>导出</el-button> >导出</el-button
>
</LayoutTable> </LayoutTable>
<!-- 效能绩效核查信息导入对话框 --> <!-- 效能绩效核查信息导入对话框 -->
...@@ -37,10 +37,11 @@ ...@@ -37,10 +37,11 @@
<em>点击上传</em> <em>点击上传</em>
</div> </div>
<div class="el-upload__tip" slot="tip"> <div class="el-upload__tip" slot="tip">
<el-checkbox <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
v-model="upload.updateSupport" <el-link
/>是否更新已经存在的数据 type="primary"
<el-link type="primary" style="font-size: 14px" @click="downloadTemplate" style="font-size: 14px"
@click="downloadTemplate"
>下载模板</el-link >下载模板</el-link
> >
</div> </div>
...@@ -59,17 +60,16 @@ ...@@ -59,17 +60,16 @@
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
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: "CheckEffectRecordList", name: "CheckEffectRecordList",
components: { components: {
drawerShow drawerShow,
},
mixins: [table],
created() {
}, },
mixins: [table],
created() {},
methods: { methods: {
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
...@@ -79,7 +79,11 @@ ...@@ -79,7 +79,11 @@
/** 下载模板操作 */ /** 下载模板操作 */
downloadTemplate() { downloadTemplate() {
this.isExport = true; this.isExport = true;
this.$download("/check/effect/record/downloadTemplate", {}, { type: "excel" }) this.$download(
"/check/effect/record/downloadTemplate",
{},
{ type: "excel" }
)
.then(() => (this.isExport = false)) .then(() => (this.isExport = false))
.catch((error) => { .catch((error) => {
this.isExport = false; this.isExport = false;
...@@ -105,9 +109,15 @@ ...@@ -105,9 +109,15 @@
/** 导出Excel */ /** 导出Excel */
doExport() { doExport() {
this.isExport = true; this.isExport = true;
this.$download("/check/effect/record/exportExcel", { this.$download(
"idList": this.selection, "/check/effect/record/exportExcel",
}, { type: "excel" }).then(() => this.isExport = false).catch(error => { {
idList: this.selection,
},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false; this.isExport = false;
this.$message.error(error.message); this.$message.error(error.message);
}); });
...@@ -118,13 +128,14 @@ ...@@ -118,13 +128,14 @@
}, },
/** 重写编辑方法 */ /** 重写编辑方法 */
toEdit(row) { toEdit(row) {
row.view = "核查";
this.$refs.drawerform.edit(row); this.$refs.drawerform.edit(row);
}, },
/** 重写查看方法 */ /** 重写查看方法 */
toView(row) { toView(row) {
row.view = "查看";
this.$refs.drawerform.view(row); this.$refs.drawerform.view(row);
}, },
}, },
data() { data() {
return { return {
...@@ -143,68 +154,111 @@ ...@@ -143,68 +154,111 @@
}, },
isExport: false, isExport: false,
config: { config: {
isshowTabPane:true, isshowTabPane: true,
search: [ search: [
{
name: "status",
type: "select",
label: "全部状态",
fuzzy: false,
},
{
name: "deptId",
type: "select",
label: "全部部门",
fuzzy: false,
},
{
name: "date",
type: "date",
label: "请选择日期",
fuzzy: false,
},
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
fuzzy: false,
},
], ],
columns: [ columns: [
{type: "selection", width: 60}, { type: "selection", width: 60 },
{type: "index",label: "序号",width: 50}, { type: "index", label: "序号", width: 50 },
{label: "员工姓名", prop: "staffName"},
{label: "工号", prop: "workNum"},
{label: "窗口编号", prop: "windowNum"},
{label: "所属部门", prop: "deptId", formatter: this.formatter},
{label: "所属部门名称", prop: "deptName"}, { label: "姓名", prop: "staffName" },
{label: "违规类型", prop: "irregularType",formatter: this.formatter}, { label: "窗口编号", prop: "windowNum" },
{label: "发生时间", prop: "happenTime", formatter: this.formatterDate}, { label: "所属部门", prop: "deptName" },
{label: "持续时间,秒", prop: "duration",formatter: this.formatter}, {
label: "违规类型",
{label: "报警时间", prop: "alarmTime", formatter: this.formatterDate}, prop: "irregularType",
formatter: this.formatter,
{label: "图片凭证地址", prop: "snapPath"}, },
{label: "绩效规则id", prop: "ruleId", formatter: this.formatter},
{label: "规则名称", prop: "ruleName"}, {
label: "发生时间",
prop: "happenTime",
formatter: this.formatterDate,
},
{label: "扣分方式", prop: "subMethod",formatter: this.formatter}, {
label: "时长",
prop: "duration",
formatter: this.formatter,
},
{label: "扣分人员", prop: "deductPerson"}, {
label: "报警时间",
prop: "alarmTime",
formatter: this.formatterDate,
},
{label: "扣分时间", prop: "deductTime", formatter: this.formatterDate}, { label: "图片凭证", prop: "snapPath" },
{label: "扣分或增加分值", prop: "score", formatter: this.formatter}, { label: "绩效规则", prop: "ruleName" },
{label: "核查人员", prop: "checkPerson"}, { label: "扣分方式", prop: "subMethod", formatter: this.formatter },
{label: "核查时间", prop: "checkTime", formatter: this.formatterDate}, {
label: "扣分时间",
prop: "deductTime",
formatter: this.formatterDate,
},
{label: "核查说明", prop: "checkDesc"}, { label: "扣分人员", prop: "deductPerson" },
{label: "核查结果", prop: "checkResult"}, { label: "扣分分值", prop: "score", formatter: this.formatter },
{label: "处理状态", prop: "checkStatus",formatter: this.formatter}, {
label: "处理状态",
prop: "processStatus",
formatter: this.formatter,
},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{ {
label: "操作", label: "操作",
width: 240, width: 240,
formatter: row => { formatter: (row) => {
return ( return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> <table-buttons
noAdd
noDel
noEdit
reCheck
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
); );
} },
} },
] ],
} },
};
}
}; };
},
};
</script> </script>
...@@ -8,7 +8,8 @@ ...@@ -8,7 +8,8 @@
size="mini" size="mini"
@click="doExport" @click="doExport"
:disabled="isExport" :disabled="isExport"
>导出</el-button> >导出</el-button
>
</LayoutTable> </LayoutTable>
<!-- 办件绩效核查信息导入对话框 --> <!-- 办件绩效核查信息导入对话框 -->
...@@ -36,10 +37,11 @@ ...@@ -36,10 +37,11 @@
<em>点击上传</em> <em>点击上传</em>
</div> </div>
<div class="el-upload__tip" slot="tip"> <div class="el-upload__tip" slot="tip">
<el-checkbox <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
v-model="upload.updateSupport" <el-link
/>是否更新已经存在的数据 type="primary"
<el-link type="primary" style="font-size: 14px" @click="downloadTemplate" style="font-size: 14px"
@click="downloadTemplate"
>下载模板</el-link >下载模板</el-link
> >
</div> </div>
...@@ -58,17 +60,16 @@ ...@@ -58,17 +60,16 @@
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
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: "CheckGoworkRecordList", name: "CheckGoworkRecordList",
components: { components: {
drawerShow drawerShow,
},
mixins: [table],
created() {
}, },
mixins: [table],
created() {},
methods: { methods: {
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
...@@ -78,7 +79,11 @@ ...@@ -78,7 +79,11 @@
/** 下载模板操作 */ /** 下载模板操作 */
downloadTemplate() { downloadTemplate() {
this.isExport = true; this.isExport = true;
this.$download("/check/gowork/record/downloadTemplate", {}, { type: "excel" }) this.$download(
"/check/gowork/record/downloadTemplate",
{},
{ type: "excel" }
)
.then(() => (this.isExport = false)) .then(() => (this.isExport = false))
.catch((error) => { .catch((error) => {
this.isExport = false; this.isExport = false;
...@@ -104,9 +109,15 @@ ...@@ -104,9 +109,15 @@
/** 导出Excel */ /** 导出Excel */
doExport() { doExport() {
this.isExport = true; this.isExport = true;
this.$download("/check/gowork/record/exportExcel", { this.$download(
"idList": this.selection, "/check/gowork/record/exportExcel",
}, { type: "excel" }).then(() => this.isExport = false).catch(error => { {
idList: this.selection,
},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false; this.isExport = false;
this.$message.error(error.message); this.$message.error(error.message);
}); });
...@@ -117,13 +128,14 @@ ...@@ -117,13 +128,14 @@
}, },
/** 重写编辑方法 */ /** 重写编辑方法 */
toEdit(row) { toEdit(row) {
row.view = "核查";
this.$refs.drawerform.edit(row); this.$refs.drawerform.edit(row);
}, },
/** 重写查看方法 */ /** 重写查看方法 */
toView(row) { toView(row) {
row.view = "查看";
this.$refs.drawerform.view(row); this.$refs.drawerform.view(row);
}, },
}, },
data() { data() {
return { return {
...@@ -143,66 +155,98 @@ ...@@ -143,66 +155,98 @@
isExport: false, isExport: false,
config: { config: {
isshowTabPane:true, isshowTabPane: true,
search: [ search: [
{
name: "status",
type: "select",
label: "全部状态",
fuzzy: false,
},
{
name: "deptId",
type: "select",
label: "全部部门",
fuzzy: false,
},
{
name: "date",
type: "date",
label: "请选择日期",
fuzzy: false,
},
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
fuzzy: false,
},
], ],
columns: [ columns: [
{type: "selection", width: 60}, { type: "selection", width: 50 },
{type: "index",label: "序号",width: 50}, { type: "index", label: "序号", width: 50 },
{label: "员工姓名", prop: "staffName"},
{label: "工号", prop: "workNum"}, { label: "姓名", prop: "staffName" },
{label: "窗口编号", prop: "windowNum"}, { label: "窗口编号", prop: "windowNum" },
{label: "所属部门", prop: "deptId", formatter: this.formatter}, { label: "所属部门", prop: "deptName" },
{label: "所属部门名称", prop: "deptName"}, { label: "办件编码", prop: "goworkCode" },
{label: "办件编码", prop: "goworkCode"}, { label: "办件所属部门", prop: "goworkDepts" },
{label: "办件所属部门", prop: "goworkDepts"}, { label: "事项名称", prop: "matterlName" },
{label: "事项名称", prop: "matterlName"}, {
label: "办理时间",
{label: "办理时间", prop: "goworkTime", formatter: this.formatterDate}, prop: "goworkTime",
formatter: this.formatterDate,
{label: "绩效规则id", prop: "ruleId", formatter: this.formatter}, },
{label: "规则名称", prop: "ruleName"},
{label: "扣分方式", prop: "subMethod",formatter: this.formatter},
{label: "扣分人员", prop: "deductPerson"},
{label: "扣分时间", prop: "deductTime", formatter: this.formatterDate}, { label: "图片凭证", prop: "snapPath" },
{label: "扣分或增加分值", prop: "score", formatter: this.formatter}, { label: "绩效规则", prop: "ruleName" },
{label: "核查人员", prop: "checkPerson"}, { label: "扣分方式", prop: "subMethod", formatter: this.formatter },
{label: "核查时间", prop: "checkTime", formatter: this.formatterDate}, {
label: "扣分时间",
prop: "deductTime",
formatter: this.formatterDate,
},
{label: "核查说明", prop: "checkDesc"}, { label: "扣分人员", prop: "deductPerson" },
{label: "核查结果", prop: "checkResult"}, { label: "扣分分值", prop: "score", formatter: this.formatter },
{label: "处理状态", prop: "checkStatus",formatter: this.formatter}, {
label: "处理状态",
prop: "processStatus",
formatter: this.formatter,
},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{ {
label: "操作", label: "操作",
width: 240, width: 240,
formatter: row => { formatter: (row) => {
return ( return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> <table-buttons
noAdd
noDel
noEdit
reCheck
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
); );
} },
} },
] ],
} },
};
}
}; };
},
};
</script> </script>
<template> <template>
<div class="page"> <div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig"> <LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button <el-button
slot="table-head-left2" slot="table-head-left2"
style="margin-left: 10px" style="margin-left: 10px"
...@@ -9,7 +8,8 @@ ...@@ -9,7 +8,8 @@
size="mini" size="mini"
@click="doExport" @click="doExport"
:disabled="isExport" :disabled="isExport"
>导出</el-button> >导出</el-button
>
</LayoutTable> </LayoutTable>
<!-- 其它绩效核查信息导入对话框 --> <!-- 其它绩效核查信息导入对话框 -->
...@@ -37,10 +37,11 @@ ...@@ -37,10 +37,11 @@
<em>点击上传</em> <em>点击上传</em>
</div> </div>
<div class="el-upload__tip" slot="tip"> <div class="el-upload__tip" slot="tip">
<el-checkbox <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
v-model="upload.updateSupport" <el-link
/>是否更新已经存在的数据 type="primary"
<el-link type="primary" style="font-size: 14px" @click="downloadTemplate" style="font-size: 14px"
@click="downloadTemplate"
>下载模板</el-link >下载模板</el-link
> >
</div> </div>
...@@ -59,17 +60,16 @@ ...@@ -59,17 +60,16 @@
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
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: "CheckOtherRecordList", name: "CheckOtherRecordList",
components: { components: {
drawerShow drawerShow,
},
mixins: [table],
created() {
}, },
mixins: [table],
created() {},
methods: { methods: {
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
...@@ -79,7 +79,11 @@ ...@@ -79,7 +79,11 @@
/** 下载模板操作 */ /** 下载模板操作 */
downloadTemplate() { downloadTemplate() {
this.isExport = true; this.isExport = true;
this.$download("/check/other/record/downloadTemplate", {}, { type: "excel" }) this.$download(
"/check/other/record/downloadTemplate",
{},
{ type: "excel" }
)
.then(() => (this.isExport = false)) .then(() => (this.isExport = false))
.catch((error) => { .catch((error) => {
this.isExport = false; this.isExport = false;
...@@ -105,9 +109,15 @@ ...@@ -105,9 +109,15 @@
/** 导出Excel */ /** 导出Excel */
doExport() { doExport() {
this.isExport = true; this.isExport = true;
this.$download("/check/other/record/exportExcel", { this.$download(
"idList": this.selection, "/check/other/record/exportExcel",
}, { type: "excel" }).then(() => this.isExport = false).catch(error => { {
idList: this.selection,
},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false; this.isExport = false;
this.$message.error(error.message); this.$message.error(error.message);
}); });
...@@ -118,13 +128,14 @@ ...@@ -118,13 +128,14 @@
}, },
/** 重写编辑方法 */ /** 重写编辑方法 */
toEdit(row) { toEdit(row) {
row.view = "核查";
this.$refs.drawerform.edit(row); this.$refs.drawerform.edit(row);
}, },
/** 重写查看方法 */ /** 重写查看方法 */
toView(row) { toView(row) {
row.view = "查看";
this.$refs.drawerform.view(row); this.$refs.drawerform.view(row);
}, },
}, },
data() { data() {
return { return {
...@@ -143,40 +154,107 @@ ...@@ -143,40 +154,107 @@
}, },
isExport: false, isExport: false,
config: { config: {
isshowTabPane:true, isshowTabPane: true,
search: [ search: [
{
name: "status",
type: "select",
label: "全部状态",
fuzzy: false,
},
{
name: "deptId",
type: "select",
label: "全部部门",
fuzzy: false,
},
{
name: "date",
type: "date",
label: "请选择日期",
fuzzy: false,
},
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
fuzzy: false,
},
], ],
columns: [ columns: [
{type: "selection", width: 60}, { type: "selection", width: 60 },
{type: "index",label: "序号",width: 50}, { type: "index", label: "序号", width: 50 },
{ label: "姓名", prop: "staffName" },
{ label: "窗口编号", prop: "windowNum" },
{label: "员工姓名", prop: "staffName"}, { label: "所属部门", prop: "deptName" },
{label: "发生时间", prop: "happenTime", formatter: this.formatterDate}, {
label: "违规类型",
prop: "irregularOtherType",
formatter: this.formatter,
},
{
label: "发生时间",
prop: "happenTime",
formatter: this.formatterDate,
},
{label: "扣分方式", prop: "subMethod",formatter: this.formatter}, { label: "评分标准", prop: "ruleDesc" },
{label: "扣分时间", prop: "deductTime", formatter: this.formatterDate}, // {
// label: "持续时间,秒",
// prop: "duration",
// formatter: this.formatter,
// },
{label: "扣分或增加分值", prop: "score", formatter: this.formatter}, // { label: "绩效规则id", prop: "ruleId", formatter: this.formatter },
{ label: "图片凭证", prop: "snapPath" },
{ label: "绩效规则", prop: "ruleName" },
{ label: "扣分方式", prop: "subMethod", formatter: this.formatter },
{
label: "扣分时间",
prop: "deductTime",
formatter: this.formatterDate,
},
{label: "核查时间", prop: "checkTime", formatter: this.formatterDate}, { label: "扣分人员", prop: "deductPerson" },
{label: "处理状态", prop: "checkStatus",formatter: this.formatter}, { label: "扣分分值", prop: "score", formatter: this.formatter },
{
label: "处理状态",
prop: "processStatus",
formatter: this.formatter,
},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{ {
label: "操作", label: "操作",
width: 240, width: 240,
formatter: row => { formatter: (row) => {
return ( return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> <table-buttons
noAdd
noDel
noEdit
reCheck
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
); );
} },
} },
] ],
} },
};
}
}; };
},
};
</script> </script>
<template> <template>
<div class="page"> <div class="page">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig"> <LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
<el-button <el-button
slot="table-head-left2" slot="table-head-left2"
style="margin-left: 10px" style="margin-left: 10px"
...@@ -9,7 +8,8 @@ ...@@ -9,7 +8,8 @@
size="mini" size="mini"
@click="doExport" @click="doExport"
:disabled="isExport" :disabled="isExport"
>导出</el-button> >导出</el-button
>
</LayoutTable> </LayoutTable>
<!-- 评价差评绩效核查信息导入对话框 --> <!-- 评价差评绩效核查信息导入对话框 -->
...@@ -37,10 +37,11 @@ ...@@ -37,10 +37,11 @@
<em>点击上传</em> <em>点击上传</em>
</div> </div>
<div class="el-upload__tip" slot="tip"> <div class="el-upload__tip" slot="tip">
<el-checkbox <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
v-model="upload.updateSupport" <el-link
/>是否更新已经存在的数据 type="primary"
<el-link type="primary" style="font-size: 14px" @click="downloadTemplate" style="font-size: 14px"
@click="downloadTemplate"
>下载模板</el-link >下载模板</el-link
> >
</div> </div>
...@@ -59,17 +60,16 @@ ...@@ -59,17 +60,16 @@
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
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: "CheckReviewRecordList", name: "CheckReviewRecordList",
components: { components: {
drawerShow drawerShow,
},
mixins: [table],
created() {
}, },
mixins: [table],
created() {},
methods: { methods: {
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
...@@ -79,7 +79,11 @@ ...@@ -79,7 +79,11 @@
/** 下载模板操作 */ /** 下载模板操作 */
downloadTemplate() { downloadTemplate() {
this.isExport = true; this.isExport = true;
this.$download("/check/review/record/downloadTemplate", {}, { type: "excel" }) this.$download(
"/check/review/record/downloadTemplate",
{},
{ type: "excel" }
)
.then(() => (this.isExport = false)) .then(() => (this.isExport = false))
.catch((error) => { .catch((error) => {
this.isExport = false; this.isExport = false;
...@@ -105,9 +109,15 @@ ...@@ -105,9 +109,15 @@
/** 导出Excel */ /** 导出Excel */
doExport() { doExport() {
this.isExport = true; this.isExport = true;
this.$download("/check/review/record/exportExcel", { this.$download(
"idList": this.selection, "/check/review/record/exportExcel",
}, { type: "excel" }).then(() => this.isExport = false).catch(error => { {
idList: this.selection,
},
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false; this.isExport = false;
this.$message.error(error.message); this.$message.error(error.message);
}); });
...@@ -118,13 +128,14 @@ ...@@ -118,13 +128,14 @@
}, },
/** 重写编辑方法 */ /** 重写编辑方法 */
toEdit(row) { toEdit(row) {
row.view = "核查";
this.$refs.drawerform.edit(row); this.$refs.drawerform.edit(row);
}, },
/** 重写查看方法 */ /** 重写查看方法 */
toView(row) { toView(row) {
row.view = "查看";
this.$refs.drawerform.view(row); this.$refs.drawerform.view(row);
}, },
}, },
data() { data() {
return { return {
...@@ -143,66 +154,108 @@ ...@@ -143,66 +154,108 @@
}, },
isExport: false, isExport: false,
config: { config: {
isshowTabPane:true, isshowTabPane: true,
search: [ search: [
{
name: "status",
type: "select",
label: "全部状态",
fuzzy: false,
},
{
name: "deptId",
type: "select",
label: "全部部门",
fuzzy: false,
},
{
name: "source",
type: "select",
label: "全部来源",
fuzzy: false,
},
{
name: "date",
type: "date",
label: "请选择日期",
fuzzy: false,
},
{
name: "staffName",
type: "text",
label: "请输入员工姓名搜索",
fuzzy: false,
},
], ],
columns: [ columns: [
{type: "selection", width: 60}, { type: "selection", width: 50 },
{type: "index",label: "序号",width: 50}, { type: "index", label: "序号", width: 50 },
{label: "员工姓名", prop: "staffName"},
{label: "工号", prop: "workNum"}, { label: "姓名", prop: "staffName" },
{label: "窗口编号", prop: "windowNum"}, { label: "窗口编号", prop: "windowNum" },
{label: "所属部门", prop: "deptId", formatter: this.formatter}, { label: "所属部门", prop: "deptName" },
{label: "所属部门名称", prop: "deptName"}, {
label: "评价结果",
{label: "评价结果", prop: "reviewResult",formatter: this.formatter}, prop: "reviewResult",
formatter: this.formatter,
{label: "评价时间", prop: "reviewTime", formatter: this.formatterDate}, },
{label: "评价来源", prop: "reviewSource"},
{label: "评价设备", prop: "reviewDevice"},
{label: "绩效规则id", prop: "ruleId", formatter: this.formatter},
{label: "规则名称", prop: "ruleName"}, { label: "评价来源", prop: "reviewSource" },
{label: "扣分方式", prop: "subMethod",formatter: this.formatter}, { label: "评价设备", prop: "reviewDevice" },
{label: "扣分人员", prop: "deductPerson"}, {
label: "评价时间",
prop: "reviewTime",
formatter: this.formatterDate,
},
{label: "扣分时间", prop: "deductTime", formatter: this.formatterDate}, { label: "图片凭证", prop: "snapPath" },
{label: "扣分或增加分值", prop: "score", formatter: this.formatter}, { label: "绩效规则", prop: "ruleNme" },
{label: "核查人员", prop: "checkPerson"}, { label: "扣分方式", prop: "subMethod", formatter: this.formatter },
{label: "核查时间", prop: "checkTime", formatter: this.formatterDate}, {
label: "扣分时间",
prop: "deductTime",
formatter: this.formatterDate,
},
{label: "核查说明", prop: "checkDesc"}, { label: "扣分人员", prop: "deductPerson" },
{label: "核查结果", prop: "checkResult"}, { label: "扣分分值", prop: "score", formatter: this.formatter },
{label: "处理状态", prop: "checkStatus",formatter: this.formatter}, {
label: "处理状态",
prop: "processStatus",
formatter: this.formatter,
},
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{ {
label: "操作", label: "操作",
width: 240, width: 200,
formatter: row => { formatter: (row) => {
return ( return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> <table-buttons
noAdd
noDel
noEdit
reCheck
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
); );
} },
} },
] ],
} },
};
}
}; };
},
};
</script> </script>
...@@ -6,7 +6,10 @@ ...@@ -6,7 +6,10 @@
<el-tab-pane label="设计问卷" name="1"> <el-tab-pane label="设计问卷" name="1">
<fc-designer style="height: 79vh;" ref="designer"> <fc-designer style="height: 79vh;" ref="designer">
<template slot="handle"> <template slot="handle">
<ElButton icon="el-icon-upload" type="success" size="small" @click="showDrawer" round>移动端预览 <ElButton style="margin-left: 10px;" icon="el-icon-upload" type="primary" size="small"
@click="issueBtn" round>问卷发布
</ElButton>
<ElButton icon="el-icon-view" type="success" size="small" @click="showDrawer" round>H5预览
</ElButton> </ElButton>
</template> </template>
</fc-designer> </fc-designer>
...@@ -31,6 +34,30 @@ ...@@ -31,6 +34,30 @@
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
<el-dialog title="问卷发布" :visible.sync="issueDialog" width="30%" top="25vh">
<el-form :model="issueForm">
<el-form-item label="问卷封面:" label-width="125px">
<div style="display: flex;align-items: center;">
<img style="width:80px; height: 50px; margin-right: 10px;cursor: pointer;"
v-for="i in issueForm.cover" :src="i" alt="">
</div>
<!-- <el-input v-model="issueForm.cover" autocomplete="off"></el-input> -->
</el-form-item>
<el-form-item label="反馈期限:" label-width="125px">
<el-date-picker v-model="issueForm.time" type="datetimerange" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="邀请人员:" label-width="125px">
<el-button type="success" size="small">选择人员</el-button>
</el-form-item>
<div style="text-align: center;">
<el-button size="small" @click="issueDialog = false">取消</el-button>
<el-button type="primary" size="small" @click="issueFormBtn">发布</el-button>
</div>
</el-form>
</el-dialog>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
...@@ -43,8 +70,15 @@ export default { ...@@ -43,8 +70,15 @@ export default {
return { return {
tabs: '1', tabs: '1',
drawer: 0, drawer: 0,
Frule: '', Frule: [],
Fopthion: '', Fopthion: '',
issueDialog: false,
issueForm: {
cover: [
'http://sy.scsmile.cn/YX-JXgl/v1.0/HT/images/%E6%96%B0%E5%A2%9E%E5%8F%8D%E9%A6%88_%E7%AC%AC3%E6%AD%A5_/u26101.svg',
'http://sy.scsmile.cn/YX-JXgl/v1.0/HT/images/%E6%96%B0%E5%A2%9E%E5%8F%8D%E9%A6%88_%E7%AC%AC3%E6%AD%A5_/u26102.svg'
]
},
} }
}, },
mounted() { mounted() {
...@@ -75,11 +109,31 @@ export default { ...@@ -75,11 +109,31 @@ export default {
this.$refs.designer.removeMenuItem("timePicker") this.$refs.designer.removeMenuItem("timePicker")
this.$refs.designer.removeMenuItem("switch") this.$refs.designer.removeMenuItem("switch")
this.$refs.designer.removeMenuItem("tree") this.$refs.designer.removeMenuItem("tree")
this.$refs.designer.removeMenuItem("inputNumber")
this.$refs.designer.removeMenuItem("select")
this.$refs.designer.removeMenuItem("fc-editor")
this.$refs.designer.removeMenuItem("el-button")
this.$refs.designer.removeMenuItem("el-divider")
//配置组件生成规则---直接配置显示在页面上 //配置组件生成规则---直接配置显示在页面上
// const rule = [{ "type": "input", "field": "int", "title": "输入框", "info": "", "_fc_drag_tag": "input", "hidden": false, "display": true }] // const rule = [{ "type": "input", "field": "int", "title": "输入框", "info": "", "_fc_drag_tag": "input", "hidden": false, "display": true }]
// this.$refs.designer.setRule(rule) // this.$refs.designer.setRule(rule)
}, },
methods: { methods: {
//问卷发布
issueBtn() {
this.Frule = formCreate.parseJson(this.getFormJson())
this.Fopthion = formCreate.parseJson(this.getFormOption())
console.log(this.Frule)
//判断是否配置了表单
if (this.Frule.length > 0) {
this.issueDialog = true
} else {
this.$message({
message: '请配置表单后发布',
type: 'warning'
});
}
},
//预览生成按钮的输出 //预览生成按钮的输出
onSubmit(formData) { onSubmit(formData) {
console.log(formData) console.log(formData)
...@@ -101,12 +155,20 @@ export default { ...@@ -101,12 +155,20 @@ export default {
const FcDesignerOptions = this.$refs.designer.getOption(); const FcDesignerOptions = this.$refs.designer.getOption();
console.log(FcDesignerOptions) console.log(FcDesignerOptions)
return JSON.stringify(FcDesignerOptions) return JSON.stringify(FcDesignerOptions)
},
issueFormBtn() {
console.log(this.issueForm)
} }
} }
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
/deep/._fc-m-tools {
flex-direction: row-reverse;
justify-content: flex-start;
}
/deep/._fc-l-title { /deep/._fc-l-title {
text-align: center; text-align: center;
margin-bottom: 10px; margin-bottom: 10px;
......
...@@ -18,22 +18,65 @@ ...@@ -18,22 +18,65 @@
</div> </div>
<div class="content"> <div class="content">
<div class="cLeft"></div> <div class="cLeft">
<div class="title">
全部数据(220)
<span style="font-weight: 400; font-size: 16px;margin-left: 20px;">已反馈(1)</span>
<span style="font-weight: 400; font-size: 16px;margin-left: 20px;">未反馈(219)</span>
</div>
<el-button class="m15" type="primary" size="small">导出数据</el-button>
<div class="lBox m15">
<div class="treeS">
<el-tree :data="treeData" :props="defaultProps" @node-click="treeSub"></el-tree>
</div>
<el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55">
</el-table-column>
<el-table-column label="日期" width="120">
<template slot-scope="scope">{{ scope.row.date }}</template>
</el-table-column>
<el-table-column prop="name" label="姓名" width="120">
</el-table-column>
<el-table-column prop="address" label="地址" show-overflow-tooltip>
</el-table-column>
</el-table>
</div>
</div>
<div class="cRight"> <div class="cRight">
<div class="title"> <div class="title">
题型数据分析 题型数据分析
</div> </div>
<div class="box"> <div class="scroll">
<div class="box" v-for="i in 2">
<div style="display: flex;align-items: center;"> <div style="display: flex;align-items: center;">
<el-tag type="primary" effect="plain">单项选择</el-tag> <el-tag type="primary" effect="plain">单项选择</el-tag>
<div style="margin-left: 10px;">1.你是男性还是女性</div> <div style="margin-left: 10px;">1.你是男性还是女性</div>
</div> </div>
<div> <div class="m15"
<el-progress type="circle" :percentage="45"></el-progress> style="display: flex;align-items: center;justify-content: space-around; width: 40%;">
<el-progress type="circle" :percentage="55"></el-progress> <div style="text-align: center;">
<el-progress type="circle" :percentage="45" show-text width="75"></el-progress>
<div></div>
</div>
<div style="text-align: center;">
<el-progress type="circle" :percentage="45" show-text width="75"></el-progress>
<div></div>
</div>
</div> </div>
</div> </div>
<div class="box m15" v-for="i in 4">
<div style="display: flex;align-items: center;">
<el-tag type="primary" effect="plain">单项选择</el-tag>
<div style="margin-left: 10px;">1.你是男性还是女性</div>
</div>
<el-button class="m15" type="primary" size="small"
@click="drawerAnswer = 1">查看详情答案</el-button>
</div>
</div>
</div> </div>
</div> </div>
...@@ -51,6 +94,22 @@ ...@@ -51,6 +94,22 @@
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
<el-drawer :visible.sync="drawerAnswer" title="反馈详情" size="40%">
<div class="answerBox">
<div class="aTop">
问题:你的具体想法?
</div>
<el-table class="m15" :data="tableData" border style="width: 100%;">
<el-table-column prop="date" label="日期" width="180">
</el-table-column>
<el-table-column prop="name" label="姓名" width="180">
</el-table-column>
<el-table-column prop="address" label="地址">
</el-table-column>
</el-table>
</div>
</el-drawer>
</div> </div>
</template> </template>
...@@ -63,6 +122,63 @@ export default { ...@@ -63,6 +122,63 @@ export default {
drawer: false, drawer: false,
Frule: '', Frule: '',
Fopthion: '', Fopthion: '',
drawerAnswer: false,
tableData: [{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}],
treeData: [{
label: '一级 1',
children: [{
label: '二级 1-1',
children: [{
label: '三级 1-1-1'
}]
}]
}, {
label: '一级 2',
children: [{
label: '二级 2-1',
children: [{
label: '三级 2-1-1'
}]
}, {
label: '二级 2-2',
children: [{
label: '三级 2-2-1'
}]
}]
}, {
label: '一级 3',
children: [{
label: '二级 3-1',
children: [{
label: '三级 3-1-1'
}]
}, {
label: '二级 3-2',
children: [{
label: '三级 3-2-1'
}]
}]
}],
defaultProps: {
children: 'children',
label: 'label'
}
} }
}, },
mounted() { mounted() {
...@@ -158,11 +274,32 @@ export default { ...@@ -158,11 +274,32 @@ export default {
"resetBtn": false "resetBtn": false
} }
},
methods: {
treeSub(data) {
console.log(data)
},
handleSelectionChange(val) {
this.multipleSelection = val;
}
} }
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.treeS {
width: 20%;
margin-left: 10px;
}
/deep/.el-tree {
background-color: transparent;
}
.m15 {
margin-top: 15px;
}
.font { .font {
font-size: 16px; font-size: 16px;
line-height: 1.5; line-height: 1.5;
...@@ -240,6 +377,21 @@ export default { ...@@ -240,6 +377,21 @@ export default {
} }
} }
.answerBox {
padding: 0 20px;
box-sizing: border-box;
.aTop {
border-left: 4px solid #3377ff;
background-color: #eff4ff;
color: #3377ff;
line-height: 70px;
padding-left: 20px;
box-sizing: border-box;
font-weight: bold;
}
}
.content { .content {
display: flex; display: flex;
align-items: center; align-items: center;
...@@ -252,6 +404,15 @@ export default { ...@@ -252,6 +404,15 @@ export default {
height: 100%; height: 100%;
border-radius: 4px; border-radius: 4px;
width: 49%; width: 49%;
box-sizing: border-box;
padding: 20px;
.lBox {
display: flex;
// align-items: center
justify-content: space-between;
}
} }
.cRight { .cRight {
...@@ -261,6 +422,32 @@ export default { ...@@ -261,6 +422,32 @@ export default {
width: 49%; width: 49%;
box-sizing: border-box; box-sizing: border-box;
padding: 20px; padding: 20px;
.scroll {
height: 93%;
overflow-y: auto;
overflow-x: hidden;
// border: 1px solid;
}
/* 侧边滚动条 */
.scroll::-webkit-scrollbar {
width: 3px;
}
/* 滚动条上的滚动滑块 */
.scroll::-webkit-scrollbar-thumb {
background: #CCCCCC;
border-radius: 4px;
}
/* 滚动条轨道 */
.scroll::-webkit-scrollbar-track {
background: #EEEEEE;
border-radius: 4px;
}
} }
.title { .title {
......
...@@ -233,7 +233,7 @@ export default { ...@@ -233,7 +233,7 @@ export default {
{ {
label: "处理状态", label: "处理状态",
prop: "processStatus", prop: "checkStatus",
formatter: this.formatter, formatter: this.formatter,
}, },
......
...@@ -82,19 +82,6 @@ ...@@ -82,19 +82,6 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="22">
<el-form-item label="异常时间:">
<el-date-picker
v-model="form.errorTime"
type="date"
placeholder="选择日期"
style="width: 100%;"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="办件时间:"> <el-form-item label="办件时间:">
......
...@@ -27,4 +27,11 @@ public interface RoleUserService extends ICRUDService<RoleUserEntity,Long> { ...@@ -27,4 +27,11 @@ public interface RoleUserService extends ICRUDService<RoleUserEntity,Long> {
void doDistributionUser(RoleUserQuery query); void doDistributionUser(RoleUserQuery query);
void doDistributionRole(RoleUserQuery query); void doDistributionRole(RoleUserQuery query);
/**
* 给用户分配角色
* @param query
*/
void assignRoleToUser(RoleUserQuery query);
} }
\ No newline at end of file
...@@ -70,6 +70,26 @@ public class RoleUserServiceImpl extends AbstractCRUDServiceImpl<RoleUserDao,Rol ...@@ -70,6 +70,26 @@ public class RoleUserServiceImpl extends AbstractCRUDServiceImpl<RoleUserDao,Rol
this.dao.insertBatch(list); this.dao.insertBatch(list);
} }
@Override
public void assignRoleToUser(RoleUserQuery query) {
//删除当前用户所有关联角色
Long userId = query.getUserId();
Map<String, Object> condition = new HashMap<>(1);
condition.put("userId", userId);
dao.delete(condition);
//新增用户角色
List<Long> roleIdList = query.getRoleIdList();
List<RoleUserEntity> list = new ArrayList<>();
for (Long roleId : roleIdList) {
RoleUserEntity rolseUser = new RoleUserEntity();
rolseUser.setRoleId(roleId);
rolseUser.setUserId(userId);
list.add(rolseUser);
}
this.save(list);
}
} }
\ No newline at end of file
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
package com.mortals.xhx.base.system.task.service.impl; package com.mortals.xhx.base.system.task.service.impl;
import cn.hutool.core.net.NetUtil;
import com.mortals.framework.ap.GlobalSysInfo; import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.common.code.ExcuteStatus; import com.mortals.framework.common.code.ExcuteStatus;
import com.mortals.framework.common.code.TaskExcuteStrategy; import com.mortals.framework.common.code.TaskExcuteStrategy;
...@@ -148,7 +149,8 @@ public class TaskServiceImpl extends AbstractCRUDServiceImpl<TaskDao, TaskEntity ...@@ -148,7 +149,8 @@ public class TaskServiceImpl extends AbstractCRUDServiceImpl<TaskDao, TaskEntity
@Override @Override
public void start() throws AppException { public void start() throws AppException {
final String localIp = SystemUtil.getLocalHostIp(); // final String localIp = SystemUtil.getLocalHostIp();
final String localIp = NetUtil.getLocalhostStr();
log.info("任务执行线程启动...-->" + localIp); log.info("任务执行线程启动...-->" + localIp);
thread = new Thread(() -> { thread = new Thread(() -> {
// 将本机上次执行而未完成的任务状态变更 // 将本机上次执行而未完成的任务状态变更
......
...@@ -48,7 +48,7 @@ public class UserEntity extends UserVo implements IUser { ...@@ -48,7 +48,7 @@ public class UserEntity extends UserVo implements IUser {
*/ */
private String qq; private String qq;
/** /**
* 用户类型(0.系统用户,1.普通用户,2.工作人员) * 用户类型(0.系统用户,1.普通用户,2.工作人员,3.普通员工)
*/ */
private Integer userType; private Integer userType;
...@@ -232,7 +232,7 @@ public class UserEntity extends UserVo implements IUser { ...@@ -232,7 +232,7 @@ public class UserEntity extends UserVo implements IUser {
this.qq = qq; this.qq = qq;
} }
/** /**
* 获取 用户类型(0.系统用户,1.普通用户,2.工作人员) * 获取 用户类型(0.系统用户,1.普通用户,2.工作人员,3.普通员工)
* @return Integer * @return Integer
*/ */
public Integer getUserType(){ public Integer getUserType(){
......
...@@ -6,6 +6,7 @@ import com.mortals.framework.ap.CookieService; ...@@ -6,6 +6,7 @@ import com.mortals.framework.ap.CookieService;
import com.mortals.framework.ap.GlobalSysInfo; import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.ap.SysConstains; import com.mortals.framework.ap.SysConstains;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.IAuthTokenService; import com.mortals.framework.service.IAuthTokenService;
import com.mortals.framework.service.ICacheService; import com.mortals.framework.service.ICacheService;
import com.mortals.framework.service.IUser; import com.mortals.framework.service.IUser;
...@@ -32,6 +33,8 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -32,6 +33,8 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
...@@ -46,34 +49,12 @@ public class ApiLoginController extends BaseJsonBodyController { ...@@ -46,34 +49,12 @@ public class ApiLoginController extends BaseJsonBodyController {
@Autowired @Autowired
private UserService userService; private UserService userService;
@Autowired @Autowired
private ValidCodeService validCodeService;
@Autowired
private ResourceService resourceService;
@Autowired
private MenuService menuService;
// @Autowired
// private ITokenService tokenService;
@Autowired
private ICacheService cacheService;
@Autowired
private IAuthTokenService authTokenService; private IAuthTokenService authTokenService;
@RequestMapping("login") @RequestMapping("login")
public String login(@RequestBody LoginForm loginForm) throws Exception { public String login(@RequestBody LoginForm loginForm) throws Exception {
/*
JSONObject ret = new JSONObject();
String loginName = loginForm.getLoginName();
String password = loginForm.getPassword();
UserPdu userPdu = new UserPdu();
userPdu.setLoginName(loginName);
userPdu.setPassword(password);
String resp = userFeign.portalLogin(userPdu);
return resp;
*/
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
String loginName = loginForm.getLoginName(); String loginName = loginForm.getLoginName();
String password = loginForm.getPassword(); String password = loginForm.getPassword();
...@@ -88,42 +69,35 @@ public class ApiLoginController extends BaseJsonBodyController { ...@@ -88,42 +69,35 @@ public class ApiLoginController extends BaseJsonBodyController {
loginForm.validate(); loginForm.validate();
userEntity = userService.doLogin(loginName, password, ip); userEntity = userService.doLogin(loginName, password, ip);
userEntity.setLastLoginAddress(ip); userEntity.setLastLoginAddress(ip);
recordSysLog(request, userEntity, "H5用户登录系统成功!");
recordSysLog(request, userEntity, "用户登录系统成功!");
// 返回拥有的菜单数据
Set<String> urls = resourceService.findUrlSetByUserId(userEntity.getId());
List<MenuEntity> outlookBarList = menuService.findTreeMenu(userEntity, urls);
String currUserName = userEntity.getRealName(); String currUserName = userEntity.getRealName();
if (currUserName == null || currUserName.trim().length() == 0) { if (currUserName == null || currUserName.trim().length() == 0) {
currUserName = "管理员"; currUserName = "管理员";
} }
JSONObject data = new JSONObject(); JSONObject data = new JSONObject();
data.put("currUserName", currUserName); data.put("currUserName", currUserName);
data.put("barList", outlookBarList);
data.put("id", userEntity.getId()); data.put("id", userEntity.getId());
data.put("userType", userEntity.getUserType()); data.put("userType", userEntity.getUserType());
HashSet<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
if (ObjectUtils.isEmpty(userEntity.getUserType()) || !set.contains(userEntity.getUserType())) {
throw new AppException("当前用户不支持H5登录!");
}
userEntity.setLoginTime(System.currentTimeMillis()); userEntity.setLoginTime(System.currentTimeMillis());
userEntity.setToken(IdUtil.fastSimpleUUID()); userEntity.setToken(IdUtil.fastSimpleUUID());
userEntity.setExpireTime(DateUtils.addCurrDate(7).getTime()); userEntity.setExpireTime(DateUtils.addCurrDate(7).getTime());
userEntity.setMenuUrl(generateMenuUrlCode(urls));
String token = authTokenService.createToken(userEntity); String token = authTokenService.createToken(userEntity);
data.put("token", token); data.put("token", token);
//设置token 和过期时间
//data.put("expiresTime", DateUtils.addCurrDate(7).getTime());
generateMenuUrlCode(urls);
//this.generateBlackCookie(request, response, loginName, urls);
ret.put(KEY_RESULT_DATA, data); ret.put(KEY_RESULT_DATA, data);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, "用户登录系统成功!"); ret.put(KEY_RESULT_MSG, "用户登录系统成功!");
ret.put("resources", urls);
return ret.toJSONString(); return ret.toJSONString();
} catch (Exception e) { } catch (Exception e) {
log.error("login error ", e); log.error("h5 login error ", e);
if (userEntity == null) {
userEntity = new UserEntity();
userEntity.setLoginName(loginName);
}
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE); ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, super.convertException(e)); ret.put(KEY_RESULT_MSG, super.convertException(e));
return ret.toJSONString(); return ret.toJSONString();
...@@ -136,78 +110,6 @@ public class ApiLoginController extends BaseJsonBodyController { ...@@ -136,78 +110,6 @@ public class ApiLoginController extends BaseJsonBodyController {
super.removeCurrUser(request); super.removeCurrUser(request);
} }
@RequestMapping("index")
public String index() throws Exception {
JSONObject ret = new JSONObject();
IUser user = this.getCurUser();
if (user == null) {
return JSONObject.toJSONString(Rest.fail(ERROR_TOKEN_EXPIRED, ERROR_TOKEN_EXPIRED_CONTENT));
}
Set<String> urls = resourceService.findUrlSetByUserId(user.getId());
List<MenuEntity> outlookBarList = menuService.findTreeMenu(user, urls);
String currUserName = user.getRealName();
if (currUserName == null || currUserName.trim().length() == 0) {
currUserName = "管理员";
}
JSONObject data = new JSONObject();
String token = authTokenService.getToken(request);
data.put("token", token);
data.put("currUserName", currUserName);
data.put("barList", outlookBarList);
data.put("id", user.getId());
data.put("userType", user.getUserType());
ret.put(KEY_RESULT_DATA, data);
//this.generateBlackCookie(request, response, user.getLoginName(), urls);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, "用户登录系统成功!");
ret.put("resources", urls);
return ret.toJSONString();
}
private void generateBlackCookie(HttpServletRequest request, HttpServletResponse response, String loginName, Set<String> urls) {
try {
String cacheKey = RedisKey.KEY_MENU_CACHE + loginName;
String securityKey = GlobalSysInfo.getPropertyValue(SysConstains.PROP_COOKIE_SECURITY_KEY);
//应为Cookie会超长,所以改为仅存储key将值放入redis
//CookieService.setCookieForAuth(request, response, securityKey, null);
StringBuilder sb = new StringBuilder();
if (urls != null && urls.size() > 0) {
for (String url : urls) {
int index = url.hashCode() & (Integer.MAX_VALUE - 1);
sb.append(index).append(",");
}
}
String menuUrl = sb.toString();
menuUrl = AESUtil.encrypt(menuUrl, securityKey);
cacheService.set(cacheKey, menuUrl, 604800);
HttpUtil.setCookieValue(request, response, SysConstains.COOKIE_MENU, cacheKey, -1);
} catch (Throwable e) {
}
}
private String generateMenuUrlCode(Set<String> urls) {
try {
String securityKey = GlobalSysInfo.getPropertyValue(SysConstains.PROP_COOKIE_SECURITY_KEY);
StringBuilder sb = new StringBuilder();
if (urls != null && urls.size() > 0) {
for (String url : urls) {
int index = url.hashCode() & (Integer.MAX_VALUE - 1);
sb.append(index).append(",");
}
}
String menuUrl = sb.toString();
return AESUtil.encrypt(menuUrl, securityKey);
} catch (Throwable e) {
log.error("编码异常", e);
return null;
}
}
@RequestMapping("parseToken") @RequestMapping("parseToken")
public IUser parseToken() throws Exception { public IUser parseToken() throws Exception {
......
...@@ -55,7 +55,7 @@ public class AppealApiController extends BaseJsonBodyController { ...@@ -55,7 +55,7 @@ public class AppealApiController extends BaseJsonBodyController {
/** /**
* 个人申诉绩效统计 * 个人申诉绩效统计
*/ */
@PostMapping(value = "appeal/stat") @PostMapping(value = "stat")
public Rest<AppealStatInfo> appealStat() { public Rest<AppealStatInfo> appealStat() {
String busiDesc = "H5个人申诉绩效统计"; String busiDesc = "H5个人申诉绩效统计";
Rest<AppealStatInfo> rest = Rest.ok(busiDesc + " 【成功】"); Rest<AppealStatInfo> rest = Rest.ok(busiDesc + " 【成功】");
...@@ -72,7 +72,7 @@ public class AppealApiController extends BaseJsonBodyController { ...@@ -72,7 +72,7 @@ public class AppealApiController extends BaseJsonBodyController {
/** /**
* 申诉列表 * 申诉列表
*/ */
@PostMapping(value = "appeal/list") @PostMapping(value = "list")
public Rest<List<PerformAttendAppealEntity>> performList(@RequestBody AppealReq appealReq) { public Rest<List<PerformAttendAppealEntity>> performList(@RequestBody AppealReq appealReq) {
String busiDesc = "个人申诉列表"; String busiDesc = "个人申诉列表";
Rest<List<PerformAttendAppealEntity>> rest = Rest.ok(busiDesc + " 【成功】"); Rest<List<PerformAttendAppealEntity>> rest = Rest.ok(busiDesc + " 【成功】");
...@@ -95,8 +95,8 @@ public class AppealApiController extends BaseJsonBodyController { ...@@ -95,8 +95,8 @@ public class AppealApiController extends BaseJsonBodyController {
/** /**
* 申诉详细 * 申诉详细
*/ */
@PostMapping(value = "appeal/detail") @PostMapping(value = "info")
public Rest<PerformAttendAppealEntity> performDetail(@RequestBody AppealReq appealReq) { public Rest<PerformAttendAppealEntity> performInfo(@RequestBody AppealReq appealReq) {
String busiDesc = "个人申诉详细"; String busiDesc = "个人申诉详细";
Rest<PerformAttendAppealEntity> rest = Rest.ok(busiDesc + " 【成功】"); Rest<PerformAttendAppealEntity> rest = Rest.ok(busiDesc + " 【成功】");
try { try {
...@@ -116,7 +116,7 @@ public class AppealApiController extends BaseJsonBodyController { ...@@ -116,7 +116,7 @@ public class AppealApiController extends BaseJsonBodyController {
/** /**
* 申诉新增 * 申诉新增
*/ */
@PostMapping(value = "appeal/save") @PostMapping(value = "save")
public Rest<String> appealSave(@RequestBody PerformAttendAppealEntity appealEntity) { public Rest<String> appealSave(@RequestBody PerformAttendAppealEntity appealEntity) {
String busiDesc = "个人申诉新增"; String busiDesc = "个人申诉新增";
Rest<String> rest = Rest.ok(busiDesc + " 【成功】"); Rest<String> rest = Rest.ok(busiDesc + " 【成功】");
......
...@@ -48,7 +48,7 @@ public class FeedbackApiController extends BaseJsonBodyController { ...@@ -48,7 +48,7 @@ public class FeedbackApiController extends BaseJsonBodyController {
/** /**
* 反馈列表 * 反馈列表
*/ */
@PostMapping(value = "feedback/list") @PostMapping(value = "list")
public Rest<List<PerformAttendAppealEntity>> feedbackList(@RequestBody FeedbackReq feedbackReq) { public Rest<List<PerformAttendAppealEntity>> feedbackList(@RequestBody FeedbackReq feedbackReq) {
String busiDesc = "个人反馈列表"; String busiDesc = "个人反馈列表";
Rest<List<PerformAttendAppealEntity>> rest = Rest.ok(busiDesc + " 【成功】"); Rest<List<PerformAttendAppealEntity>> rest = Rest.ok(busiDesc + " 【成功】");
...@@ -71,7 +71,7 @@ public class FeedbackApiController extends BaseJsonBodyController { ...@@ -71,7 +71,7 @@ public class FeedbackApiController extends BaseJsonBodyController {
/** /**
* 反馈详细 * 反馈详细
*/ */
@PostMapping(value = "feedback/question") @PostMapping(value = "question")
public Rest<PerformAttendAppealEntity> performDetail(@RequestBody AppealReq appealReq) { public Rest<PerformAttendAppealEntity> performDetail(@RequestBody AppealReq appealReq) {
String busiDesc = "个人申诉详细"; String busiDesc = "个人申诉详细";
Rest<PerformAttendAppealEntity> rest = Rest.ok(busiDesc + " 【成功】"); Rest<PerformAttendAppealEntity> rest = Rest.ok(busiDesc + " 【成功】");
...@@ -92,9 +92,9 @@ public class FeedbackApiController extends BaseJsonBodyController { ...@@ -92,9 +92,9 @@ public class FeedbackApiController extends BaseJsonBodyController {
/** /**
* 申诉新增 * 申诉新增
*/ */
@PostMapping(value = "appeal/save") @PostMapping(value = "save")
public Rest<String> appealSave(@RequestBody PerformAttendAppealEntity appealEntity) { public Rest<String> feedbackSave(@RequestBody PerformAttendAppealEntity appealEntity) {
String busiDesc = "个人申诉新增"; String busiDesc = "反馈回答";
Rest<String> rest = Rest.ok(busiDesc + " 【成功】"); Rest<String> rest = Rest.ok(busiDesc + " 【成功】");
try { try {
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd"> "mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.user.dao.ibatis.UserDaoImpl"> <mapper namespace="com.mortals.xhx.base.system.user.dao.ibatis.UserDaoImpl">
<!-- 字段和属性映射 --> <!-- 字段和属性映射 -->
<resultMap type="UserEntity" id="UserEntity-Map"> <resultMap type="UserEntity" id="UserEntity-Map">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment