合并
This commit is contained in:
@ -6,7 +6,7 @@ VITE_APP_ENV = 'development'
|
|||||||
|
|
||||||
# 开发环境
|
# 开发环境
|
||||||
# 李陈杰 209
|
# 李陈杰 209
|
||||||
VITE_APP_BASE_API = 'http://192.168.110.180:8899'
|
VITE_APP_BASE_API = 'http://192.168.110.188:8899'
|
||||||
# 曾涛
|
# 曾涛
|
||||||
# VITE_APP_BASE_API = 'http://192.168.110.180:8899'
|
# VITE_APP_BASE_API = 'http://192.168.110.180:8899'
|
||||||
# 罗成
|
# 罗成
|
||||||
|
BIN
public/daolu.xlsx
Normal file
BIN
public/daolu.xlsx
Normal file
Binary file not shown.
BIN
public/dikuai.xlsx
Normal file
BIN
public/dikuai.xlsx
Normal file
Binary file not shown.
@ -546,7 +546,7 @@ const handleTerminationTask = async () => {
|
|||||||
if (isDrawing.value) {
|
if (isDrawing.value) {
|
||||||
isShowTermination.value = true;
|
isShowTermination.value = true;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
detailFormTeRef.value.getInfo(props.businessId);
|
detailFormTeRef.value.getInfo(props.businessId1);
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -165,7 +165,8 @@ const getTableData = async () => {
|
|||||||
loading.value = true;
|
loading.value = true;
|
||||||
const params = {
|
const params = {
|
||||||
projectId: currentProject.value?.id,
|
projectId: currentProject.value?.id,
|
||||||
sheet: queryForm.value.sheet
|
sheet: queryForm.value.sheet,
|
||||||
|
versions: queryForm.value.versions
|
||||||
};
|
};
|
||||||
const res = await getTreeLimit(params);
|
const res = await getTreeLimit(params);
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
|
@ -165,7 +165,7 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="closeDialog">取消</el-button>
|
<el-button @click="closeDialog">取消</el-button>
|
||||||
<el-button type="primary" @click="submitForm(formRef)">确定</el-button>
|
<el-button type="primary" @click="submitForm(formRef)" :loading="loadingBtn">确定</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<el-dialog title="详情" v-model="detailDialog" width="75%" draggable>
|
<el-dialog title="详情" v-model="detailDialog" width="75%" draggable>
|
||||||
@ -228,7 +228,7 @@ const rules = ref({
|
|||||||
content: [{ required: true, message: '请输入内容', trigger: 'blur' }]
|
content: [{ required: true, message: '请输入内容', trigger: 'blur' }]
|
||||||
});
|
});
|
||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
|
const loadingBtn = ref();
|
||||||
//字典获取数据
|
//字典获取数据
|
||||||
const getTabsList = async () => {
|
const getTabsList = async () => {
|
||||||
const res = await getDicts('subcontracting_type');
|
const res = await getDicts('subcontracting_type');
|
||||||
@ -457,6 +457,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
|
|||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
loadingBtn.value = true;
|
||||||
const newSelectionData = selectionData.value.filter((item) => item.quantity != '' && item.quantity != null);
|
const newSelectionData = selectionData.value.filter((item) => item.quantity != '' && item.quantity != null);
|
||||||
if (newSelectionData.some((item) => item.selectNum == '' || item.selectNum == null)) {
|
if (newSelectionData.some((item) => item.selectNum == '' || item.selectNum == null)) {
|
||||||
ElMessage.error('存在未填写数量的工程或费用名称,请检查');
|
ElMessage.error('存在未填写数量的工程或费用名称,请检查');
|
||||||
@ -488,6 +489,8 @@ const submitForm = async (formEl: FormInstance | undefined) => {
|
|||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
|
} finally {
|
||||||
|
loadingBtn.value = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log('error submit!', fields);
|
console.log('error submit!', fields);
|
||||||
@ -544,7 +547,7 @@ const handleDetail = (row: any) => {
|
|||||||
getDetails(row);
|
getDetails(row);
|
||||||
};
|
};
|
||||||
const getDetails = (row: any) => {
|
const getDetails = (row: any) => {
|
||||||
getDetailsList({ id: row.id, type: '1' }).then((res) => {
|
getDetailsList({ id: row.id, type: '1', projectId: currentProject.value?.id }).then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
detailData.value = res.data;
|
detailData.value = res.data;
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,13 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" v-if="reviewStatus && reviewStatus == 'draft'" @click="clickApprovalSheet()">审核</el-button>
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
v-if="reviewStatus && reviewStatus == 'draft'"
|
||||||
|
@click="clickApprovalSheet()"
|
||||||
|
v-hasPermi="['tender:tenderPlanLimitList:getVersionDetail']"
|
||||||
|
>审核</el-button
|
||||||
|
>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button
|
<el-button
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="content-box">
|
<div class="content-box">
|
||||||
<el-table :data="data" @selection-change="handleSelectionChange">
|
<el-table :data="data" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="index" label="序号" width="55" align="center" />
|
||||||
<el-table-column align="center" prop="projectName" label="工程名称" />
|
<el-table-column align="center" prop="projectName" label="工程名称" />
|
||||||
<el-table-column align="center" prop="serialNumber" label="编号" />
|
<el-table-column align="center" prop="serialNumber" label="编号" />
|
||||||
<el-table-column align="center" prop="to" label="致" />
|
<el-table-column align="center" prop="to" label="致" />
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="content-box">
|
<div class="content-box">
|
||||||
<el-table :data="data" style="width: 100%" @selection-change="handleSelectionChange">
|
<el-table :data="data" style="width: 100%" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="index" width="55" label="序号" align="center" />
|
||||||
<el-table-column align="center" prop="projectName" label="工程名称" />
|
<el-table-column align="center" prop="projectName" label="工程名称" />
|
||||||
<el-table-column align="center" prop="submitUnit" label="提出单位" />
|
<el-table-column align="center" prop="submitUnit" label="提出单位" />
|
||||||
<el-table-column align="center" prop="specialty" label="专业">
|
<el-table-column align="center" prop="specialty" label="专业">
|
||||||
@ -30,7 +30,7 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
<el-button link type="primary" icon="View" @click="handleViewInfo(scope.row)" class="ml-3"> 查看流程 </el-button>
|
<el-button link type="primary" icon="View" @click="handleViewInfo(scope.row)" class="ml-3"> 查看流程 </el-button>
|
||||||
<el-button link type="success" icon="View" @click="handleDetail(scope.row)" class="ml-3"> 详情 </el-button>
|
<el-button link type="success" icon="View" @click="handleDetail(scope.row)" class="ml-3"> 详情 </el-button>
|
||||||
<el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)"> 删除 </el-button>
|
<!-- <el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)"> 删除 </el-button> -->
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
@ -36,12 +36,42 @@
|
|||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="工程名称">
|
<el-form-item label="工程名称">
|
||||||
<el-input v-model="form.projectName" />
|
<el-input disabled v-model="form.projectName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="提出单位">
|
<el-form-item label="提出单位">
|
||||||
<el-input v-model="form.submitUnit" />
|
<el-input v-model="form.submitUnit" placeholder="请输入提出单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<!-- 卷册名称 & 附图 -->
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="卷册号">
|
||||||
|
<!-- <el-input v-model="form.volumeName" /> -->
|
||||||
|
<el-select
|
||||||
|
id="projectSelect"
|
||||||
|
v-model="form.volumeNumber"
|
||||||
|
placeholder="请选择原卷册号"
|
||||||
|
clearable
|
||||||
|
filterable
|
||||||
|
@change="handleSelect"
|
||||||
|
style="width: 150px; margin-right: 20px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="project in volumeCatalogList"
|
||||||
|
:key="project.volumeNumber"
|
||||||
|
:label="project.volumeNumber"
|
||||||
|
:value="project.volumeNumber"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<!-- 卷册号 -->
|
||||||
|
<el-form-item label="卷册名称">
|
||||||
|
<el-input disabled v-model="form.volumeName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -50,7 +80,7 @@
|
|||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="专业">
|
<el-form-item label="专业">
|
||||||
<el-select v-model="form.specialty" placeholder="">
|
<el-select disabled v-model="form.specialty" placeholder="请选择专业">
|
||||||
<el-option v-for="item in des_user_major" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in des_user_major" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -62,27 +92,11 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<!-- 卷册名称 & 附图 -->
|
|
||||||
<el-row :gutter="20">
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="卷册名称">
|
|
||||||
<el-input v-model="form.volumeName" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="附图">
|
<el-form-item label="附图">
|
||||||
<file-Upload v-model="form.attachmentsImg" :file-type="['pdf', 'png', 'jpg', 'jpeg', 'gif', 'bmp']">
|
<file-Upload v-model="form.attachmentsImg" :file-type="['pdf', 'png', 'jpg', 'jpeg', 'gif', 'bmp']">
|
||||||
<el-button type="primary">上传附件</el-button>
|
<el-button type="primary">上传附件</el-button>
|
||||||
</file-Upload>
|
</file-Upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
<!-- 卷册号 -->
|
|
||||||
<el-form-item label="卷册号">
|
|
||||||
<el-input v-model="form.volumeNumber" />
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<!-- 变更原因 -->
|
<!-- 变更原因 -->
|
||||||
<el-form-item label="变更原因">
|
<el-form-item label="变更原因">
|
||||||
<el-checkbox-group v-model="form.changeReasons">
|
<el-checkbox-group v-model="form.changeReasons">
|
||||||
@ -103,7 +117,7 @@
|
|||||||
<file-upload v-model="form.attachments" :limit="1" :file-type="['pdf']"></file-upload>
|
<file-upload v-model="form.attachments" :limit="1" :file-type="['pdf']"></file-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="变更费用估算" prop="costEstimation">
|
<el-form-item label="变更费用估算" prop="costEstimation">
|
||||||
<el-input v-model="form.costEstimation" :rows="6" placeholder="请输入变更费用估算" />
|
<el-input v-model="form.costEstimation" :rows="6" type="number" placeholder="请输入变更费用估算" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-divider class="mb-10! mt-10!">施工项目部</el-divider>
|
<el-divider class="mb-10! mt-10!">施工项目部</el-divider>
|
||||||
<el-form-item label="项目负责人" prop="contractorLeader">
|
<el-form-item label="项目负责人" prop="contractorLeader">
|
||||||
@ -177,6 +191,7 @@ import { useUserStoreHook } from '@/store/modules/user';
|
|||||||
import { listByIds } from '@/api/system/oss';
|
import { listByIds } from '@/api/system/oss';
|
||||||
import { addContactnotice, getContactnotice, updateContactnotice } from '@/api/cory/contactnotice';
|
import { addContactnotice, getContactnotice, updateContactnotice } from '@/api/cory/contactnotice';
|
||||||
const { des_user_major } = toRefs(proxy?.useDict('des_user_major'));
|
const { des_user_major } = toRefs(proxy?.useDict('des_user_major'));
|
||||||
|
import { catalogList } from '@/api/design/designChange';
|
||||||
|
|
||||||
// 获取用户 store
|
// 获取用户 store
|
||||||
const userStore = useUserStoreHook();
|
const userStore = useUserStoreHook();
|
||||||
@ -221,11 +236,11 @@ const initFormData = {
|
|||||||
id: undefined,
|
id: undefined,
|
||||||
projectId: currentProject.value?.id,
|
projectId: currentProject.value?.id,
|
||||||
projectType: '',
|
projectType: '',
|
||||||
projectName: '',
|
projectName: currentProject.value?.name,
|
||||||
serialNumber: '',
|
serialNumber: '',
|
||||||
to: '',
|
to: '',
|
||||||
subject: '',
|
subject: '',
|
||||||
costEstimation: '',
|
costEstimation: 0,
|
||||||
content: '',
|
content: '',
|
||||||
attachments: '',
|
attachments: '',
|
||||||
contractorLeader: '',
|
contractorLeader: '',
|
||||||
@ -275,13 +290,27 @@ const handleClose = () => {
|
|||||||
buttonLoading.value = false;
|
buttonLoading.value = false;
|
||||||
};
|
};
|
||||||
const { form, rules } = toRefs(data);
|
const { form, rules } = toRefs(data);
|
||||||
|
const volumeCatalogList = ref([]);
|
||||||
|
let volumeMap = new Map();
|
||||||
/** 表单重置 */
|
/** 表单重置 */
|
||||||
const reset = () => {
|
const reset = () => {
|
||||||
form.value = { ...initFormData };
|
form.value = { ...initFormData };
|
||||||
leaveFormRef.value?.resetFields();
|
leaveFormRef.value?.resetFields();
|
||||||
};
|
};
|
||||||
|
// 获取卷册号列表
|
||||||
|
const getJuance = async () => {
|
||||||
|
const res = await catalogList(currentProject.value?.id);
|
||||||
|
volumeCatalogList.value = res.data;
|
||||||
|
volumeCatalogList.value.forEach((e) => {
|
||||||
|
volumeMap.set(e.volumeNumber, e);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const handleSelect = (val) => {
|
||||||
|
let obj = volumeMap.get(val);
|
||||||
|
console.log(obj);
|
||||||
|
form.value.volumeName = obj.documentName;
|
||||||
|
form.value.specialty = obj.specialty;
|
||||||
|
};
|
||||||
/** 获取详情 */
|
/** 获取详情 */
|
||||||
const getInfo = () => {
|
const getInfo = () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
@ -345,7 +374,8 @@ const handleStartWorkFlow = async (data: LeaveForm) => {
|
|||||||
//流程变量
|
//流程变量
|
||||||
taskVariables.value = {
|
taskVariables.value = {
|
||||||
// leave4/5 使用的流程变量
|
// leave4/5 使用的流程变量
|
||||||
userList: ['1', '3', '4']
|
userList: ['1', '3', '4'],
|
||||||
|
costEstimation: form.value.costEstimation
|
||||||
};
|
};
|
||||||
submitFormData.value.variables = taskVariables.value;
|
submitFormData.value.variables = taskVariables.value;
|
||||||
const resp = await startWorkFlow(submitFormData.value);
|
const resp = await startWorkFlow(submitFormData.value);
|
||||||
@ -402,6 +432,7 @@ onMounted(() => {
|
|||||||
routeParams.value = proxy.$route.query;
|
routeParams.value = proxy.$route.query;
|
||||||
thumbnailUrl.value = proxy.$route.query.thumbnailUrl;
|
thumbnailUrl.value = proxy.$route.query.thumbnailUrl;
|
||||||
reset();
|
reset();
|
||||||
|
getJuance();
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') {
|
if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') {
|
||||||
getInfo();
|
getInfo();
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<el-table-column label="序号" type="index" width="60" align="center" />
|
<el-table-column label="序号" type="index" width="60" align="center" />
|
||||||
<el-table-column label="处理状态" align="center" prop="status">
|
<el-table-column label="处理状态" align="center" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="safety_inspection_type" :value="scope.row.status" />
|
<dict-tag :options="wf_business_status" :value="scope.row.status" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="检查人" align="center" prop="correctorName" />
|
<el-table-column label="检查人" align="center" prop="correctorName" />
|
||||||
@ -46,13 +46,16 @@
|
|||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="220">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="220">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-space>
|
<el-space>
|
||||||
<el-button link type="primary" icon="View" @click="handleDetail(scope.row)" v-hasPermi="['safety:safetyInspection:query']">
|
<el-button link type="primary" icon="View" @click="handleDetail(scope.row)"> 详情 </el-button>
|
||||||
详情
|
<el-button link type="primary" icon="Edit" @click="handleAddApp(scope.row)" v-if="scope.row.status && scope.row.status == 'draft'"
|
||||||
|
>审批
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- <el-button link type="success" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['safety:safetyInspection:edit']">修改 </el-button> -->
|
<el-button link type="primary" icon="View" @click="handleAddApp(scope.row)" v-if="scope.row.status && scope.row.status != 'draft'"
|
||||||
<el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['safety:safetyInspection:remove']">
|
>查看流程
|
||||||
|
</el-button>
|
||||||
|
<!-- <el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['safety:safetyInspection:remove']">
|
||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button> -->
|
||||||
</el-space>
|
</el-space>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -191,9 +194,10 @@ const userStore = useUserStoreHook();
|
|||||||
// 从 store 中获取项目列表和当前选中的项目
|
// 从 store 中获取项目列表和当前选中的项目
|
||||||
const currentProject = computed(() => userStore.selectedProject);
|
const currentProject = computed(() => userStore.selectedProject);
|
||||||
|
|
||||||
const { safety_inspection_violation_type, safety_inspection_check_type, review_type, safety_inspection_type } = toRefs<any>(
|
const { safety_inspection_violation_type, safety_inspection_check_type, review_type, safety_inspection_type, wf_business_status } = toRefs<any>(
|
||||||
useDict('safety_inspection_violation_type', 'safety_inspection_check_type', 'review_type', 'safety_inspection_type')
|
useDict('safety_inspection_violation_type', 'safety_inspection_check_type', 'review_type', 'safety_inspection_type', 'wf_business_status')
|
||||||
);
|
);
|
||||||
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
const safetyInspectionDetail = ref<SafetyInspectionVO>();
|
const safetyInspectionDetail = ref<SafetyInspectionVO>();
|
||||||
|
|
||||||
const form = reactive({
|
const form = reactive({
|
||||||
@ -236,6 +240,18 @@ const handleDetail = async (row) => {
|
|||||||
rectificationFileList.value = rectificationFileRes.data;
|
rectificationFileList.value = rectificationFileRes.data;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
const handleAddApp = (row) => {
|
||||||
|
// 添加审批
|
||||||
|
proxy.$tab.closePage(proxy.$route);
|
||||||
|
proxy.$router.push({
|
||||||
|
path: `/approval/workMessage/indexEdit`,
|
||||||
|
query: {
|
||||||
|
id: row.id,
|
||||||
|
|
||||||
|
type: 'update'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
const getList = (row) => {};
|
const getList = (row) => {};
|
||||||
const handleDelete = (row) => {};
|
const handleDelete = (row) => {};
|
||||||
</script>
|
</script>
|
||||||
|
@ -1,15 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="p-2">
|
<div class="p-2">
|
||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
:leave-active-class="proxy?.animate.searchAnimate.leave">
|
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<el-form-item label="模板类型" prop="projectType">
|
<el-form-item label="模板类型" prop="projectType">
|
||||||
<el-select v-model="queryParams.projectType" placeholder="请选择模板类型" clearable filterable
|
<el-select v-model="queryParams.projectType" placeholder="请选择模板类型" clearable filterable @change="selectType">
|
||||||
@change="selectType">
|
<el-option v-for="item in projectTypeOptions" :key="item.name" :label="item.name" :value="item.name"> </el-option>
|
||||||
<el-option v-for="item in projectTypeOptions" :key="item.name" :label="item.name" :value="item.name">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item>
|
<!-- <el-form-item>
|
||||||
@ -24,8 +21,9 @@
|
|||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="primary" plain icon="Plus" :disabled="addSingle" @click="handleAdd"
|
<el-button type="primary" plain icon="Plus" :disabled="addSingle" @click="handleAdd" v-hasPermi="['cory:contactnotice:add']"
|
||||||
v-hasPermi="['quality:qualityInspection:add']">新增</el-button>
|
>新增</el-button
|
||||||
|
>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- <el-col :span="1.5">
|
<!-- <el-col :span="1.5">
|
||||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['quality:qualityInspection:edit']"
|
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['quality:qualityInspection:edit']"
|
||||||
@ -33,8 +31,9 @@
|
|||||||
>
|
>
|
||||||
</el-col> -->
|
</el-col> -->
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
|
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['cory:contactnotice:remove']"
|
||||||
v-hasPermi="['quality:qualityInspection:remove']">删除</el-button>
|
>删除</el-button
|
||||||
|
>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- <el-col :span="1.5">
|
<!-- <el-col :span="1.5">
|
||||||
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['quality:qualityInspection:export']">导出</el-button>
|
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['quality:qualityInspection:export']">导出</el-button>
|
||||||
@ -44,8 +43,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<!-- card body -->
|
<!-- card body -->
|
||||||
<Notice @selection-change="handleSelectionChange" :data="tableData"></Notice>
|
<Notice @selection-change="handleSelectionChange" :data="tableData"></Notice>
|
||||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
|
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||||
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-dialog title="新增模板" v-model="dialogVisible" width="800">
|
<el-dialog title="新增模板" v-model="dialogVisible" width="800">
|
||||||
@ -56,14 +54,12 @@
|
|||||||
<div>
|
<div>
|
||||||
<el-form-item label="检查类型" prop="checkType">
|
<el-form-item label="检查类型" prop="checkType">
|
||||||
<el-select v-model="form.checkType" placeholder="请选择检查类型">
|
<el-select v-model="form.checkType" placeholder="请选择检查类型">
|
||||||
<el-option v-for="dict in safety_inspection_check_type" :key="dict.value" :label="dict.label"
|
<el-option v-for="dict in safety_inspection_check_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
||||||
:value="dict.value"></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="违章类型" prop="violationType">
|
<el-form-item label="违章类型" prop="violationType">
|
||||||
<el-select v-model="form.violationType" placeholder="请选择违章类型">
|
<el-select v-model="form.violationType" placeholder="请选择违章类型">
|
||||||
<el-option v-for="dict in safety_inspection_violation_type" :key="dict.value" :label="dict.label"
|
<el-option v-for="dict in safety_inspection_violation_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
||||||
:value="dict.value"></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="巡检结果" prop="inspectionResult">
|
<el-form-item label="巡检结果" prop="inspectionResult">
|
||||||
@ -71,8 +67,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="整改班组" prop="teamId">
|
<el-form-item label="整改班组" prop="teamId">
|
||||||
<el-select v-model="form.teamId" placeholder="请选择整改班组">
|
<el-select v-model="form.teamId" placeholder="请选择整改班组">
|
||||||
<el-option v-for="item in teamOpt" :key="item.value" :label="item.label" :value="item.value"
|
<el-option v-for="item in teamOpt" :key="item.value" :label="item.label" :value="item.value" @click="changeForeman(item.value)" />
|
||||||
@click="changeForeman(item.value)" />
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="整改人" prop="correctorId">
|
<el-form-item label="整改人" prop="correctorId">
|
||||||
@ -87,16 +82,13 @@
|
|||||||
<el-input v-model="form.measure" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.measure" type="textarea" placeholder="请输入内容" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="要求整改期限" prop="rectificationDeadline">
|
<el-form-item label="要求整改期限" prop="rectificationDeadline">
|
||||||
<el-date-picker clearable v-model="form.rectificationDeadline" type="date" value-format="YYYY-MM-DD"
|
<el-date-picker clearable v-model="form.rectificationDeadline" type="date" value-format="YYYY-MM-DD" placeholder="选择要求整改期限" />
|
||||||
placeholder="选择要求整改期限" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="检查附件" prop="checkFile">
|
<el-form-item label="检查附件" prop="checkFile">
|
||||||
<file-upload v-model="form.checkFile" :file-size="20"
|
<file-upload v-model="form.checkFile" :file-size="20" :file-type="['doc', 'docx', 'pdf', 'png', 'jpg', 'jpeg']" />
|
||||||
:file-type="['doc', 'docx', 'pdf', 'png', 'jpg', 'jpeg']" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="整改附件" prop="rectificationFile">
|
<el-form-item label="整改附件" prop="rectificationFile">
|
||||||
<file-upload v-model="form.rectificationFile" :file-size="20"
|
<file-upload v-model="form.rectificationFile" :file-size="20" :file-type="['doc', 'docx', 'pdf', 'png', 'jpg', 'jpeg']" />
|
||||||
:file-type="['doc', 'docx', 'pdf', 'png', 'jpg', 'jpeg']" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||||
@ -308,6 +300,7 @@ const selectType = (value: string) => {
|
|||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
formRef.value?.resetFields();
|
formRef.value?.resetFields();
|
||||||
};
|
};
|
||||||
|
|
||||||
//监听项目id刷新数据
|
//监听项目id刷新数据
|
||||||
const listeningProject = watch(
|
const listeningProject = watch(
|
||||||
() => currentProject.value?.id,
|
() => currentProject.value?.id,
|
||||||
|
482
src/views/cory/workMessage/indexEdit.vue
Normal file
482
src/views/cory/workMessage/indexEdit.vue
Normal file
@ -0,0 +1,482 @@
|
|||||||
|
<template>
|
||||||
|
<div class="p-4 bg-gray-50">
|
||||||
|
<div class="max-w-4xl mx-auto">
|
||||||
|
<!-- 顶部按钮区域 -->
|
||||||
|
<el-card class="mb-4 rounded-lg shadow-sm bg-white border border-gray-100 transition-all hover:shadow-md">
|
||||||
|
<approvalButton
|
||||||
|
@submitForm="submitForm"
|
||||||
|
@approvalVerifyOpen="approvalVerifyOpen"
|
||||||
|
@handleApprovalRecord="handleApprovalRecord"
|
||||||
|
:buttonLoading="buttonLoading"
|
||||||
|
:id="form.id"
|
||||||
|
:status="form.status"
|
||||||
|
:pageType="routeParams.type"
|
||||||
|
/>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<!-- 表单区域 -->
|
||||||
|
<el-card class="rounded-lg shadow-sm bg-white border border-gray-100 transition-all hover:shadow-md overflow-hidden">
|
||||||
|
<div class="p-4 bg-gradient-to-r from-blue-50 to-indigo-50 border-b border-gray-100">
|
||||||
|
<h3 class="text-lg font-semibold text-gray-800">工作联系单审批</h3>
|
||||||
|
</div>
|
||||||
|
<div class="p-6">
|
||||||
|
<div class="w80% ma">
|
||||||
|
<h2 style="text-align: center; margin-top: 5px; font-weight: bold">通知单</h2>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12" style="text-align: left">填报人:{{ safetyInspectionDetail?.creatorName }}</el-col>
|
||||||
|
<el-col :span="12" style="text-align: right">填报时间:{{ safetyInspectionDetail?.createTime }}</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-descriptions :column="2" border style="margin-top: 8px" label-width="160px" size="large">
|
||||||
|
<el-descriptions-item label-align="center" label="检查项目" :span="2" class-name="zebra"
|
||||||
|
>{{ currentProject?.name }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label-align="center" label="检查类型" label-class-name="white">
|
||||||
|
<dict-tag :options="safety_inspection_check_type" :value="safetyInspectionDetail?.checkType" />
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label-align="center" label="违章类型" label-class-name="white">
|
||||||
|
<dict-tag :options="safety_inspection_violation_type" :value="safetyInspectionDetail?.violationType" />
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label-align="center" label="检查时间" class-name="zebra"
|
||||||
|
>{{ safetyInspectionDetail?.checkTime }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label-align="center" label="检查人" class-name="zebra"
|
||||||
|
>{{ safetyInspectionDetail?.creatorName }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label-align="center" label="整改人" label-class-name="white"
|
||||||
|
>{{ safetyInspectionDetail?.correctorName }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label-align="center" label="要求整改期限" label-class-name="white">
|
||||||
|
{{ dayjs(safetyInspectionDetail?.rectificationDeadline).format('YYYY 年 MM 月 DD 日') }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
<el-descriptions border direction="vertical" size="large">
|
||||||
|
<el-descriptions-item label-align="center" label="巡检结果" class-name="none"></el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
<el-descriptions :column="2" border label-width="160px" size="large">
|
||||||
|
<el-descriptions-item label-align="center" label="内容" :span="2" label-class-name="white"
|
||||||
|
>{{ safetyInspectionDetail?.hiddenDanger }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label-align="center" label="检查附件" :span="2" label-class-name="white">
|
||||||
|
<el-space wrap>
|
||||||
|
<div v-for="item in checkFileList" :key="item.ossId">
|
||||||
|
<span v-if="['.png', '.jpg', '.jpeg'].includes(item.fileSuffix)">
|
||||||
|
<image-preview :src="item.url" width="200px" />
|
||||||
|
</span>
|
||||||
|
<span v-else>
|
||||||
|
<el-link :href="`${item.url}`" type="primary" :underline="false" target="_blank">
|
||||||
|
<span> {{ item.originalName }} </span>
|
||||||
|
</el-link>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</el-space>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label-align="center" label="检查状态" :span="2" label-class-name="white">
|
||||||
|
<el-steps style="max-width: 200px" :active="Number(safetyInspectionDetail?.status)" finish-status="finish">
|
||||||
|
<el-step v-for="item in safety_inspection_type" :key="item.value" :title="item.label" />
|
||||||
|
</el-steps>
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
<el-descriptions border direction="vertical" size="large">
|
||||||
|
<el-descriptions-item label-align="center" label="整改情况" class-name="none"></el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
<el-descriptions :column="2" border label-width="160px" size="large">
|
||||||
|
<el-descriptions-item label-align="center" label="班组" label-class-name="white"
|
||||||
|
>{{ safetyInspectionDetail?.teamName }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label-align="center" label="整改日期" label-class-name="white"
|
||||||
|
>{{ safetyInspectionDetail?.rectificationTime }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label-align="center" label="整改措施及完成情况" :span="2" label-class-name="white">
|
||||||
|
{{ safetyInspectionDetail?.measure }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label-align="center" label="整改附件" :span="2" label-class-name="white">
|
||||||
|
<el-space wrap>
|
||||||
|
<div v-for="item in rectificationFileList" :key="item.ossId">
|
||||||
|
<span v-if="['.png', '.jpg', '.jpeg'].includes(item.fileSuffix)">
|
||||||
|
<image-preview :src="item.url" width="200px" />
|
||||||
|
</span>
|
||||||
|
<span v-else>
|
||||||
|
<el-link :href="`${item.url}`" :underline="false" target="_blank">
|
||||||
|
<span> {{ item.originalName }} </span>
|
||||||
|
</el-link>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</el-space>
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
<el-descriptions border direction="vertical" size="large">
|
||||||
|
<el-descriptions-item label-align="center" label="复查结果" class-name="none"></el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
<el-descriptions :column="2" border label-width="160px" size="large">
|
||||||
|
<el-descriptions-item label-align="center" label="复查人" label-class-name="white"
|
||||||
|
>{{ safetyInspectionDetail?.creatorName }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label-align="center" label="复查日期" label-class-name="white"
|
||||||
|
>{{ safetyInspectionDetail?.reviewTime }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label-align="center" label="复查情况" :span="2" label-class-name="white"
|
||||||
|
>{{ safetyInspectionDetail?.review }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<!-- 提交组件 -->
|
||||||
|
<submitVerify ref="submitVerifyRef" :task-variables="taskVariables" @submit-callback="submitCallback" />
|
||||||
|
<approvalRecord ref="approvalRecordRef"></approvalRecord>
|
||||||
|
<!-- 流程选择对话框 -->
|
||||||
|
<el-dialog
|
||||||
|
draggable
|
||||||
|
v-model="dialogVisible.visible"
|
||||||
|
:title="dialogVisible.title"
|
||||||
|
:before-close="handleClose"
|
||||||
|
width="500"
|
||||||
|
class="rounded-lg shadow-lg"
|
||||||
|
>
|
||||||
|
<div class="p-4">
|
||||||
|
<p class="text-gray-600 mb-4">请选择要启动的流程:</p>
|
||||||
|
<el-select v-model="flowCode" placeholder="请选择流程" style="width: 100%">
|
||||||
|
<el-option v-for="item in flowCodeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer p-4 border-t border-gray-100 flex justify-end space-x-3">
|
||||||
|
<el-button @click="handleClose" class="px-4 py-2 border border-gray-300 rounded-md text-gray-700 hover:bg-gray-50 transition-colors"
|
||||||
|
>取消</el-button
|
||||||
|
>
|
||||||
|
<el-button type="primary" @click="submitFlow()" class="px-4 py-2 bg-primary text-white rounded-md hover:bg-primary/90 transition-colors"
|
||||||
|
>确认</el-button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup name="Leave" lang="ts">
|
||||||
|
import { LeaveForm, LeaveQuery, LeaveVO } from '@/api/workflow/leave/types';
|
||||||
|
import { startWorkFlow } from '@/api/workflow/task';
|
||||||
|
import SubmitVerify from '@/components/Process/submitVerify.vue';
|
||||||
|
import ApprovalRecord from '@/components/Process/approvalRecord.vue';
|
||||||
|
import ApprovalButton from '@/components/Process/approvalButton.vue';
|
||||||
|
import { StartProcessBo } from '@/api/workflow/workflowCommon/types';
|
||||||
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
|
import { useUserStoreHook } from '@/store/modules/user';
|
||||||
|
import { listByIds } from '@/api/system/oss';
|
||||||
|
import { dayjs } from 'element-plus';
|
||||||
|
import { useDict } from '@/utils/dict';
|
||||||
|
import { SafetyInspectionVO } from '@/api/safety/safetyInspection/types';
|
||||||
|
// const { des_user_major } = toRefs(proxy?.useDict('des_user_major'));
|
||||||
|
import { getContactnotice } from '@/api/cory/contactnotice';
|
||||||
|
const { safety_inspection_violation_type, safety_inspection_check_type, review_type, safety_inspection_type, wf_business_status } = toRefs<any>(
|
||||||
|
useDict('safety_inspection_violation_type', 'safety_inspection_check_type', 'review_type', 'safety_inspection_type', 'wf_business_status')
|
||||||
|
);
|
||||||
|
|
||||||
|
// 获取用户 store
|
||||||
|
const userStore = useUserStoreHook();
|
||||||
|
// 从 store 中获取项目列表和当前选中的项目
|
||||||
|
const currentProject = computed(() => userStore.selectedProject);
|
||||||
|
const buttonLoading = ref(false);
|
||||||
|
const loading = ref(true);
|
||||||
|
const thumbnailUrl = ref('');
|
||||||
|
//路由参数
|
||||||
|
const routeParams = ref<Record<string, any>>({});
|
||||||
|
const flowCodeOptions = [
|
||||||
|
{
|
||||||
|
value: currentProject.value?.id + '_contactForm',
|
||||||
|
label: '工作联系单审批'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
const flowCode = ref<string>('');
|
||||||
|
const status = ref<string>('');
|
||||||
|
const dialogVisible = reactive<DialogOption>({
|
||||||
|
visible: false,
|
||||||
|
title: '流程定义'
|
||||||
|
});
|
||||||
|
//提交组件
|
||||||
|
const submitVerifyRef = ref<InstanceType<typeof SubmitVerify>>();
|
||||||
|
//审批记录组件
|
||||||
|
const approvalRecordRef = ref<InstanceType<typeof ApprovalRecord>>();
|
||||||
|
const leaveFormRef = ref<ElFormInstance>();
|
||||||
|
const dialog = reactive({
|
||||||
|
visible: false,
|
||||||
|
title: '',
|
||||||
|
isEdit: false
|
||||||
|
});
|
||||||
|
const submitFormData = ref<StartProcessBo>({
|
||||||
|
businessId: '',
|
||||||
|
flowCode: '',
|
||||||
|
variables: {}
|
||||||
|
});
|
||||||
|
const taskVariables = ref<Record<string, any>>({});
|
||||||
|
|
||||||
|
const initFormData = {
|
||||||
|
id: undefined,
|
||||||
|
projectId: currentProject.value?.id,
|
||||||
|
projectType: '',
|
||||||
|
projectName: '',
|
||||||
|
serialNumber: '',
|
||||||
|
to: '',
|
||||||
|
subject: '',
|
||||||
|
costEstimation: '',
|
||||||
|
content: '',
|
||||||
|
attachments: '',
|
||||||
|
contractorLeader: '',
|
||||||
|
contractorDate: '',
|
||||||
|
supervisorLeader: '',
|
||||||
|
supervisorDate: '',
|
||||||
|
ownerRep: '',
|
||||||
|
ownerDate: '',
|
||||||
|
unitName: '',
|
||||||
|
profession: '',
|
||||||
|
applyDate: '',
|
||||||
|
bookName: '',
|
||||||
|
bookNo: '',
|
||||||
|
hasAttachment: '',
|
||||||
|
changeReasons: [],
|
||||||
|
changeContent: '',
|
||||||
|
costEstimate: '',
|
||||||
|
status: ''
|
||||||
|
};
|
||||||
|
const data = reactive({
|
||||||
|
form: { ...initFormData },
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
projectId: currentProject.value?.id,
|
||||||
|
fileName: undefined,
|
||||||
|
fileType: undefined,
|
||||||
|
fileSuffix: undefined,
|
||||||
|
fileStatus: undefined,
|
||||||
|
originalName: undefined,
|
||||||
|
newest: undefined,
|
||||||
|
params: {}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const safetyInspectionDetail = ref<SafetyInspectionVO>();
|
||||||
|
const handleClose = () => {
|
||||||
|
dialogVisible.visible = false;
|
||||||
|
flowCode.value = '';
|
||||||
|
buttonLoading.value = false;
|
||||||
|
};
|
||||||
|
const { form } = toRefs(data);
|
||||||
|
|
||||||
|
/** 表单重置 */
|
||||||
|
const reset = () => {
|
||||||
|
form.value = { ...initFormData };
|
||||||
|
leaveFormRef.value?.resetFields();
|
||||||
|
};
|
||||||
|
|
||||||
|
const checkFileList: any = ref([]);
|
||||||
|
const rectificationFileList: any = ref([]);
|
||||||
|
/** 获取详情 */
|
||||||
|
const getInfo = () => {
|
||||||
|
loading.value = true;
|
||||||
|
buttonLoading.value = false;
|
||||||
|
nextTick(async () => {
|
||||||
|
const res = await getContactnotice(routeParams.value.id);
|
||||||
|
console.log(res.data);
|
||||||
|
const detail = res.data.detail ? JSON.parse(res.data.detail) : {};
|
||||||
|
safetyInspectionDetail.value = { ...res.data, ...detail };
|
||||||
|
if (safetyInspectionDetail.value.checkFile) {
|
||||||
|
const checkFileRes = await listByIds(safetyInspectionDetail.value.checkFile.split(','));
|
||||||
|
checkFileList.value = checkFileRes.data;
|
||||||
|
}
|
||||||
|
if (safetyInspectionDetail.value.rectificationFile) {
|
||||||
|
const rectificationFileRes = await listByIds(safetyInspectionDetail.value.rectificationFile.split(','));
|
||||||
|
rectificationFileList.value = rectificationFileRes.data;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.assign(form.value, safetyInspectionDetail.value);
|
||||||
|
loading.value = false;
|
||||||
|
buttonLoading.value = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const submitFlow = async () => {
|
||||||
|
console.log('form.value', form.value);
|
||||||
|
|
||||||
|
handleStartWorkFlow(form.value);
|
||||||
|
dialogVisible.visible = false;
|
||||||
|
};
|
||||||
|
//提交申请
|
||||||
|
const handleStartWorkFlow = async (data: LeaveForm) => {
|
||||||
|
console.log('data', data);
|
||||||
|
|
||||||
|
try {
|
||||||
|
submitFormData.value.flowCode = flowCode.value;
|
||||||
|
submitFormData.value.businessId = data.id;
|
||||||
|
//流程变量
|
||||||
|
taskVariables.value = {
|
||||||
|
// leave4/5 使用的流程变量
|
||||||
|
userList: ['1', '3', '4']
|
||||||
|
};
|
||||||
|
submitFormData.value.variables = taskVariables.value;
|
||||||
|
const resp = await startWorkFlow(submitFormData.value);
|
||||||
|
if (submitVerifyRef.value) {
|
||||||
|
buttonLoading.value = false;
|
||||||
|
submitVerifyRef.value.openDialog(resp.data.taskId);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
buttonLoading.value = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/** 提交按钮 */
|
||||||
|
const submitForm = (status1: string) => {
|
||||||
|
status.value = status1;
|
||||||
|
submit(status.value, form.value);
|
||||||
|
};
|
||||||
|
//审批记录
|
||||||
|
const handleApprovalRecord = () => {
|
||||||
|
approvalRecordRef.value.init(form.value.id);
|
||||||
|
};
|
||||||
|
//提交回调
|
||||||
|
const submitCallback = async () => {
|
||||||
|
await proxy.$tab.closePage(proxy.$route);
|
||||||
|
proxy.$router.go(-1);
|
||||||
|
};
|
||||||
|
|
||||||
|
//审批
|
||||||
|
const approvalVerifyOpen = async () => {
|
||||||
|
submitVerifyRef.value.openDialog(routeParams.value.taskId);
|
||||||
|
};
|
||||||
|
// 图纸上传成功之后 开始提交
|
||||||
|
const submit = async (status, data) => {
|
||||||
|
form.value = data;
|
||||||
|
if (status === 'draft') {
|
||||||
|
buttonLoading.value = false;
|
||||||
|
proxy?.$modal.msgSuccess('暂存成功');
|
||||||
|
proxy.$tab.closePage(proxy.$route);
|
||||||
|
proxy.$router.go(-1);
|
||||||
|
} else {
|
||||||
|
if ((form.value.status === 'draft' && (flowCode.value === '' || flowCode.value === null)) || routeParams.value.type === 'add') {
|
||||||
|
flowCode.value = flowCodeOptions[0].value;
|
||||||
|
dialogVisible.visible = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//说明启动过先随意穿个参数
|
||||||
|
if (flowCode.value === '' || flowCode.value === null) {
|
||||||
|
flowCode.value = 'xx';
|
||||||
|
}
|
||||||
|
console.log('data', data);
|
||||||
|
await handleStartWorkFlow(data);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
nextTick(async () => {
|
||||||
|
routeParams.value = proxy.$route.query;
|
||||||
|
reset();
|
||||||
|
loading.value = false;
|
||||||
|
if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') {
|
||||||
|
getInfo();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<style scoped lang="scss">
|
||||||
|
/* 全局样式 */
|
||||||
|
:root {
|
||||||
|
--primary: #409eff;
|
||||||
|
--primary-light: #66b1ff;
|
||||||
|
--primary-dark: #3a8ee6;
|
||||||
|
--success: #67c23a;
|
||||||
|
--warning: #e6a23c;
|
||||||
|
--danger: #f56c6c;
|
||||||
|
--info: #909399;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 表单样式优化 */
|
||||||
|
.el-form-item {
|
||||||
|
.el-form-item__label {
|
||||||
|
color: #606266;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-input__inner,
|
||||||
|
.el-select .el-input__inner {
|
||||||
|
border-radius: 4px;
|
||||||
|
transition:
|
||||||
|
border-color 0.2s,
|
||||||
|
box-shadow 0.2s;
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
border-color: var(--primary-light);
|
||||||
|
box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-textarea__inner {
|
||||||
|
border-radius: 4px;
|
||||||
|
transition:
|
||||||
|
border-color 0.2s,
|
||||||
|
box-shadow 0.2s;
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
border-color: var(--primary-light);
|
||||||
|
box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 按钮样式优化 */
|
||||||
|
.el-button {
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: all 0.2s;
|
||||||
|
|
||||||
|
&.is-primary {
|
||||||
|
background-color: var(--primary);
|
||||||
|
border-color: var(--primary);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: var(--primary-light);
|
||||||
|
border-color: var(--primary-light);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
background-color: var(--primary-dark);
|
||||||
|
border-color: var(--primary-dark);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.is-text {
|
||||||
|
color: var(--primary);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--primary-light);
|
||||||
|
background-color: rgba(64, 158, 255, 0.05);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 卡片样式优化 */
|
||||||
|
.el-card {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
/* transform: translateY(-2px); */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 对话框样式优化 */
|
||||||
|
.el-dialog {
|
||||||
|
.el-dialog__header {
|
||||||
|
background-color: #f5f7fa;
|
||||||
|
border-bottom: 1px solid #ebeef5;
|
||||||
|
padding: 15px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__title {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #303133;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__footer {
|
||||||
|
padding: 15px 20px;
|
||||||
|
border-top: 1px solid #ebeef5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -67,7 +67,7 @@
|
|||||||
<el-form-item label="招标计划" prop="tenderId">
|
<el-form-item label="招标计划" prop="tenderId">
|
||||||
<!-- <el-input v-model="form.tenderId" placeholder="请输入招标Id" /> -->
|
<!-- <el-input v-model="form.tenderId" placeholder="请输入招标Id" /> -->
|
||||||
<el-input v-model="form.name" placeholder="请选择招标计划" disabled />
|
<el-input v-model="form.name" placeholder="请选择招标计划" disabled />
|
||||||
<el-button type="primary" @click="handleChoose">选择招标</el-button>
|
<el-button type="primary" @click="handleChoose" v-hasPermi="['ctr:expensesContract:tenderList']">选择招标</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="供应商" prop="contractSupplier">
|
<el-form-item label="供应商" prop="contractSupplier">
|
||||||
<el-input v-model="form.contractSupplier" placeholder="请输入供应商" disabled />
|
<el-input v-model="form.contractSupplier" placeholder="请输入供应商" disabled />
|
||||||
@ -313,7 +313,7 @@ const submitForm = async () => {
|
|||||||
}
|
}
|
||||||
resetForm();
|
resetForm();
|
||||||
ElMessage.success('合同提交成功');
|
ElMessage.success('合同提交成功');
|
||||||
// active.value = 0; // 重置步骤
|
active.value = 0; // 重置步骤
|
||||||
if (contract_type.value === 'income') {
|
if (contract_type.value === 'income') {
|
||||||
proxy.$router.push('/ctr/incomeContract');
|
proxy.$router.push('/ctr/incomeContract');
|
||||||
} else {
|
} else {
|
||||||
|
@ -476,7 +476,7 @@ const designUser = async () => {
|
|||||||
form.reviewers = [];
|
form.reviewers = [];
|
||||||
form.approved = [];
|
form.approved = [];
|
||||||
form.auditor = [];
|
form.auditor = [];
|
||||||
|
disabledForm.value = false;
|
||||||
if (res.code == 200 && Array.isArray(res.rows) && res.rows.length > 0) {
|
if (res.code == 200 && Array.isArray(res.rows) && res.rows.length > 0) {
|
||||||
disabledForm.value = true;
|
disabledForm.value = true;
|
||||||
// 1. 按用户类型分类数据(明确类型)
|
// 1. 按用户类型分类数据(明确类型)
|
||||||
|
@ -113,7 +113,7 @@ const approvalRecordRef = ref<InstanceType<typeof ApprovalRecord>>();
|
|||||||
//按钮组件
|
//按钮组件
|
||||||
const flowCodeOptions = [
|
const flowCodeOptions = [
|
||||||
{
|
{
|
||||||
value: currentProject.value?.id + '_equipmentList',
|
value: currentProject.value?.id + '_materialsPlans',
|
||||||
label: '物资设备清单审核'
|
label: '物资设备清单审核'
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
@ -314,14 +314,14 @@ let volumeMap = new Map();
|
|||||||
|
|
||||||
const handleSelect = (val) => {
|
const handleSelect = (val) => {
|
||||||
let obj = volumeMap.get(val);
|
let obj = volumeMap.get(val);
|
||||||
console.log('🚀 ~ handleSelect ~ obj:', obj);
|
|
||||||
|
|
||||||
fileVoList.value = obj.fileVoList;
|
fileVoList.value = obj.fileVoList;
|
||||||
designId.value = obj.design;
|
designId.value = obj.design;
|
||||||
form.value.volumeName = obj.volumeName;
|
form.value.volumeName = obj.volumeName;
|
||||||
form.value.specialty = obj.specialty;
|
form.value.specialty = obj.specialty;
|
||||||
form.value.specialtyName = obj.specialtyName;
|
form.value.specialtyName = obj.specialtyName;
|
||||||
form.value.extendDetail.subName = obj.designSubitem;
|
form.value.extendDetail.subName = obj.designSubitem;
|
||||||
|
form.value.saveFile = [];
|
||||||
|
getBlueprintList();
|
||||||
};
|
};
|
||||||
// 获取图纸列表
|
// 获取图纸列表
|
||||||
const blueprintListAll = ref([]);
|
const blueprintListAll = ref([]);
|
||||||
@ -331,9 +331,6 @@ const getBlueprintList = async () => {
|
|||||||
};
|
};
|
||||||
const handleRadio = (val) => {
|
const handleRadio = (val) => {
|
||||||
form.value.saveFile = [];
|
form.value.saveFile = [];
|
||||||
if (val == 2) {
|
|
||||||
getBlueprintList();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 表单重置 */
|
/** 表单重置 */
|
||||||
@ -351,8 +348,15 @@ const getInfo = () => {
|
|||||||
let id = routeParams.value.id.split('_')[0];
|
let id = routeParams.value.id.split('_')[0];
|
||||||
const res = await getDesignChange(id);
|
const res = await getDesignChange(id);
|
||||||
Object.assign(form.value, res.data);
|
Object.assign(form.value, res.data);
|
||||||
console.log(form.value);
|
if (form.value.status != 'draft') {
|
||||||
|
form.value.id = id + '_audit';
|
||||||
|
}
|
||||||
|
if (form.value.extendDetail.designDisposal == 2) {
|
||||||
|
let obj = volumeMap.get(form.value.volumeNo);
|
||||||
|
designId.value = obj.design;
|
||||||
|
form.value.saveFile = form.value.saveFile.split(',');
|
||||||
|
getBlueprintList();
|
||||||
|
}
|
||||||
if (form.value.changeReason.length > 0) {
|
if (form.value.changeReason.length > 0) {
|
||||||
form.value.changeReason = form.value.changeReason.split(',');
|
form.value.changeReason = form.value.changeReason.split(',');
|
||||||
}
|
}
|
||||||
@ -381,8 +385,11 @@ const submitForm = (status1: string) => {
|
|||||||
if (valid) {
|
if (valid) {
|
||||||
buttonLoading.value = true;
|
buttonLoading.value = true;
|
||||||
var res;
|
var res;
|
||||||
|
delete form.value.id;
|
||||||
res = await addDesignChange({ ...form.value, changeReason, saveFile }).finally(() => (buttonLoading.value = false));
|
res = await addDesignChange({ ...form.value, changeReason, saveFile }).finally(() => (buttonLoading.value = false));
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
|
routeParams.value.type = 'update';
|
||||||
|
form.value = res.data;
|
||||||
if (form.value.costEstimation == '0') {
|
if (form.value.costEstimation == '0') {
|
||||||
ElMessage.success('通知成功');
|
ElMessage.success('通知成功');
|
||||||
goBack();
|
goBack();
|
||||||
@ -425,6 +432,9 @@ const handleStartWorkFlow = async (data: LeaveForm) => {
|
|||||||
};
|
};
|
||||||
//审批记录
|
//审批记录
|
||||||
const handleApprovalRecord = () => {
|
const handleApprovalRecord = () => {
|
||||||
|
if (form.value.id.indexOf('_audit') == -1) {
|
||||||
|
form.value.id = form.value.id + '_audit';
|
||||||
|
}
|
||||||
approvalRecordRef.value.init(form.value.id);
|
approvalRecordRef.value.init(form.value.id);
|
||||||
};
|
};
|
||||||
//提交回调
|
//提交回调
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
<el-button v-hasPermi="['design:subcontract:add']" :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||||
<el-button @click="cancel">取 消</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -109,7 +109,12 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="设计人员" prop="principal">
|
<el-form-item label="设计人员" prop="principal">
|
||||||
<el-select :disabled="!form.specialty" v-model="form.principal" placeholder="请选择设计人员" class="transition-all duration-300 border-gray-300">
|
<el-select
|
||||||
|
:disabled="!form.specialty"
|
||||||
|
v-model="form.principal"
|
||||||
|
placeholder="请选择设计人员"
|
||||||
|
class="transition-all duration-300 border-gray-300"
|
||||||
|
>
|
||||||
<el-option v-for="item in userAppList" :key="item.userId" :label="item.userName" :value="item.userId.toString()" />
|
<el-option v-for="item in userAppList" :key="item.userId" :label="item.userName" :value="item.userId.toString()" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -146,12 +151,16 @@
|
|||||||
/></el-select>
|
/></el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="uploadForm.type == '3'" label="蓝图" prop="fileIds">
|
<el-form-item v-if="uploadForm.type == '3'" label="蓝图" prop="fileIds">
|
||||||
|
<<<<<<< HEAD
|
||||||
<file-upload
|
<file-upload
|
||||||
:fileType="['pdf']"
|
:fileType="['pdf']"
|
||||||
:isShowTip="false"
|
:isShowTip="false"
|
||||||
:fileSize="100"
|
:fileSize="100"
|
||||||
. v-model="uploadForm.fileIds"
|
. v-model="uploadForm.fileIds"
|
||||||
></file-upload>
|
></file-upload>
|
||||||
|
=======
|
||||||
|
<file-upload :fileType="['pdf']" :isShowTip="false" :fileSize="100" v-model="uploadForm.fileIds"></file-upload>
|
||||||
|
>>>>>>> 8a3f338e2734575bcb743e917b1232bedc76f105
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="uploadForm.type == '1'" label="过程图纸" prop="cancellationIds">
|
<el-form-item v-if="uploadForm.type == '1'" label="过程图纸" prop="cancellationIds">
|
||||||
<file-upload :fileType="['pdf']" :isShowTip="false" :fileSize="100" v-model="uploadForm.cancellationIds"></file-upload>
|
<file-upload :fileType="['pdf']" :isShowTip="false" :fileSize="100" v-model="uploadForm.cancellationIds"></file-upload>
|
||||||
@ -252,7 +261,8 @@ import {
|
|||||||
delVolumeCatalog,
|
delVolumeCatalog,
|
||||||
addVolumeCatalog,
|
addVolumeCatalog,
|
||||||
updateVolumeCatalog,
|
updateVolumeCatalog,
|
||||||
uploadVolumeFile,majorList,
|
uploadVolumeFile,
|
||||||
|
majorList,
|
||||||
getVolumeCatafileList,
|
getVolumeCatafileList,
|
||||||
volumeFileList
|
volumeFileList
|
||||||
} from '@/api/design/volumeCatalog';
|
} from '@/api/design/volumeCatalog';
|
||||||
@ -263,7 +273,7 @@ import TableContent from './comm/tableContent.vue';
|
|||||||
const fileList = ref([]);
|
const fileList = ref([]);
|
||||||
import { designUserList } from '@/api/design/appointment';
|
import { designUserList } from '@/api/design/appointment';
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
const { design_state, wf_business_status, } = toRefs(proxy?.useDict('design_state', 'wf_business_status'));
|
const { design_state, wf_business_status } = toRefs(proxy?.useDict('design_state', 'wf_business_status'));
|
||||||
import { drawingreviewReceiptsDetail, drawingreviewReceiptsList } from '@/api/design/drawingreview';
|
import { drawingreviewReceiptsDetail, drawingreviewReceiptsList } from '@/api/design/drawingreview';
|
||||||
const volumeCatalogList = ref<VolumeCatalogVO[]>([]);
|
const volumeCatalogList = ref<VolumeCatalogVO[]>([]);
|
||||||
const des_user_major = ref([]);
|
const des_user_major = ref([]);
|
||||||
@ -361,7 +371,7 @@ const data = reactive({
|
|||||||
documentName: [{ required: true, message: '资料名称不能为空', trigger: 'blur' }],
|
documentName: [{ required: true, message: '资料名称不能为空', trigger: 'blur' }],
|
||||||
plannedCompletion: [{ required: true, message: '计划出图事件不能为空', trigger: 'blur' }],
|
plannedCompletion: [{ required: true, message: '计划出图事件不能为空', trigger: 'blur' }],
|
||||||
principal: [{ required: true, message: '设计人员不能为空', trigger: 'blur' }],
|
principal: [{ required: true, message: '设计人员不能为空', trigger: 'blur' }],
|
||||||
specialty: [{ required: true, message: '专业不能为空', trigger: 'blur' }],
|
specialty: [{ required: true, message: '专业不能为空', trigger: 'blur' }]
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -369,7 +379,7 @@ const { queryParams, form, rules } = toRefs(data);
|
|||||||
const changeSpecialty = (val) => {
|
const changeSpecialty = (val) => {
|
||||||
form.value.principal = ''; //清空
|
form.value.principal = ''; //清空
|
||||||
getUserAppList(val);
|
getUserAppList(val);
|
||||||
}
|
};
|
||||||
// 获取专业列表
|
// 获取专业列表
|
||||||
const getSpecialtyList = async () => {
|
const getSpecialtyList = async () => {
|
||||||
const res = await majorList({ projectId: currentProject.value?.id, userType: 2 });
|
const res = await majorList({ projectId: currentProject.value?.id, userType: 2 });
|
||||||
|
@ -47,16 +47,16 @@
|
|||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="primary" plain icon="Plus" @click="handleAdd()" v-hasPermi="['formalities:listOfFormalities:add']">新增</el-button>
|
<el-button type="primary" plain icon="Plus" @click="handleAdd()" v-hasPermi="['formalities:formalitiesAreConsolidated:getTree']"
|
||||||
|
>新增</el-button
|
||||||
|
>
|
||||||
<span style="margin-left: 10px"
|
<span style="margin-left: 10px"
|
||||||
><el-tooltip class="box-item" effect="dark" content="从原有模板列表选择新增" placement="top">
|
><el-tooltip class="box-item" effect="dark" content="从原有模板列表选择新增" placement="top">
|
||||||
<el-icon color="#409efc"><WarningFilled /></el-icon> </el-tooltip
|
<el-icon color="#409efc"><WarningFilled /></el-icon> </el-tooltip
|
||||||
></span>
|
></span>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5" v-hasPermi="['formalities:listOfFormalities:list']">
|
||||||
<el-button type="primary" plain icon="Plus" @click="addTemplate()" v-hasPermi="['formalities:formalitiesAreConsolidated:addFormalities']"
|
<el-button type="primary" plain icon="Plus" @click="addTemplate()">新增数据</el-button>
|
||||||
>新增数据</el-button
|
|
||||||
>
|
|
||||||
<span style="margin-left: 10px">
|
<span style="margin-left: 10px">
|
||||||
<el-tooltip class="box-item" effect="dark" content="创建新模板并添加数据" placement="top">
|
<el-tooltip class="box-item" effect="dark" content="创建新模板并添加数据" placement="top">
|
||||||
<el-icon color="#409efc"><WarningFilled /></el-icon>
|
<el-icon color="#409efc"><WarningFilled /></el-icon>
|
||||||
|
@ -202,28 +202,25 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="合格证文件" prop="certCountFileId">
|
<el-form-item label="合格证文件" prop="certCountFileId">
|
||||||
<file-upload :isShowTip="false" v-model="form.certCountFileId" />
|
<file-upload :isShowTip="false" :fileType="['pdf', 'png', 'jpg', 'jpeg']" v-model="form.certCountFileId" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="出厂报告文件" prop="reportCountFileId">
|
<el-form-item label="出厂报告文件" prop="reportCountFileId">
|
||||||
<file-upload :isShowTip="false" v-model="form.reportCountFileId" />
|
<file-upload :isShowTip="false" :fileType="['pdf', 'png', 'jpg', 'jpeg']" v-model="form.reportCountFileId" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="技术资料文件" prop="techDocCountFileId">
|
<el-form-item label="技术资料文件" prop="techDocCountFileId">
|
||||||
<file-upload :isShowTip="false" v-model="form.techDocCountFileId" />
|
<file-upload :isShowTip="false" :fileType="['pdf', 'png', 'jpg', 'jpeg']" v-model="form.techDocCountFileId" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="厂家资质文件" prop="licenseCountFileId">
|
<el-form-item label="厂家资质文件" prop="licenseCountFileId">
|
||||||
<file-upload :isShowTip="false" v-model="form.licenseCountFileId" />
|
<file-upload :isShowTip="false" :fileType="['pdf', 'png', 'jpg', 'jpeg']" v-model="form.licenseCountFileId" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24"> <span style="color: #ff0000ab; margin-bottom: 10px; display: block">注意:pdf/png/jpg/jpeg格式文件</span> </el-col
|
||||||
<span style="color: #ff0000ab; margin-bottom: 10px; display: block"
|
|
||||||
>注意:请上传doc/xls/ppt/txt/pdf/png/jpg/jpeg/zip格式文件</span
|
|
||||||
> </el-col
|
|
||||||
><el-col :span="24">
|
><el-col :span="24">
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
<right-toolbar @queryTable="refreshData"></right-toolbar>
|
<right-toolbar @queryTable="refreshData"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<!-- 数据表格 -->
|
<!-- 数据表格 -->
|
||||||
<div class="bg-white rounded-lg shadow-sm overflow-hidden transition-all duration-300 hover:shadow-md">
|
<div class="bg-white rounded-lg shadow-sm overflow-hidden transition-all duration-300 hover:shadow-md">
|
||||||
<el-table
|
<el-table
|
||||||
|
@ -58,7 +58,19 @@
|
|||||||
<!-- 添加或修改施工产值对话框 -->
|
<!-- 添加或修改施工产值对话框 -->
|
||||||
<el-dialog draggable :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog draggable :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||||
<el-form ref="constructionValueFormRef" :model="form" :rules="rules" label-width="120px">
|
<el-form ref="constructionValueFormRef" :model="form" :rules="rules" label-width="120px">
|
||||||
<el-form-item label="方阵" prop="matrixId" v-if="!form.id">
|
<el-form-item label="对应项目结构" prop="progressCategoryId">
|
||||||
|
<el-tree-select
|
||||||
|
v-model="form.progressCategoryId"
|
||||||
|
:data="ProjectStructureList"
|
||||||
|
@node-click="handleCheckChange"
|
||||||
|
:props="{ value: 'id', label: 'name', children: 'children' }"
|
||||||
|
value-key="id"
|
||||||
|
@change="selectTime"
|
||||||
|
placeholder="请选择项目结构"
|
||||||
|
check-strictly
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="方阵" prop="matrixId" v-if="!form.id">
|
||||||
<el-cascader
|
<el-cascader
|
||||||
:options="matrixOptions"
|
:options="matrixOptions"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
@ -81,7 +93,7 @@
|
|||||||
clearable
|
clearable
|
||||||
>
|
>
|
||||||
</el-cascader>
|
</el-cascader>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
<el-form-item label="计划日期" prop="reportDateId" v-if="!form.id">
|
<el-form-item label="计划日期" prop="reportDateId" v-if="!form.id">
|
||||||
<el-cascader
|
<el-cascader
|
||||||
:options="progressTimeList"
|
:options="progressTimeList"
|
||||||
@ -129,6 +141,7 @@ import {
|
|||||||
updateConstructionValue
|
updateConstructionValue
|
||||||
} from '@/api/out/constructionValue';
|
} from '@/api/out/constructionValue';
|
||||||
import { ConstructionValueVO, ConstructionValueQuery, ConstructionValueForm } from '@/api/out/constructionValue/types';
|
import { ConstructionValueVO, ConstructionValueQuery, ConstructionValueForm } from '@/api/out/constructionValue/types';
|
||||||
|
import { getProjectStructure } from '@/api/progress/constructionSchedulePlan';
|
||||||
import { getProjectSquare, listProgressCategory, workScheduleList, workScheduleListDetail, workScheduleListPosition } from '@/api/progress/plan';
|
import { getProjectSquare, listProgressCategory, workScheduleList, workScheduleListDetail, workScheduleListPosition } from '@/api/progress/plan';
|
||||||
import { ProgressCategoryVO } from '@/api/progress/plan/types';
|
import { ProgressCategoryVO } from '@/api/progress/plan/types';
|
||||||
|
|
||||||
@ -216,7 +229,7 @@ const data = reactive<PageData<ConstructionValueForm, ConstructionValueQuery>>({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const { queryParams, form, rules } = toRefs(data);
|
const { queryParams, form, rules } = toRefs(data);
|
||||||
|
const ProjectStructureList = ref([]);
|
||||||
/** 查询施工产值列表 */
|
/** 查询施工产值列表 */
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
@ -260,19 +273,19 @@ const handleSelectionChange = (selection: ConstructionValueVO[]) => {
|
|||||||
/** 新增按钮操作 */
|
/** 新增按钮操作 */
|
||||||
const handleAdd = async () => {
|
const handleAdd = async () => {
|
||||||
reset();
|
reset();
|
||||||
const res = await getProjectSquare(currentProject.value?.id);
|
// const res = await getProjectSquare(currentProject.value?.id);
|
||||||
if (res.data.length === 0) return proxy?.$modal.msgWarning('当前项目下没有方阵,请先创建方阵');
|
// if (res.data.length === 0) return proxy?.$modal.msgWarning('当前项目下没有方阵,请先创建方阵');
|
||||||
const isFangzhen = res.data.some((item) => item.children && item.children.length);
|
// const isFangzhen = res.data.some((item) => item.children && item.children.length);
|
||||||
console.log('🚀 ~ handleAdd ~ isFangzhen:', isFangzhen);
|
// console.log('🚀 ~ handleAdd ~ isFangzhen:', isFangzhen);
|
||||||
|
|
||||||
if (!isFangzhen) return proxy?.$modal.msgWarning('当前项目下没有方阵,请先创建方阵');
|
// if (!isFangzhen) return proxy?.$modal.msgWarning('当前项目下没有方阵,请先创建方阵');
|
||||||
let matrixList = res.data.map((item) => {
|
// let matrixList = res.data.map((item) => {
|
||||||
return {
|
// return {
|
||||||
...item,
|
// ...item,
|
||||||
matrixId: item?.projectId
|
// matrixId: item?.projectId
|
||||||
};
|
// };
|
||||||
});
|
// });
|
||||||
matrixOptions.value = matrixList;
|
// matrixOptions.value = matrixList;
|
||||||
dialog.visible = true;
|
dialog.visible = true;
|
||||||
dialog.title = '添加施工产值';
|
dialog.title = '添加施工产值';
|
||||||
};
|
};
|
||||||
@ -304,6 +317,18 @@ const submitTime = async (value: string) => {
|
|||||||
form.value.artificialNum = data?.finishedNumber;
|
form.value.artificialNum = data?.finishedNumber;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** 查询施工进度计划列表 */
|
||||||
|
const getProjectStructureList = async () => {
|
||||||
|
const res = await getProjectStructure(currentProject.value?.id);
|
||||||
|
ProjectStructureList.value = [res.data];
|
||||||
|
console.log(ProjectStructureList.value);
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 查询施工进度计划列表 */
|
||||||
|
const handleCheckChange = (val) => {
|
||||||
|
form.value.projectStructureName = val.name;
|
||||||
|
};
|
||||||
|
|
||||||
/** 重置选择器 */
|
/** 重置选择器 */
|
||||||
const resetCascader = (index?: number) => {
|
const resetCascader = (index?: number) => {
|
||||||
if (index) {
|
if (index) {
|
||||||
@ -370,6 +395,7 @@ const handleExport = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
getProjectStructureList();
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -24,8 +24,8 @@
|
|||||||
<!-- 添加或修改月度产值计划对话框 -->
|
<!-- 添加或修改月度产值计划对话框 -->
|
||||||
<el-dialog draggable :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog draggable :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||||
<el-form ref="monthPlanFormRef" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="monthPlanFormRef" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="金额" prop="unitPrice">
|
<el-form-item label="接收数量" prop="acceptedQuantity">
|
||||||
<el-input v-model="form.unitPrice" placeholder="请输入金额" type="number" />
|
<el-input v-model="form.acceptedQuantity" placeholder="请输入接收数量" type="number" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@ -76,7 +76,8 @@ const initFormData = {
|
|||||||
valueType: undefined,
|
valueType: undefined,
|
||||||
planAuditStatus: undefined,
|
planAuditStatus: undefined,
|
||||||
completeAuditStatus: undefined,
|
completeAuditStatus: undefined,
|
||||||
unitPrice: undefined
|
unitPrice: undefined,
|
||||||
|
acceptedQuantity: undefined
|
||||||
};
|
};
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
form: { ...initFormData },
|
form: { ...initFormData },
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="p-2">
|
<div class="p-2">
|
||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
:leave-active-class="proxy?.animate.searchAnimate.leave">
|
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
@ -10,8 +9,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="状态" prop="status">
|
<el-form-item label="状态" prop="status">
|
||||||
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
|
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
|
||||||
<el-option v-for="dict in project_construction_status" :key="dict.value" :label="dict.label"
|
<el-option v-for="dict in project_construction_status" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
:value="dict.value" />
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
@ -27,8 +25,7 @@
|
|||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="primary" plain icon="Plus" @click="handleAdd()"
|
<el-button type="primary" plain icon="Plus" @click="handleAdd()" v-hasPermi="['progress:constructionSchedulePlan:add']">新增</el-button>
|
||||||
v-hasPermi="['progress:constructionSchedulePlan:add']">新增</el-button>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button>
|
<el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button>
|
||||||
@ -36,9 +33,14 @@
|
|||||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
<el-table ref="constructionSchedulePlanTableRef" v-loading="loading" :data="constructionSchedulePlanList"
|
<el-table
|
||||||
row-key="id" :default-expand-all="isExpandAll"
|
ref="constructionSchedulePlanTableRef"
|
||||||
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
|
v-loading="loading"
|
||||||
|
:data="constructionSchedulePlanList"
|
||||||
|
row-key="id"
|
||||||
|
:default-expand-all="isExpandAll"
|
||||||
|
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
|
||||||
|
>
|
||||||
<!-- <el-table-column label="序号" type="id" /> -->
|
<!-- <el-table-column label="序号" type="id" /> -->
|
||||||
<el-table-column label="节点名称" prop="nodeName" />
|
<el-table-column label="节点名称" prop="nodeName" />
|
||||||
<el-table-column label="对应项目结构" align="center" prop="projectStructureName" />
|
<el-table-column label="对应项目结构" align="center" prop="projectStructureName" />
|
||||||
@ -71,16 +73,19 @@
|
|||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tooltip content="修改" placement="top">
|
<el-tooltip content="修改" placement="top">
|
||||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
|
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['progress:constructionSchedulePlan:edit']" />
|
||||||
v-hasPermi="['progress:constructionSchedulePlan:edit']" />
|
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip content="新增" placement="top">
|
<el-tooltip content="新增" placement="top">
|
||||||
<el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)"
|
<el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['progress:constructionSchedulePlan:add']" />
|
||||||
v-hasPermi="['progress:constructionSchedulePlan:add']" />
|
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip content="删除" placement="top">
|
<el-tooltip content="删除" placement="top">
|
||||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
|
<el-button
|
||||||
v-hasPermi="['progress:constructionSchedulePlan:remove']" />
|
link
|
||||||
|
type="primary"
|
||||||
|
icon="Delete"
|
||||||
|
@click="handleDelete(scope.row)"
|
||||||
|
v-hasPermi="['progress:constructionSchedulePlan:remove']"
|
||||||
|
/>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -90,39 +95,57 @@
|
|||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||||
<el-form ref="constructionSchedulePlanFormRef" :model="form" :rules="rules" label-width="110px">
|
<el-form ref="constructionSchedulePlanFormRef" :model="form" :rules="rules" label-width="110px">
|
||||||
<el-form-item label="父节点" prop="parentId">
|
<el-form-item label="父节点" prop="parentId">
|
||||||
<el-tree-select v-model="form.parentId" :data="constructionSchedulePlanOptions"
|
<el-tree-select
|
||||||
:props="{ value: 'id', label: 'nodeName', children: 'children' }" value-key="id" placeholder="请选择父节点"
|
v-model="form.parentId"
|
||||||
check-strictly />
|
:data="constructionSchedulePlanOptions"
|
||||||
|
:props="{ value: 'id', label: 'nodeName', children: 'children' }"
|
||||||
|
value-key="id"
|
||||||
|
placeholder="请选择父节点"
|
||||||
|
check-strictly
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="节点名称" prop="nodeName">
|
<el-form-item label="节点名称" prop="nodeName">
|
||||||
<el-input v-model="form.nodeName" placeholder="请输入节点名称" />
|
<el-input v-model="form.nodeName" placeholder="请输入节点名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="对应项目结构" prop="projectStructure">
|
<el-form-item label="对应项目结构" prop="projectStructure">
|
||||||
<el-tree-select v-model="form.projectStructure" :data="ProjectStructureList" @node-click="handleCheckChange"
|
<el-tree-select
|
||||||
:props="{ value: 'id', label: 'name', children: 'children' }" value-key="id" placeholder="请选择项目结构"
|
v-model="form.projectStructure"
|
||||||
check-strictly />
|
:data="ProjectStructureList"
|
||||||
|
@node-click="handleCheckChange"
|
||||||
|
:props="{ value: 'id', label: 'name', children: 'children' }"
|
||||||
|
value-key="id"
|
||||||
|
placeholder="请选择项目结构"
|
||||||
|
check-strictly
|
||||||
|
/>
|
||||||
<!-- <el-input v-model="form.projectStructure" placeholder="请输入对应项目结构" /> -->
|
<!-- <el-input v-model="form.projectStructure" placeholder="请输入对应项目结构" /> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="预计开始时间" prop="planStartDate">
|
<el-form-item label="预计开始时间" prop="planStartDate">
|
||||||
<el-date-picker clearable v-model="form.planStartDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
<el-date-picker clearable v-model="form.planStartDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择预计开始时间" />
|
||||||
placeholder="选择预计开始时间" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="预计结束时间" prop="planEndDate">
|
<el-form-item label="预计结束时间" prop="planEndDate">
|
||||||
<el-date-picker clearable v-model="form.planEndDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
<el-date-picker clearable v-model="form.planEndDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择预计结束时间" />
|
||||||
placeholder="选择预计结束时间" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="实际开始时间" prop="practicalStartDate">
|
<el-form-item label="实际开始时间" prop="practicalStartDate">
|
||||||
<el-date-picker clearable v-model="form.practicalStartDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
<el-date-picker
|
||||||
placeholder="选择实际开始时间" />
|
clearable
|
||||||
|
v-model="form.practicalStartDate"
|
||||||
|
type="datetime"
|
||||||
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
placeholder="选择实际开始时间"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="实际结束时间" prop="practicalEndDate">
|
<el-form-item label="实际结束时间" prop="practicalEndDate">
|
||||||
<el-date-picker clearable v-model="form.practicalEndDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
<el-date-picker
|
||||||
placeholder="选择实际结束时间" />
|
clearable
|
||||||
|
v-model="form.practicalEndDate"
|
||||||
|
type="datetime"
|
||||||
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
placeholder="选择实际结束时间"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="状态" prop="status">
|
<el-form-item label="状态" prop="status">
|
||||||
<el-select v-model="form.status" placeholder="请选择状态">
|
<el-select v-model="form.status" placeholder="请选择状态">
|
||||||
<el-option v-for="dict in project_construction_status" :key="dict.value" :label="dict.label"
|
<el-option v-for="dict in project_construction_status" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
:value="dict.value" />
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
@ -145,7 +168,8 @@ import {
|
|||||||
getConstructionSchedulePlan,
|
getConstructionSchedulePlan,
|
||||||
delConstructionSchedulePlan,
|
delConstructionSchedulePlan,
|
||||||
addConstructionSchedulePlan,
|
addConstructionSchedulePlan,
|
||||||
updateConstructionSchedulePlan, getProjectStructure
|
updateConstructionSchedulePlan,
|
||||||
|
getProjectStructure
|
||||||
} from '@/api/progress/constructionSchedulePlan';
|
} from '@/api/progress/constructionSchedulePlan';
|
||||||
import {
|
import {
|
||||||
ConstructionSchedulePlanVO,
|
ConstructionSchedulePlanVO,
|
||||||
@ -196,7 +220,6 @@ const initFormData = {
|
|||||||
status: undefined,
|
status: undefined,
|
||||||
remark: undefined,
|
remark: undefined,
|
||||||
projectStructureName: undefined
|
projectStructureName: undefined
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const data = reactive<PageData<ConstructionSchedulePlanForm, ConstructionSchedulePlanQuery>>({
|
const data = reactive<PageData<ConstructionSchedulePlanForm, ConstructionSchedulePlanQuery>>({
|
||||||
@ -243,7 +266,7 @@ const handleCheckChange = (val) => {
|
|||||||
|
|
||||||
/** 查询施工进度计划下拉树结构 */
|
/** 查询施工进度计划下拉树结构 */
|
||||||
const getTreeselect = async () => {
|
const getTreeselect = async () => {
|
||||||
const res = await listConstructionSchedulePlan();
|
const res = await listConstructionSchedulePlan({ projectId: currentProject.value?.id });
|
||||||
constructionSchedulePlanOptions.value = [];
|
constructionSchedulePlanOptions.value = [];
|
||||||
const data: ConstructionSchedulePlanOption = { id: 0, nodeName: '顶级节点', children: [] };
|
const data: ConstructionSchedulePlanOption = { id: 0, nodeName: '顶级节点', children: [] };
|
||||||
data.children = proxy?.handleTree<ConstructionSchedulePlanOption>(res.data, 'id', 'parentId');
|
data.children = proxy?.handleTree<ConstructionSchedulePlanOption>(res.data, 'id', 'parentId');
|
||||||
|
@ -345,7 +345,6 @@ const getWorkList = (bool = false) => {
|
|||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
state.tableData = res.rows.map((item: any, i: number) => {
|
state.tableData = res.rows.map((item: any, i: number) => {
|
||||||
item.index = i + 1;
|
item.index = i + 1;
|
||||||
item.aiFill = item.detailList?.reduce((sum: number, child: any) => sum + child.aiFill, 0) || 0;
|
|
||||||
return item;
|
return item;
|
||||||
});
|
});
|
||||||
state.total = res.total;
|
state.total = res.total;
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
:file-type="['xls', 'xlsx']"
|
:file-type="['xls', 'xlsx']"
|
||||||
:on-upload-success="handleSuccess"
|
:on-upload-success="handleSuccess"
|
||||||
>
|
>
|
||||||
<el-button type="primary" plain icon="Compass">导入</el-button>
|
<el-button type="primary" plain icon="upload">导入</el-button>
|
||||||
</file-upload>
|
</file-upload>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
@ -140,10 +140,10 @@
|
|||||||
<el-input v-model="form.unit" placeholder="请输入计量单位" />
|
<el-input v-model="form.unit" placeholder="请输入计量单位" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="综合单价(业主)" prop="ownerPrice" v-if="form.unitType != '0'">
|
<el-form-item label="综合单价(业主)" prop="ownerPrice" v-if="form.unitType != '0'">
|
||||||
<el-input v-model="form.ownerPrice" placeholder="请输入综合单价(业主)" />
|
<el-input v-model="form.ownerPrice" type="number" min="0" placeholder="请输入综合单价(业主)" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="综合单价(分包)" prop="constructionPrice" v-if="form.unitType != '0'">
|
<el-form-item label="综合单价(分包)" prop="constructionPrice" v-if="form.unitType != '0'">
|
||||||
<el-input v-model="form.constructionPrice" placeholder="请输入综合单价(分包)" />
|
<el-input v-model="form.constructionPrice" type="number" min="0" placeholder="请输入综合单价(分包)" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="数量" prop="total" v-if="!form.workType && form.unitType != '0'">
|
<el-form-item label="数量" prop="total" v-if="!form.workType && form.unitType != '0'">
|
||||||
<el-input v-model="form.total" placeholder="请输入数量" />
|
<el-input v-model="form.total" placeholder="请输入数量" />
|
||||||
@ -249,6 +249,7 @@ const initFormData: ProgressCategoryForm = {
|
|||||||
status: undefined,
|
status: undefined,
|
||||||
remark: undefined
|
remark: undefined
|
||||||
};
|
};
|
||||||
|
const labelTitle = ref('测试方阵');
|
||||||
|
|
||||||
const data = reactive<PageData<ProgressCategoryForm, ProgressCategoryQuery>>({
|
const data = reactive<PageData<ProgressCategoryForm, ProgressCategoryQuery>>({
|
||||||
form: { ...initFormData },
|
form: { ...initFormData },
|
||||||
@ -323,7 +324,8 @@ const getList = async () => {
|
|||||||
if (data) {
|
if (data) {
|
||||||
progressCategoryList.value = data;
|
progressCategoryList.value = data;
|
||||||
progressCategoryOptions.value = [];
|
progressCategoryOptions.value = [];
|
||||||
const datas: ProgressCategoryOption = { id: 0, name: '顶级节点', children: [...data] };
|
const datas: ProgressCategoryOption = { id: 0, name: '顶级节点', children: [{ id: id, children: [...data], name: labelTitle.value }] };
|
||||||
|
// form.value.parentId = id;
|
||||||
progressCategoryOptions.value.push(datas);
|
progressCategoryOptions.value.push(datas);
|
||||||
console.log('🚀 ~ getList ~ progressCategoryOptions.value:', progressCategoryOptions.value);
|
console.log('🚀 ~ getList ~ progressCategoryOptions.value:', progressCategoryOptions.value);
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
@ -336,6 +338,7 @@ const getList = async () => {
|
|||||||
const handleSuccess = () => {
|
const handleSuccess = () => {
|
||||||
console.log(111);
|
console.log(111);
|
||||||
proxy.$modal.msgSuccess('操作成功');
|
proxy.$modal.msgSuccess('操作成功');
|
||||||
|
getList();
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 查询分项工程单价下拉树结构 */
|
/** 查询分项工程单价下拉树结构 */
|
||||||
@ -355,6 +358,8 @@ const cancel = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleTabClick = (tab: any) => {
|
const handleTabClick = (tab: any) => {
|
||||||
|
console.log(tab);
|
||||||
|
labelTitle.value = tab.props.label;
|
||||||
const id = tab.props.name; // 实际上就是 item.id
|
const id = tab.props.name; // 实际上就是 item.id
|
||||||
const current = tabList.value.find((item) => item.id === id);
|
const current = tabList.value.find((item) => item.id === id);
|
||||||
if (current.matrixStructureList && current.matrixStructureList.length > 0) {
|
if (current.matrixStructureList && current.matrixStructureList.length > 0) {
|
||||||
|
@ -106,7 +106,7 @@
|
|||||||
<el-input v-model="form.name" placeholder="请输入类别名称" />
|
<el-input v-model="form.name" placeholder="请输入类别名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="关联数据" prop="workType">
|
<el-form-item label="关联数据" prop="workType">
|
||||||
<el-select v-model="form.workType" placeholder="请选择关联数据">
|
<el-select v-model="form.workType" clearable filterable placeholder="请选择关联数据">
|
||||||
<el-option v-for="dict in progress_work_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
<el-option v-for="dict in progress_work_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -87,11 +87,11 @@
|
|||||||
<el-table-column label="迟到(次)" align="center" prop="lateDays" />
|
<el-table-column label="迟到(次)" align="center" prop="lateDays" />
|
||||||
<el-table-column label="早退(次)" align="center" prop="leaveEarlyDays" />
|
<el-table-column label="早退(次)" align="center" prop="leaveEarlyDays" />
|
||||||
<el-table-column label="缺卡(次)" align="center" prop="unClockDays" />
|
<el-table-column label="缺卡(次)" align="center" prop="unClockDays" />
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" icon="View" @click="handleDetails(scope.row)" v-hasPermi="['project:attendance:edit']">详情</el-button>
|
<el-button link type="primary" icon="View" @click="handleDetails(scope.row)" v-hasPermi="['project:attendance:edit']">详情</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||||
@ -347,10 +347,10 @@ const getList = async () => {
|
|||||||
/** 查询近两周考勤列表 */
|
/** 查询近两周考勤列表 */
|
||||||
const getListTwoWeek = async () => {
|
const getListTwoWeek = async () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const res = await listAttendanceTwoWeek(queryParams.value);
|
// const res = await listAttendanceTwoWeek(queryParams.value);
|
||||||
attendanceTwoWeekList.value = res.data;
|
// attendanceTwoWeekList.value = res.data;
|
||||||
echartsOption.value = { ...option(attendanceTwoWeekList.value) };
|
// echartsOption.value = { ...option(attendanceTwoWeekList.value) };
|
||||||
commandstatsIntance.value.setOption(echartsOption.value);
|
// commandstatsIntance.value.setOption(echartsOption.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 取消按钮 */
|
/** 取消按钮 */
|
||||||
|
@ -31,16 +31,20 @@
|
|||||||
<el-button type="success" plain icon="Plus" @click="downloadTemplate" v-hasPermi="['land:enterRoad:import']">模板下载</el-button>
|
<el-button type="success" plain icon="Plus" @click="downloadTemplate" v-hasPermi="['land:enterRoad:import']">模板下载</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-upload ref="uploadRef" class="upload-demo" :http-request="handleImport" :show-file-list="false">
|
<el-upload
|
||||||
|
ref="uploadRef"
|
||||||
|
v-hasPermi="['land:enterRoad:upload']"
|
||||||
|
class="upload-demo"
|
||||||
|
:http-request="handleImport"
|
||||||
|
:show-file-list="false"
|
||||||
|
>
|
||||||
<template #trigger>
|
<template #trigger>
|
||||||
<el-button plain type="primary">导入excel</el-button>
|
<el-button plain type="primary" icon="upload">导入excel</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['land:enterRoad:remove']"
|
<el-button type="success" plain icon="Download" @click="exportFile">导出模版</el-button>
|
||||||
>删除</el-button
|
|
||||||
>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -93,7 +97,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
<el-button :loading="buttonLoading" type="primary" v-hasPermi="['land:enterRoad:add']" @click="submitForm">确 定</el-button>
|
||||||
<el-button @click="cancel">取 消</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -204,7 +208,24 @@ const resetQuery = () => {
|
|||||||
queryFormRef.value?.resetFields();
|
queryFormRef.value?.resetFields();
|
||||||
handleQuery();
|
handleQuery();
|
||||||
};
|
};
|
||||||
|
const exportFile = () => {
|
||||||
|
// 导出模版文件
|
||||||
|
try {
|
||||||
|
// 创建a标签
|
||||||
|
const link = document.createElement('a');
|
||||||
|
// 设置PDF文件路径 - 相对于public目录
|
||||||
|
link.href = '/daolu.xlsx';
|
||||||
|
// 设置下载后的文件名
|
||||||
|
link.download = '道路信息导入模版.xlsx';
|
||||||
|
// 触发点击
|
||||||
|
document.body.appendChild(link);
|
||||||
|
link.click();
|
||||||
|
// 清理
|
||||||
|
document.body.removeChild(link);
|
||||||
|
} catch (error) {
|
||||||
|
alert('下载失败,请重试');
|
||||||
|
}
|
||||||
|
};
|
||||||
/** 多选框选中数据 */
|
/** 多选框选中数据 */
|
||||||
const handleSelectionChange = (selection: EnterRoadVO[]) => {
|
const handleSelectionChange = (selection: EnterRoadVO[]) => {
|
||||||
ids.value = selection.map((item) => item.id);
|
ids.value = selection.map((item) => item.id);
|
||||||
@ -270,15 +291,18 @@ const handleImport = (options: any) => {
|
|||||||
loading.value = true;
|
loading.value = true;
|
||||||
let formData = new FormData();
|
let formData = new FormData();
|
||||||
formData.append('file', options.file);
|
formData.append('file', options.file);
|
||||||
importEnterRoad(currentProject.value?.id,formData).then((res) => {
|
importEnterRoad(currentProject.value?.id, formData)
|
||||||
|
.then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
proxy.$modal.msgSuccess(res.msg || '导入成功');
|
proxy.$modal.msgSuccess(res.msg || '导入成功');
|
||||||
getListLand();
|
getListLand();
|
||||||
getList();
|
getList();
|
||||||
}
|
}
|
||||||
}).catch((err) => {
|
})
|
||||||
|
.catch((err) => {
|
||||||
proxy.$modal.msgError(err.msg || '导入失败');
|
proxy.$modal.msgError(err.msg || '导入失败');
|
||||||
}).finally(() => {
|
})
|
||||||
|
.finally(() => {
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -42,10 +42,13 @@
|
|||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-upload ref="uploadRef" class="upload-demo" :http-request="handleImport" :show-file-list="false">
|
<el-upload ref="uploadRef" class="upload-demo" :http-request="handleImport" :show-file-list="false">
|
||||||
<template #trigger>
|
<template #trigger>
|
||||||
<el-button plain type="primary">导入excel</el-button>
|
<el-button plain type="primary" icon="upload">导入excel</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button type="success" plain icon="Download" @click="exportFile">导出模版</el-button>
|
||||||
|
</el-col>
|
||||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
@ -99,7 +102,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
<el-button :loading="buttonLoading" type="primary" @click="submitForm" v-hasPermi="['land:landBlock:add']">确 定</el-button>
|
||||||
<el-button @click="cancel">取 消</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -521,7 +524,24 @@ const handleImport = (options: { file: File }) => {
|
|||||||
loading.value = false;
|
loading.value = false;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
const exportFile = () => {
|
||||||
|
// 导出模版文件
|
||||||
|
try {
|
||||||
|
// 创建a标签
|
||||||
|
const link = document.createElement('a');
|
||||||
|
// 设置PDF文件路径 - 相对于public目录
|
||||||
|
link.href = '/dikuai.xlsx';
|
||||||
|
// 设置下载后的文件名
|
||||||
|
link.download = '地块信息导入模版.xlsx';
|
||||||
|
// 触发点击
|
||||||
|
document.body.appendChild(link);
|
||||||
|
link.click();
|
||||||
|
// 清理
|
||||||
|
document.body.removeChild(link);
|
||||||
|
} catch (error) {
|
||||||
|
alert('下载失败,请重试');
|
||||||
|
}
|
||||||
|
};
|
||||||
/** 下载导入模板 */
|
/** 下载导入模板 */
|
||||||
const downloadTemplate = () => {
|
const downloadTemplate = () => {
|
||||||
try {
|
try {
|
||||||
|
@ -208,7 +208,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
<el-button v-hasPermi="['land:landTransferLedger:add']" :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||||
<el-button @click="cancel">取 消</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -142,7 +142,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
<el-button v-hasPermi="['land:landTransferLedger:add']" :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||||
<el-button @click="cancel">取 消</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -145,7 +145,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
<el-button :loading="buttonLoading" type="primary" v-hasPermi="['land:landTransferLedger:add']" @click="submitForm">确 定</el-button>
|
||||||
<el-button @click="cancel">取 消</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -119,7 +119,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
<el-button v-hasPermi="['design:subcontract:add']" :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||||
<el-button @click="cancel">取 消</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="招标文件" prop="name">
|
<el-form-item label="中标文件" prop="name">
|
||||||
<file-upload
|
<file-upload
|
||||||
v-model="form.costEstimationFile"
|
v-model="form.costEstimationFile"
|
||||||
:fileSize="100"
|
:fileSize="100"
|
||||||
|
@ -665,7 +665,7 @@ const handleDetail = (row: any) => {
|
|||||||
getDetails(row);
|
getDetails(row);
|
||||||
};
|
};
|
||||||
const getDetails = (row: any) => {
|
const getDetails = (row: any) => {
|
||||||
getTenderPlanDetail({ id: row.id }).then((res) => {
|
getTenderPlanDetail({ id: row.id, projectId: currentProject.value?.id }).then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
detailData.value = res.data;
|
detailData.value = res.data;
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
<!-- 表单区域 -->
|
<!-- 表单区域 -->
|
||||||
<el-card class="rounded-lg shadow-sm bg-white border border-gray-100 transition-all hover:shadow-md overflow-hidden">
|
<el-card class="rounded-lg shadow-sm bg-white border border-gray-100 transition-all hover:shadow-md overflow-hidden">
|
||||||
<div class="p-4 bg-gradient-to-r from-blue-50 to-indigo-50 border-b border-gray-100">
|
<div class="p-4 bg-gradient-to-r from-blue-50 to-indigo-50 border-b border-gray-100">
|
||||||
<h3 class="text-lg font-semibold text-gray-800">专项方案信息</h3>
|
<h3 class="text-lg font-semibold text-gray-800">供应商入库</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="p-6">
|
<div class="p-6">
|
||||||
<el-form ref="leaveFormRef" v-loading="loading" disabled :model="form" :rules="rules" label-width="150px" class="space-y-4">
|
<el-form ref="leaveFormRef" v-loading="loading" disabled :model="form" :rules="rules" label-width="150px" class="space-y-4">
|
||||||
@ -333,6 +333,17 @@ const getInfo = () => {
|
|||||||
nextTick(async () => {
|
nextTick(async () => {
|
||||||
const res = await getSupplierInput(routeParams.value.id);
|
const res = await getSupplierInput(routeParams.value.id);
|
||||||
Object.assign(form.value, res.data);
|
Object.assign(form.value, res.data);
|
||||||
|
form.value.registeredNumber = form.value.registeredNumber?.split(',');
|
||||||
|
form.value.build1 = form.value.registeredNumber[0] || '';
|
||||||
|
form.value.build2 = form.value.registeredNumber[1] || '';
|
||||||
|
form.value.build3 = form.value.registeredNumber[2] || '';
|
||||||
|
form.value.build4 = form.value.registeredNumber[3] || '';
|
||||||
|
form.value.personnelNumber = form.value.personnelNumber?.split(',');
|
||||||
|
form.value.personnelNumber1 = form.value.personnelNumber[0] || '';
|
||||||
|
form.value.personnelNumber2 = form.value.personnelNumber[1] || '';
|
||||||
|
form.value.personnelNumber3 = form.value.personnelNumber[2] || '';
|
||||||
|
form.value.personnelNumber4 = form.value.personnelNumber[3] || '';
|
||||||
|
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
buttonLoading.value = false;
|
buttonLoading.value = false;
|
||||||
});
|
});
|
||||||
@ -437,7 +448,9 @@ onMounted(() => {
|
|||||||
.el-input__inner,
|
.el-input__inner,
|
||||||
.el-select .el-input__inner {
|
.el-select .el-input__inner {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
transition: border-color 0.2s, box-shadow 0.2s;
|
transition:
|
||||||
|
border-color 0.2s,
|
||||||
|
box-shadow 0.2s;
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
border-color: var(--primary-light);
|
border-color: var(--primary-light);
|
||||||
@ -447,7 +460,9 @@ onMounted(() => {
|
|||||||
|
|
||||||
.el-textarea__inner {
|
.el-textarea__inner {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
transition: border-color 0.2s, box-shadow 0.2s;
|
transition:
|
||||||
|
border-color 0.2s,
|
||||||
|
box-shadow 0.2s;
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
border-color: var(--primary-light);
|
border-color: var(--primary-light);
|
||||||
|
230
vite.config.ts.timestamp-1756496937860-efea843310722.mjs
Normal file
230
vite.config.ts.timestamp-1756496937860-efea843310722.mjs
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user