|
|
|
|
@ -137,6 +137,16 @@
|
|
|
|
|
|
|
|
|
|
<!-- 项目周报具体信息表格 -->
|
|
|
|
|
<div style="margin-bottom: 16px">
|
|
|
|
|
<el-button
|
|
|
|
|
type="danger"
|
|
|
|
|
plain
|
|
|
|
|
icon="Delete"
|
|
|
|
|
:disabled="multiple"
|
|
|
|
|
@click="handleDelete()"
|
|
|
|
|
v-if="routeParams.type === 'view'"
|
|
|
|
|
v-hasPermi="['oa/erp:projectReportDetail:remove']"
|
|
|
|
|
>删除</el-button
|
|
|
|
|
>
|
|
|
|
|
<el-button
|
|
|
|
|
type="warning"
|
|
|
|
|
plain
|
|
|
|
|
@ -147,7 +157,14 @@
|
|
|
|
|
>导出</el-button
|
|
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<el-table v-loading="buttonLoading" border :data="projectReportDetailList" v-if="routeParams.type !== 'add' && routeParams.type !== 'approval'">
|
|
|
|
|
<el-table
|
|
|
|
|
v-loading="buttonLoading"
|
|
|
|
|
border
|
|
|
|
|
:data="projectReportDetailList"
|
|
|
|
|
v-if="routeParams.type !== 'add' && routeParams.type !== 'approval'"
|
|
|
|
|
@selection-change="handleSelectionChange"
|
|
|
|
|
>
|
|
|
|
|
<el-table-column type="selection" width="55" align="center" />
|
|
|
|
|
<el-table-column label="项目周报明细ID" align="center" prop="reportDetailId" v-if="columns[0].visible" />
|
|
|
|
|
<el-table-column label="项目周报ID" align="center" prop="reportId" v-if="columns[1].visible" />
|
|
|
|
|
<el-table-column label="项目ID" align="center" prop="projectId" v-if="columns[2].visible" />
|
|
|
|
|
@ -188,6 +205,13 @@
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
<pagination
|
|
|
|
|
v-show="total > 0 && routeParams.type === 'view'"
|
|
|
|
|
:total="total"
|
|
|
|
|
v-model:page="projectReportFormQuery.pageNum"
|
|
|
|
|
v-model:limit="projectReportFormQuery.pageSize"
|
|
|
|
|
@pagination="getProjectDetail"
|
|
|
|
|
/>
|
|
|
|
|
<el-form
|
|
|
|
|
ref="projectReportDetailFormRef"
|
|
|
|
|
:model="projectReportForm"
|
|
|
|
|
@ -236,36 +260,6 @@
|
|
|
|
|
<el-input v-model="projectReportForm.secondaryPhase" placeholder="请输入二级进度阶段" clearable />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="本周完成工作" prop="tasksCompleted">
|
|
|
|
|
<el-input v-model="projectReportForm.tasksCompleted" placeholder="请输入本周完成工作" clearable />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="下周计划" prop="nextPlan">
|
|
|
|
|
<el-input v-model="projectReportForm.nextPlan" placeholder="请输入下周计划" clearable />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="风险及解决措施" prop="riskResolution">
|
|
|
|
|
<el-input v-model="projectReportForm.riskResolution" placeholder="请输入风险及解决措施" clearable />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="计划完成率" prop="plannedCompletionRate">
|
|
|
|
|
<el-input v-model="projectReportForm.plannedCompletionRate" placeholder="请输入计划完成率" clearable />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="周报情况说明" prop="informationNote">
|
|
|
|
|
<el-input v-model="projectReportForm.informationNote" placeholder="请输入周报情况说明" clearable />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="排序号" prop="sortOrder">
|
|
|
|
|
<el-input v-model="projectReportForm.sortOrder" placeholder="请输入排序号" clearable />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="项目状态" prop="scheduleStatus">
|
|
|
|
|
<el-select v-model="projectReportForm.scheduleStatus" placeholder="请选择项目状态" clearable>
|
|
|
|
|
@ -273,12 +267,53 @@
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="计划完成率" prop="plannedCompletionRate">
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="projectReportForm.plannedCompletionRate"
|
|
|
|
|
placeholder="请输入0-1之间的数字"
|
|
|
|
|
clearable
|
|
|
|
|
type="number"
|
|
|
|
|
:min="0"
|
|
|
|
|
:max="1"
|
|
|
|
|
:step="0.01"
|
|
|
|
|
@input="validatePlannedCompletionRate"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="本周完成工作" prop="tasksCompleted">
|
|
|
|
|
<el-input v-model="projectReportForm.tasksCompleted" type="textarea" placeholder="请输入本周完成工作" clearable />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="下周计划" prop="nextPlan">
|
|
|
|
|
<el-input v-model="projectReportForm.nextPlan" type="textarea" placeholder="请输入下周计划" clearable />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="风险及解决措施" prop="riskResolution">
|
|
|
|
|
<el-input v-model="projectReportForm.riskResolution" type="textarea" placeholder="请输入风险及解决措施" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="周报情况说明" prop="informationNote">
|
|
|
|
|
<el-input v-model="projectReportForm.informationNote" type="textarea" placeholder="请输入周报情况说明" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12" v-show="false">
|
|
|
|
|
<el-form-item label="排序号" prop="sortOrder">
|
|
|
|
|
<el-input v-model="projectReportForm.sortOrder" placeholder="请输入排序号" clearable />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="合同ID" prop="contractId">
|
|
|
|
|
<el-input v-model="projectReportForm.contractId" placeholder="请输入合同ID" clearable />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-col :span="12" v-show="false">
|
|
|
|
|
<el-form-item label="附件ID" prop="ossId">
|
|
|
|
|
<el-input v-model="projectReportForm.ossId" placeholder="请输入附件ID" clearable />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
@ -385,7 +420,7 @@
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup name="ContractInfoEdit" lang="ts">
|
|
|
|
|
<script setup name="ProjectReportEdit" lang="ts">
|
|
|
|
|
import { ContractMaterialVO, ContractprojectReportForm } from '@/api/oa/erp/contractMaterial/types';
|
|
|
|
|
import { getBaseUnitInfoList } from '@/api/oa/base/unitInfo';
|
|
|
|
|
import { getRuleGenerateCode } from '@/api/system/codeRule';
|
|
|
|
|
@ -416,7 +451,7 @@ import {
|
|
|
|
|
ProjectReportDetailForm,
|
|
|
|
|
ProjectReportDetailFormEx
|
|
|
|
|
} from '@/api/oa/erp/projectReportDetail/types';
|
|
|
|
|
import { fa } from 'element-plus/es/locale/index.mjs';
|
|
|
|
|
import { fa, tr } from 'element-plus/es/locale/index.mjs';
|
|
|
|
|
import ProjectSelect from '@/components/ProjectSelect/index.vue';
|
|
|
|
|
|
|
|
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
|
|
@ -532,7 +567,6 @@ const getList = async () => {
|
|
|
|
|
// loading.value = true;
|
|
|
|
|
const res = await listProjectReport(queryParams.value);
|
|
|
|
|
projectReportList.value = res.rows;
|
|
|
|
|
total.value = res.total;
|
|
|
|
|
// loading.value = false;
|
|
|
|
|
};
|
|
|
|
|
//根据项目名称回调项目信息
|
|
|
|
|
@ -591,7 +625,15 @@ const ReportDialog = reactive<DialogOption>({
|
|
|
|
|
|
|
|
|
|
const projectReportDetailFormRef = ref<ElFormInstance>();
|
|
|
|
|
const projectReportDetailList = ref<ProjectReportDetailVO[]>([]);
|
|
|
|
|
|
|
|
|
|
const ids = ref<Array<string | number>>([]);
|
|
|
|
|
const single = ref(true);
|
|
|
|
|
const multiple = ref(true);
|
|
|
|
|
/** 多选框选中数据 */
|
|
|
|
|
const handleSelectionChange = (selection: ProjectReportDetailVO[]) => {
|
|
|
|
|
ids.value = selection.map((item) => item.reportDetailId);
|
|
|
|
|
single.value = selection.length != 1;
|
|
|
|
|
multiple.value = !selection.length;
|
|
|
|
|
};
|
|
|
|
|
// 计算属性:检查项目周报明细列表的第一行是否有数据
|
|
|
|
|
const hasReportDetails = computed(() => {
|
|
|
|
|
return (
|
|
|
|
|
@ -699,15 +741,82 @@ const projectReportFormQuery = ref<ProjectReportDetailQuery>({
|
|
|
|
|
const reportRules = {
|
|
|
|
|
tasksCompleted: [{ required: true, message: '本周完成工作不能为空', trigger: 'blur' }],
|
|
|
|
|
nextPlan: [{ required: true, message: '下周计划不能为空', trigger: 'blur' }],
|
|
|
|
|
secondaryPhase: [{ required: true, message: '二级进度阶段不能为空', trigger: 'blur' }]
|
|
|
|
|
secondaryPhase: [{ required: true, message: '二级进度阶段不能为空', trigger: 'blur' }],
|
|
|
|
|
plannedCompletionRate: [
|
|
|
|
|
{ required: false, message: '请填写计划完成率', trigger: 'blur' },
|
|
|
|
|
{
|
|
|
|
|
validator: (rule: any, value: any, callback: any) => {
|
|
|
|
|
if (value === null || value === undefined || value === '') {
|
|
|
|
|
callback();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 转换为数字
|
|
|
|
|
const numValue = Number(value);
|
|
|
|
|
// 检查是否为数字
|
|
|
|
|
if (isNaN(numValue)) {
|
|
|
|
|
callback(new Error('请输入有效的数字'));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 检查是否在0-1之间
|
|
|
|
|
if (numValue < 0 || numValue > 1) {
|
|
|
|
|
callback(new Error('请输入0-1之间的数字'));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 检查小数位数(可选)
|
|
|
|
|
const decimalPlaces = value.toString().split('.')[1];
|
|
|
|
|
if (decimalPlaces && decimalPlaces.length > 2) {
|
|
|
|
|
callback(new Error('最多支持两位小数'));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
callback();
|
|
|
|
|
},
|
|
|
|
|
trigger: 'blur'
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
};
|
|
|
|
|
// 验证计划完成率输入
|
|
|
|
|
const validatePlannedCompletionRate = (value: string) => {
|
|
|
|
|
if (!value) return;
|
|
|
|
|
// 转换为数字
|
|
|
|
|
const numValue = Number(value);
|
|
|
|
|
// 如果输入无效或超出范围,重置为有效值
|
|
|
|
|
if (isNaN(numValue)) {
|
|
|
|
|
projectReportForm.value.plannedCompletionRate = '';
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 限制在0-1之间
|
|
|
|
|
if (numValue < 0) {
|
|
|
|
|
projectReportForm.value.plannedCompletionRate = 0;
|
|
|
|
|
} else if (numValue > 1) {
|
|
|
|
|
projectReportForm.value.plannedCompletionRate = 1;
|
|
|
|
|
} else {
|
|
|
|
|
// 限制小数位数(可选)
|
|
|
|
|
const decimalPlaces = value.split('.')[1];
|
|
|
|
|
if (decimalPlaces && decimalPlaces.length > 2) {
|
|
|
|
|
projectReportForm.value.plannedCompletionRate = parseFloat(numValue.toFixed(2));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
// 计算属性:格式化显示计划完成率
|
|
|
|
|
const formattedPlannedCompletionRate = computed(() => {
|
|
|
|
|
if (projectReportForm.value.plannedCompletionRate === null || projectReportForm.value.plannedCompletionRate === undefined) {
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 新增周报明细
|
|
|
|
|
const handleAddReport = () => {
|
|
|
|
|
resetProjectReportForm();
|
|
|
|
|
projectReportForm.value.contractId = form.value.contractId;
|
|
|
|
|
ReportDialog.visible = true;
|
|
|
|
|
ReportDialog.title = '新增周报明细';
|
|
|
|
|
const value = Number(projectReportForm.value.plannedCompletionRate);
|
|
|
|
|
if (isNaN(value)) return '';
|
|
|
|
|
|
|
|
|
|
// 转换为百分比显示(保留2位小数)
|
|
|
|
|
return `${(value * 100).toFixed(2)}%`;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
/** 删除按钮操作 */
|
|
|
|
|
const handleDelete = async (row?: ProjectReportDetailVO) => {
|
|
|
|
|
const _reportDetailIds = row?.reportDetailId || ids.value;
|
|
|
|
|
await proxy?.$modal.confirm('是否确认删除项目周报明细编号为"' + _reportDetailIds + '"的数据项?').finally(() => (buttonLoading.value = false));
|
|
|
|
|
await delProjectReportDetail(_reportDetailIds);
|
|
|
|
|
proxy?.$modal.msgSuccess('删除成功');
|
|
|
|
|
await getProjectDetail();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 编辑物料
|
|
|
|
|
@ -824,53 +933,54 @@ const getWorkWeek = (dateString) => {
|
|
|
|
|
// 初始化默认日期
|
|
|
|
|
const initDefaultDate = () => {
|
|
|
|
|
if (routeParams.value.type === 'add') {
|
|
|
|
|
// 尝试从缓存读取数据
|
|
|
|
|
const cachedFormData = proxy?.$cache.local.getJSON(CACHE_KEYS.PROJECT_REPORT_DRAFT);
|
|
|
|
|
const cachedDetailData = proxy?.$cache.local.getJSON(CACHE_KEYS.PROJECT_REPORT_DETAIL_DRAFT);
|
|
|
|
|
// 如果有传入的 reportData,使用传入的数据,不读取缓存
|
|
|
|
|
if (!routeParams.value.reportData) {
|
|
|
|
|
// 没有传入数据,尝试从缓存读取
|
|
|
|
|
const cachedFormData = proxy?.$cache.local.getJSON(CACHE_KEYS.PROJECT_REPORT_DRAFT);
|
|
|
|
|
const cachedDetailData = proxy?.$cache.local.getJSON(CACHE_KEYS.PROJECT_REPORT_DETAIL_DRAFT);
|
|
|
|
|
|
|
|
|
|
if (cachedFormData) {
|
|
|
|
|
// 恢复表单数据
|
|
|
|
|
Object.assign(form.value, cachedFormData);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (cachedDetailData) {
|
|
|
|
|
// 恢复明细数据
|
|
|
|
|
Object.assign(projectReportForm.value, cachedDetailData);
|
|
|
|
|
|
|
|
|
|
// 如果缓存中有fillTime,设置日期部分
|
|
|
|
|
if (projectReportForm.value.fillTime) {
|
|
|
|
|
const [date] = projectReportForm.value.fillTime.split(' ');
|
|
|
|
|
if (date) {
|
|
|
|
|
datePart.value = date;
|
|
|
|
|
// 重新计算工作周
|
|
|
|
|
projectReportForm.value.currentWorkWeek = getWorkWeek(date);
|
|
|
|
|
}
|
|
|
|
|
if (cachedFormData) {
|
|
|
|
|
// 恢复表单数据
|
|
|
|
|
Object.assign(form.value, cachedFormData);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 如果没有缓存数据,设置默认值
|
|
|
|
|
const now = new Date();
|
|
|
|
|
|
|
|
|
|
// 格式化日期为 YYYY-MM-DD
|
|
|
|
|
const year = now.getFullYear();
|
|
|
|
|
const month = String(now.getMonth() + 1).padStart(2, '0');
|
|
|
|
|
const day = String(now.getDate()).padStart(2, '0');
|
|
|
|
|
const dateStr = `${year}-${month}-${day}`;
|
|
|
|
|
|
|
|
|
|
// 格式化时间为 HH:mm:ss(用于保存)
|
|
|
|
|
const hours = String(now.getHours()).padStart(2, '0');
|
|
|
|
|
const minutes = String(now.getMinutes()).padStart(2, '0');
|
|
|
|
|
const seconds = String(now.getSeconds()).padStart(2, '0');
|
|
|
|
|
const timeStr = `${hours}:${minutes}:${seconds}`;
|
|
|
|
|
|
|
|
|
|
// 设置日期部分
|
|
|
|
|
datePart.value = dateStr;
|
|
|
|
|
|
|
|
|
|
// 组合成完整的日期时间字符串(带当前时间)
|
|
|
|
|
projectReportForm.value.fillTime = `${dateStr} ${timeStr}`;
|
|
|
|
|
|
|
|
|
|
// 计算工作周
|
|
|
|
|
projectReportForm.value.currentWorkWeek = getWorkWeek(dateStr);
|
|
|
|
|
if (cachedDetailData) {
|
|
|
|
|
// 恢复明细数据
|
|
|
|
|
Object.assign(projectReportForm.value, cachedDetailData);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 设置日期部分和 fillTime
|
|
|
|
|
const now = new Date();
|
|
|
|
|
|
|
|
|
|
// 格式化日期为 YYYY-MM-DD
|
|
|
|
|
const year = now.getFullYear();
|
|
|
|
|
const month = String(now.getMonth() + 1).padStart(2, '0');
|
|
|
|
|
const day = String(now.getDate()).padStart(2, '0');
|
|
|
|
|
const dateStr = `${year}-${month}-${day}`;
|
|
|
|
|
|
|
|
|
|
// 格式化时间为 HH:mm:ss(用于保存)
|
|
|
|
|
const hours = String(now.getHours()).padStart(2, '0');
|
|
|
|
|
const minutes = String(now.getMinutes()).padStart(2, '0');
|
|
|
|
|
const seconds = String(now.getSeconds()).padStart(2, '0');
|
|
|
|
|
const timeStr = `${hours}:${minutes}:${seconds}`;
|
|
|
|
|
|
|
|
|
|
// 设置日期部分
|
|
|
|
|
datePart.value = dateStr;
|
|
|
|
|
|
|
|
|
|
// 组合成完整的日期时间字符串(带当前时间)
|
|
|
|
|
// 如果已有 fillTime(从缓存或传入数据),使用已有的,否则设置新的
|
|
|
|
|
if (!projectReportForm.value.fillTime) {
|
|
|
|
|
projectReportForm.value.fillTime = `${dateStr} ${timeStr}`;
|
|
|
|
|
} else {
|
|
|
|
|
// 确保 fillTime 是 DateTime 格式,如果只有日期部分,添加时间部分
|
|
|
|
|
if (projectReportForm.value.fillTime && !projectReportForm.value.fillTime.includes(' ')) {
|
|
|
|
|
projectReportForm.value.fillTime = `${projectReportForm.value.fillTime} ${timeStr}`;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 计算工作周
|
|
|
|
|
projectReportForm.value.currentWorkWeek = getWorkWeek(dateStr);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
@ -1019,6 +1129,13 @@ const handleClearDraft = () => {
|
|
|
|
|
datePart.value = '';
|
|
|
|
|
initDefaultDate();
|
|
|
|
|
};
|
|
|
|
|
const getProjectDetail = async () => {
|
|
|
|
|
const res = await listProjectReportDetail(projectReportFormQuery.value);
|
|
|
|
|
buttonLoading.value = true;
|
|
|
|
|
projectReportDetailList.value = res.rows;
|
|
|
|
|
total.value = res.total;
|
|
|
|
|
buttonLoading.value = false;
|
|
|
|
|
};
|
|
|
|
|
/** 提交按钮 */
|
|
|
|
|
const submitForm = async (status: string, mode: boolean) => {
|
|
|
|
|
try {
|
|
|
|
|
@ -1125,14 +1242,16 @@ onMounted(async () => {
|
|
|
|
|
const reportData = JSON.parse(decodeURIComponent(reportDataStr));
|
|
|
|
|
Object.assign(form.value, reportData);
|
|
|
|
|
if (routeParams.value.type === 'add') {
|
|
|
|
|
initDefaultDate();
|
|
|
|
|
Object.assign(projectReportForm.value, reportData);
|
|
|
|
|
projectReportForm.value.informationNote = '';
|
|
|
|
|
} else if (routeParams.value.type === 'view') {
|
|
|
|
|
Object.assign(projectReportFormQuery.value, reportData);
|
|
|
|
|
Object.assign(projectReportFormQuery.value, reportData.reportId);
|
|
|
|
|
const res = await listProjectReportDetail(projectReportFormQuery.value);
|
|
|
|
|
console.log()
|
|
|
|
|
buttonLoading.value = true;
|
|
|
|
|
projectReportDetailList.value = res.rows;
|
|
|
|
|
console.log(projectReportDetailList.value);
|
|
|
|
|
total.value = res.total;
|
|
|
|
|
buttonLoading.value = false;
|
|
|
|
|
}
|
|
|
|
|
proxy?.$modal.closeLoading();
|
|
|
|
|
} else if (routeParams.value.type === 'add') {
|
|
|
|
|
|