|
@@ -3,78 +3,82 @@
|
|
|
ref="formRef"
|
|
ref="formRef"
|
|
|
:model="currentForm"
|
|
:model="currentForm"
|
|
|
:options="mergedFormOptions"
|
|
:options="mergedFormOptions"
|
|
|
- >
|
|
|
|
|
- <template #insertion="{ data }">
|
|
|
|
|
- <FlexCol v-if="data.name === 'insertCheckList'">
|
|
|
|
|
- <Divider />
|
|
|
|
|
- <H3>自查项目选择</H3>
|
|
|
|
|
- <Height :height="30" />
|
|
|
|
|
- <FlexCol gap="gap.md">
|
|
|
|
|
- <FlexCol v-for="(item, index) in checkItemList" :key="item.id" gap="gap.md">
|
|
|
|
|
- <FlexRow justify="space-between" align="center">
|
|
|
|
|
- <Text fontConfig="subTitleText" :text="`${index + 1}. ${item.name}`" />
|
|
|
|
|
- <Tag :text="getCheckModeText(item.checkType)" />
|
|
|
|
|
- </FlexRow>
|
|
|
|
|
- <FlexCol v-if="item.checkType == 3" gap="gap.sm">
|
|
|
|
|
- <FlexRow v-for="child in item.children" :key="child.id" justify="space-between">
|
|
|
|
|
- <CheckBox
|
|
|
|
|
- :disabled="readonly"
|
|
|
|
|
- :text="`${child.name} (${child.points}分)`"
|
|
|
|
|
- :modelValue="hasCheckedItem(child.id)"
|
|
|
|
|
- @update:modelValue="setCheckedItem(item as CheckItemInfo, child as CheckItemInfo, $event)"
|
|
|
|
|
- />
|
|
|
|
|
- <Stepper
|
|
|
|
|
- v-if="hasCheckedItem(child.id)"
|
|
|
|
|
- :disabled="readonly"
|
|
|
|
|
- :min="0"
|
|
|
|
|
- :max="20"
|
|
|
|
|
- :step="1"
|
|
|
|
|
- :modelValue="getCheckedItemCount(child.id) ?? 0"
|
|
|
|
|
- addonAfter="次"
|
|
|
|
|
- @update:modelValue="setCheckedItem(item as CheckItemInfo, child as CheckItemInfo, $event)"
|
|
|
|
|
- />
|
|
|
|
|
- <view v-else></view>
|
|
|
|
|
- </FlexRow>
|
|
|
|
|
- </FlexCol>
|
|
|
|
|
- <FlexCol v-else gap="gap.sm">
|
|
|
|
|
- <CheckBox
|
|
|
|
|
- v-for="child in item.children" :key="child.id"
|
|
|
|
|
- :disabled="readonly"
|
|
|
|
|
- :text="`${child.name} (${child.points}分)`"
|
|
|
|
|
- :modelValue="hasCheckedItem(child.id)"
|
|
|
|
|
- @update:modelValue="setCheckedItem(item as CheckItemInfo, child as CheckItemInfo, $event)"
|
|
|
|
|
- />
|
|
|
|
|
- </FlexCol>
|
|
|
|
|
- <FlexCol gap="gap.sm">
|
|
|
|
|
- <Text
|
|
|
|
|
- fontConfig="subText"
|
|
|
|
|
- color="text.second"
|
|
|
|
|
- :text="readonly ? '佐证资料' : '佐证材料上传'"
|
|
|
|
|
- />
|
|
|
|
|
- <Text
|
|
|
|
|
- v-if="!currentForm.id"
|
|
|
|
|
- fontConfig="subText"
|
|
|
|
|
- color="text.second"
|
|
|
|
|
- text="请先保存评估表后再上传佐证资料"
|
|
|
|
|
- />
|
|
|
|
|
- <Uploader
|
|
|
|
|
- v-else
|
|
|
|
|
- :ref="(el) => bindUploaderRef(item.id, el)"
|
|
|
|
|
- :upload="getAnnexUpload(item.id)"
|
|
|
|
|
- :max-upload-count="100"
|
|
|
|
|
- :max-file-size="20 * 1024 * 1024"
|
|
|
|
|
- :group-type="true"
|
|
|
|
|
- chooseType="file"
|
|
|
|
|
- list-type="list"
|
|
|
|
|
- :readonly="readonly"
|
|
|
|
|
- />
|
|
|
|
|
- </FlexCol>
|
|
|
|
|
- </FlexCol>
|
|
|
|
|
|
|
+ />
|
|
|
|
|
+
|
|
|
|
|
+ <FlexCol>
|
|
|
|
|
+ <Divider />
|
|
|
|
|
+ <H3>自查项目选择</H3>
|
|
|
|
|
+ <Height :height="30" />
|
|
|
|
|
+ <FlexCol gap="gap.md">
|
|
|
|
|
+ <FlexCol v-for="(item, index) in checkItemList" :key="item.id" gap="gap.md">
|
|
|
|
|
+ <FlexRow justify="space-between" align="center">
|
|
|
|
|
+ <Text fontConfig="subTitleText" :text="`${index + 1}. ${item.name}`" />
|
|
|
|
|
+ <Tag :text="getCheckModeText(item.checkType)" />
|
|
|
|
|
+ </FlexRow>
|
|
|
|
|
+ <FlexCol v-if="item.checkType == 3" gap="gap.sm">
|
|
|
|
|
+ <FlexRow v-for="child in item.children" :key="child.id" justify="space-between">
|
|
|
|
|
+ <CheckBox
|
|
|
|
|
+ :disabled="readonly"
|
|
|
|
|
+ :text="`${child.name} (${child.points}分)`"
|
|
|
|
|
+ :modelValue="hasCheckedItem(child.id)"
|
|
|
|
|
+ @update:modelValue="setCheckedItem(item as CheckItemInfo, child as CheckItemInfo, $event)"
|
|
|
|
|
+ />
|
|
|
|
|
+ <Stepper
|
|
|
|
|
+ v-if="hasCheckedItem(child.id)"
|
|
|
|
|
+ :disabled="readonly"
|
|
|
|
|
+ :min="0"
|
|
|
|
|
+ :max="20"
|
|
|
|
|
+ :step="1"
|
|
|
|
|
+ :modelValue="getCheckedItemCount(child.id) ?? 0"
|
|
|
|
|
+ addonAfter="次"
|
|
|
|
|
+ @update:modelValue="setCheckedItem(item as CheckItemInfo, child as CheckItemInfo, $event)"
|
|
|
|
|
+ />
|
|
|
|
|
+ <view v-else></view>
|
|
|
|
|
+ </FlexRow>
|
|
|
|
|
+ </FlexCol>
|
|
|
|
|
+ <FlexCol v-else gap="gap.sm">
|
|
|
|
|
+ <CheckBox
|
|
|
|
|
+ v-for="child in item.children" :key="child.id"
|
|
|
|
|
+ :disabled="readonly"
|
|
|
|
|
+ :text="`${child.name} (${child.points}分)`"
|
|
|
|
|
+ :modelValue="hasCheckedItem(child.id)"
|
|
|
|
|
+ @update:modelValue="setCheckedItem(item as CheckItemInfo, child as CheckItemInfo, $event)"
|
|
|
|
|
+ />
|
|
|
|
|
+ </FlexCol>
|
|
|
|
|
+ <FlexCol gap="gap.sm" border="1px solid #e0e0e0" radius="radius.md" padding="space.md">
|
|
|
|
|
+ <Text
|
|
|
|
|
+ fontConfig="subText"
|
|
|
|
|
+ color="text.second"
|
|
|
|
|
+ :text="readonly ? '佐证资料' : '佐证材料上传'"
|
|
|
|
|
+ />
|
|
|
|
|
+ <Text
|
|
|
|
|
+ v-if="!currentForm.id"
|
|
|
|
|
+ fontConfig="subText"
|
|
|
|
|
+ color="text.second"
|
|
|
|
|
+ text="请先保存评估表后再上传佐证资料"
|
|
|
|
|
+ />
|
|
|
|
|
+ <Uploader
|
|
|
|
|
+ v-show="currentForm.id"
|
|
|
|
|
+ :ref="(el) => bindUploaderRef(item.id, el)"
|
|
|
|
|
+ :upload="getAnnexUpload(item.id)"
|
|
|
|
|
+ :max-upload-count="100"
|
|
|
|
|
+ :max-file-size="20 * 1024 * 1024"
|
|
|
|
|
+ :group-type="true"
|
|
|
|
|
+ chooseType="file"
|
|
|
|
|
+ list-type="list"
|
|
|
|
|
+ :itemExtraButtons="readonly ? [] : [{ icon: 'edit', onClick: (item2) => editAnnexDesc(item.id, item2) }]"
|
|
|
|
|
+ :readonly="readonly"
|
|
|
|
|
+ />
|
|
|
</FlexCol>
|
|
</FlexCol>
|
|
|
</FlexCol>
|
|
</FlexCol>
|
|
|
- <slot v-else name="formCeil" :data="data" />
|
|
|
|
|
- </template>
|
|
|
|
|
- </DynamicForm>
|
|
|
|
|
|
|
+ </FlexCol>
|
|
|
|
|
+ </FlexCol>
|
|
|
|
|
+
|
|
|
|
|
+ <DynamicForm
|
|
|
|
|
+ ref="formRef2"
|
|
|
|
|
+ :model="currentForm"
|
|
|
|
|
+ :options="mergedFormOptionsEnd"
|
|
|
|
|
+ />
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
@@ -88,6 +92,7 @@ import CheckBox from '@/components/form/CheckBox.vue';
|
|
|
import Stepper from '@/components/form/Stepper.vue';
|
|
import Stepper from '@/components/form/Stepper.vue';
|
|
|
import Uploader, { type UploaderInstance } from '@/components/form/Uploader.vue';
|
|
import Uploader, { type UploaderInstance } from '@/components/form/Uploader.vue';
|
|
|
import AssessmentContentApi, { getCheckAnnexType, SelfAssessmentCheckItemAnswer, type CheckItemInfo, type SelfAssessmentDetail } from '@/api/collect/AssessmentContent';
|
|
import AssessmentContentApi, { getCheckAnnexType, SelfAssessmentCheckItemAnswer, type CheckItemInfo, type SelfAssessmentDetail } from '@/api/collect/AssessmentContent';
|
|
|
|
|
+import AgentWorkApi from '@/api/agent/AgentWorks';
|
|
|
import type { IDynamicFormOptions, IDynamicFormRef } from '@/components/dynamic';
|
|
import type { IDynamicFormOptions, IDynamicFormRef } from '@/components/dynamic';
|
|
|
import { ArrayUtils } from '@imengyu/imengyu-utils';
|
|
import { ArrayUtils } from '@imengyu/imengyu-utils';
|
|
|
import Tag from '@/components/display/Tag.vue';
|
|
import Tag from '@/components/display/Tag.vue';
|
|
@@ -95,11 +100,12 @@ import Divider from '@/components/display/Divider.vue';
|
|
|
import Height from '@/components/layout/space/Height.vue';
|
|
import Height from '@/components/layout/space/Height.vue';
|
|
|
import { useAliOssUploadCo } from '@/common/components/upload/AliOssUploadCo';
|
|
import { useAliOssUploadCo } from '@/common/components/upload/AliOssUploadCo';
|
|
|
import { getMimeType } from '@/common/components/upload/mimes';
|
|
import { getMimeType } from '@/common/components/upload/mimes';
|
|
|
-import { stringUrlToUploaderItem, type UploaderAction } from '@/components/form/Uploader';
|
|
|
|
|
|
|
+import { stringUrlToUploaderItem, type UploaderAction, type UploaderItem } from '@/components/form/Uploader';
|
|
|
|
|
|
|
|
const props = withDefaults(defineProps<{
|
|
const props = withDefaults(defineProps<{
|
|
|
currentForm: SelfAssessmentDetail;
|
|
currentForm: SelfAssessmentDetail;
|
|
|
formOptions: IDynamicFormOptions;
|
|
formOptions: IDynamicFormOptions;
|
|
|
|
|
+ formOptionsEnd: IDynamicFormOptions;
|
|
|
checkItemList: CheckItemInfo[];
|
|
checkItemList: CheckItemInfo[];
|
|
|
currentFormCheckItems: SelfAssessmentCheckItemAnswer[];
|
|
currentFormCheckItems: SelfAssessmentCheckItemAnswer[];
|
|
|
/** 管理员只读查看 / 审核页 */
|
|
/** 管理员只读查看 / 审核页 */
|
|
@@ -109,6 +115,7 @@ const props = withDefaults(defineProps<{
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
const formRef = ref<IDynamicFormRef | null>(null);
|
|
const formRef = ref<IDynamicFormRef | null>(null);
|
|
|
|
|
+const formRef2 = ref<IDynamicFormRef | null>(null);
|
|
|
const uploaderRefMap = new Map<number, UploaderInstance | null>();
|
|
const uploaderRefMap = new Map<number, UploaderInstance | null>();
|
|
|
const uploadCoMap = new Map<number, (action: UploaderAction) => (() => void)>();
|
|
const uploadCoMap = new Map<number, (action: UploaderAction) => (() => void)>();
|
|
|
|
|
|
|
@@ -119,7 +126,13 @@ const mergedFormOptions = computed<IDynamicFormOptions>(() => ({
|
|
|
disabled: props.readonly,
|
|
disabled: props.readonly,
|
|
|
},
|
|
},
|
|
|
}));
|
|
}));
|
|
|
-
|
|
|
|
|
|
|
+const mergedFormOptionsEnd = computed<IDynamicFormOptions>(() => ({
|
|
|
|
|
+ ...props.formOptionsEnd,
|
|
|
|
|
+ formAdditionaProps: {
|
|
|
|
|
+ ...props.formOptionsEnd.formAdditionaProps,
|
|
|
|
|
+ disabled: props.readonly,
|
|
|
|
|
+ },
|
|
|
|
|
+}));
|
|
|
|
|
|
|
|
function getCheckModeText(checkMode: number) {
|
|
function getCheckModeText(checkMode: number) {
|
|
|
switch (checkMode) {
|
|
switch (checkMode) {
|
|
@@ -172,7 +185,118 @@ function setCheckedItem(checkItem: CheckItemInfo, childItem: CheckItemInfo, coun
|
|
|
ArrayUtils.remove(props.currentFormCheckItems, item);
|
|
ArrayUtils.remove(props.currentFormCheckItems, item);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+function formatAnnexDisplayName(desc: string | null | undefined, name: string) {
|
|
|
|
|
+ const descText = (desc ?? '').trim();
|
|
|
|
|
+ if (!descText)
|
|
|
|
|
+ return name;
|
|
|
|
|
+ return `${descText}(${name})`;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function buildAnnexDescInputDoc() {
|
|
|
|
|
+ const content = props.currentForm.content;
|
|
|
|
|
+ if (!content)
|
|
|
|
|
+ return '';
|
|
|
|
|
+ const lines: string[] = [];
|
|
|
|
|
+ for (let i = 0; i <= 6; i++) {
|
|
|
|
|
+ const value = String(content[`item${i}`] ?? '').trim();
|
|
|
|
|
+ if (!value)
|
|
|
|
|
+ continue;
|
|
|
|
|
+ lines.push(`第${i + 1}项:${value}`);
|
|
|
|
|
+ }
|
|
|
|
|
+ return lines.join('\n');
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+type AnnexUploaderItem = UploaderItem & {
|
|
|
|
|
+ annexMeta?: {
|
|
|
|
|
+ id: number;
|
|
|
|
|
+ rawName: string;
|
|
|
|
|
+ desc: string;
|
|
|
|
|
+ url: string;
|
|
|
|
|
+ type: number;
|
|
|
|
|
+ mimetype?: string|null;
|
|
|
|
|
+ attachId?: number|null;
|
|
|
|
|
+ fileSize?: number|null;
|
|
|
|
|
+ };
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+function createAnnexUploaderItem(item: {
|
|
|
|
|
+ id: number;
|
|
|
|
|
+ name: string;
|
|
|
|
|
+ desc?: string|null;
|
|
|
|
|
+ url: string;
|
|
|
|
|
+ type: number;
|
|
|
|
|
+ mimetype?: string|null;
|
|
|
|
|
+ attachId?: number|null;
|
|
|
|
|
+ fileSize?: number|null;
|
|
|
|
|
+}) {
|
|
|
|
|
+ const displayName = formatAnnexDisplayName(item.desc, item.name);
|
|
|
|
|
+ const uploaderItem = stringUrlToUploaderItem(item.url, displayName) as AnnexUploaderItem;
|
|
|
|
|
+ uploaderItem.annexMeta = {
|
|
|
|
|
+ id: item.id,
|
|
|
|
|
+ rawName: item.name,
|
|
|
|
|
+ desc: item.desc ?? '',
|
|
|
|
|
+ url: item.url,
|
|
|
|
|
+ type: item.type,
|
|
|
|
|
+ mimetype: item.mimetype,
|
|
|
|
|
+ attachId: item.attachId,
|
|
|
|
|
+ fileSize: item.fileSize,
|
|
|
|
|
+ };
|
|
|
|
|
+ return uploaderItem;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function promptAnnexDesc(initialDesc: string, title: string) {
|
|
|
|
|
+ return new Promise<string|null>((resolve) => {
|
|
|
|
|
+ uni.showModal({
|
|
|
|
|
+ title,
|
|
|
|
|
+ editable: true,
|
|
|
|
|
+ placeholderText: '请输入佐证资料说明(可选)',
|
|
|
|
|
+ content: initialDesc,
|
|
|
|
|
+ success: (res) => {
|
|
|
|
|
+ if (!res.confirm) {
|
|
|
|
|
+ resolve(null);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ resolve((res.content ?? '').trim());
|
|
|
|
|
+ },
|
|
|
|
|
+ fail: () => resolve(null),
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+async function editAnnexDesc(itemId: number, item: UploaderItem, isAfterUpload = false) {
|
|
|
|
|
+ const formId = props.currentForm.id;
|
|
|
|
|
+ if (!formId)
|
|
|
|
|
+ return;
|
|
|
|
|
+ const annexItem = item as AnnexUploaderItem;
|
|
|
|
|
+ const meta = annexItem.annexMeta;
|
|
|
|
|
+ if (!meta?.id) {
|
|
|
|
|
+ uni.showToast({ title: '附件信息不完整,无法编辑说明', icon: 'none' });
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ const nextDesc = await promptAnnexDesc(
|
|
|
|
|
+ meta.desc ?? '',
|
|
|
|
|
+ isAfterUpload ? '上传成功,请补充附件说明' : '编辑附件说明',
|
|
|
|
|
+ );
|
|
|
|
|
+ if (nextDesc === null)
|
|
|
|
|
+ return;
|
|
|
|
|
+ await AssessmentContentApi.saveAnnex({
|
|
|
|
|
+ id: meta.id,
|
|
|
|
|
+ name: meta.rawName,
|
|
|
|
|
+ formId,
|
|
|
|
|
+ itemId,
|
|
|
|
|
+ url: meta.url,
|
|
|
|
|
+ type: meta.type,
|
|
|
|
|
+ desc: nextDesc,
|
|
|
|
|
+ mimetype: meta.mimetype ?? undefined,
|
|
|
|
|
+ attachId: meta.attachId ?? undefined,
|
|
|
|
|
+ fileSize: meta.fileSize ?? undefined,
|
|
|
|
|
+ });
|
|
|
|
|
+ await loadAnnexListByItem(itemId);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
function bindUploaderRef(itemId: number, el: unknown) {
|
|
function bindUploaderRef(itemId: number, el: unknown) {
|
|
|
|
|
+ console.log('bindUploaderRef', itemId, el);
|
|
|
uploaderRefMap.set(itemId, (el as UploaderInstance | null) || null);
|
|
uploaderRefMap.set(itemId, (el as UploaderInstance | null) || null);
|
|
|
if (el)
|
|
if (el)
|
|
|
loadAnnexListByItem(itemId);
|
|
loadAnnexListByItem(itemId);
|
|
@@ -187,10 +311,15 @@ function getAnnexUpload(itemId: number) {
|
|
|
if (!formId)
|
|
if (!formId)
|
|
|
return;
|
|
return;
|
|
|
const mimetype = getMimeType(item.filePath);
|
|
const mimetype = getMimeType(item.filePath);
|
|
|
|
|
+ const inputDoc = buildAnnexDescInputDoc();
|
|
|
|
|
+ const desc = inputDoc
|
|
|
|
|
+ ? await AgentWorkApi.generateFileDescByInputDoc(inputDoc, item.name)
|
|
|
|
|
+ : '';
|
|
|
await AssessmentContentApi.saveAnnex({
|
|
await AssessmentContentApi.saveAnnex({
|
|
|
name: item.name,
|
|
name: item.name,
|
|
|
formId,
|
|
formId,
|
|
|
itemId,
|
|
itemId,
|
|
|
|
|
+ desc,
|
|
|
url: res,
|
|
url: res,
|
|
|
type: getCheckAnnexType(mimetype),
|
|
type: getCheckAnnexType(mimetype),
|
|
|
mimetype,
|
|
mimetype,
|
|
@@ -199,6 +328,12 @@ function getAnnexUpload(itemId: number) {
|
|
|
: undefined,
|
|
: undefined,
|
|
|
});
|
|
});
|
|
|
await loadAnnexListByItem(itemId);
|
|
await loadAnnexListByItem(itemId);
|
|
|
|
|
+ const uploaded = uploaderRefMap.get(itemId)?.getList().find((listItem) => {
|
|
|
|
|
+ const meta = (listItem as AnnexUploaderItem).annexMeta;
|
|
|
|
|
+ return meta?.url === res;
|
|
|
|
|
+ });
|
|
|
|
|
+ if (uploaded)
|
|
|
|
|
+ await editAnnexDesc(itemId, uploaded, true);
|
|
|
});
|
|
});
|
|
|
uploadCoMap.set(itemId, uploadCo);
|
|
uploadCoMap.set(itemId, uploadCo);
|
|
|
return uploadCo;
|
|
return uploadCo;
|
|
@@ -207,6 +342,7 @@ function getAnnexUpload(itemId: number) {
|
|
|
async function loadAnnexListByItem(itemId: number) {
|
|
async function loadAnnexListByItem(itemId: number) {
|
|
|
const formId = props.currentForm.id;
|
|
const formId = props.currentForm.id;
|
|
|
const uploaderRef = uploaderRefMap.get(itemId);
|
|
const uploaderRef = uploaderRefMap.get(itemId);
|
|
|
|
|
+ console.log('loadAnnexListByItem', itemId);
|
|
|
if (!uploaderRef)
|
|
if (!uploaderRef)
|
|
|
return;
|
|
return;
|
|
|
if (!formId) {
|
|
if (!formId) {
|
|
@@ -214,7 +350,7 @@ async function loadAnnexListByItem(itemId: number) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
const annexList = await AssessmentContentApi.getAnnexList(formId, itemId);
|
|
const annexList = await AssessmentContentApi.getAnnexList(formId, itemId);
|
|
|
- uploaderRef.setList(annexList.data.map((item) => stringUrlToUploaderItem(item.url, item.name)));
|
|
|
|
|
|
|
+ uploaderRef.setList(annexList.data.map((item) => createAnnexUploaderItem(item)));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async function reloadAllAnnexList() {
|
|
async function reloadAllAnnexList() {
|
|
@@ -226,12 +362,15 @@ async function validate() {
|
|
|
if (props.readonly)
|
|
if (props.readonly)
|
|
|
return;
|
|
return;
|
|
|
await formRef.value?.validate();
|
|
await formRef.value?.validate();
|
|
|
|
|
+ await formRef2.value?.validate();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
watch(
|
|
watch(
|
|
|
() => [props.currentForm.id, props.checkItemList.map((item) => item.id).join(',')],
|
|
() => [props.currentForm.id, props.checkItemList.map((item) => item.id).join(',')],
|
|
|
() => {
|
|
() => {
|
|
|
- reloadAllAnnexList();
|
|
|
|
|
|
|
+ setTimeout(() => {
|
|
|
|
|
+ reloadAllAnnexList();
|
|
|
|
|
+ }, 2000);
|
|
|
},
|
|
},
|
|
|
{ immediate: true },
|
|
{ immediate: true },
|
|
|
);
|
|
);
|