+
- 供热公司网络生产会议系统 - 会议查询篇
+ 热力公司会议管理系统
@@ -124,11 +125,15 @@ const searchForm = ref({
{{ row.meetingTheme }}
+
+ {{ row.meetingTheme }}
+
diff --git a/apps/web-office/src/views/supervise/edit/curd.tsx b/apps/web-office/src/views/supervise/edit/curd.tsx
new file mode 100644
index 00000000..37dece3a
--- /dev/null
+++ b/apps/web-office/src/views/supervise/edit/curd.tsx
@@ -0,0 +1,276 @@
+import type { Dayjs } from 'dayjs';
+import type { VxeGridPropTypes } from 'vxe-table';
+
+import { dict } from '@fast-crud/fast-crud';
+import { message } from 'ant-design-vue';
+import dayjs from 'dayjs';
+
+import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict';
+
+export const PrimaryKey = 'guid';
+
+export function getColumns(_params: any = {}): VxeGridPropTypes.Columns {
+ return [
+ { type: 'seq', width: 50 },
+ { field: 'feedbackContent', title: '反馈内容', minWidth: 200 },
+ { field: 'finishStatus', title: '完成情况', width: 120 },
+ { field: 'principal', title: '负责人', width: 120 },
+ { field: 'feedbackTime', title: '反馈时间', width: 150 },
+ { field: 'lasttime', title: '修改时间', width: 150 },
+ // { field: 'principalDepartment', title: '负责部门', width: 120 },
+ { field: 'executeDepartmentName', title: '执行部门', width: 120 },
+ // { title: '操作', width: 120, fixed: 'right', slots: { default: 'operate' } }
+ ];
+}
+
+function handleUpdateFormattedValue(formRef) {
+ const { starttime, endtime } = formRef.value.form;
+
+ if (starttime && endtime && endtime <= starttime) {
+ message.error('截止时间不能早于开始时间');
+ formRef.value.setFormData({
+ starttime: '',
+ });
+ }
+}
+
+export function getFormSchema(params: any = {}) {
+ const {
+ formRef,
+ chooseUserModalApi,
+ selectUsers,
+ readOnly = false,
+ } = params || {};
+ return {
+ col: { span: 24 },
+ initialForm: {},
+ labelCol: { style: { width: '120px' } },
+ columns: {
+ taskName: {
+ title: '任务标题',
+ key: 'taskName',
+ col: { span: 24 },
+ component: {
+ name: 'a-input',
+ vModel: 'value',
+ },
+ conditionalRender: {
+ match(_context) {
+ return readOnly;
+ },
+ render({ form }) {
+ return
{form.taskName};
+ },
+ },
+ rules: [{ required: true, message: '请输入任务标题' }],
+ },
+ taskType: {
+ title: '任务类别',
+ key: 'taskType',
+ col: { span: 12 },
+ component: {
+ name: 'fs-dict-radio',
+ vModel: 'value',
+ dict: dict({
+ data: getDictOptions(DICT_TYPE.supervise_task_type),
+ }),
+ },
+ conditionalRender: {
+ match(_context) {
+ return readOnly;
+ },
+ render({ form }) {
+ return (
+
+ {getDictObj(DICT_TYPE.supervise_task_type, form.taskType)
+ ?.label || ''}
+
+ );
+ },
+ },
+ rules: [{ required: true, message: '请选择任务类别' }],
+ },
+ urgentDegree: {
+ title: '紧急程度',
+ key: 'urgentDegree',
+ col: { span: 12 },
+ component: {
+ name: 'fs-dict-radio',
+ vModel: 'value',
+ dict: dict({
+ data: getDictOptions(DICT_TYPE.supervise_emergency_level),
+ }),
+ },
+ conditionalRender: {
+ match(_context) {
+ return readOnly;
+ },
+ render({ form }) {
+ return (
+
+ {getDictObj(
+ DICT_TYPE.supervise_emergency_level,
+ form.urgentDegree,
+ )?.label || ''}
+
+ );
+ },
+ },
+ },
+ starttime: {
+ title: '开始时间',
+ key: 'starttime',
+ col: { span: 12 },
+ component: {
+ name: 'a-date-picker',
+ vModel: 'value',
+ allowClear: false,
+ showTime: { format: 'HH:mm' },
+ // disabledDate: (current) => current && current < dayjs().endOf("day"),
+ format: 'YYYY-MM-DD HH:mm',
+ valueFormat: 'YYYY-MM-DD HH:mm',
+ onChange: () => {
+ handleUpdateFormattedValue(formRef);
+ },
+ },
+ conditionalRender: {
+ match(_context) {
+ return readOnly;
+ },
+ render({ form }) {
+ return
{form.starttime};
+ },
+ },
+ rules: [{ required: true, message: '请选择开始时间' }],
+ },
+ endtime: {
+ title: '截止时间',
+ key: 'endtime',
+ col: { span: 12 },
+ component: {
+ name: 'a-date-picker',
+ vModel: 'value',
+ allowClear: false,
+ showTime: { format: 'HH:mm' },
+ disabledDate: (current: Dayjs) => {
+ const form = formRef.value.form;
+ return current < dayjs(form.starttime);
+ },
+ onChange: () => {
+ handleUpdateFormattedValue(formRef);
+ },
+ format: 'YYYY-MM-DD HH:mm',
+ valueFormat: 'YYYY-MM-DD HH:mm',
+ },
+ conditionalRender: {
+ match(_context) {
+ return readOnly;
+ },
+ render({ form }) {
+ return
{form.endtime};
+ },
+ },
+ rules: [{ required: true, message: '请选择截止时间' }],
+ },
+ planFinishTime: {
+ title: '预计完成时间',
+ key: 'endtime',
+ component: {
+ name: 'a-date-picker',
+ vModel: 'value',
+ allowClear: false,
+ showTime: { format: 'HH:mm' },
+ disabledDate: (current: Dayjs) => {
+ const form = formRef.value.form;
+ return current < dayjs(form.starttime);
+ },
+ onChange: () => {
+ handleUpdateFormattedValue(formRef);
+ },
+ format: 'YYYY-MM-DD HH:mm',
+ valueFormat: 'YYYY-MM-DD HH:mm',
+ },
+ conditionalRender: {
+ match(_context) {
+ return readOnly;
+ },
+ render({ form }) {
+ return
{form.planFinishTime};
+ },
+ },
+ rules: [{ required: true, message: '请选择预计完成时间' }],
+ },
+ taskContent: {
+ title: '任务内容',
+ key: 'taskContent',
+ col: { span: 24 },
+ component: {
+ name: 'a-textarea',
+ vModel: 'value',
+ autoSize: { minRows: 4, maxRows: 6 },
+ },
+ conditionalRender: {
+ match(_context) {
+ return readOnly;
+ },
+ render({ form }) {
+ return
{form.taskContent};
+ },
+ },
+ rules: [{ required: true, message: '请输入任务内容' }],
+ },
+ taskProgress: {
+ title: '任务进度',
+ key: 'taskProgress',
+ col: { span: 24 },
+ component: {
+ name: 'a-textarea',
+ vModel: 'value',
+ autoSize: { minRows: 4, maxRows: 6 },
+ },
+ conditionalRender: {
+ match(_context) {
+ return readOnly;
+ },
+ render({ form }) {
+ return
{form.taskContent};
+ },
+ },
+ rules: [{ required: true, message: '请输入任务进度' }],
+ },
+ fileList: {
+ title: '相关附件',
+ key: 'fileList',
+ },
+ people: {
+ title: '相关执行人',
+ key: 'people',
+ component: {
+ name: 'a-select',
+ vModel: 'value',
+ open: false,
+ mode: 'multiple',
+ disabled: readOnly,
+ onClick: () => {
+ if (!readOnly) {
+ chooseUserModalApi.setData({
+ title: '选择执行人',
+ limitMultipleNum: 10,
+ userIds: selectUsers.value.map((row) => row.value) || [],
+ });
+ chooseUserModalApi.open();
+ }
+ },
+ onChange: () => {
+ // 同步 selectUsers 变量的值
+ selectUsers.value = formRef.value.form.people.map((item1) => {
+ const value = item1.split('-')[1];
+ return selectUsers.value.find((item2) => item2.value === value);
+ });
+ },
+ },
+ // rules: [{ required: true, message: '请选择相关执行人' }],
+ },
+ },
+ };
+}
diff --git a/apps/web-office/src/views/supervise/edit/index.vue b/apps/web-office/src/views/supervise/edit/index.vue
index a830ac28..ee1345f0 100644
--- a/apps/web-office/src/views/supervise/edit/index.vue
+++ b/apps/web-office/src/views/supervise/edit/index.vue
@@ -1,20 +1,19 @@