diff --git a/src/views/gh/improvementProposal/ImprovementProposal.api.ts b/src/views/gh/improvementProposal/ImprovementProposal.api.ts
new file mode 100644
index 0000000..33bfb6b
--- /dev/null
+++ b/src/views/gh/improvementProposal/ImprovementProposal.api.ts
@@ -0,0 +1,87 @@
+import {defHttp} from '/@/utils/http/axios';
+import { useMessage } from "/@/hooks/web/useMessage";
+
+const { createConfirm } = useMessage();
+
+enum Api {
+ list = '/improvementproposal/improvementProposal/list',
+ save='/improvementproposal/improvementProposal/add',
+ edit='/improvementproposal/improvementProposal/edit',
+ deleteOne = '/improvementproposal/improvementProposal/delete',
+ deleteBatch = '/improvementproposal/improvementProposal/deleteBatch',
+ importExcel = '/improvementproposal/improvementProposal/importExcel',
+ exportXls = '/improvementproposal/improvementProposal/exportXls',
+ queryDataById = '/improvementproposal/improvementProposal/queryById',
+ improvementDeptScoreList = '/improvementproposal/improvementProposal/queryImprovementDeptScoreByMainId',
+ improvementInstituteVoteList = '/improvementproposal/improvementProposal/queryImprovementInstituteVoteByMainId',
+}
+/**
+ * 导出api
+ * @param params
+ */
+export const getExportUrl = Api.exportXls;
+
+/**
+ * 导入api
+ */
+export const getImportUrl = Api.importExcel;
+
+/**
+ * 查询子表数据
+ * @param params
+ */
+export const queryImprovementDeptScoreListByMainId = (id) => defHttp.get({url: Api.improvementDeptScoreList, params:{ id }});
+/**
+ * 查询子表数据
+ * @param params
+ */
+export const queryImprovementInstituteVoteListByMainId = (id) => defHttp.get({url: Api.improvementInstituteVoteList, params:{ id }});
+
+/**
+ * 列表接口
+ * @param params
+ */
+export const list = (params) =>
+ defHttp.get({url: Api.list, params});
+
+/**
+ * 删除单个
+ */
+export const deleteOne = (params,handleSuccess) => {
+ return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => {
+ handleSuccess();
+ });
+}
+/**
+ * 批量删除
+ * @param params
+ */
+export const batchDelete = (params, handleSuccess) => {
+ createConfirm({
+ iconType: 'warning',
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => {
+ handleSuccess();
+ });
+ }
+ });
+}
+/**
+ * 保存或者更新
+ * @param params
+ */
+export const saveOrUpdate = (params, isUpdate) => {
+ let url = isUpdate ? Api.edit : Api.save;
+ return defHttp.post({url: url, params});
+}
+
+/**
+* 根据id查询数据
+* @param params
+*/
+export const queryDataById = (id) => defHttp.get({url: Api.queryDataById, params:{ id }});
+
diff --git a/src/views/gh/improvementProposal/ImprovementProposal.data.ts b/src/views/gh/improvementProposal/ImprovementProposal.data.ts
new file mode 100644
index 0000000..bc60e6b
--- /dev/null
+++ b/src/views/gh/improvementProposal/ImprovementProposal.data.ts
@@ -0,0 +1,318 @@
+import {BasicColumn} from '/@/components/Table';
+import {FormSchema} from '/@/components/Table';
+import { rules} from '/@/utils/helper/validator';
+import { render } from '/@/utils/common/renderUtils';
+import {JVxeTypes,JVxeColumn} from '/@/components/jeecg/JVxeTable/types'
+import { getWeekMonthQuarterYear } from '/@/utils';
+//列表数据
+export const columns: BasicColumn[] = [
+ {
+ title: '提案编号',
+ align:"center",
+ dataIndex: 'proposalNo'
+ },
+ {
+ title: '提案名称',
+ align:"center",
+ dataIndex: 'proposalName'
+ },
+ {
+ title: '提出日期',
+ align:"center",
+ dataIndex: 'proposalDate',
+ customRender:({text}) =>{
+ text = !text ? "" : (text.length > 10 ? text.substr(0,10) : text);
+ return text;
+ },
+ },
+ {
+ title: '提案部门ID',
+ align:"center",
+ dataIndex: 'proposalDeptId'
+ },
+ {
+ title: '提案部门名称',
+ align:"center",
+ dataIndex: 'proposalDeptName'
+ },
+ {
+ title: '申请人ID',
+ align:"center",
+ dataIndex: 'applicantId'
+ },
+ {
+ title: '申请人姓名',
+ align:"center",
+ dataIndex: 'applicantName'
+ },
+ {
+ title: '团队名称',
+ align:"center",
+ dataIndex: 'teamName'
+ },
+ {
+ title: '提案类别',
+ align:"center",
+ dataIndex: 'proposalCategory'
+ },
+ {
+ title: '问题描述',
+ align:"center",
+ dataIndex: 'problemDesc'
+ },
+ {
+ title: '改善方法及措施',
+ align:"center",
+ dataIndex: 'improvementMethod'
+ },
+ {
+ title: '最终奖项',
+ align:"center",
+ dataIndex: 'finalAward'
+ },
+ {
+ title: '业务展示状态',
+ align:"center",
+ dataIndex: 'bpmStatus'
+ },
+];
+
+//子表表格配置
+export const improvementDeptScoreColumns: JVxeColumn[] = [
+ {
+ title: '改善提案主表ID',
+ key: 'mainId',
+ type: JVxeTypes.input,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ validateRules: [
+ { required: true, message: '${title}不能为空' },
+ ],
+ },
+ {
+ title: '流程任务ID',
+ key: 'processTaskId',
+ type: JVxeTypes.input,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ },
+ {
+ title: '评委ID',
+ key: 'scorerId',
+ type: JVxeTypes.input,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ validateRules: [
+ { required: true, message: '${title}不能为空' },
+ ],
+ },
+ {
+ title: '评委姓名',
+ key: 'scorerName',
+ type: JVxeTypes.input,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ validateRules: [
+ { required: true, message: '${title}不能为空' },
+ ],
+ },
+ {
+ title: '评分状态:pending/completed',
+ key: 'scoreStatus',
+ type: JVxeTypes.input,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ validateRules: [
+ { required: true, message: '${title}不能为空' },
+ ],
+ },
+ {
+ title: '改善效果得分',
+ key: 'effectScore',
+ type: JVxeTypes.inputNumber,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ },
+ {
+ title: '可推广度得分',
+ key: 'promotionScore',
+ type: JVxeTypes.inputNumber,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ },
+ {
+ title: '独创性得分',
+ key: 'originalityScore',
+ type: JVxeTypes.inputNumber,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ },
+ {
+ title: '努力度得分',
+ key: 'effortScore',
+ type: JVxeTypes.inputNumber,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ },
+ {
+ title: '加权总分',
+ key: 'totalScore',
+ type: JVxeTypes.inputNumber,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ },
+ {
+ title: '评分意见',
+ key: 'scoreOpinion',
+ type: JVxeTypes.textarea,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ },
+ {
+ title: '评分时间',
+ key: 'scoreTime',
+ type: JVxeTypes.datetime,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ },
+ ]
+export const improvementInstituteVoteColumns: JVxeColumn[] = [
+ {
+ title: '改善提案主表ID',
+ key: 'mainId',
+ type: JVxeTypes.input,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ validateRules: [
+ { required: true, message: '${title}不能为空' },
+ ],
+ },
+ {
+ title: '流程任务ID',
+ key: 'processTaskId',
+ type: JVxeTypes.input,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ },
+ {
+ title: '投票人ID',
+ key: 'voterId',
+ type: JVxeTypes.input,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ validateRules: [
+ { required: true, message: '${title}不能为空' },
+ ],
+ },
+ {
+ title: '投票人姓名',
+ key: 'voterName',
+ type: JVxeTypes.input,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ validateRules: [
+ { required: true, message: '${title}不能为空' },
+ ],
+ },
+ {
+ title: '投票状态:pending/voted',
+ key: 'voteStatus',
+ type: JVxeTypes.input,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ validateRules: [
+ { required: true, message: '${title}不能为空' },
+ ],
+ },
+ {
+ title: '投票结果:agree/disagree',
+ key: 'voteResult',
+ type: JVxeTypes.input,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ },
+ {
+ title: '投票意见',
+ key: 'voteOpinion',
+ type: JVxeTypes.textarea,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ },
+ {
+ title: '投票时间',
+ key: 'voteTime',
+ type: JVxeTypes.datetime,
+ width:"200px",
+ placeholder: '请输入${title}',
+ defaultValue:'',
+ },
+ ]
+
+// 高级查询数据
+export const superQuerySchema = {
+ proposalNo: {title: '提案编号',order: 0,view: 'text', type: 'string',},
+ proposalName: {title: '提案名称',order: 1,view: 'text', type: 'string',},
+ proposalDate: {title: '提出日期',order: 2,view: 'date', type: 'string',},
+ proposalDeptId: {title: '提案部门ID',order: 3,view: 'text', type: 'string',},
+ proposalDeptName: {title: '提案部门名称',order: 4,view: 'text', type: 'string',},
+ applicantId: {title: '申请人ID',order: 5,view: 'text', type: 'string',},
+ applicantName: {title: '申请人姓名',order: 6,view: 'text', type: 'string',},
+ teamName: {title: '团队名称',order: 7,view: 'text', type: 'string',},
+ proposalCategory: {title: '提案类别',order: 8,view: 'text', type: 'string',},
+ problemDesc: {title: '问题描述',order: 9,view: 'textarea', type: 'string',},
+ improvementMethod: {title: '改善方法及措施',order: 10,view: 'textarea', type: 'string',},
+ finalAward: {title: '最终奖项',order: 14,view: 'text', type: 'string',},
+ bpmStatus: {title: '业务展示状态',order: 15,view: 'text', type: 'string',},
+ //子表高级查询
+ improvementDeptScore: {
+ title: '部门评议评分表',
+ view: 'table',
+ fields: {
+ mainId: {title: '改善提案主表ID',order: 0,view: 'text', type: 'string',},
+ processTaskId: {title: '流程任务ID',order: 1,view: 'text', type: 'string',},
+ scorerId: {title: '评委ID',order: 2,view: 'text', type: 'string',},
+ scorerName: {title: '评委姓名',order: 3,view: 'text', type: 'string',},
+ scoreStatus: {title: '评分状态:pending/completed',order: 4,view: 'text', type: 'string',},
+ effectScore: {title: '改善效果得分',order: 5,view: 'number', type: 'number',},
+ promotionScore: {title: '可推广度得分',order: 6,view: 'number', type: 'number',},
+ originalityScore: {title: '独创性得分',order: 7,view: 'number', type: 'number',},
+ effortScore: {title: '努力度得分',order: 8,view: 'number', type: 'number',},
+ totalScore: {title: '加权总分',order: 9,view: 'number', type: 'number',},
+ scoreOpinion: {title: '评分意见',order: 10,view: 'textarea', type: 'string',},
+ scoreTime: {title: '评分时间',order: 11,view: 'datetime', type: 'string',},
+ }
+ },
+ improvementInstituteVote: {
+ title: '所级评议投票表',
+ view: 'table',
+ fields: {
+ mainId: {title: '改善提案主表ID',order: 0,view: 'text', type: 'string',},
+ processTaskId: {title: '流程任务ID',order: 1,view: 'text', type: 'string',},
+ voterId: {title: '投票人ID',order: 2,view: 'text', type: 'string',},
+ voterName: {title: '投票人姓名',order: 3,view: 'text', type: 'string',},
+ voteStatus: {title: '投票状态:pending/voted',order: 4,view: 'text', type: 'string',},
+ voteResult: {title: '投票结果:agree/disagree',order: 5,view: 'text', type: 'string',},
+ voteOpinion: {title: '投票意见',order: 6,view: 'textarea', type: 'string',},
+ voteTime: {title: '投票时间',order: 7,view: 'datetime', type: 'string',},
+ }
+ },
+};
diff --git a/src/views/gh/improvementProposal/ImprovementProposalList.vue b/src/views/gh/improvementProposal/ImprovementProposalList.vue
new file mode 100644
index 0000000..18fc112
--- /dev/null
+++ b/src/views/gh/improvementProposal/ImprovementProposalList.vue
@@ -0,0 +1,303 @@
+
+
+
+
+
+
+
+
+ 新增
+ 导出
+ 导入
+
+
+
+
+
+ 删除
+
+
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/gh/improvementProposal/components/ImprovementProposalForm.vue b/src/views/gh/improvementProposal/components/ImprovementProposalForm.vue
new file mode 100644
index 0000000..2cb90f4
--- /dev/null
+++ b/src/views/gh/improvementProposal/components/ImprovementProposalForm.vue
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/gh/improvementProposal/components/ImprovementProposalModal.vue b/src/views/gh/improvementProposal/components/ImprovementProposalModal.vue
new file mode 100644
index 0000000..1e17de2
--- /dev/null
+++ b/src/views/gh/improvementProposal/components/ImprovementProposalModal.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
\ No newline at end of file