!156 style(bqtakepulse): 具体意见输入框改为整行放大显示
* style(bqtakepulse): 具体意见输入框改为整行放大显示 * refactor(xispeak): 表单操作隐藏添加下级入口 * feat(xispeak): 办理情况反馈新增只读详情弹窗 * fix(components): JSelectUser 补全 toRaw 导入
This commit is contained in:
@@ -20,7 +20,7 @@
|
|||||||
import { unref } from 'vue';
|
import { unref } from 'vue';
|
||||||
import UserSelectModal from './modal/UserSelectModal.vue';
|
import UserSelectModal from './modal/UserSelectModal.vue';
|
||||||
import JSelectBiz from './base/JSelectBiz.vue';
|
import JSelectBiz from './base/JSelectBiz.vue';
|
||||||
import { defineComponent, ref, reactive, watchEffect, watch, provide } from 'vue';
|
import { defineComponent, ref, reactive, watchEffect, watch, provide, toRaw } from 'vue';
|
||||||
import { useModal } from '/@/components/Modal';
|
import { useModal } from '/@/components/Modal';
|
||||||
import { propTypes } from '/@/utils/propTypes';
|
import { propTypes } from '/@/utils/propTypes';
|
||||||
import { useRuleFormItem } from '/@/hooks/component/useFormItem';
|
import { useRuleFormItem } from '/@/hooks/component/useFormItem';
|
||||||
|
|||||||
@@ -21,9 +21,9 @@
|
|||||||
<a-input v-model:value="mainForm.title" :disabled="mainDisabled" allow-clear />
|
<a-input v-model:value="mainForm.title" :disabled="mainDisabled" allow-clear />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="24" :md="12">
|
<a-col :span="24">
|
||||||
<a-form-item label="具体意见" name="content">
|
<a-form-item label="具体意见" name="content" :labelCol="wideLabelCol" :wrapperCol="wideWrapperCol">
|
||||||
<a-textarea v-model:value="mainForm.content" :auto-size="{ minRows: 1, maxRows: 7 }" :disabled="mainDisabled" allow-clear />
|
<a-textarea v-model:value="mainForm.content" :auto-size="{ minRows: 3, maxRows: 7 }" :disabled="mainDisabled" allow-clear />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<template v-if="showBaseInfoDetail">
|
<template v-if="showBaseInfoDetail">
|
||||||
|
|||||||
@@ -52,9 +52,17 @@
|
|||||||
<a-input v-model:value="formData.title" placeholder="请输入意见主题" allow-clear></a-input>
|
<a-input v-model:value="formData.title" placeholder="请输入意见主题" allow-clear></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="24" :md="12">
|
<a-col :span="24">
|
||||||
<a-form-item label="具体意见" v-bind="validateInfos.content" id="BgTakepulseForm-content" name="content">
|
<a-form-item
|
||||||
<a-textarea v-model:value="formData.content" :rows="4" placeholder="请输入具体意见" />
|
class="full-width-aligned-form-item"
|
||||||
|
label="具体意见"
|
||||||
|
v-bind="validateInfos.content"
|
||||||
|
id="BgTakepulseForm-content"
|
||||||
|
name="content"
|
||||||
|
:labelCol="wideLabelCol"
|
||||||
|
:wrapperCol="wideWrapperCol"
|
||||||
|
>
|
||||||
|
<a-textarea v-model:value="formData.content" :rows="6" placeholder="请输入具体意见" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="24" :md="12">
|
<a-col :xs="24" :md="12">
|
||||||
|
|||||||
@@ -614,12 +614,12 @@ import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID } from '/@/constant/supervi
|
|||||||
event: 'detail',
|
event: 'detail',
|
||||||
onClick: handleDetail.bind(null, record),
|
onClick: handleDetail.bind(null, record),
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
text: '添加下级',
|
// text: '添加下级',
|
||||||
icon: 'ant-design:plus-outlined',
|
// icon: 'ant-design:plus-outlined',
|
||||||
event: 'addSub',
|
// event: 'addSub',
|
||||||
onClick: handleAddSub.bind(null, { pid: record.id }),
|
// onClick: handleAddSub.bind(null, { pid: record.id }),
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
text: '删除',
|
text: '删除',
|
||||||
icon: 'ant-design:delete-outlined',
|
icon: 'ant-design:delete-outlined',
|
||||||
|
|||||||
@@ -0,0 +1,187 @@
|
|||||||
|
<template>
|
||||||
|
<j-modal
|
||||||
|
:title="title"
|
||||||
|
:width="900"
|
||||||
|
:visible="visible"
|
||||||
|
:okButtonProps="{ class: { 'jee-hidden': true } }"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
cancelText="关闭"
|
||||||
|
>
|
||||||
|
<a-spin :spinning="false">
|
||||||
|
<JFormContainer :disabled="true">
|
||||||
|
<template #detail>
|
||||||
|
<a-form ref="formRef" class="antd-modal-form" labelAlign="left" :labelCol="labelCol" :wrapperCol="wrapperCol" name="BgXiSpeakFeedbackDetailForm">
|
||||||
|
<a-divider orientation="left" plain>基本信息</a-divider>
|
||||||
|
<a-row :gutter="[16, 0]">
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-form-item label="重要讲话指示批示">
|
||||||
|
<a-textarea :value="mainForm.speakStatus || '-'" :rows="3" disabled />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="时间"><a-input :value="mainForm.time || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="企业负责同志批示情况"><a-input :value="mainForm.elmComment || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="学习传达研究部署"><a-input :value="mainForm.status || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="密级"><a-input :value="mainForm.secretLevel_dictText || mainForm.secretLevel || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="所党委责任领导"><a-input :value="mainForm.responsiblePerson_dictText || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="牵头部门"><a-input :value="mainForm.implDept_dictText || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="贯彻落实措施"><a-input :value="mainForm.implMeasures || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="会议决策数"><a-input :value="mainForm.numberOfResolutions ?? '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="完成状态"><a-input :value="mainForm.completionStatus_dictText || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="截止日期"><a-input :value="mainForm.deadline || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="报告反馈情况"><a-input :value="mainForm.reportFeedbackStatus || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
|
||||||
|
<a-divider orientation="left" plain>反馈详情</a-divider>
|
||||||
|
<a-row :gutter="[16, 0]">
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="反馈部门"><a-input :value="fb.responDeptname || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="反馈人"><a-input :value="fb.responPersonname || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="反馈时间"><a-input :value="fb.responTime || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="序号"><a-input :value="fb.num ?? '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-form-item label="具体措施">
|
||||||
|
<a-textarea :value="fb.method || '-'" :rows="3" disabled />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="完成状态"><a-input :value="fb.completionStatus_dictText || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="成果形式"><a-input :value="fb.outcomeForm || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-form-item label="进展情况">
|
||||||
|
<a-textarea :value="fb.progress || '-'" :rows="3" disabled />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="检查情况(纪检)"><a-input :value="fb.checkStatus || '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="措施数量(纪检)"><a-input :value="fb.measureNum ?? '-'" disabled /></a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-form-item label="监督意见(纪检)">
|
||||||
|
<a-textarea :value="fb.inspectionAdvice || '-'" :rows="3" disabled />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-form-item label="附件">
|
||||||
|
<SUploadFile v-if="fb.id" class="feedback-detail-attachments" :bussiness-id="fb.id" :disabled="true" :multiple="true" />
|
||||||
|
<span v-else>-</span>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</template>
|
||||||
|
</JFormContainer>
|
||||||
|
</a-spin>
|
||||||
|
</j-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref, reactive, defineExpose } from 'vue';
|
||||||
|
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
|
||||||
|
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
|
||||||
|
import SUploadFile from '/@/components/semri/fileComponent/SUploadFile.vue';
|
||||||
|
|
||||||
|
const visible = ref(false);
|
||||||
|
const title = ref('反馈详情');
|
||||||
|
const mainForm = reactive<Record<string, any>>({});
|
||||||
|
const fb = reactive<Record<string, any>>({});
|
||||||
|
// 固定 label 宽度,保证一行一个(span24)与一行两个(span12)的输入框左边框对齐
|
||||||
|
const labelCol = { style: { width: '150px' } };
|
||||||
|
const wrapperCol = { style: { flex: 1 } };
|
||||||
|
|
||||||
|
function open(mainRecord: Recordable, feedbackRecord: Recordable) {
|
||||||
|
Object.keys(mainForm).forEach((k) => delete mainForm[k]);
|
||||||
|
Object.keys(fb).forEach((k) => delete fb[k]);
|
||||||
|
Object.assign(mainForm, mainRecord || {});
|
||||||
|
Object.assign(fb, feedbackRecord || {});
|
||||||
|
title.value = '反馈详情';
|
||||||
|
visible.value = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleCancel() {
|
||||||
|
visible.value = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({ open });
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.antd-modal-form {
|
||||||
|
padding: 14px;
|
||||||
|
|
||||||
|
:deep(.ant-form-item-label) {
|
||||||
|
overflow: visible;
|
||||||
|
white-space: normal;
|
||||||
|
text-overflow: unset;
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
|
> label {
|
||||||
|
justify-content: flex-start;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.feedback-detail-attachments {
|
||||||
|
min-width: 280px;
|
||||||
|
|
||||||
|
:deep(.file-list-wrapper) {
|
||||||
|
min-height: 36px;
|
||||||
|
max-height: 130px;
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 4px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.file-list-header) {
|
||||||
|
margin-bottom: 6px;
|
||||||
|
padding-bottom: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.file-list .file-item) {
|
||||||
|
padding: 8px;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.ant-empty) {
|
||||||
|
margin: 0;
|
||||||
|
padding: 4px 0;
|
||||||
|
|
||||||
|
.ant-empty-image {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -174,6 +174,7 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, reactive, defineExpose, nextTick, inject, unref } from 'vue';
|
import { ref, reactive, defineExpose, nextTick, inject, unref } from 'vue';
|
||||||
import { Form } from 'ant-design-vue';
|
import { Form } from 'ant-design-vue';
|
||||||
|
const useForm = Form.useForm;
|
||||||
import { defHttp } from '/@/utils/http/axios';
|
import { defHttp } from '/@/utils/http/axios';
|
||||||
import { useMessage } from '/@/hooks/web/useMessage';
|
import { useMessage } from '/@/hooks/web/useMessage';
|
||||||
import { getValueType } from '/@/utils';
|
import { getValueType } from '/@/utils';
|
||||||
|
|||||||
@@ -12,7 +12,8 @@
|
|||||||
rowKey="id"
|
rowKey="id"
|
||||||
:canResize="false"
|
:canResize="false"
|
||||||
:showIndexColumn="false"
|
:showIndexColumn="false"
|
||||||
:showActionColumn="false"
|
:showActionColumn="true"
|
||||||
|
:actionColumn="{ width: 90, align: 'center', fixed: 'right', dataIndex: 'action', slots: { customRender: 'action' } }"
|
||||||
:showTableSetting="false"
|
:showTableSetting="false"
|
||||||
:clickToRowSelect="false"
|
:clickToRowSelect="false"
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
@@ -21,6 +22,9 @@
|
|||||||
:pagination="false"
|
:pagination="false"
|
||||||
:bordered="false"
|
:bordered="false"
|
||||||
>
|
>
|
||||||
|
<template #action="{ record }">
|
||||||
|
<a-button type="link" size="small" @click="handleDetail(record)">查看详情</a-button>
|
||||||
|
</template>
|
||||||
<template #bodyCell="{ column, record }">
|
<template #bodyCell="{ column, record }">
|
||||||
<template v-if="column.key === 'attachments'">
|
<template v-if="column.key === 'attachments'">
|
||||||
<SUploadFile
|
<SUploadFile
|
||||||
@@ -34,6 +38,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</BasicTable>
|
</BasicTable>
|
||||||
|
<BgXiSpeakFeedbackDetailModal ref="detailModalRef" />
|
||||||
</j-modal>
|
</j-modal>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -43,12 +48,14 @@
|
|||||||
import type { BasicColumn } from '/@/components/Table';
|
import type { BasicColumn } from '/@/components/Table';
|
||||||
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
|
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
|
||||||
import SUploadFile from '/@/components/semri/fileComponent/SUploadFile.vue';
|
import SUploadFile from '/@/components/semri/fileComponent/SUploadFile.vue';
|
||||||
|
import BgXiSpeakFeedbackDetailModal from './BgXiSpeakFeedbackDetailModal.vue';
|
||||||
import { bgXiSpeakFeedbackList } from '../BgXiSpeak.api';
|
import { bgXiSpeakFeedbackList } from '../BgXiSpeak.api';
|
||||||
|
|
||||||
const visible = ref(false);
|
const visible = ref(false);
|
||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
const feedbackTableData = ref<Recordable[]>([]);
|
const feedbackTableData = ref<Recordable[]>([]);
|
||||||
const currentRecord = ref<Recordable>({});
|
const currentRecord = ref<Recordable>({});
|
||||||
|
const detailModalRef = ref();
|
||||||
|
|
||||||
const columns: BasicColumn[] = [
|
const columns: BasicColumn[] = [
|
||||||
{
|
{
|
||||||
@@ -139,6 +146,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleDetail(record: Recordable) {
|
||||||
|
detailModalRef.value.open(currentRecord.value, record);
|
||||||
|
}
|
||||||
|
|
||||||
function handleCancel() {
|
function handleCancel() {
|
||||||
visible.value = false;
|
visible.value = false;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user