70 changed files with 3575 additions and 2469 deletions
@ -0,0 +1,109 @@ |
|||
<template> |
|||
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick"> |
|||
<el-tab-pane label="项目入库详情" name="1"> |
|||
<ProjectDetails :IsEdit="false" :projectid="projectid" /> |
|||
</el-tab-pane> |
|||
<el-tab-pane label="项目监理管理资料" name="2"> |
|||
<el-divider content-position="left">项目资料详情</el-divider> |
|||
<UploadfileDetail :projectid="projectid" :stage="1" /> |
|||
<el-divider content-position="left">意见文件</el-divider> |
|||
<UploadfileDetail :projectid="projectid" :stage="2" /> |
|||
</el-tab-pane> |
|||
<el-tab-pane label="项目计划详情" name="3"> |
|||
<PlaninfoDetails :projectid="projectid" :showActionColumn="true"> |
|||
<template #default="record"> |
|||
<TableAction :actions="getTableAction(record)" /> |
|||
</template> |
|||
</PlaninfoDetails> |
|||
</el-tab-pane> |
|||
</el-tabs> |
|||
<ApprovalDetails :processInstanceId="processInstanceId"/> |
|||
|
|||
<planinfoFileDetail @register="registerFileInfo" :planinfoid="planinfoid" :taskName="taskName" :isfinish="isfinish" /> |
|||
<ApprovalFromPage :showApprovalForm="showApprovalForm" :buttons="resButton.buttons" ref="ApprovalFromPageRef" |
|||
@submit="handleSubmit" @exit="exit" /> |
|||
</template> |
|||
|
|||
<script lang="ts" name="system-user" setup> |
|||
//ts语法 |
|||
import { ref,onMounted } from 'vue'; |
|||
import { useModal } from '/@/components/Modal'; |
|||
import ProjectDetails from "../ProcessApprovalSubPage/component/ProjectDetails.vue" |
|||
import UploadfileDetail from "../ProcessApprovalSubPage/component/UploadfileDetail.vue" |
|||
import PlaninfoDetails from "../ProcessApprovalSubPage/component/PlaninfoDetails.vue" |
|||
import ApprovalDetails from "../ProcessApprovalSubPage/component/ApprovalDetails.vue" |
|||
import ApprovalFromPage from "../ProcessApprovalSubPage/component/ApprovalFromPage.vue" |
|||
import { ActionItem, TableAction } from '/@/components/Table'; |
|||
import { getActionParam } from '../myWork/inComplete/inComplete.api'; |
|||
import planinfoFileDetail from '../projectLib/projectPlan/planinfoFileDetail.vue' |
|||
import { approveProjectArchive } from "../projectLib/projectArchive/projectArchive.api" |
|||
import type { TabsPaneContext } from 'element-plus' |
|||
let emit = defineEmits(["close"]) |
|||
let dataTo = defineProps(["record"]) |
|||
console.log("routerouterouteroute", dataTo.record) |
|||
let projectid = dataTo.record.projectId as string |
|||
let processInstanceId = dataTo.record.processInstanceId |
|||
let stage = dataTo.record.stage as string |
|||
let taskid = dataTo.record.taskId as string |
|||
let ApprovalFromPageRef = ref() |
|||
let showApprovalForm = ref() |
|||
let planinfoid = ref() |
|||
let taskName = ref() |
|||
let isfinish = ref() |
|||
let resButton = ref({ |
|||
showApprovalForm: false, |
|||
IsEdit: false, |
|||
buttons: [] |
|||
}) |
|||
onMounted(async () => { |
|||
resButton.value = await getActionParam({ projectid: projectid, taskId: taskid, procesType: dataTo.record.procesType }) |
|||
showApprovalForm.value = resButton.value.showApprovalForm |
|||
}) |
|||
|
|||
const [registerFileInfo, { openModal: openFileInfo }] = useModal();//文件上传和查看 |
|||
console.log("dataTo",dataTo) |
|||
const activeName = ref('1') |
|||
|
|||
const handleClick = (tab: TabsPaneContext, event: Event) => { |
|||
console.log(tab, event) |
|||
} |
|||
function getTableAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '详情', |
|||
onClick: handleDetail.bind(null, record), |
|||
}, |
|||
]; |
|||
} |
|||
|
|||
function handleDetail(record) { |
|||
console.log("rrrrrrrr", record) |
|||
planinfoid.value = record.record.id |
|||
taskName.value = record.record.taskName |
|||
isfinish.value = record.record.isfinish |
|||
console.log("rrrrrrrr", record, record.id, record.taskName, planinfoid.value, taskName.value) |
|||
|
|||
openFileInfo() |
|||
|
|||
} |
|||
async function handleSubmit() { |
|||
let approvalform = await ApprovalFromPageRef.value.getFieldsValueApprovalForm(); |
|||
const params = new FormData() |
|||
params.append("flag", approvalform.flag) |
|||
params.append("projectid", projectid) |
|||
params.append("comment", approvalform.comment) |
|||
params.append("taskId", taskid) |
|||
params.append("stage", stage) |
|||
console.log("param", params, "approvalform", approvalform) |
|||
if (await ApprovalFromPageRef.value.validateApprovalForm()) { |
|||
let res = await approveProjectArchive(params) |
|||
console.log("提交成功!", res) |
|||
emit("close") |
|||
} |
|||
} |
|||
function exit() { |
|||
emit("close") |
|||
} |
|||
</script> |
|||
|
|||
<style scoped></style> |
@ -0,0 +1,42 @@ |
|||
<template> |
|||
<div> |
|||
<el-divider content-position="left">项目审批详情</el-divider> |
|||
<BasicTable @register="registerTable" /> |
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts" name="ApprovalDetails" setup> |
|||
//ts语法 |
|||
import { defineProps } from 'vue'; |
|||
import { BasicTable } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
import { approveStartProcessColumns } from "../../myWork/inComplete/inComplete.data"; |
|||
import { queryProcessInfo } from '../../myWork/inComplete/inComplete.api'; |
|||
|
|||
|
|||
let dataTo = defineProps(["processInstanceId","stage","projectid"]) |
|||
//我的待办表格组件 |
|||
const { tableContext } = useListPage({ |
|||
tableProps: { |
|||
size: 'small',//紧凑型表格 |
|||
title: '流程审批情况', |
|||
api: queryProcessInfo, |
|||
columns: approveStartProcessColumns, |
|||
showActionColumn: false, |
|||
useSearchForm: false, |
|||
beforeFetch(params) { |
|||
if(dataTo.stage){ |
|||
params.stage = dataTo.stage |
|||
params.projectid = dataTo.projectid |
|||
}else{ |
|||
params.processInstanceId = dataTo.processInstanceId |
|||
|
|||
} |
|||
}, |
|||
}, |
|||
}); |
|||
// 流程审批情况表格绑定注册 |
|||
const [registerTable] = tableContext; |
|||
|
|||
</script> |
|||
<style scoped></style> |
@ -0,0 +1,66 @@ |
|||
<template> |
|||
<el-divider content-position="left" v-if="showApprovalForm">项目审批</el-divider> |
|||
<div v-if="showApprovalForm"> |
|||
<BasicForm @register="registerApprovalForm" @submit="handleSubmit" /> |
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts" name="ApprovalFromPage" setup> |
|||
//ts语法 |
|||
import { defineProps,onUpdated } from 'vue'; |
|||
import { useForm, BasicForm } from '/@/components/Form'; |
|||
import { approvalformSchemas } from '../../myWork/inComplete/inComplete.data' |
|||
|
|||
let emit = defineEmits(["submit","exit"]) |
|||
|
|||
onUpdated(()=>{ |
|||
console.log("我更新了",dataTo) |
|||
updateSchema({ |
|||
field: 'flag', |
|||
componentProps: { |
|||
options: dataTo.buttons, |
|||
} |
|||
}) |
|||
|
|||
|
|||
}) |
|||
|
|||
let dataTo = defineProps(["showApprovalForm","buttons"]) |
|||
//我的待办表格组件 |
|||
/** |
|||
* 审批表单 |
|||
*/ |
|||
const [registerApprovalForm, { validate: validateApprovalForm, getFieldsValue: getFieldsValueApprovalForm, updateSchema }] = useForm({ |
|||
//注册表单列 |
|||
schemas: approvalformSchemas, |
|||
//自定义查询按钮的文本和图标 |
|||
// submitButtonOptions: { text: '提交', preIcon: '' }, |
|||
//自定义重置按钮的文本和图标 |
|||
resetButtonOptions: { text: '取消', preIcon: '' }, |
|||
// showActionButtonGroup: false, |
|||
//回车提交 |
|||
// autoSubmitOnEnter: true, |
|||
// //不显示重置按钮 |
|||
// showResetButton: false, |
|||
//自定义提交按钮文本和图标 |
|||
submitButtonOptions: { text: '提交', preIcon: '' }, |
|||
//查询列占比 24代表一行 取值范围 0-24 |
|||
actionColOptions: { span: 14 }, |
|||
//提交按钮的自定义事件 |
|||
// submitFunc: customSubmitFunc, |
|||
//重置按钮的自定义时间 |
|||
resetFunc: customResetFunc, |
|||
labelCol: { style: { width: '120px' } }, |
|||
wrapperCol: { style: { width: 'auto' } }, |
|||
// disabled:true |
|||
}) |
|||
async function handleSubmit() { |
|||
emit("submit"); |
|||
} |
|||
async function customResetFunc() { |
|||
emit("exit") |
|||
|
|||
} |
|||
defineExpose({validateApprovalForm,getFieldsValueApprovalForm}) |
|||
</script> |
|||
<style scoped></style> |
@ -0,0 +1,30 @@ |
|||
<template> |
|||
<BasicModal v-bind="$attrs" @register="registerModal" width="1200px" :showOkBtn="false"> |
|||
<initiatesProjectsApproval :record="record" @close="exit" v-if="record.stage==1"/> |
|||
<uploadfileApproval :record="record" @close="exit" v-if="record.stage==2"/> |
|||
<projectPlanApproval :record="record" @close="exit" v-if="record.stage==3"/> |
|||
<planFileApproval :record="record" @close="exit" v-if="record.stage==4"/> |
|||
<ProjectArchiveApproval :record="record" @close="exit" v-if="record.stage==5"/> |
|||
</BasicModal> |
|||
</template> |
|||
<script lang="ts" name="ApprovalPageModel" setup> |
|||
|
|||
import { BasicModal, useModalInner } from '/@/components/Modal'; |
|||
|
|||
import initiatesProjectsApproval from "../initiatesProjectsApproval.vue" |
|||
import planFileApproval from '../planFileApproval.vue' |
|||
import uploadfileApproval from '../uploadfileApproval.vue' |
|||
import projectPlanApproval from '../projectPlanApproval.vue' |
|||
import ProjectArchiveApproval from '../ProjectArchiveApproval.vue' |
|||
const [registerModal, { closeModal }] = useModalInner(); |
|||
defineProps(["record"]) |
|||
let emit = defineEmits(["close"]) |
|||
function exit(){ |
|||
closeModal() |
|||
console.log("ApprovalPageModel") |
|||
emit("close") |
|||
} |
|||
|
|||
</script> |
|||
<style></style> |
|||
|
@ -0,0 +1,42 @@ |
|||
<template> |
|||
<div> |
|||
<el-divider content-position="left">项目计划阶段详情</el-divider> |
|||
<BasicTable @register="registerPlanTable"> |
|||
<template #action="{ record }" v-if="showActionColumn"> |
|||
<!-- <TableAction :actions="getTableAction(record)" /> --> |
|||
<slot :record="record"></slot> |
|||
</template> |
|||
</BasicTable> |
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts" name="PlaninfoDetails" setup> |
|||
//ts语法 |
|||
import { defineProps } from 'vue'; |
|||
import { BasicTable } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
import { PlaninfoColumn } from '../../projectLib/projectPlan/projectPlan.data'; |
|||
import { queryPlanInfoMainTimeline } from '../../projectLib/projectPlan/projectPlan.api' |
|||
|
|||
|
|||
let dataTo = defineProps(["showActionColumn", "projectid"]) |
|||
//我的待办表格组件 |
|||
// 项目计划阶段详情table |
|||
const { tableContext: tableContextPlan } = useListPage({ |
|||
tableProps: { |
|||
size: 'small',//紧凑型表格 |
|||
title: '项目计划阶段详情', |
|||
api: queryPlanInfoMainTimeline, |
|||
columns: PlaninfoColumn, |
|||
showActionColumn: dataTo.showActionColumn, |
|||
useSearchForm: false, |
|||
beforeFetch(params) { |
|||
params.projectid = dataTo.projectid; |
|||
}, |
|||
}, |
|||
}); |
|||
// BasicTable绑定注册 |
|||
const [registerPlanTable] = tableContextPlan; |
|||
|
|||
</script> |
|||
<style scoped></style> |
@ -0,0 +1,75 @@ |
|||
<template> |
|||
<div> |
|||
<el-divider content-position="left">项目入库详情</el-divider> |
|||
<BasicForm @register="registerProjectForm" /> |
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts" name="ProjectDetails" setup> |
|||
//ts语法 |
|||
import { defineProps, defineExpose,watchEffect } from 'vue'; |
|||
import { useForm, BasicForm } from '/@/components/Form'; |
|||
import { queryProjectInfoById } from '../../projectLib/projectInfo/projectInfo.api' |
|||
import { formSchemas } from '../../projectLib/projectInfo/projectInfo.data'; |
|||
import { getUserInfoByid } from '../../projectLib/initiatesProjects/initiatesProjects.api' |
|||
|
|||
import { onMounted } from 'vue'; |
|||
let dataTo = defineProps(["projectid", "IsEdit"]) |
|||
/** |
|||
* 项目详情展示表单 |
|||
*/ |
|||
const [registerProjectForm, { validate: validateProjectForm, setFieldsValue, getFieldsValue: getFieldsValueProjectForm, setProps, updateSchema: updateProjectSchema }] = useForm({ |
|||
//注册表单列 |
|||
schemas: formSchemas, |
|||
showActionButtonGroup: false, |
|||
//回车提交 |
|||
// autoSubmitOnEnter: true, |
|||
// //不显示重置按钮 |
|||
// showResetButton: false, |
|||
//自定义提交按钮文本和图标 |
|||
// submitButtonOptions: { text: '提交', preIcon: '' }, |
|||
//查询列占比 24代表一行 取值范围 0-24 |
|||
// actionColOptions: { span: 17 }, |
|||
labelCol: { style: { width: '120px' } }, |
|||
wrapperCol: { style: { width: 'auto' } }, |
|||
disabled:true |
|||
}); |
|||
onMounted(async () => { |
|||
console.log("ProjectDetailsresout",dataTo,dataTo.IsEdit) |
|||
let param: any = { |
|||
projectid: dataTo.projectid |
|||
} |
|||
let res = await queryProjectInfoById(param) |
|||
console.log("结果是", res) |
|||
setFieldsValue(res) |
|||
for (let key in res) { |
|||
if (key.indexOf("Contactor") != -1 && res[key] != null) { |
|||
let userid = res[key] |
|||
let resout = await getUserInfoByid({ id: userid }) |
|||
|
|||
console.log(key, resout.realname) |
|||
updateProjectSchema({ |
|||
field: key, |
|||
componentProps: { |
|||
options: [{ |
|||
value: userid, |
|||
label: resout.realname |
|||
} |
|||
], |
|||
} |
|||
}) |
|||
} |
|||
} |
|||
}) |
|||
watchEffect(()=>{ |
|||
console.log("watchEffect",dataTo) |
|||
if(dataTo.IsEdit){ |
|||
setProps({disabled:false}) |
|||
} |
|||
}) |
|||
|
|||
|
|||
|
|||
defineExpose({getFieldsValueProjectForm,validateProjectForm,IsEdit:dataTo }) |
|||
</script> |
|||
<style scoped></style> |
@ -0,0 +1,61 @@ |
|||
<template> |
|||
<div> |
|||
<BasicTable @register="registerResourceTable"> |
|||
<template #action="{ record }"> |
|||
<TableAction :actions="getTableAction(record)" /> |
|||
</template> |
|||
</BasicTable> |
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts" name="ApprovalDetails" setup> |
|||
//ts语法 |
|||
import { defineProps } from 'vue'; |
|||
import { BasicTable, ActionItem, TableAction } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
import { resourcetableColumns } from '../../projectLib/projectInfo/projectInfo.data'; |
|||
import { uploacFilePageList } from '../../projectLib/projectInfo/projectInfo.api' |
|||
import { downloadFile } from "../../../api/common/api" |
|||
|
|||
let dataTo = defineProps(["stage","projectid"]) |
|||
//我的待办表格组件 |
|||
//项目资料table |
|||
const { tableContext: resourceTableContext } = useListPage({ |
|||
tableProps: { |
|||
size: 'small',//紧凑型表格 |
|||
api: uploacFilePageList, |
|||
columns: resourcetableColumns, |
|||
useSearchForm: false, |
|||
actionColumn: { |
|||
width: 120, |
|||
fixed: "right", |
|||
}, |
|||
beforeFetch(params) { |
|||
params.stage = dataTo.stage, |
|||
params.projectid = dataTo.projectid |
|||
}, |
|||
}, |
|||
}); |
|||
const [registerResourceTable] = resourceTableContext; |
|||
function getTableAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '下载', |
|||
ifShow: true, |
|||
onClick: handleDetailpage.bind(null, record), |
|||
} |
|||
]; |
|||
} |
|||
function handleDetailpage(record) { |
|||
console.log("我这一行的数据是", record) |
|||
let param = { |
|||
path: record.documentPath, |
|||
fileName: record.documentName |
|||
} |
|||
// |
|||
console.log("我这一行的数据是", param) |
|||
|
|||
downloadFile("/huzhouUploadfileinfo/downloadfile", record.documentName, param) |
|||
} |
|||
</script> |
|||
<style scoped></style> |
@ -0,0 +1,164 @@ |
|||
<template> |
|||
<!-- 自定义表单 --> |
|||
<div v-if="!IsbatchImportProjects"> |
|||
<ProjectDetails :IsEdit="resButton.IsEdit" :projectid="projectid" ref="ProjectDetailsRef" /> |
|||
</div> |
|||
<div v-if="IsbatchImportProjects"> |
|||
<el-divider content-position="left">批量导入项目入库详情</el-divider> |
|||
<BasicTable @register="registerbatchImportTable"> |
|||
<template #action="{ record }"> |
|||
<!-- <TableAction :actions="getTableAction(record)" /> --> |
|||
<TableAction :actions="getTableAction(record)" /> |
|||
</template> |
|||
</BasicTable> |
|||
</div> |
|||
<ApprovalDetails :processInstanceId="processInstanceId" /> |
|||
<ApprovalFromPage :showApprovalForm="showApprovalForm" :buttons="resButton.buttons" ref="ApprovalFromPageRef" |
|||
@submit="handleSubmit" @exit="exit" /> |
|||
<BasicModal @register="registeProjectrModal" title="项目信息详情" width="1200px" :showOkBtn="false"> |
|||
<childProjectsApproval :projectid="proid" :IsEdit="proIsEdit" @close="closeProjectrModal" /> |
|||
</BasicModal> |
|||
</template> |
|||
<script lang="ts" name="initiatesProjectsApproval" setup> |
|||
import { ref, onMounted } from 'vue' |
|||
import { columns } from '../projectLib/projectInfo/projectInfo.data'; |
|||
import { getIsbatchImportProjects, batchImportProjectPageListByInstid } from '../projectLib/projectInfo/projectInfo.api' |
|||
import { ActionItem, BasicTable, TableAction } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
import { submitTask, getActionParam } from '../myWork/inComplete/inComplete.api'; |
|||
import { BasicModal, useModal } from '/@/components/Modal'; |
|||
import childProjectsApproval from '../ProcessApprovalSubPage/initiatesProjectsApproval/childProjectsApproval.vue' |
|||
import ApprovalDetails from "../ProcessApprovalSubPage/component/ApprovalDetails.vue"; |
|||
import ProjectDetails from "../ProcessApprovalSubPage/component/ProjectDetails.vue" |
|||
import ApprovalFromPage from "../ProcessApprovalSubPage/component/ApprovalFromPage.vue" |
|||
let dataTo = defineProps(["record"]) |
|||
let emit = defineEmits(["close"]) |
|||
console.log("routerouterouteroute", dataTo.record) |
|||
let processInstanceId = dataTo.record.processInstanceId |
|||
let projectid = dataTo.record.projectId |
|||
let taskid = dataTo.record.taskId |
|||
let ProjectDetailsRef = ref() |
|||
let ApprovalFromPageRef = ref() |
|||
let IsbatchImportProjects = ref<Boolean>(false); |
|||
let proIsEdit = ref<Boolean>(false); |
|||
let showApprovalForm = ref() |
|||
let resButton = ref({ |
|||
showApprovalForm: false, |
|||
IsEdit: false, |
|||
buttons: [] |
|||
}) |
|||
let proid = ref() |
|||
onMounted(async () => { |
|||
//流程id查询是否批量导入 |
|||
IsbatchImportProjects.value = await getIsbatchImportProjects({ processInstanceId: processInstanceId }) |
|||
if (IsbatchImportProjects.value) { |
|||
//分页查询任务详情 |
|||
reloadBatchImportTable() |
|||
} |
|||
resButton.value = await getActionParam({ projectid: projectid, stage: "1", taskId: taskid, procesType: dataTo.record.procesType }) |
|||
console.log("resButton", resButton.value) |
|||
showApprovalForm.value = resButton.value.showApprovalForm |
|||
}) |
|||
|
|||
|
|||
/** |
|||
* 批量导入表格 |
|||
*/ |
|||
const { tableContext: tableContextBatchImportTable } = useListPage({ |
|||
tableProps: { |
|||
size: 'small',//紧凑型表格 |
|||
title: '入库项目', |
|||
api: batchImportProjectPageListByInstid, |
|||
columns: columns, |
|||
showActionColumn: true, |
|||
useSearchForm: false, |
|||
beforeFetch(params) { |
|||
params.processInstanceId = processInstanceId |
|||
}, |
|||
}, |
|||
}); |
|||
// 批量导入表格绑定注册 |
|||
const [registerbatchImportTable, { reload: reloadBatchImportTable, getDataSource }] = tableContextBatchImportTable; |
|||
function getTableAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '详情', |
|||
onClick: handleDetailpage.bind(null, record), |
|||
}, |
|||
{ |
|||
label: '修改', |
|||
onClick: handleModifyDetailpage.bind(null, record), |
|||
ifShow: () => { |
|||
return resButton.value.IsEdit |
|||
} |
|||
}, |
|||
|
|||
]; |
|||
} |
|||
const [registeProjectrModal, { openModal: openModalProjectr, closeModal: closeModalProjectr }] = useModal();//项目详情 |
|||
|
|||
function handleDetailpage(record) { |
|||
proIsEdit.value = false |
|||
proid.value = record.id |
|||
openModalProjectr() |
|||
} |
|||
function handleModifyDetailpage(record) { |
|||
proIsEdit.value = resButton.value.IsEdit == true ? true : false |
|||
proid.value = record.id |
|||
openModalProjectr() |
|||
} |
|||
function closeProjectrModal() { |
|||
closeModalProjectr() |
|||
console.log("qqqqqqqqqqq") |
|||
reloadBatchImportTable() |
|||
} |
|||
/** |
|||
* 提交 |
|||
*/ |
|||
async function handleSubmit() { |
|||
let approvalform = await ApprovalFromPageRef.value.getFieldsValueApprovalForm(); |
|||
let projectform = await ProjectDetailsRef.value.getFieldsValueProjectForm() |
|||
if (!IsbatchImportProjects.value) { |
|||
|
|||
let param = { |
|||
flag: approvalform.flag, |
|||
projectid: projectid, |
|||
comment: approvalform.comment, |
|||
taskId: taskid, |
|||
stage: dataTo.record.stage, |
|||
projectInfo: projectform, |
|||
isEdit: resButton.value.IsEdit == true ? "1" : "0" |
|||
} |
|||
if (await ApprovalFromPageRef.value.validateApprovalForm() && await ProjectDetailsRef.value.validateProjectForm()) { |
|||
console.log("提交成功!1") |
|||
|
|||
submitTask(param) |
|||
console.log("提交成功!2", param, ProjectDetailsRef.value.IsEdit) |
|||
emit("close") |
|||
|
|||
|
|||
} |
|||
} else { |
|||
if (await ApprovalFromPageRef.value.validateApprovalForm()) { |
|||
console.log("提交成功!3") |
|||
let projectArr = await getDataSource() |
|||
let param = { |
|||
flag: approvalform.flag, |
|||
projectid: projectid, |
|||
comment: approvalform.comment, |
|||
taskId: taskid, |
|||
stage: dataTo.record.stage, |
|||
isEdit: resButton.value.IsEdit == true ? "1" : "0", |
|||
projectArr: projectArr |
|||
} |
|||
let res = await submitTask(param) |
|||
console.log("提交成功!", res) |
|||
emit("close") |
|||
} |
|||
} |
|||
} |
|||
function exit(){ |
|||
emit("close") |
|||
} |
|||
</script> |
|||
<style></style> |
@ -0,0 +1,188 @@ |
|||
<template> |
|||
<!-- 自定义表单 --> |
|||
<el-divider content-position="left">项目计划详情</el-divider> |
|||
<BasicTable @register="registerplaninfoTable"> |
|||
</BasicTable> |
|||
<el-divider content-position="left">项目资料详情</el-divider> |
|||
<BasicTable @register="registerResourceTable"> |
|||
<template #action="{ record }"> |
|||
<TableAction :actions="getTableAction(record)" /> |
|||
</template> |
|||
</BasicTable> |
|||
<el-divider content-position="left" v-if="resButton.IsEdit">重新上传项目资料</el-divider> |
|||
<div v-if="resButton.IsEdit" style="display: flex; justify-content: center; align-items: center; height: 100px;"> |
|||
<el-upload class="upload-demo" ref="upload" action :http-request="httpRequest" :before-upload="beforeUpload" |
|||
:on-exceed="handleExceed" :limit="5" :on-remove="removeFile"> |
|||
<el-button slot="trigger" size="small" type="primary">选取文件</el-button> |
|||
<div slot="tip" class="el-upload__tip">文件大小且不超过5M</div> |
|||
</el-upload> |
|||
</div> |
|||
<ApprovalDetails :processInstanceId="processInstanceId" /> |
|||
<ApprovalFromPage :showApprovalForm="showApprovalForm" :buttons="resButton.buttons" ref="ApprovalFromPageRef" |
|||
@submit="handleSubmit" @exit="exit" /> |
|||
</template> |
|||
<script lang="ts" name="uploadfileApproval" setup> |
|||
import { onMounted, ref, reactive } from 'vue' |
|||
import { BasicTable, ActionItem, TableAction } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
import { approvePlanFile, getActionParam } from '../myWork/inComplete/inComplete.api'; |
|||
import { PlaninfoFiletableColumns, PlaninfoColumn } from '../projectLib/projectPlan/projectPlan.data'; |
|||
import { planFilePageList, getplaninfoByid } from '../projectLib/projectPlan/projectPlan.api' |
|||
import { downloadFile } from "../../api/common/api" |
|||
import { ElMessage } from 'element-plus' |
|||
import ApprovalDetails from "../ProcessApprovalSubPage/component/ApprovalDetails.vue"; |
|||
import ApprovalFromPage from "../ProcessApprovalSubPage/component/ApprovalFromPage.vue" |
|||
let dataTo = defineProps(["record"]) |
|||
const emit = defineEmits(['close']); |
|||
console.log("routerouterouteroute", dataTo.record) |
|||
let planinfoid = dataTo.record.projectId as string |
|||
let processInstanceId = dataTo.record.processInstanceId |
|||
let stage = dataTo.record.stage as string |
|||
let taskid = dataTo.record.taskId as string |
|||
let showApprovalForm = ref() |
|||
let ApprovalFromPageRef = ref() |
|||
let resButton = reactive({ |
|||
showApprovalForm: false, |
|||
IsEdit: false, |
|||
buttons: [] |
|||
}) |
|||
let fileList = reactive<Array<any>>([]); |
|||
onMounted(async () => { |
|||
resButton = await getActionParam({ projectid: planinfoid, taskId: taskid, procesType: dataTo.record.procesType }) |
|||
showApprovalForm.value = resButton.showApprovalForm |
|||
|
|||
}) |
|||
|
|||
|
|||
|
|||
const { tableContext: tableplaninfoContext } = useListPage({ |
|||
tableProps: { |
|||
size: 'small',//紧凑型表格 |
|||
title: '项目计划详情', |
|||
api: getplaninfoByid, |
|||
columns: PlaninfoColumn, |
|||
showActionColumn: false, |
|||
useSearchForm: false, |
|||
beforeFetch(params) { |
|||
params.planinfoid = planinfoid; |
|||
}, |
|||
}, |
|||
}); |
|||
// BasicTable绑定注册 |
|||
const [registerplaninfoTable, { getDataSource }] = tableplaninfoContext; |
|||
|
|||
|
|||
//项目资料table |
|||
const { tableContext: resourceTableContext } = useListPage({ |
|||
tableProps: { |
|||
size: 'small',//紧凑型表格 |
|||
title: '项目计划资料详情', |
|||
api: planFilePageList, |
|||
columns: PlaninfoFiletableColumns, |
|||
useSearchForm: false, |
|||
actionColumn: { |
|||
width: 120, |
|||
fixed: "right", |
|||
}, |
|||
beforeFetch(params) { |
|||
params.planinfoid = planinfoid |
|||
}, |
|||
}, |
|||
}); |
|||
const [registerResourceTable] = resourceTableContext; |
|||
function getTableAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '下载', |
|||
ifShow: true, |
|||
onClick: handleDetailpage.bind(null, record), |
|||
} |
|||
]; |
|||
} |
|||
function handleDetailpage(record) { |
|||
console.log("我这一行的数据是", record) |
|||
let param = { |
|||
path: record.documentPath, |
|||
fileName: record.documentName |
|||
} |
|||
// |
|||
console.log("我这一行的数据是", param) |
|||
|
|||
downloadFile("/huzhouUploadfileinfo/downloadfile", record.documentName, param) |
|||
} |
|||
function removeFile(option) { |
|||
for (let i = 0; i < fileList.length; i++) { |
|||
if (fileList[i].file.name == option.name) { |
|||
fileList.splice(i, 1) |
|||
} |
|||
} |
|||
} |
|||
function httpRequest(option) { |
|||
fileList.push(option) |
|||
|
|||
} |
|||
|
|||
// 上传前处理 |
|||
async function beforeUpload(file) { |
|||
let fileSize = file.size |
|||
const FIVE_M = 5 * 1024 * 1024; |
|||
//大于5M,不允许上传 |
|||
|
|||
let tableData = await getDataSource() |
|||
let files = tableData[0].taskFile.split(",") |
|||
if (files.indexOf(file.name) != -1) { |
|||
|
|||
for (let i = 0; i < fileList.length; i++) { |
|||
|
|||
if (fileList[i].file.name == file.name) { |
|||
ElMessage.error(file.name + "请勿重复上传") |
|||
return false |
|||
} |
|||
} |
|||
} else { |
|||
ElMessage.error("请上传:" + files) |
|||
return false |
|||
} |
|||
if (fileSize > FIVE_M) { |
|||
ElMessage.error("最大上传5M") |
|||
return false |
|||
} |
|||
return true |
|||
} |
|||
// 文件数量过多时提醒 |
|||
function handleExceed() { |
|||
ElMessage.warning("最多只能上传五个文件") |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
async function handleSubmit() { |
|||
let approvalform = await ApprovalFromPageRef.value.getFieldsValueApprovalForm(); |
|||
const params = new FormData() |
|||
params.append("flag", approvalform.flag) |
|||
params.append("planinfoid", planinfoid) |
|||
params.append("comment", approvalform.comment) |
|||
params.append("taskId", taskid) |
|||
params.append("stage", stage) |
|||
if (fileList.length > 0) { |
|||
fileList.forEach((x) => { |
|||
params.append("file", x.file) |
|||
}); |
|||
} |
|||
console.log("param", params, "approvalform", approvalform) |
|||
if (await ApprovalFromPageRef.value.validateApprovalForm()) { |
|||
|
|||
let res = await approvePlanFile(params) |
|||
console.log("提交成功!", res) |
|||
emit("close") |
|||
|
|||
|
|||
} |
|||
} |
|||
async function exit() { |
|||
emit("close") |
|||
|
|||
} |
|||
</script> |
|||
<style></style> |
@ -0,0 +1,191 @@ |
|||
<template> |
|||
<!-- 自定义表单 --> |
|||
<el-divider content-position="left">项目计划详情</el-divider> |
|||
<BasicTable @register="registerplaninfoTable"> |
|||
</BasicTable> |
|||
<el-divider content-position="left">项目资料详情</el-divider> |
|||
<BasicTable @register="registerResourceTable"> |
|||
<template #action="{ record }"> |
|||
<TableAction :actions="getTableAction(record)" /> |
|||
</template> |
|||
</BasicTable> |
|||
<el-divider content-position="left" v-if="resButton.IsEdit">重新上传项目资料</el-divider> |
|||
<div v-if="resButton.IsEdit" style="display: flex; justify-content: center; align-items: center; height: 100px;"> |
|||
<el-upload class="upload-demo" ref="upload" action :http-request="httpRequest" :before-upload="beforeUpload" |
|||
:on-exceed="handleExceed" :limit="5" :on-remove="removeFile"> |
|||
<el-button slot="trigger" size="small" type="primary">选取文件</el-button> |
|||
<div slot="tip" class="el-upload__tip">文件大小且不超过5M</div> |
|||
</el-upload> |
|||
</div> |
|||
<ApprovalDetails :processInstanceId="processInstanceId" /> |
|||
<ApprovalFromPage :showApprovalForm="showApprovalForm" :buttons="resButton.buttons" ref="ApprovalFromPageRef" |
|||
@submit="handleSubmit" @exit="exit" /> |
|||
</template> |
|||
<script lang="ts" name="uploadfileApproval" setup> |
|||
import { onMounted, ref, reactive } from 'vue' |
|||
import { BasicTable, ActionItem, TableAction } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
import { approvePlanFile, getActionParam } from '../../myWork/inComplete/inComplete.api'; |
|||
import { PlaninfoFiletableColumns, PlaninfoColumn } from '../../projectLib/projectPlan/projectPlan.data'; |
|||
import { planFilePageList, getplaninfoByid } from '../../projectLib/projectPlan/projectPlan.api' |
|||
import { useRouter, useRoute } from 'vue-router' |
|||
import { downloadFile } from "../../../api/common/api" |
|||
import { ElMessage } from 'element-plus' |
|||
import ApprovalDetails from "../component/ApprovalDetails.vue"; |
|||
import ApprovalFromPage from "../component/ApprovalFromPage.vue" |
|||
|
|||
const route = useRoute(); |
|||
const router = useRouter() |
|||
console.log("routerouterouteroute", route.query) |
|||
let planinfoid = route.query.projectId as string |
|||
let processInstanceId = route.query.processInstanceId |
|||
let stage = route.query.stage as string |
|||
let taskid = route.query.taskId as string |
|||
const emit = defineEmits(['close']); |
|||
let showApprovalForm = ref() |
|||
let ApprovalFromPageRef = ref() |
|||
let resButton = reactive({ |
|||
showApprovalForm: false, |
|||
IsEdit: false, |
|||
buttons: [] |
|||
}) |
|||
let fileList = reactive<Array<any>>([]); |
|||
onMounted(async () => { |
|||
resButton = await getActionParam({ projectid: planinfoid, taskId: taskid, procesType: route.query.procesType }) |
|||
showApprovalForm.value = resButton.showApprovalForm |
|||
|
|||
}) |
|||
|
|||
|
|||
|
|||
const { tableContext: tableplaninfoContext } = useListPage({ |
|||
tableProps: { |
|||
size: 'small',//紧凑型表格 |
|||
title: '项目计划详情', |
|||
api: getplaninfoByid, |
|||
columns: PlaninfoColumn, |
|||
showActionColumn: false, |
|||
useSearchForm: false, |
|||
beforeFetch(params) { |
|||
params.planinfoid = planinfoid; |
|||
}, |
|||
}, |
|||
}); |
|||
// BasicTable绑定注册 |
|||
const [registerplaninfoTable, { getDataSource }] = tableplaninfoContext; |
|||
|
|||
|
|||
//项目资料table |
|||
const { tableContext: resourceTableContext } = useListPage({ |
|||
tableProps: { |
|||
size: 'small',//紧凑型表格 |
|||
title: '项目计划资料详情', |
|||
api: planFilePageList, |
|||
columns: PlaninfoFiletableColumns, |
|||
useSearchForm: false, |
|||
actionColumn: { |
|||
width: 120, |
|||
fixed: "right", |
|||
}, |
|||
beforeFetch(params) { |
|||
params.planinfoid = planinfoid |
|||
}, |
|||
}, |
|||
}); |
|||
const [registerResourceTable] = resourceTableContext; |
|||
function getTableAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '下载', |
|||
ifShow: true, |
|||
onClick: handleDetailpage.bind(null, record), |
|||
} |
|||
]; |
|||
} |
|||
function handleDetailpage(record) { |
|||
console.log("我这一行的数据是", record) |
|||
let param = { |
|||
path: record.documentPath, |
|||
fileName: record.documentName |
|||
} |
|||
// |
|||
console.log("我这一行的数据是", param) |
|||
|
|||
downloadFile("/huzhouUploadfileinfo/downloadfile", record.documentName, param) |
|||
} |
|||
function removeFile(option) { |
|||
for (let i = 0; i < fileList.length; i++) { |
|||
if (fileList[i].file.name == option.name) { |
|||
fileList.splice(i, 1) |
|||
} |
|||
} |
|||
} |
|||
function httpRequest(option) { |
|||
fileList.push(option) |
|||
|
|||
} |
|||
|
|||
// 上传前处理 |
|||
async function beforeUpload(file) { |
|||
let fileSize = file.size |
|||
const FIVE_M = 5 * 1024 * 1024; |
|||
//大于5M,不允许上传 |
|||
|
|||
let tableData = await getDataSource() |
|||
let files = tableData[0].taskFile.split(",") |
|||
if (files.indexOf(file.name) != -1) { |
|||
|
|||
for (let i = 0; i < fileList.length; i++) { |
|||
|
|||
if (fileList[i].file.name == file.name) { |
|||
ElMessage.error(file.name + "请勿重复上传") |
|||
return false |
|||
} |
|||
} |
|||
} else { |
|||
ElMessage.error("请上传:" + files) |
|||
return false |
|||
} |
|||
if (fileSize > FIVE_M) { |
|||
ElMessage.error("最大上传5M") |
|||
return false |
|||
} |
|||
return true |
|||
} |
|||
// 文件数量过多时提醒 |
|||
function handleExceed() { |
|||
ElMessage.warning("最多只能上传五个文件") |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
async function handleSubmit() { |
|||
let approvalform = await ApprovalFromPageRef.value.getFieldsValueApprovalForm(); |
|||
const params = new FormData() |
|||
params.append("flag", approvalform.flag) |
|||
params.append("planinfoid", planinfoid) |
|||
params.append("comment", approvalform.comment) |
|||
params.append("taskId", taskid) |
|||
params.append("stage", stage) |
|||
if (fileList.length > 0) { |
|||
fileList.forEach((x) => { |
|||
params.append("file", x.file) |
|||
}); |
|||
} |
|||
console.log("param", params, "approvalform", approvalform) |
|||
if (await ApprovalFromPageRef.value.validateApprovalForm()) { |
|||
|
|||
let res = await approvePlanFile(params) |
|||
console.log("提交成功!", res) |
|||
router.go(-1) |
|||
|
|||
|
|||
} |
|||
} |
|||
async function exit() { |
|||
router.go(-1) |
|||
|
|||
} |
|||
</script> |
|||
<style></style> |
@ -0,0 +1,144 @@ |
|||
<template> |
|||
<!-- 自定义表单 --> |
|||
<PlaninfoDetails :projectid="projectId" :showActionColumn="false"/> |
|||
<el-divider content-position="left" v-if="resButton.IsEdit">重新上传项目计划</el-divider> |
|||
<div v-if="resButton.IsEdit" style="display: flex; justify-content: center; align-items: center; height: 100px;"> |
|||
<el-upload class="upload-demo" ref="upload" action :http-request="httpRequest" :before-upload="beforeUpload" |
|||
:on-exceed="handleExceed" :limit="1" :on-remove="removeFile"> |
|||
<el-button slot="trigger" size="small" type="primary">选取文件</el-button> |
|||
<div slot="tip" class="el-upload__tip">文件大小且不超过5M</div> |
|||
</el-upload> |
|||
</div> |
|||
<ApprovalDetails :processInstanceId="processInstanceId" /> |
|||
|
|||
<ApprovalFromPage :showApprovalForm="showApprovalForm" :buttons="resButton.buttons" ref="ApprovalFromPageRef" |
|||
@submit="handleSubmit" @exit="exit" /> |
|||
</template> |
|||
<script lang="ts" name="projectPlanApproval" setup> |
|||
import { ref, onMounted, reactive } from 'vue' |
|||
|
|||
import { getActionParam } from '../myWork/inComplete/inComplete.api'; |
|||
import { approvePlaninfo } from '../projectLib/projectPlan/projectPlan.api' |
|||
import { ElMessage } from 'element-plus' |
|||
import ApprovalDetails from "../ProcessApprovalSubPage/component/ApprovalDetails.vue"; |
|||
import ApprovalFromPage from "../ProcessApprovalSubPage/component/ApprovalFromPage.vue" |
|||
import PlaninfoDetails from "../ProcessApprovalSubPage/component/PlaninfoDetails.vue" |
|||
let dataTo = defineProps(["record"]) |
|||
const emit = defineEmits(['close']); |
|||
let processInstanceId = dataTo.record.processInstanceId |
|||
let projectId = dataTo.record.projectId as string |
|||
let taskid = dataTo.record.taskId as string |
|||
let stage = dataTo.record.stage as string |
|||
let showApprovalForm = ref() |
|||
let ApprovalFromPageRef = ref() |
|||
let resButton = reactive({ |
|||
showApprovalForm: false, |
|||
IsEdit: false, |
|||
buttons: [] |
|||
}) |
|||
let fileList = reactive<Array<any>>([]); |
|||
|
|||
onMounted(async () => { |
|||
resButton = await getActionParam({ processInstanceId: processInstanceId, taskId: taskid, procesType: dataTo.record.procesType }) |
|||
showApprovalForm.value = resButton.showApprovalForm |
|||
|
|||
}) |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
async function handleSubmit() { |
|||
let approvalform = await ApprovalFromPageRef.value.getFieldsValueApprovalForm(); |
|||
if (await ApprovalFromPageRef.value.validateApprovalForm()) { |
|||
const params = new FormData() |
|||
params.append("flag", approvalform.flag) |
|||
params.append("projectid", projectId) |
|||
params.append("comment", approvalform.comment) |
|||
params.append("taskId", taskid) |
|||
params.append("stage", stage) |
|||
if (fileList.length > 0) { |
|||
params.append("file", fileList[0].file) |
|||
} |
|||
let res = await approvePlaninfo(params) |
|||
console.log("提交成功!", res) |
|||
emit("close") |
|||
} |
|||
} |
|||
async function exit() { |
|||
emit("close") |
|||
|
|||
} |
|||
function removeFile(option) { |
|||
for (let i = 0; i < fileList.length; i++) { |
|||
if (fileList[i].file.name == option.name) { |
|||
fileList.splice(i, 1) |
|||
} |
|||
} |
|||
|
|||
} |
|||
function httpRequest(option) { |
|||
fileList.push(option) |
|||
} |
|||
|
|||
// 上传前处理 |
|||
function beforeUpload(file) { |
|||
let fileSize = file.size |
|||
const FIVE_M = 5 * 1024 * 1024; |
|||
const fileSuffix = file.name.substring(file.name.lastIndexOf(".") + 1); |
|||
|
|||
let whiteList = ["xls", "xlsx"]; |
|||
|
|||
if (whiteList.indexOf(fileSuffix) === -1) { |
|||
ElMessage.error('上传文件只能是xls、xlsx格式'); |
|||
return false; |
|||
} |
|||
//大于5M,不允许上传 |
|||
if (fileSize > FIVE_M) { |
|||
ElMessage.error("最大上传5M") |
|||
return false |
|||
} |
|||
|
|||
return true |
|||
} |
|||
// 文件数量过多时提醒 |
|||
function handleExceed() { |
|||
ElMessage.warning("最多只能上传一个文件") |
|||
} |
|||
|
|||
|
|||
</script> |
|||
<style scoped> |
|||
.timeline { |
|||
display: flex; |
|||
width: 100%; |
|||
margin-bottom: 100px; |
|||
|
|||
.lineitem { |
|||
transform: translateX(50%); |
|||
width: 25%; |
|||
} |
|||
} |
|||
|
|||
:deep(.el-timeline-item__tail) { |
|||
border-left: none; |
|||
border-top: 2px solid #e4e7ed; |
|||
width: 100%; |
|||
position: absolute; |
|||
top: 9px; |
|||
} |
|||
|
|||
:deep(.el-timeline-item__wrapper) { |
|||
padding-left: 0; |
|||
position: absolute; |
|||
top: 20px; |
|||
transform: translateX(-50%); |
|||
text-align: center; |
|||
} |
|||
|
|||
:deep(.el-timeline-item__timestamp) { |
|||
font-size: 14px; |
|||
|
|||
} |
|||
</style> |
|||
|
@ -0,0 +1,139 @@ |
|||
<template> |
|||
<!-- 自定义表单 --> |
|||
<!-- <el-divider content-position="left">项目入库详情</el-divider> |
|||
<BasicForm @register="registerProjectForm" /> --> |
|||
<ProjectDetails :IsEdit="false" :projectid="projectId" ref="ProjectDetailsRef" /> |
|||
<div> |
|||
<el-divider content-position="left">项目资料详情</el-divider> |
|||
<UploadfileDetail :projectid="projectId" :stage="1" /> |
|||
</div> |
|||
|
|||
<el-divider content-position="left" v-if="resButton.IsEdit">重新上传项目资料</el-divider> |
|||
<div v-if="resButton.IsEdit" style="display: flex; justify-content: center; align-items: center; height: 100px;"> |
|||
<el-upload class="upload-demo" ref="upload" action :http-request="httpRequest" :before-upload="beforeUpload" |
|||
:on-exceed="handleExceed" :limit="5" :on-remove="removeFile"> |
|||
<el-button slot="trigger" size="small" type="primary">选取文件</el-button> |
|||
<div slot="tip" class="el-upload__tip">文件大小且不超过5M</div> |
|||
</el-upload> |
|||
</div> |
|||
<div> |
|||
<el-divider content-position="left">意见文件</el-divider> |
|||
<UploadfileDetail :projectid="projectId" :stage="2" /> |
|||
</div> |
|||
<ApprovalDetails :processInstanceId="processInstanceId" /> |
|||
<!-- --> |
|||
<div v-if="procesType == '0' && !resButton.IsEdit"> |
|||
<el-divider content-position="left">上传意见文件</el-divider> |
|||
<div style="display: flex; justify-content: center; align-items: center; height: 100px;"> |
|||
<el-upload class="upload-demo" ref="upload" action :http-request="httpRequestadvice" |
|||
:before-upload="beforeUpload" :on-exceed="handleExceed" :limit="5" :on-remove="removeFile"> |
|||
<el-button slot="trigger" size="small" type="primary">选取文件</el-button> |
|||
<div slot="tip" class="el-upload__tip">文件大小且不超过5M</div> |
|||
</el-upload> |
|||
</div> |
|||
</div> |
|||
|
|||
<ApprovalFromPage :showApprovalForm="showApprovalForm" :buttons="resButton.buttons" ref="ApprovalFromPageRef" |
|||
@submit="handleSubmit" @exit="exit" /> |
|||
</template> |
|||
<script lang="ts" name="uploadfileApproval" setup> |
|||
import { onMounted, ref, reactive } from 'vue' |
|||
import { approveUploadFile, getActionParam } from '../myWork/inComplete/inComplete.api'; |
|||
import { ElMessage } from 'element-plus' |
|||
import ApprovalDetails from "../ProcessApprovalSubPage/component/ApprovalDetails.vue"; |
|||
import ProjectDetails from "../ProcessApprovalSubPage/component/ProjectDetails.vue" |
|||
import ApprovalFromPage from "../ProcessApprovalSubPage/component/ApprovalFromPage.vue" |
|||
import UploadfileDetail from "../ProcessApprovalSubPage/component/UploadfileDetail.vue" |
|||
|
|||
let dataTo = defineProps(["record"]) |
|||
console.log("routerouterouteroute", dataTo.record) |
|||
let projectId = dataTo.record.projectId as string |
|||
let processInstanceId = dataTo.record.processInstanceId |
|||
let stage = dataTo.record.stage as string |
|||
let taskid = dataTo.record.taskId as string |
|||
let procesType = dataTo.record.procesType |
|||
const emit = defineEmits(['close']); |
|||
let showApprovalForm = ref() |
|||
let ApprovalFromPageRef = ref() |
|||
let resButton = reactive({ |
|||
showApprovalForm: false, |
|||
IsEdit: false, |
|||
buttons: [] |
|||
}) |
|||
let fileList = reactive<Array<any>>([]); |
|||
let fileAdviceList = reactive<Array<any>>([]); |
|||
onMounted(async () => { |
|||
resButton = await getActionParam({ projectid: projectId, taskId: taskid, procesType: dataTo.record.procesType }) |
|||
showApprovalForm.value = resButton.showApprovalForm |
|||
}) |
|||
|
|||
|
|||
function removeFile(option) { |
|||
for (let i = 0; i < fileList.length; i++) { |
|||
if (fileList[i].file.name == option.name) { |
|||
fileList.splice(i, 1) |
|||
} |
|||
} |
|||
for (let i = 0; i < fileAdviceList.length; i++) { |
|||
if (fileAdviceList[i].file.name == option.name) { |
|||
fileAdviceList.splice(i, 1) |
|||
} |
|||
} |
|||
|
|||
} |
|||
function httpRequest(option) { |
|||
fileList.push(option) |
|||
} |
|||
function httpRequestadvice(option) { |
|||
fileAdviceList.push(option) |
|||
} |
|||
// 上传前处理 |
|||
function beforeUpload(file) { |
|||
let fileSize = file.size |
|||
const FIVE_M = 5 * 1024 * 1024; |
|||
//大于5M,不允许上传 |
|||
if (fileSize > FIVE_M) { |
|||
ElMessage.error("最大上传5M") |
|||
return false |
|||
} |
|||
|
|||
return true |
|||
} |
|||
// 文件数量过多时提醒 |
|||
function handleExceed() { |
|||
ElMessage.warning("最多只能上传五个文件") |
|||
} |
|||
|
|||
async function handleSubmit() { |
|||
let approvalform = await ApprovalFromPageRef.value.getFieldsValueApprovalForm(); |
|||
const params = new FormData() |
|||
params.append("flag", approvalform.flag) |
|||
params.append("projectid", projectId) |
|||
params.append("comment", approvalform.comment) |
|||
params.append("taskId", taskid) |
|||
params.append("stage", stage) |
|||
if (fileList.length > 0) { |
|||
fileList.forEach((x) => { |
|||
params.append("file", x.file) |
|||
}); |
|||
} |
|||
if (fileAdviceList.length > 0) { |
|||
fileAdviceList.forEach((x) => { |
|||
params.append("adviceFile", x.file) |
|||
}); |
|||
} |
|||
console.log("param", params, "approvalform", approvalform) |
|||
if (await ApprovalFromPageRef.value.validateApprovalForm()) { |
|||
|
|||
let res = await approveUploadFile(params) |
|||
console.log("提交成功!", res) |
|||
emit("close") |
|||
|
|||
} |
|||
} |
|||
async function exit() { |
|||
emit("close") |
|||
|
|||
} |
|||
</script> |
|||
<style></style> |
@ -0,0 +1,23 @@ |
|||
import { defHttp } from '/@/utils/http/axios'; |
|||
import { downloadFile } from "../../../api/common/api" |
|||
|
|||
export enum Api { |
|||
regulationlabPageList = '/huzhouRegulationlab/regulationlabPageList', |
|||
addRegulationlab="/huzhouRegulationlab/addRegulationlab", |
|||
modifyRegulationlab = '/huzhouRegulationlab/modifyRegulationlab', |
|||
getregulationlabById="/huzhouRegulationlab/getregulationlabById", |
|||
deleteRegulationlab = '/huzhouRegulationlab/deleteRegulationlab', |
|||
batchdownloadRegulationlabFiles="/huzhouRegulationlab/batchdownloadRegulationlabFiles" |
|||
} |
|||
|
|||
export const regulationlabPageList = (params) => defHttp.get({ url: Api.regulationlabPageList, params }) |
|||
export const getregulationlabById = (params) => defHttp.get({ url: Api.getregulationlabById, params }) |
|||
export const batchdownloadRegulationlabFiles = (params) => downloadFile(Api.batchdownloadRegulationlabFiles,"批量导出.zip",params) |
|||
export const addRegulationlab = (params?) =>defHttp.post({ url: Api.addRegulationlab,headers:{ "Content-Type": "multipart/form-data" }, params }) |
|||
|
|||
export const modifyRegulationlab = (params?) =>defHttp.post({ url: Api.modifyRegulationlab,headers:{ "Content-Type": "multipart/form-data" }, params }) |
|||
|
|||
export const deleteRegulationlab = (params?) =>defHttp.post({ url: Api.deleteRegulationlab, params }) |
|||
|
|||
|
|||
|
@ -0,0 +1,70 @@ |
|||
import { FormSchema } from '/@/components/Form'; |
|||
import { BasicColumn } from '/@/components/Table'; |
|||
|
|||
|
|||
export const RegulationLabcolumns: BasicColumn[] = [ |
|||
{ |
|||
title: '政策法规名称', |
|||
width: 150, |
|||
dataIndex: 'regulationlabName', |
|||
}, |
|||
|
|||
{ |
|||
title: '政策法规描述', |
|||
width: 150, |
|||
dataIndex: 'regulationlabDescribe', |
|||
}, |
|||
{ |
|||
title: '文件名称', |
|||
dataIndex: 'documentName', |
|||
width: 150, |
|||
}, |
|||
{ |
|||
title: '文件大小', |
|||
dataIndex: 'size', |
|||
width: 150, |
|||
customRender: ({ record }) => { |
|||
let kbNum: number = record.size / 1024 |
|||
if (kbNum < 1024) { |
|||
return kbNum.toFixed(2).toString() + "KB" |
|||
} else { |
|||
let mbNum: number = kbNum / 1024 |
|||
return mbNum.toFixed(2).toString() + "MB" |
|||
} |
|||
|
|||
}, |
|||
|
|||
}, |
|||
|
|||
]; |
|||
export const searchFormSchema: FormSchema[] = [ |
|||
{ |
|||
label: '政策法规名称', |
|||
field: 'regulationlabName', |
|||
component: 'Input', |
|||
//colProps: { span: 6 },
|
|||
}, |
|||
{ |
|||
label: '文件名称', |
|||
field: 'documentName', |
|||
component: 'Input', |
|||
//colProps: { span: 6 },
|
|||
} |
|||
|
|||
]; |
|||
export const regularformSchemas: FormSchema[] = [ |
|||
{ |
|||
label: '政策法规名称', |
|||
field: 'regulationlabName', |
|||
component: 'Input', |
|||
required: true, |
|||
}, |
|||
{ |
|||
label: '法规资料描述', |
|||
field: 'regulationlabDescribe', |
|||
component: 'Input', |
|||
required: true, |
|||
} |
|||
|
|||
]; |
|||
|
@ -0,0 +1,136 @@ |
|||
<template> |
|||
<!-- 自定义表单 --> |
|||
<BasicModal @register="registerModal" title="归档信息详情" width="1200px" :showOkBtn="false" :showCancelBtn="false"> |
|||
|
|||
<el-divider content-position="left">法规信息</el-divider> |
|||
<BasicForm @register="registerProjectForm" /> |
|||
<el-divider content-position="left">上传法规资料</el-divider> |
|||
<el-form ref="importFormRef" label-width="130px"> |
|||
|
|||
<el-form-item label="上传文件:"> |
|||
<el-upload class="upload-demo" ref="upload" action :http-request="httpRequest" :before-upload="beforeUpload" |
|||
:on-exceed="handleExceed" :limit="1" :on-remove="removeFile"> |
|||
<el-button slot="trigger" size="small" type="primary">选取文件</el-button> |
|||
<div slot="tip" class="el-upload__tip">文件大小且不超过10M</div> |
|||
</el-upload> |
|||
</el-form-item> |
|||
|
|||
<el-form-item> |
|||
<el-button type="primary" @click="submitImportForm">上传</el-button> |
|||
<el-button type="info" @click="dialogVisible">关闭窗口</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
</BasicModal> |
|||
</template> |
|||
<script lang="ts" name="addAndModify" setup> |
|||
import { ref, reactive, defineProps, watchEffect } from 'vue' |
|||
import { useForm, BasicForm } from '/@/components/Form'; |
|||
import { regularformSchemas } from './RegulationLab.data'; |
|||
import { modifyRegulationlab, addRegulationlab, getregulationlabById } from './RegulationLab.api'; |
|||
import { ElMessage } from 'element-plus' |
|||
import { useModalInner, BasicModal } from '/@/components/Modal'; |
|||
const [registerModal, { closeModal }] = useModalInner(init); |
|||
|
|||
|
|||
let fileList = reactive<Array<any>>([]); |
|||
let id = ref() |
|||
const emit = defineEmits(['close']); |
|||
|
|||
async function init(data) { |
|||
fileList.pop() |
|||
if (data.id != null) { |
|||
id.value = data.id |
|||
let param: any = { |
|||
id: data.id |
|||
} |
|||
let res = await getregulationlabById(param) |
|||
console.log("结果是", res) |
|||
setFieldsValue(res) |
|||
} |
|||
|
|||
} |
|||
|
|||
//项目入库详情 |
|||
const [registerProjectForm, { setFieldsValue: setFieldsValue, getFieldsValue, validate }] = useForm({ |
|||
//注册表单列 |
|||
schemas: regularformSchemas, |
|||
showActionButtonGroup: false, |
|||
//回车提交 |
|||
// autoSubmitOnEnter: true, |
|||
// //不显示重置按钮 |
|||
// showResetButton: false, |
|||
//自定义提交按钮文本和图标 |
|||
// submitButtonOptions: { text: '提交', preIcon: '' }, |
|||
//查询列占比 24代表一行 取值范围 0-24 |
|||
// actionColOptions: { span: 17 }, |
|||
labelCol: { style: { width: '120px' } }, |
|||
wrapperCol: { style: { width: 'auto' } }, |
|||
}); |
|||
|
|||
|
|||
// 覆盖默认的上传行为,可以自定义上传的实现,将上传的文件依次添加到fileList数组中,支持多个文件 |
|||
function httpRequest(option) { |
|||
fileList.push(option) |
|||
} |
|||
function removeFile(option) { |
|||
for (let i = 0; i < fileList.length; i++) { |
|||
if (fileList[i].file.name == option.name) { |
|||
fileList.splice(i, 1) |
|||
} |
|||
} |
|||
console.log(fileList, option) |
|||
|
|||
} |
|||
// 上传前处理 |
|||
function beforeUpload(file) { |
|||
let fileSize = file.size |
|||
const FIVE_M = 10 * 1024 * 1024; |
|||
//大于5M,不允许上传 |
|||
if (fileSize > FIVE_M) { |
|||
ElMessage.error("最大上传10M") |
|||
return false |
|||
} |
|||
|
|||
return true |
|||
} |
|||
// 文件数量过多时提醒 |
|||
function handleExceed() { |
|||
ElMessage.warning("最多只能上传一个文件") |
|||
} |
|||
//导入Excel病种信息数据 |
|||
async function submitImportForm() { |
|||
if (await validate()) { |
|||
|
|||
let data = await getFieldsValue() |
|||
console.log("data", data) |
|||
// 使用form表单的数据格式 |
|||
const params = new FormData() |
|||
if (id.value != null) { |
|||
//说明是修改 |
|||
if(fileList.length>0){ |
|||
params.append('file', fileList[0].file) |
|||
} |
|||
params.append("id", id.value) |
|||
params.append("regulationlabName", data.regulationlabName) |
|||
params.append("regulationlabDescribe", data.regulationlabDescribe) |
|||
modifyRegulationlab(params) |
|||
} else { |
|||
if (fileList.length == 0) { |
|||
ElMessage.warning("请上传文件") |
|||
return; |
|||
} |
|||
params.append('file', fileList[0].file) |
|||
params.append("regulationlabName", data.regulationlabName) |
|||
params.append("regulationlabDescribe", data.regulationlabDescribe) |
|||
addRegulationlab(params) |
|||
} |
|||
dialogVisible() |
|||
} |
|||
} |
|||
function dialogVisible() { |
|||
closeModal() |
|||
emit("close") |
|||
} |
|||
</script> |
|||
<style></style> |
|||
|
@ -0,0 +1,109 @@ |
|||
<template> |
|||
<div> |
|||
<!--引用表格--> |
|||
<BasicTable @register="registerTable"> |
|||
<template #action="{ record }"> |
|||
<!-- <TableAction :actions="getTableAction(record)" /> --> |
|||
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" /> |
|||
</template> |
|||
<template #tableTitle> |
|||
<a-button type="primary" preIcon="ant-design:plus-outlined" @click="handleAdd">新增政策法规</a-button> |
|||
<a-button type="primary" preIcon="ant-design:download-outlined" @click="handleBatchdownload"> 批量导出</a-button> |
|||
|
|||
</template> |
|||
</BasicTable> |
|||
<addAndModify @register="registerSubmitProjectArchive" @close="closeModel" /> |
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts" name="system-user" setup> |
|||
//ts语法 |
|||
import { ref } from 'vue'; |
|||
import { ActionItem, BasicTable, TableAction } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
import { useModal, BasicModal } from '/@/components/Modal'; |
|||
import { downloadFile } from "../../../api/common/api" |
|||
|
|||
import { RegulationLabcolumns, searchFormSchema } from './RegulationLab.data'; |
|||
import addAndModify from "./addAndModify.vue" |
|||
import { regulationlabPageList, batchdownloadRegulationlabFiles, deleteRegulationlab } from './RegulationLab.api'; |
|||
const [registerSubmitProjectArchive, { openModal }] = useModal(); |
|||
const { tableContext } = useListPage({ |
|||
designScope: 'basic-table-demo-ajax', |
|||
tableProps: { |
|||
title: '政策法规信息', |
|||
api: regulationlabPageList, |
|||
columns: RegulationLabcolumns, |
|||
actionColumn: { |
|||
width: 120, |
|||
fixed: "right", |
|||
}, |
|||
//表单查询项设置 |
|||
formConfig: { |
|||
schemas: searchFormSchema, |
|||
} |
|||
}, |
|||
}); |
|||
//BasicTable绑定注册 |
|||
const [registerTable, { reload, getForm }] = tableContext; |
|||
|
|||
function getTableAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '下载', |
|||
onClick: handledown.bind(null, record), |
|||
} |
|||
|
|||
]; |
|||
} |
|||
function getDropDownAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '修改', |
|||
onClick: handleModify.bind(null, record) |
|||
}, |
|||
{ |
|||
label: '删除', |
|||
popConfirm: { |
|||
title: '确定删除吗?', |
|||
confirm: handleDelete.bind(null, record), |
|||
}, |
|||
} |
|||
|
|||
]; |
|||
} |
|||
function handleAdd() { |
|||
openModal(true, { id: null }) |
|||
} |
|||
function handleModify(record) { |
|||
openModal(true, { id: record.id }) |
|||
|
|||
} |
|||
function handleSubmit(record) { |
|||
|
|||
|
|||
} |
|||
function handledown(record) { |
|||
let param = { |
|||
path: record.documentPath, |
|||
} |
|||
downloadFile("/huzhouUploadfileinfo/downloadfile", record.documentName, param) |
|||
|
|||
} |
|||
async function handleDelete(record) { |
|||
await deleteRegulationlab({ id: record.id }) |
|||
reload() |
|||
} |
|||
function handleBatchdownload() { |
|||
let { getFieldsValue } = getForm() |
|||
let fromData = getFieldsValue() |
|||
batchdownloadRegulationlabFiles(fromData) |
|||
} |
|||
function closeModel() { |
|||
reload() |
|||
} |
|||
|
|||
</script> |
|||
|
|||
<style scoped></style> |
@ -1,124 +0,0 @@ |
|||
<template> |
|||
<!-- 自定义表单 --> |
|||
<el-divider content-position="left">项目入库详情</el-divider> |
|||
<BasicForm @register="registerProjectForm" /> |
|||
<el-divider content-position="left">项目审批详情</el-divider> |
|||
<BasicTable @register="registerTable"/> |
|||
<div> |
|||
<el-divider content-position="left">项目审批</el-divider> |
|||
<BasicForm @register="registerApprovalForm" @submit="handleSubmit"/> |
|||
</div> |
|||
|
|||
</template> |
|||
<script lang="ts" name="complectedDetail" setup> |
|||
import { defineProps,watchEffect} from 'vue' |
|||
import { useForm, BasicForm } from '/@/components/Form'; |
|||
import { formSchemas,approveStartProcessColumns} from '../../projectLib/projectInfo/projectInfo.data'; |
|||
import {queryProjectInfoById,queryProcessInfo} from '../../projectLib/projectInfo/projectInfo.api' |
|||
import {BasicTable } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
import {approvalformSchemas} from '../inComplete/inComplete.data' |
|||
|
|||
import {submitTask} from '../inComplete/inComplete.api'; |
|||
let proid = defineProps(["dataTo","taskid"]) |
|||
const emit = defineEmits(['close']); |
|||
|
|||
watchEffect(async ()=>{ |
|||
console.log("dataTo",proid.dataTo) |
|||
let param:any = { |
|||
projectid:proid.dataTo |
|||
} |
|||
let res =await queryProjectInfoById(param) |
|||
console.log("结果是",res) |
|||
setFieldsValue(res) |
|||
reload() |
|||
}) |
|||
|
|||
/** |
|||
* BasicForm绑定注册; |
|||
* useForm 是整个框架的核心用于表单渲染,里边封装了很多公共方法; |
|||
* 支持(schemas: 渲染表单列,autoSubmitOnEnter:回车提交,submitButtonOptions:自定义按钮文本和图标等方法); |
|||
* 平台通过此封装,简化了代码,支持自定义扩展; |
|||
*/ |
|||
const [registerProjectForm,{setFieldsValue}] = useForm({ |
|||
//注册表单列 |
|||
schemas: formSchemas, |
|||
showActionButtonGroup: false, |
|||
//回车提交 |
|||
// autoSubmitOnEnter: true, |
|||
// //不显示重置按钮 |
|||
// showResetButton: false, |
|||
//自定义提交按钮文本和图标 |
|||
// submitButtonOptions: { text: '提交', preIcon: '' }, |
|||
//查询列占比 24代表一行 取值范围 0-24 |
|||
// actionColOptions: { span: 17 }, |
|||
labelCol: { style: { width: '120px' } }, |
|||
wrapperCol:{ style: { width: 'auto' } }, |
|||
disabled:true |
|||
}); |
|||
|
|||
|
|||
|
|||
const { tableContext } = useListPage({ |
|||
tableProps: { |
|||
size:'small',//紧凑型表格 |
|||
title: '流程审批情况', |
|||
api:queryProcessInfo, |
|||
columns: approveStartProcessColumns, |
|||
showActionColumn:false, |
|||
useSearchForm:false, |
|||
beforeFetch(params) { |
|||
params.status = "1", |
|||
params.projectid=proid.dataTo |
|||
}, |
|||
}, |
|||
}); |
|||
// BasicTable绑定注册 |
|||
const [registerTable,{reload}] = tableContext; |
|||
|
|||
const[registerApprovalForm,{validate,getFieldsValue}] = useForm({ |
|||
//注册表单列 |
|||
schemas: approvalformSchemas, |
|||
//自定义查询按钮的文本和图标 |
|||
// submitButtonOptions: { text: '提交', preIcon: '' }, |
|||
//自定义重置按钮的文本和图标 |
|||
resetButtonOptions: { text: '取消', preIcon: '' }, |
|||
// showActionButtonGroup: false, |
|||
//回车提交 |
|||
// autoSubmitOnEnter: true, |
|||
// //不显示重置按钮 |
|||
// showResetButton: false, |
|||
//自定义提交按钮文本和图标 |
|||
submitButtonOptions: { text: '提交', preIcon: '' }, |
|||
//查询列占比 24代表一行 取值范围 0-24 |
|||
actionColOptions: { span: 14 }, |
|||
//提交按钮的自定义事件 |
|||
// submitFunc: customSubmitFunc, |
|||
//重置按钮的自定义时间 |
|||
resetFunc: customResetFunc, |
|||
labelCol: { style: { width: '120px' } }, |
|||
wrapperCol:{ style: { width: 'auto' } }, |
|||
// disabled:true |
|||
}) |
|||
async function handleSubmit(){ |
|||
let approvalform = await getFieldsValue(); |
|||
let param = { |
|||
flag:approvalform.flag, |
|||
projectid:proid.dataTo, |
|||
comment:approvalform.comment, |
|||
taskId:proid.taskid |
|||
} |
|||
console.log("aaaaaaaaaaa",proid) |
|||
console.log("param",param,"approvalform",approvalform) |
|||
if(await validate()){ |
|||
|
|||
let res = await submitTask(param) |
|||
console.log("提交成功!",res) |
|||
await emit("close"); |
|||
} |
|||
} |
|||
async function customResetFunc(){ |
|||
emit("close"); |
|||
} |
|||
</script> |
|||
<style></style> |
@ -1,618 +0,0 @@ |
|||
import { FormSchema, FormActionType } from '/@/components/Form'; |
|||
import { getDictItemsByCode } from '/@/utils/dict/index'; |
|||
import { getWorkPlaceTypeDict, getContactorDict } from './initiatesProjects.api' |
|||
|
|||
const projectTypeDicts: Array<Object> = getDictItemsByCode("projectType") |
|||
const approvalRsesults: Array<Object> = getDictItemsByCode("approvalResult") |
|||
|
|||
let manageOrgDict = await getWorkPlaceTypeDict({ workPlaceType: "1" }) |
|||
let supervisorDict = await getWorkPlaceTypeDict({ workPlaceType: "2" }) |
|||
let contructorDict = await getWorkPlaceTypeDict({ workPlaceType: "4" }) |
|||
let ownerDict = await getWorkPlaceTypeDict({ workPlaceType: "3" }) |
|||
let controlerDict = await getWorkPlaceTypeDict({ workPlaceType: "6" }) |
|||
let consultDict = await getWorkPlaceTypeDict({ workPlaceType: "5" }) |
|||
|
|||
const reformTasksDicts: Array<Object> = getDictItemsByCode("reformTasks") |
|||
function reformTasksDict() { |
|||
for (let i = 0; i < reformTasksDicts.length; i++) { |
|||
reformTasksDicts[i].label = reformTasksDicts[i].text; |
|||
} |
|||
return reformTasksDicts |
|||
} |
|||
const roomDicts: Array<Object> = getDictItemsByCode("room") |
|||
function roomDict() { |
|||
for (let i = 0; i < roomDicts.length; i++) { |
|||
roomDicts[i].label = roomDicts[i].text; |
|||
} |
|||
return roomDicts |
|||
} |
|||
export const formSchemas: FormSchema[] = [ |
|||
{ |
|||
//标题名称
|
|||
label: '项目名称', |
|||
//字段
|
|||
field: 'projectName', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Input', |
|||
//标题宽度,支持数字和字符串
|
|||
// labelWidth: 150,
|
|||
// //标题长度,超过位数隐藏
|
|||
// labelLength: 3,
|
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
{ |
|||
label: '行政区划', |
|||
field: 'adminDivision', |
|||
//子标题名称(在主标题后面)
|
|||
component: 'Input', |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
// {
|
|||
// label: '项目类型',
|
|||
// field: 'projectType',
|
|||
// component: 'Select',
|
|||
// colProps: { span: 12 },
|
|||
|
|||
// //填写组件Select的属性
|
|||
// componentProps: {
|
|||
// options: projectTypeDict()
|
|||
// },
|
|||
// },
|
|||
{ |
|||
label: '主要任务', |
|||
field: 'description', |
|||
//子标题名称(在主标题后面)
|
|||
component: 'InputTextArea', |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 24 }, |
|||
required: true, |
|||
}, |
|||
|
|||
{ |
|||
//标题名称
|
|||
label: '责任单位', |
|||
//字段
|
|||
field: 'dutyWorkplace', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Input', |
|||
|
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '单位属性', |
|||
//字段
|
|||
field: 'workplaceProperties', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Input', |
|||
|
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '建设周期(月)', |
|||
//字段
|
|||
field: 'constructionPeriod', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'InputNumber', |
|||
componentProps: { |
|||
//数值精度
|
|||
precision: 0, |
|||
//步数
|
|||
step: 0.1 |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '总投资(元)', |
|||
//字段
|
|||
field: 'totalMoney', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'InputNumber', |
|||
componentProps: { |
|||
//带标签的 input,设置后置标签
|
|||
addonBefore: '保留两位小数', |
|||
//数值精度
|
|||
precision: 2, |
|||
//步数
|
|||
step: 1 |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '中央资金(元)', |
|||
//字段
|
|||
field: 'centralMoney', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'InputNumber', |
|||
componentProps: { |
|||
//带标签的 input,设置后置标签
|
|||
addonBefore: '保留两位小数', |
|||
//数值精度
|
|||
precision: 2, |
|||
//步数
|
|||
step: 1 |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '省级资金(元)', |
|||
//字段
|
|||
field: 'provincialMoney', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'InputNumber', |
|||
componentProps: { |
|||
//带标签的 input,设置后置标签
|
|||
addonBefore: '保留两位小数', |
|||
//数值精度
|
|||
precision: 2, |
|||
//步数
|
|||
step: 1 |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '市级资金(元)', |
|||
//字段
|
|||
field: 'cityMoney', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'InputNumber', |
|||
componentProps: { |
|||
//带标签的 input,设置后置标签
|
|||
addonBefore: '保留两位小数', |
|||
|
|||
//数值精度
|
|||
precision: 2, |
|||
//步数
|
|||
step: 1 |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '区县级资金(元)', |
|||
//字段
|
|||
field: 'countyMoney', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'InputNumber', |
|||
componentProps: { |
|||
//带标签的 input,设置后置标签
|
|||
addonBefore: '保留两位小数', |
|||
|
|||
//数值精度
|
|||
precision: 2, |
|||
//步数
|
|||
step: 1 |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '自筹资金(元)', |
|||
//字段
|
|||
field: 'selfMoney', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'InputNumber', |
|||
componentProps: { |
|||
//带标签的 input,设置后置标签
|
|||
addonBefore: '保留两位小数', |
|||
|
|||
//数值精度
|
|||
precision: 2, |
|||
//步数
|
|||
step: 1 |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '2023年支付(元)', |
|||
//字段
|
|||
field: 'payamount2023Money', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'InputNumber', |
|||
componentProps: { |
|||
//带标签的 input,设置后置标签
|
|||
addonBefore: '保留两位小数', |
|||
|
|||
//数值精度
|
|||
precision: 2, |
|||
//步数
|
|||
step: 1 |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '2024年支付(元)', |
|||
//字段
|
|||
field: 'payamount2024Money', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'InputNumber', |
|||
componentProps: { |
|||
//带标签的 input,设置后置标签
|
|||
addonBefore: '保留两位小数', |
|||
|
|||
//数值精度
|
|||
precision: 2, |
|||
//步数
|
|||
step: 1 |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, { |
|||
//标题名称
|
|||
label: '2025年支付(元)', |
|||
//字段
|
|||
field: 'payamount2025Money', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'InputNumber', |
|||
componentProps: { |
|||
//带标签的 input,设置后置标签
|
|||
addonBefore: '保留两位小数', |
|||
|
|||
//数值精度
|
|||
precision: 2, |
|||
//步数
|
|||
step: 1 |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
|
|||
{ |
|||
//标题名称
|
|||
label: '改革所属项目', |
|||
//字段
|
|||
field: 'reformName', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Select', |
|||
|
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
componentProps:{ |
|||
options:reformTasksDict() |
|||
} |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '上级指导室', |
|||
//字段
|
|||
field: 'superLeader', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Select', |
|||
|
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
componentProps:{ |
|||
options:roomDict() |
|||
} |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '项目联系人', |
|||
//字段
|
|||
field: 'projectContacts', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Input', |
|||
|
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '联系电话', |
|||
//字段
|
|||
field: 'phone', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Input', |
|||
|
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
dynamicRules: () => { |
|||
return [ |
|||
{ required: true, message: '请填写手机号' }, |
|||
{ pattern: /^1[3456789]\d{9}$/, message: '手机号码格式有误' }, |
|||
]; |
|||
}, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '管理单位', |
|||
//字段
|
|||
field: 'manageOrg', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Select', |
|||
componentProps: ({ formModel, formActionType }) => { |
|||
console.log("formModel", formModel, "formActionType", formActionType) |
|||
return { |
|||
//
|
|||
options: manageOrgDict, |
|||
onChange: async (value) => { |
|||
// console.log(e)
|
|||
let manageContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "1" }) |
|||
// formModel.manageContactor = undefined; // reset city value
|
|||
const { updateSchema, setFieldsValue } = formActionType; |
|||
updateSchema({ |
|||
field: 'manageContactor', |
|||
componentProps: { |
|||
options: manageContactorDict, |
|||
}, |
|||
}); |
|||
setFieldsValue({ manageContactor: "" }) |
|||
}, |
|||
}; |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
}, |
|||
|
|||
{ |
|||
//标题名称
|
|||
label: '管理单位负责人', |
|||
//字段
|
|||
field: 'manageContactor', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Select', |
|||
componentProps: { |
|||
options: [], |
|||
|
|||
}, //一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '监管单位', |
|||
//字段
|
|||
field: 'supervisor', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Select', |
|||
componentProps: ({ formModel, formActionType }) => { |
|||
console.log("formModel", formModel, "formActionType", formActionType) |
|||
return { |
|||
//
|
|||
options: supervisorDict, |
|||
onChange: async (value) => { |
|||
// console.log(e)
|
|||
let supervisorContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "2" }) |
|||
// formModel.manageContactor = undefined; // reset city value
|
|||
const { updateSchema, setFieldsValue } = formActionType; |
|||
updateSchema({ |
|||
field: 'supervisorContactor', |
|||
componentProps: { |
|||
options: supervisorContactorDict, |
|||
}, |
|||
}); |
|||
setFieldsValue({ supervisorContactor: "" }) |
|||
}, |
|||
}; |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '监管单位联系人', |
|||
//字段
|
|||
field: 'supervisorContactor', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Select', |
|||
componentProps: { |
|||
options: [], |
|||
|
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '承建单位', |
|||
//字段
|
|||
field: 'contructor', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Select', |
|||
componentProps: ({ formModel, formActionType }) => { |
|||
console.log("formModel", formModel, "formActionType", formActionType) |
|||
return { |
|||
//
|
|||
options: contructorDict, |
|||
onChange: async (value) => { |
|||
// console.log(e)
|
|||
let contructorContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "4" }) |
|||
// formModel.manageContactor = undefined; // reset city value
|
|||
const { updateSchema, setFieldsValue } = formActionType; |
|||
updateSchema({ |
|||
field: 'contructorContactor', |
|||
componentProps: { |
|||
options: contructorContactorDict, |
|||
}, |
|||
}); |
|||
setFieldsValue({ contructorContactor: "" }) |
|||
}, |
|||
}; |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '承建单位负责人', |
|||
//字段
|
|||
field: 'contructorContactor', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Select', |
|||
componentProps: { |
|||
options: [], |
|||
|
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '建设单位', |
|||
//字段
|
|||
field: 'owner', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Select', |
|||
componentProps: ({ formModel, formActionType }) => { |
|||
console.log("formModel", formModel, "formActionType", formActionType) |
|||
return { |
|||
//
|
|||
options: ownerDict, |
|||
onChange: async (value) => { |
|||
// console.log(e)
|
|||
let ownerContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "3" }) |
|||
// formModel.manageContactor = undefined; // reset city value
|
|||
const { updateSchema, setFieldsValue } = formActionType; |
|||
updateSchema({ |
|||
field: 'ownerContactor', |
|||
componentProps: { |
|||
options: ownerContactorDict, |
|||
} |
|||
}); |
|||
setFieldsValue({ ownerContactor: "" }) |
|||
}, |
|||
}; |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '建设单位负责人', |
|||
//字段
|
|||
field: 'ownerContactor', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Select', |
|||
componentProps: { |
|||
options: [], |
|||
|
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
required: true, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '监理单位', |
|||
//字段
|
|||
field: 'controler', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Select', |
|||
componentProps: ({ formModel, formActionType }) => { |
|||
console.log("formModel", formModel, "formActionType", formActionType) |
|||
return { |
|||
//
|
|||
options: controlerDict, |
|||
onChange: async (value) => { |
|||
// console.log(e)
|
|||
let controlerContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "6" }) |
|||
// formModel.manageContactor = undefined; // reset city value
|
|||
const { updateSchema, setFieldsValue } = formActionType; |
|||
updateSchema({ |
|||
field: 'controlerContactor', |
|||
componentProps: { |
|||
options: controlerContactorDict, |
|||
} |
|||
}); |
|||
setFieldsValue({ controlerContactor: "" }) |
|||
}, |
|||
}; |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '监理单位负责人', |
|||
//字段
|
|||
field: 'controlerContactor', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Select', |
|||
componentProps: { |
|||
options: [], |
|||
|
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '咨询单位', |
|||
//字段
|
|||
field: 'consult', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Select', |
|||
componentProps: ({ formModel, formActionType }) => { |
|||
console.log("formModel", formModel, "formActionType", formActionType) |
|||
return { |
|||
//
|
|||
options: consultDict, |
|||
onChange: async (value) => { |
|||
// console.log(e)
|
|||
let consultContactoDict = await getContactorDict({ workPlace: value, workPlaceType: "5" }) |
|||
// formModel.manageContactor = undefined; // reset city value
|
|||
const { updateSchema, setFieldsValue } = formActionType; |
|||
updateSchema({ |
|||
field: 'consultContactor', |
|||
componentProps: { |
|||
options: consultContactoDict, |
|||
} |
|||
}); |
|||
setFieldsValue({ consultContactor: "" }) |
|||
}, |
|||
}; |
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
}, |
|||
{ |
|||
//标题名称
|
|||
label: '咨询单位负责人', |
|||
//字段
|
|||
field: 'consultContactor', |
|||
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
|
|||
component: 'Select', |
|||
componentProps: { |
|||
options: [], |
|||
|
|||
}, |
|||
//一列占比总共24,比如一行显示2列
|
|||
colProps: { span: 12 }, |
|||
}, |
|||
]; |
@ -0,0 +1,80 @@ |
|||
<template> |
|||
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick"> |
|||
<el-tab-pane label="项目入库详情" name="1"> |
|||
<ProjectDetails :IsEdit="false" :projectid="projectid" /> |
|||
</el-tab-pane> |
|||
<el-tab-pane label="项目监理管理资料" name="2"> |
|||
<el-divider content-position="left">项目资料详情</el-divider> |
|||
<UploadfileDetail :projectid="projectid" :stage="1" /> |
|||
<el-divider content-position="left">意见文件</el-divider> |
|||
<UploadfileDetail :projectid="projectid" :stage="2" /> |
|||
</el-tab-pane> |
|||
<el-tab-pane label="项目计划详情" name="3"> |
|||
<PlaninfoDetails :projectid="projectid" :showActionColumn="true"> |
|||
<template #default="record"> |
|||
<TableAction :actions="getTableAction(record)" /> |
|||
</template> |
|||
</PlaninfoDetails> |
|||
</el-tab-pane> |
|||
</el-tabs> |
|||
<ApprovalDetails :projectid="projectid" :stage="5" v-if="showApprovalForm" /> |
|||
|
|||
<planinfoFileDetail @register="registerFileInfo" :planinfoid="planinfoid" :taskName="taskName" :isfinish="isfinish" /> |
|||
<div style="display: flex; justify-content: center; align-items: center; height: 100px;" v-if="!showApprovalForm"> |
|||
<el-button type="primary" @click="submitImportForm">发起审批</el-button> |
|||
<el-button type="info" @click="closeModel()">关闭窗口</el-button> |
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts" name="system-user" setup> |
|||
//ts语法 |
|||
import { ref } from 'vue'; |
|||
import { useModal } from '/@/components/Modal'; |
|||
import ProjectDetails from "../../ProcessApprovalSubPage/component/ProjectDetails.vue" |
|||
import UploadfileDetail from "../../ProcessApprovalSubPage/component/UploadfileDetail.vue" |
|||
import PlaninfoDetails from "../../ProcessApprovalSubPage/component/PlaninfoDetails.vue" |
|||
import { ActionItem, TableAction } from '/@/components/Table'; |
|||
import planinfoFileDetail from '../projectPlan/planinfoFileDetail.vue' |
|||
import ApprovalDetails from "../../ProcessApprovalSubPage/component/ApprovalDetails.vue" |
|||
import { submitProjectArchive } from "./projectArchive.api" |
|||
import type { TabsPaneContext } from 'element-plus' |
|||
let emit = defineEmits(["close"]) |
|||
let dataTo = defineProps(["projectid", "showApprovalForm"]) |
|||
let planinfoid = ref() |
|||
let taskName = ref() |
|||
let isfinish = ref() |
|||
const [registerFileInfo, { openModal: openFileInfo }] = useModal();//文件上传和查看 |
|||
console.log("dataTo",dataTo) |
|||
const activeName = ref('1') |
|||
|
|||
const handleClick = (tab: TabsPaneContext, event: Event) => { |
|||
console.log(tab, event) |
|||
} |
|||
function getTableAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '详情', |
|||
onClick: handleDetail.bind(null, record), |
|||
}, |
|||
]; |
|||
} |
|||
|
|||
function handleDetail(record) { |
|||
console.log("rrrrrrrr", record) |
|||
planinfoid.value = record.record.id |
|||
taskName.value = record.record.taskName |
|||
isfinish.value = record.record.isfinish |
|||
console.log("rrrrrrrr", record, record.id, record.taskName, planinfoid.value, taskName.value) |
|||
|
|||
openFileInfo() |
|||
|
|||
} |
|||
function submitImportForm() { |
|||
submitProjectArchive({ projectid: dataTo.projectid }) |
|||
} |
|||
function closeModel() { |
|||
emit("close") |
|||
} |
|||
</script> |
|||
|
|||
<style scoped></style> |
@ -0,0 +1,141 @@ |
|||
<template> |
|||
<div> |
|||
<!--引用表格--> |
|||
<BasicTable @register="registerTable"> |
|||
<template #action="{ record }"> |
|||
<!-- <TableAction :actions="getTableAction(record)" /> --> |
|||
<TableAction :actions="getTableAction(record)" /> |
|||
</template> |
|||
</BasicTable> |
|||
<BasicModal @register="registerSubmitProjectArchive" title="归档信息详情" width="1200px" :showOkBtn="false" :showCancelBtn="false"> |
|||
<SubmitProjectArchive :projectid="projectid" :showApprovalForm="showApprovalForm" @close="close"/> |
|||
</BasicModal> |
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts" name="system-user" setup> |
|||
//ts语法 |
|||
import { ref } from 'vue'; |
|||
import { ActionItem, BasicTable, TableAction } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
import { useModal,BasicModal } from '/@/components/Modal'; |
|||
import SubmitProjectArchive from './SubmitProjectArchive.vue' |
|||
// const viewPlanDetail = defineAsyncComponent(() => |
|||
// import('./viewPlanDetail.vue') |
|||
// ) |
|||
import { columns, searchFormSchema } from '../projectInfo/projectInfo.data'; |
|||
|
|||
import { projectArchivePageList } from './projectArchive.api'; |
|||
const [registerSubmitProjectArchive, { openModal: openModalSubmitProjectArchive,closeModal }] = useModal(); |
|||
let projectid = ref() |
|||
let showApprovalForm = ref<boolean>(false) |
|||
const { tableContext } = useListPage({ |
|||
designScope: 'basic-table-demo-ajax', |
|||
tableProps: { |
|||
title: '项目归档信息', |
|||
api: projectArchivePageList, |
|||
columns: columns, |
|||
actionColumn: { |
|||
width: 120, |
|||
fixed: "right", |
|||
}, |
|||
//表单查询项设置 |
|||
formConfig: { |
|||
schemas: searchFormSchema, |
|||
} |
|||
}, |
|||
}); |
|||
//BasicTable绑定注册 |
|||
const [registerTable] = tableContext; |
|||
|
|||
function getTableAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '详情', |
|||
ifShow: () => { |
|||
return record.stage > 6 |
|||
}, |
|||
onClick: handleDetailpage.bind(null, record), |
|||
}, |
|||
{ |
|||
label: '发起归档流程', |
|||
ifShow: () => { |
|||
return record.stage == 6 |
|||
}, |
|||
onClick: handleSubmit.bind(null, record) |
|||
} |
|||
|
|||
]; |
|||
} |
|||
|
|||
|
|||
function handleDetailpage(record) { |
|||
projectid.value=record.id |
|||
showApprovalForm.value = true |
|||
openModalSubmitProjectArchive(true) |
|||
|
|||
} |
|||
function handleSubmit(record) { |
|||
projectid.value=record.id |
|||
showApprovalForm.value = false |
|||
openModalSubmitProjectArchive(true) |
|||
|
|||
|
|||
} |
|||
function close(){ |
|||
closeModal() |
|||
} |
|||
|
|||
</script> |
|||
|
|||
<style scoped> |
|||
.timeline { |
|||
display: flex; |
|||
width: 100%; |
|||
margin-bottom: 100px; |
|||
|
|||
.lineitem { |
|||
transform: translateX(50%); |
|||
width: 25%; |
|||
} |
|||
} |
|||
|
|||
::v-deep .el-timeline-item__tail { |
|||
border-left: none; |
|||
width: 100%; |
|||
border-top: 2px solid #e4e7ed; |
|||
position: absolute; |
|||
top: 6px; |
|||
} |
|||
|
|||
::v-deep .el-timeline-item__wrapper { |
|||
padding-left: 0; |
|||
position: absolute; |
|||
top: 20px; |
|||
transform: translateX(-50%); |
|||
text-align: center; |
|||
} |
|||
|
|||
::v-deep .el-timeline-item__timestamp { |
|||
font-size: 14px; |
|||
} |
|||
|
|||
.nested-timeline { |
|||
margin-left: 20px; |
|||
border-left: 1px dashed #ccc; |
|||
padding-left: 20px; |
|||
} |
|||
|
|||
.nested-timeline-item { |
|||
margin-bottom: 10px; |
|||
} |
|||
|
|||
|
|||
::v-deep .ant-table-expanded-row { |
|||
height: auto !important; |
|||
/* 其他样式 */ |
|||
} |
|||
|
|||
|
|||
</style> |
@ -0,0 +1,22 @@ |
|||
import { defHttp } from '/@/utils/http/axios'; |
|||
|
|||
export enum Api { |
|||
submitProjectArchive = '/huzhouProject/submitProjectArchive', |
|||
approveProjectArchive="/huzhouProject/approveProjectArchive", |
|||
projectArchivePageList = '/huzhouProject/projectArchivePageList', |
|||
|
|||
queryPlanModuleDetailPage = "/huzhouPlan/queryPlanModuleDetailPage", |
|||
|
|||
} |
|||
/** |
|||
* 提交入库申请流程 |
|||
*/ |
|||
export const submitProjectArchive = (params) => defHttp.post({ url: Api.submitProjectArchive, params }) |
|||
export const approveProjectArchive = (params) => defHttp.post({ url: Api.approveProjectArchive, params }) |
|||
|
|||
export const projectArchivePageList = (params) => defHttp.get({ url: Api.projectArchivePageList, params }) |
|||
|
|||
// export const submitplaninfoUploadFile = (params?) =>defHttp.post({ url: Api.submitplaninfoUploadFile,headers:{ "Content-Type": "multipart/form-data" }, params })
|
|||
|
|||
|
|||
|
@ -0,0 +1,5 @@ |
|||
import { FormSchema } from '/@/components/Form'; |
|||
import { BasicColumn } from '/@/components/Table'; |
|||
import { getDictItemsByCode } from '/@/utils/dict/index'; |
|||
import { useUserStore } from '/@/store/modules/user'; |
|||
import dayjs from "dayjs"; |
@ -0,0 +1,60 @@ |
|||
<template> |
|||
<div> |
|||
<BasicTable @register="registerResourceTable"> |
|||
<template #action="{ record }"> |
|||
<TableAction :actions="getTableAction(record)" /> |
|||
</template> |
|||
</BasicTable> |
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts" name="DetailTable" setup> |
|||
//ts语法 |
|||
import { defineProps } from 'vue'; |
|||
import { BasicTable, ActionItem, TableAction } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
import { contractDetailcolumns } from './projectContract.data'; |
|||
import { getContractinfoListById } from './projectContract.api' |
|||
import { downloadFile } from "../../../api/common/api" |
|||
|
|||
let dataTo = defineProps(["stage","id"]) |
|||
//我的待办表格组件 |
|||
//项目资料table |
|||
const { tableContext: resourceTableContext } = useListPage({ |
|||
tableProps: { |
|||
size: 'small',//紧凑型表格 |
|||
api: getContractinfoListById, |
|||
columns: contractDetailcolumns, |
|||
useSearchForm: false, |
|||
actionColumn: { |
|||
width: 120, |
|||
fixed: "right", |
|||
}, |
|||
beforeFetch(params) { |
|||
params.id = dataTo.id |
|||
}, |
|||
}, |
|||
}); |
|||
const [registerResourceTable] = resourceTableContext; |
|||
function getTableAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '下载', |
|||
ifShow: true, |
|||
onClick: handleDetailpage.bind(null, record), |
|||
} |
|||
]; |
|||
} |
|||
function handleDetailpage(record) { |
|||
console.log("我这一行的数据是", record) |
|||
let param = { |
|||
path: record.documentPath, |
|||
fileName: record.documentName |
|||
} |
|||
// |
|||
console.log("我这一行的数据是", param) |
|||
|
|||
downloadFile("/huzhouUploadfileinfo/downloadfile", record.documentName, param) |
|||
} |
|||
</script> |
|||
<style scoped></style> |
@ -0,0 +1,16 @@ |
|||
<template> |
|||
|
|||
<ProjectDetails :IsEdit="false" :projectid="projectid" ref="ProjectDetailsRef" /> |
|||
<div> |
|||
<el-divider content-position="left">合同资料详情</el-divider> |
|||
<DetailTable :id="id" /> |
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts" name="uploadfileApproval" setup> |
|||
import ProjectDetails from "../../ProcessApprovalSubPage/component/ProjectDetails.vue" |
|||
import DetailTable from "./DetailTable.vue" |
|||
defineProps(["projectid","id"]) |
|||
|
|||
</script> |
|||
<style></style> |
@ -0,0 +1,119 @@ |
|||
<template> |
|||
<div> |
|||
<!--引用表格--> |
|||
<BasicTable @register="registerTable"> |
|||
<template #action="{ record }"> |
|||
<!-- <TableAction :actions="getTableAction(record)" /> --> |
|||
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" /> |
|||
</template> |
|||
</BasicTable> |
|||
<projectContract @register="registerSubmitProjectArchive" @close="closeModel" /> |
|||
<BasicModal @register="registecontractDetail" title="合同信息详情" width="1200px" :showOkBtn="false"> |
|||
<contractDetail :projectid="projectid" @close="closeProjectrModal" :id="id" /> |
|||
</BasicModal> |
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts" name="system-user" setup> |
|||
//ts语法 |
|||
import {ref} from "vue" |
|||
import { ActionItem, BasicTable, TableAction } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
import { BasicModal, useModal } from '/@/components/Modal'; |
|||
|
|||
import { contractShowcolumns, searchFormSchema } from './projectContract.data'; |
|||
import projectContract from "./projectContract.vue" |
|||
import contractDetail from './contractDetail.vue' |
|||
import { huzhouContractinfoPageList, deleteContractinfo } from './projectContract.api'; |
|||
const [registerSubmitProjectArchive, { openModal }] = useModal(); |
|||
const [registecontractDetail, { openModal: opencontractDetail, closeModal: closecontractDetail }] = useModal(); |
|||
let projectid =ref() |
|||
let id = ref() |
|||
const { tableContext } = useListPage({ |
|||
designScope: 'basic-table-demo-ajax', |
|||
tableProps: { |
|||
title: '合同信息', |
|||
api: huzhouContractinfoPageList, |
|||
columns: contractShowcolumns, |
|||
actionColumn: { |
|||
width: 120, |
|||
fixed: "right", |
|||
}, |
|||
//表单查询项设置 |
|||
formConfig: { |
|||
schemas: searchFormSchema, |
|||
} |
|||
}, |
|||
}); |
|||
//BasicTable绑定注册 |
|||
const [registerTable, { reload }] = tableContext; |
|||
|
|||
function getTableAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '详情', |
|||
ifShow: () => { |
|||
return record.totalAmount != null |
|||
}, |
|||
onClick: handledetail.bind(null, record), |
|||
}, |
|||
{ |
|||
label: '新增', |
|||
ifShow: () => { |
|||
return record.totalAmount == null |
|||
}, |
|||
onClick: handleuploadContract.bind(null, record), |
|||
} |
|||
|
|||
]; |
|||
} |
|||
function getDropDownAction(record): ActionItem[] { |
|||
if (record.totalAmount == null) { |
|||
return [] |
|||
} |
|||
return [ |
|||
|
|||
{ |
|||
label: '修改', |
|||
onClick: handleModify.bind(null, record) |
|||
}, |
|||
{ |
|||
label: '删除', |
|||
popConfirm: { |
|||
title: '确定删除吗?', |
|||
confirm: handleDelete.bind(null, record), |
|||
}, |
|||
} |
|||
|
|||
]; |
|||
} |
|||
function handleModify(record) { |
|||
openModal(true, { id: record.id }) |
|||
|
|||
} |
|||
|
|||
function handledetail(record) { |
|||
// openModal(true,{id:null,projectid:record.id}) |
|||
projectid.value = record.pid |
|||
id =record.id |
|||
opencontractDetail() |
|||
|
|||
} |
|||
function closeProjectrModal() { |
|||
closecontractDetail() |
|||
} |
|||
async function handleDelete(record) { |
|||
await deleteContractinfo({ id: record.id }) |
|||
reload() |
|||
} |
|||
|
|||
function closeModel() { |
|||
reload() |
|||
} |
|||
function handleuploadContract(record) { |
|||
console.log("refffffffffffffffffffff", record) |
|||
openModal(true, { id: null, projectid: record.pid }) |
|||
} |
|||
</script> |
|||
|
|||
<style scoped></style> |
@ -0,0 +1,26 @@ |
|||
import { defHttp } from '/@/utils/http/axios'; |
|||
import { downloadFile } from "../../../api/common/api" |
|||
|
|||
export enum Api { |
|||
huzhouContractinfoPageList = '/huzhouContractinfo/huzhouContractinfoPageList', |
|||
addContractinfo="/huzhouContractinfo/addContractinfo", |
|||
modifyContractinfo = '/huzhouContractinfo/modifyContractinfo', |
|||
getContractinfoById="/huzhouContractinfo/getContractinfoById", |
|||
deleteContractinfo = '/huzhouContractinfo/deleteContractinfo', |
|||
isExistContractinfo="/huzhouContractinfo/isExistContractinfo", |
|||
getContractinfoListById="/huzhouContractinfo/getContractinfoListById" |
|||
} |
|||
|
|||
export const huzhouContractinfoPageList = (params) => defHttp.get({ url: Api.huzhouContractinfoPageList, params }) |
|||
export const getContractinfoById = (params) => defHttp.get({ url: Api.getContractinfoById, params }) |
|||
export const isExistContractinfo = (params) => defHttp.get({ url: Api.isExistContractinfo, params }) |
|||
export const getContractinfoListById = (params) => defHttp.get({ url: Api.getContractinfoListById, params }) |
|||
|
|||
export const addContractinfo = (params?) =>defHttp.post({ url: Api.addContractinfo,headers:{ "Content-Type": "multipart/form-data" }, params }) |
|||
|
|||
export const modifyContractinfo = (params?) =>defHttp.post({ url: Api.modifyContractinfo,headers:{ "Content-Type": "multipart/form-data" }, params }) |
|||
|
|||
export const deleteContractinfo = (params?) =>defHttp.post({ url: Api.deleteContractinfo, params }) |
|||
|
|||
|
|||
|
@ -0,0 +1,193 @@ |
|||
import { FormSchema } from '/@/components/Form'; |
|||
import { BasicColumn } from '/@/components/Table'; |
|||
|
|||
|
|||
export const contractShowcolumns: BasicColumn[] = [ |
|||
{ |
|||
title: '项目名称', |
|||
dataIndex: 'projectName', |
|||
}, |
|||
|
|||
{ |
|||
title: '合同总金额', |
|||
dataIndex: 'totalAmount', |
|||
}, |
|||
{ |
|||
title: '文件名称', |
|||
dataIndex: 'documentName', |
|||
width: 150, |
|||
}, |
|||
{ |
|||
title: '文件大小', |
|||
dataIndex: 'size', |
|||
width: 150, |
|||
customRender: ({ record }) => { |
|||
let kbNum: number = record.size / 1024 |
|||
if (kbNum < 1024) { |
|||
return kbNum.toFixed(2).toString() + "KB" |
|||
} else { |
|||
let mbNum: number = kbNum / 1024 |
|||
return mbNum.toFixed(2).toString() + "MB" |
|||
} |
|||
|
|||
}, |
|||
|
|||
}, |
|||
|
|||
]; |
|||
export const contractDetailcolumns: BasicColumn[] = [ |
|||
{ |
|||
title: '合同总金额', |
|||
dataIndex: 'totalAmount', |
|||
}, |
|||
{ |
|||
title: '首付时间', |
|||
dataIndex: 'downpaymentDate', |
|||
|
|||
}, |
|||
{ |
|||
title: '首付比例', |
|||
dataIndex: 'downpaymentRatio', |
|||
|
|||
}, |
|||
|
|||
{ |
|||
title: '初验时间', |
|||
dataIndex: 'initialDate', |
|||
}, |
|||
|
|||
{ |
|||
title: '初验比例', |
|||
dataIndex: 'initialRatio', |
|||
|
|||
}, |
|||
{ |
|||
title: '终验时间', |
|||
dataIndex: 'finalDate', |
|||
|
|||
}, |
|||
{ |
|||
title: '终验比例', |
|||
dataIndex: 'finalRatio', |
|||
}, |
|||
{ |
|||
title: '文件名称', |
|||
dataIndex: 'documentName', |
|||
width: 150, |
|||
}, |
|||
{ |
|||
title: '文件大小', |
|||
dataIndex: 'size', |
|||
width: 150, |
|||
customRender: ({ record }) => { |
|||
let kbNum: number = record.size / 1024 |
|||
if (kbNum < 1024) { |
|||
return kbNum.toFixed(2).toString() + "KB" |
|||
} else { |
|||
let mbNum: number = kbNum / 1024 |
|||
return mbNum.toFixed(2).toString() + "MB" |
|||
} |
|||
|
|||
}, |
|||
|
|||
}, |
|||
|
|||
]; |
|||
export const searchFormSchema: FormSchema[] = [ |
|||
{ |
|||
label: '项目名称', |
|||
field: 'projectName', |
|||
component: 'Input', |
|||
}, |
|||
{ |
|||
label: '文件名称', |
|||
field: 'documentName', |
|||
component: 'Input', |
|||
} |
|||
|
|||
]; |
|||
export const contractformSchemas: FormSchema[] = [ |
|||
{ |
|||
label: '首付时间', |
|||
field: 'downpaymentDate', |
|||
component: 'DatePicker', |
|||
componentProps: { |
|||
valueFormat: 'YYYY-MM-DD', |
|||
}, |
|||
required: true, |
|||
colProps: { span: 12}, |
|||
}, |
|||
{ |
|||
label: '首付比例', |
|||
field: 'downpaymentRatio', |
|||
component:'InputNumber', |
|||
componentProps: { |
|||
//数值精度
|
|||
precision: 0, |
|||
//步数
|
|||
step: 1 |
|||
}, |
|||
required: true, |
|||
colProps: { span: 12 }, |
|||
}, |
|||
|
|||
{ |
|||
label: '初验时间', |
|||
field: 'initialDate', |
|||
component: 'DatePicker', |
|||
componentProps: { |
|||
valueFormat: 'YYYY-MM-DD', |
|||
}, |
|||
required: true, |
|||
colProps: { span: 12}, |
|||
}, |
|||
{ |
|||
label: '初验比例', |
|||
field: 'initialRatio', |
|||
component: 'InputNumber', |
|||
componentProps: { |
|||
//数值精度
|
|||
precision: 0, |
|||
//步数
|
|||
step: 1 |
|||
}, |
|||
required: true, |
|||
colProps: { span: 12 }, |
|||
}, |
|||
{ |
|||
label: '终验时间', |
|||
field: 'finalDate', |
|||
component: 'DatePicker', |
|||
componentProps: { |
|||
valueFormat: 'YYYY-MM-DD', |
|||
}, |
|||
required: true, |
|||
colProps: { span: 12 }, |
|||
}, |
|||
{ |
|||
label: '终验比例', |
|||
field: 'finalRatio', |
|||
component: 'InputNumber', |
|||
componentProps: { |
|||
//数值精度
|
|||
precision: 0, |
|||
//步数
|
|||
step: 1 |
|||
}, |
|||
required: true, |
|||
colProps: { span: 12 }, |
|||
}, |
|||
{ |
|||
label: '合同总金额', |
|||
field: 'totalAmount', |
|||
component: 'InputNumber', |
|||
componentProps: { |
|||
//数值精度
|
|||
precision: 2, |
|||
//步数
|
|||
step: 1 |
|||
}, |
|||
required: true, |
|||
colProps: { span: 12 }, |
|||
} |
|||
]; |
@ -0,0 +1,136 @@ |
|||
<template> |
|||
<!-- 自定义表单 --> |
|||
<BasicModal @register="registerModal" title="归档信息详情" width="1200px" :showOkBtn="false" :showCancelBtn="false"> |
|||
|
|||
<el-divider content-position="left">合同信息</el-divider> |
|||
<BasicForm @register="registerContractForm" /> |
|||
<el-divider content-position="left">上传合同文件</el-divider> |
|||
<el-form ref="importFormRef" label-width="130px"> |
|||
|
|||
<el-form-item label="上传文件:"> |
|||
<el-upload class="upload-demo" ref="upload" action :http-request="httpRequest" :before-upload="beforeUpload" |
|||
:on-exceed="handleExceed" :limit="1" :on-remove="removeFile"> |
|||
<el-button slot="trigger" size="small" type="primary">选取文件</el-button> |
|||
<div slot="tip" class="el-upload__tip">文件大小且不超过10M</div> |
|||
</el-upload> |
|||
</el-form-item> |
|||
|
|||
<el-form-item> |
|||
<el-button type="primary" @click="submitImportForm">上传</el-button> |
|||
<el-button type="info" @click="dialogVisible">关闭窗口</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
</BasicModal> |
|||
</template> |
|||
<script lang="ts" name="addAndModify" setup> |
|||
import { ref, reactive, defineProps, watchEffect } from 'vue' |
|||
import { useForm, BasicForm } from '/@/components/Form'; |
|||
import { contractformSchemas } from './projectContract.data'; |
|||
import { modifyContractinfo, addContractinfo, getContractinfoById } from './projectContract.api'; |
|||
import { ElMessage } from 'element-plus' |
|||
import { useModalInner, BasicModal } from '/@/components/Modal'; |
|||
const [registerModal, { closeModal }] = useModalInner(init); |
|||
|
|||
|
|||
let fileList = reactive<Array<any>>([]); |
|||
let id = ref() |
|||
let projectid = ref() |
|||
const emit = defineEmits(['close']); |
|||
|
|||
async function init(data) { |
|||
console.log("datadatadata",data) |
|||
if (data.projectid) { |
|||
projectid.value = data.projectid |
|||
} |
|||
fileList.pop() |
|||
if (data.id != null) { |
|||
id.value = data.id |
|||
let param: any = { |
|||
id: data.id |
|||
} |
|||
let res = await getContractinfoById(param) |
|||
console.log("结果是", res) |
|||
setFieldsValue(res) |
|||
} |
|||
|
|||
} |
|||
|
|||
//项目入库详情 |
|||
const [registerContractForm, { setFieldsValue: setFieldsValue, getFieldsValue, validate }] = useForm({ |
|||
//注册表单列 |
|||
schemas: contractformSchemas, |
|||
showActionButtonGroup: false, |
|||
//回车提交 |
|||
// autoSubmitOnEnter: true, |
|||
// //不显示重置按钮 |
|||
// showResetButton: false, |
|||
//自定义提交按钮文本和图标 |
|||
// submitButtonOptions: { text: '提交', preIcon: '' }, |
|||
//查询列占比 24代表一行 取值范围 0-24 |
|||
// actionColOptions: { span: 17 }, |
|||
labelCol: { style: { width: '120px' } }, |
|||
wrapperCol: { style: { width: 'auto' } }, |
|||
}); |
|||
|
|||
|
|||
// 覆盖默认的上传行为,可以自定义上传的实现,将上传的文件依次添加到fileList数组中,支持多个文件 |
|||
function httpRequest(option) { |
|||
fileList.push(option) |
|||
} |
|||
function removeFile(option) { |
|||
for (let i = 0; i < fileList.length; i++) { |
|||
if (fileList[i].file.name == option.name) { |
|||
fileList.splice(i, 1) |
|||
} |
|||
} |
|||
console.log(fileList, option) |
|||
|
|||
} |
|||
// 上传前处理 |
|||
function beforeUpload(file) { |
|||
let fileSize = file.size |
|||
const FIVE_M = 10 * 1024 * 1024; |
|||
//大于5M,不允许上传 |
|||
if (fileSize > FIVE_M) { |
|||
ElMessage.error("最大上传10M") |
|||
return false |
|||
} |
|||
|
|||
return true |
|||
} |
|||
// 文件数量过多时提醒 |
|||
function handleExceed() { |
|||
ElMessage.warning("最多只能上传一个文件") |
|||
} |
|||
//导入Excel病种信息数据 |
|||
async function submitImportForm() { |
|||
if (await validate()) { |
|||
|
|||
let data = await getFieldsValue() |
|||
console.log("data", data) |
|||
// 使用form表单的数据格式 |
|||
if (id.value != null) { |
|||
if (fileList.length > 0) { |
|||
data.file = fileList[0].file |
|||
} |
|||
//说明是修改 |
|||
data.id=id.value |
|||
modifyContractinfo(data) |
|||
} else { |
|||
if (fileList.length == 0) { |
|||
ElMessage.warning("请上传文件") |
|||
return; |
|||
} |
|||
data.file = fileList[0].file |
|||
data.projectid =projectid.value |
|||
addContractinfo(data) |
|||
} |
|||
dialogVisible() |
|||
} |
|||
} |
|||
function dialogVisible() { |
|||
closeModal() |
|||
emit("close") |
|||
} |
|||
</script> |
|||
<style></style> |
@ -1,74 +1,71 @@ |
|||
<template> |
|||
<div> |
|||
<!--引用表格--> |
|||
<BasicTable @register="registerTable"> |
|||
<!--插槽:table标题--> |
|||
<!--操作栏--> |
|||
<template #action="{ record }"> |
|||
<!-- <TableAction :actions="getTableAction(record)" /> --> |
|||
<TableAction :actions="getTableAction(record)" /> |
|||
</template> |
|||
</BasicTable> |
|||
</div> |
|||
<BasicModal @register="registeProjectrModal" title="项目信息详情" width="1200px" :showOkBtn="false"> |
|||
<Detailpage :projectid="proid" /> |
|||
</BasicModal> |
|||
</template> |
|||
<div> |
|||
<!--引用表格--> |
|||
<BasicTable @register="registerTable"> |
|||
<!--插槽:table标题--> |
|||
<!--操作栏--> |
|||
<template #action="{ record }"> |
|||
<!-- <TableAction :actions="getTableAction(record)" /> --> |
|||
<TableAction :actions="getTableAction(record)" /> |
|||
</template> |
|||
</BasicTable> |
|||
</div> |
|||
<BasicModal @register="registeProjectrModal" title="项目信息详情" width="1200px" :showOkBtn="false"> |
|||
<ProjectDetails :IsEdit="false" :projectid="proid" /> |
|||
</BasicModal> |
|||
</template> |
|||
|
|||
<script lang="ts" name="system-user" setup> |
|||
//ts语法 |
|||
import { ref } from 'vue'; |
|||
import { ActionItem, BasicTable, TableAction } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
|
|||
import { BasicModal,useModal } from '/@/components/Modal'; |
|||
import {columns} from './projectInfoHistory.data' |
|||
// import { list } from './address.api'; |
|||
import Detailpage from './Detailpage.vue'; |
|||
import { singleProjectInfoHistoryPageList } from './projectInfoHistory.api'; |
|||
import { useUserStore } from '/@/store/modules/user'; |
|||
let dataTo = defineProps(["projectid"]) |
|||
<script lang="ts" name="system-user" setup> |
|||
//ts语法 |
|||
import { ref } from 'vue'; |
|||
import { ActionItem, BasicTable, TableAction } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
|
|||
const userStore = useUserStore(); |
|||
let proid = ref(); |
|||
const [registeProjectrModal, { openModal: openModalProjectr }] = useModal();//项目详情 |
|||
|
|||
|
|||
const { tableContext } = useListPage({ |
|||
designScope: 'basic-table-demo-ajax', |
|||
tableProps: { |
|||
title: '项目信息', |
|||
api: singleProjectInfoHistoryPageList, |
|||
columns: columns, |
|||
actionColumn: { |
|||
width: 120, |
|||
fixed: "right", |
|||
}, |
|||
useSearchForm: false, |
|||
import { BasicModal, useModal } from '/@/components/Modal'; |
|||
import { columns } from '../projectInfo/projectInfo.data' |
|||
import ProjectDetails from "../../ProcessApprovalSubPage/component/ProjectDetails.vue" |
|||
import { singleProjectInfoHistoryPageList } from './projectInfoHistory.api'; |
|||
let dataTo = defineProps(["projectid"]) |
|||
|
|||
let proid = ref(); |
|||
const [registeProjectrModal, { openModal: openModalProjectr }] = useModal();//项目详情 |
|||
|
|||
beforeFetch(params) { |
|||
params.projectId = dataTo.projectid |
|||
|
|||
const { tableContext } = useListPage({ |
|||
designScope: 'basic-table-demo-ajax', |
|||
tableProps: { |
|||
title: '项目信息', |
|||
api: singleProjectInfoHistoryPageList, |
|||
columns: columns, |
|||
actionColumn: { |
|||
width: 120, |
|||
fixed: "right", |
|||
}, |
|||
useSearchForm: false, |
|||
|
|||
beforeFetch(params) { |
|||
params.projectId = dataTo.projectid |
|||
}, |
|||
}); |
|||
//BasicTable绑定注册 |
|||
const [registerTable, { reload }] = tableContext; |
|||
function getTableAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '详情', |
|||
onClick: handleDetailpage.bind(null, record), |
|||
}, |
|||
|
|||
]; |
|||
} |
|||
|
|||
|
|||
function handleDetailpage(record) { |
|||
proid.value = record.id |
|||
openModalProjectr() |
|||
} |
|||
}, |
|||
}); |
|||
//BasicTable绑定注册 |
|||
const [registerTable] = tableContext; |
|||
function getTableAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '详情', |
|||
onClick: handleDetailpage.bind(null, record), |
|||
}, |
|||
|
|||
]; |
|||
} |
|||
|
|||
|
|||
function handleDetailpage(record) { |
|||
proid.value = record.id |
|||
openModalProjectr() |
|||
} |
|||
|
|||
</script> |
|||
</script> |
|||
|
|||
<style scoped></style>./projectInfoHistory.data |
|||
<style scoped></style> |
@ -1,111 +0,0 @@ |
|||
<template> |
|||
<!-- 自定义表单 --> |
|||
<el-divider content-position="left">项目入库详情</el-divider> |
|||
<BasicForm @register="registerProjectForm" /> |
|||
</template> |
|||
<script lang="ts" name="Detailpage" setup> |
|||
import { ref, defineProps, onMounted,onUpdated } from 'vue' |
|||
import { useForm, BasicForm } from '/@/components/Form'; |
|||
import { formSchemas, } from '../projectInfo/projectInfo.data'; |
|||
import { queryProjectInfoHistoryById } from './projectInfoHistory.api'; |
|||
import { ActionItem, BasicTable, TableAction } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
import { getUserInfoByid } from '../initiatesProjects/initiatesProjects.api' |
|||
|
|||
let dataTo = defineProps(["projectid"]) |
|||
let projectstage = ref() |
|||
|
|||
onMounted(async () => { |
|||
console.log("projectid", dataTo.projectid) |
|||
let param: any = { |
|||
id: dataTo.projectid |
|||
} |
|||
let resProject = await queryProjectInfoHistoryById(param) |
|||
setFieldsValue(resProject) |
|||
projectstage.value = resProject.stage |
|||
console.log("projectid", dataTo.projectid, projectstage.value) |
|||
}) |
|||
onUpdated(async()=>{ |
|||
let proform = getFieldsValueProjectForm() |
|||
for (let key in proform) { |
|||
if (key.indexOf("Contactor") != -1&&proform[key]!=null) { |
|||
let userid = proform[key] |
|||
let res = await getUserInfoByid({ id: userid }) |
|||
console.log("Contactor",key, res) |
|||
updateProjectSchema({ |
|||
field: key, |
|||
componentProps: { |
|||
options: [{ |
|||
value: userid, |
|||
label: res.realname |
|||
} |
|||
], |
|||
} |
|||
}) |
|||
} |
|||
} |
|||
}) |
|||
/** |
|||
* BasicForm绑定注册; |
|||
* useForm 是整个框架的核心用于表单渲染,里边封装了很多公共方法; |
|||
* 支持(schemas: 渲染表单列,autoSubmitOnEnter:回车提交,submitButtonOptions:自定义按钮文本和图标等方法); |
|||
* 平台通过此封装,简化了代码,支持自定义扩展; |
|||
*/ |
|||
const [registerProjectForm, { setFieldsValue,getFieldsValue: getFieldsValueProjectForm, setProps, updateSchema: updateProjectSchema }] = useForm({ |
|||
//注册表单列 |
|||
schemas: formSchemas, |
|||
showActionButtonGroup: false, |
|||
//回车提交 |
|||
// autoSubmitOnEnter: true, |
|||
// //不显示重置按钮 |
|||
// showResetButton: false, |
|||
//自定义提交按钮文本和图标 |
|||
// submitButtonOptions: { text: '提交', preIcon: '' }, |
|||
//查询列占比 24代表一行 取值范围 0-24 |
|||
// actionColOptions: { span: 17 }, |
|||
labelCol: { style: { width: '120px' } }, |
|||
wrapperCol: { style: { width: 'auto' } }, |
|||
disabled: true |
|||
}); |
|||
|
|||
//项目入库审批table |
|||
// const { tableContext: approveStarttableContext } = useListPage({ |
|||
// tableProps: { |
|||
// size: 'small',//紧凑型表格 |
|||
// title: '审批详情', |
|||
// api: queryProcessInfo, |
|||
// columns: approveStartProcessColumns, |
|||
// showActionColumn: false, |
|||
// useSearchForm: false, |
|||
// beforeFetch(params) { |
|||
// params.stage = projectstage.value>=3?"2":"1", |
|||
// params.projectid = dataTo.projectid |
|||
// }, |
|||
// }, |
|||
// }); |
|||
// BasicTable绑定注册 |
|||
// const [registerApproveStartTable] = approveStarttableContext; |
|||
|
|||
// //项目资料table |
|||
// const { tableContext } = useListPage({ |
|||
// tableProps: { |
|||
// size: 'small',//紧凑型表格 |
|||
// title: '项目入库资料详情', |
|||
// api: queryResourceInfo, |
|||
// columns: resourcetableColumns, |
|||
// useSearchForm: false, |
|||
// actionColumn: { |
|||
// width: 120, |
|||
// fixed: "right", |
|||
// }, |
|||
// beforeFetch(params) { |
|||
// params.stage = "1", |
|||
// params.projectid = dataTo.projectid |
|||
// }, |
|||
// }, |
|||
// }); |
|||
// const [registerResourceTable] = tableContext; |
|||
|
|||
</script> |
|||
<style></style> |
|||
./projectInfoHistory.data |
@ -0,0 +1,136 @@ |
|||
<template> |
|||
<!-- 自定义表单 --> |
|||
<BasicModal @register="registerModal" title="归档信息详情" width="1200px" :showOkBtn="false" :showCancelBtn="false"> |
|||
|
|||
<el-divider content-position="left">合同信息</el-divider> |
|||
<BasicForm @register="registerWorkreport" /> |
|||
<el-divider content-position="left">上传合同文件</el-divider> |
|||
<el-form ref="importFormRef" label-width="130px"> |
|||
|
|||
<el-form-item label="上传文件:"> |
|||
<el-upload class="upload-demo" ref="upload" action :http-request="httpRequest" :before-upload="beforeUpload" |
|||
:on-exceed="handleExceed" :limit="1" :on-remove="removeFile"> |
|||
<el-button slot="trigger" size="small" type="primary">选取文件</el-button> |
|||
<div slot="tip" class="el-upload__tip">文件大小且不超过10M</div> |
|||
</el-upload> |
|||
</el-form-item> |
|||
|
|||
<el-form-item> |
|||
<el-button type="primary" @click="submitImportForm">上传</el-button> |
|||
<el-button type="info" @click="dialogVisible">关闭窗口</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
</BasicModal> |
|||
</template> |
|||
<script lang="ts" name="addModifyWorkreport" setup> |
|||
import { ref, reactive, defineProps, watchEffect } from 'vue' |
|||
import { useForm, BasicForm } from '/@/components/Form'; |
|||
import { workReportformSchemas } from './workReport.data'; |
|||
import { modifyWorkreport, addWorkreport, getWorkreportById } from './workReport.api'; |
|||
import { ElMessage } from 'element-plus' |
|||
import { useModalInner, BasicModal } from '/@/components/Modal'; |
|||
const [registerModal, { closeModal }] = useModalInner(init); |
|||
|
|||
|
|||
let fileList = reactive<Array<any>>([]); |
|||
let id = ref() |
|||
let projectid = ref() |
|||
const emit = defineEmits(['close']); |
|||
|
|||
async function init(data) { |
|||
console.log("datadatadata", data) |
|||
if (data.projectid) { |
|||
projectid.value = data.projectid |
|||
} |
|||
fileList.pop() |
|||
if (data.id != null) { |
|||
id.value = data.id |
|||
let param: any = { |
|||
id: data.id |
|||
} |
|||
let res = await getWorkreportById(param) |
|||
console.log("结果是", res) |
|||
setFieldsValue(res) |
|||
} |
|||
|
|||
} |
|||
|
|||
//项目入库详情 |
|||
const [registerWorkreport, { setFieldsValue: setFieldsValue, getFieldsValue, validate }] = useForm({ |
|||
//注册表单列 |
|||
schemas: workReportformSchemas, |
|||
showActionButtonGroup: false, |
|||
//回车提交 |
|||
// autoSubmitOnEnter: true, |
|||
// //不显示重置按钮 |
|||
// showResetButton: false, |
|||
//自定义提交按钮文本和图标 |
|||
// submitButtonOptions: { text: '提交', preIcon: '' }, |
|||
//查询列占比 24代表一行 取值范围 0-24 |
|||
// actionColOptions: { span: 17 }, |
|||
labelCol: { style: { width: '120px' } }, |
|||
wrapperCol: { style: { width: 'auto' } }, |
|||
}); |
|||
|
|||
|
|||
// 覆盖默认的上传行为,可以自定义上传的实现,将上传的文件依次添加到fileList数组中,支持多个文件 |
|||
function httpRequest(option) { |
|||
fileList.push(option) |
|||
} |
|||
function removeFile(option) { |
|||
for (let i = 0; i < fileList.length; i++) { |
|||
if (fileList[i].file.name == option.name) { |
|||
fileList.splice(i, 1) |
|||
} |
|||
} |
|||
console.log(fileList, option) |
|||
|
|||
} |
|||
// 上传前处理 |
|||
function beforeUpload(file) { |
|||
let fileSize = file.size |
|||
const FIVE_M = 10 * 1024 * 1024; |
|||
//大于5M,不允许上传 |
|||
if (fileSize > FIVE_M) { |
|||
ElMessage.error("最大上传10M") |
|||
return false |
|||
} |
|||
|
|||
return true |
|||
} |
|||
// 文件数量过多时提醒 |
|||
function handleExceed() { |
|||
ElMessage.warning("最多只能上传一个文件") |
|||
} |
|||
//导入Excel病种信息数据 |
|||
async function submitImportForm() { |
|||
if (await validate()) { |
|||
|
|||
let data = await getFieldsValue() |
|||
console.log("data", data) |
|||
// 使用form表单的数据格式 |
|||
if (id.value != null) { |
|||
if (fileList.length > 0) { |
|||
data.file = fileList[0].file |
|||
} |
|||
//说明是修改 |
|||
data.id = id.value |
|||
modifyWorkreport(data) |
|||
} else { |
|||
if (fileList.length == 0) { |
|||
ElMessage.warning("请上传文件") |
|||
return; |
|||
} |
|||
data.file = fileList[0].file |
|||
data.projectid = projectid.value |
|||
addWorkreport(data) |
|||
} |
|||
dialogVisible() |
|||
} |
|||
} |
|||
function dialogVisible() { |
|||
closeModal() |
|||
emit("close") |
|||
} |
|||
</script> |
|||
<style></style> |
@ -0,0 +1,101 @@ |
|||
<template> |
|||
<div> |
|||
<!--引用表格--> |
|||
<BasicTable @register="registerTable"> |
|||
<template #action="{ record }"> |
|||
<!-- <TableAction :actions="getTableAction(record)" /> --> |
|||
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" /> |
|||
</template> |
|||
</BasicTable> |
|||
<addModifyWorkreport @register="registeraddworkreport" @close="closeModel" /> |
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts" name="system-user" setup> |
|||
//ts语法 |
|||
import { ref } from "vue" |
|||
import { ActionItem, BasicTable, TableAction } from '/@/components/Table'; |
|||
import { useListPage } from '/@/hooks/system/useListPage'; |
|||
import { useModal } from '/@/components/Modal'; |
|||
import { downloadFile } from "../../../api/common/api" |
|||
|
|||
import { workReportShowcolumns, searchFormSchema } from './workReport.data'; |
|||
import addModifyWorkreport from "./addModifyWorkreport.vue" |
|||
import { workreportPageList, deleteWorkreport } from './workReport.api'; |
|||
const [registeraddworkreport, { openModal }] = useModal(); |
|||
const [registecontractDetail, { openModal: opencontractDetail, closeModal: closecontractDetail }] = useModal(); |
|||
let projectid = ref() |
|||
let id = ref() |
|||
const { tableContext } = useListPage({ |
|||
designScope: 'basic-table-demo-ajax', |
|||
tableProps: { |
|||
title: '项目周报信息', |
|||
api: workreportPageList, |
|||
columns: workReportShowcolumns, |
|||
actionColumn: { |
|||
width: 120, |
|||
fixed: "right", |
|||
}, |
|||
//表单查询项设置 |
|||
formConfig: { |
|||
schemas: searchFormSchema, |
|||
} |
|||
}, |
|||
}); |
|||
//BasicTable绑定注册 |
|||
const [registerTable, { reload }] = tableContext; |
|||
|
|||
function getTableAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '修改', |
|||
onClick: handleModify.bind(null, record) |
|||
}, |
|||
|
|||
|
|||
]; |
|||
} |
|||
function getDropDownAction(record): ActionItem[] { |
|||
return [ |
|||
{ |
|||
label: '下载', |
|||
onClick: handledown.bind(null, record) |
|||
}, |
|||
{ |
|||
label: '删除', |
|||
popConfirm: { |
|||
title: '确定删除吗?', |
|||
confirm: handleDelete.bind(null, record), |
|||
}, |
|||
}, |
|||
|
|||
]; |
|||
} |
|||
function handleModify(record) { |
|||
openModal(true, { id: record.id }) |
|||
|
|||
} |
|||
|
|||
function handledown(record) { |
|||
console.log("我这一行的数据是", record) |
|||
let param = { |
|||
path: record.documentPath, |
|||
fileName: record.documentName |
|||
} |
|||
// |
|||
console.log("我这一行的数据是", param) |
|||
|
|||
downloadFile("/huzhouUploadfileinfo/downloadfile", record.documentName, param) |
|||
} |
|||
async function handleDelete(record) { |
|||
await deleteWorkreport({ id: record.id }) |
|||
reload() |
|||
} |
|||
|
|||
function closeModel() { |
|||
reload() |
|||
} |
|||
|
|||
</script> |
|||
|
|||
<style scoped></style> |
@ -0,0 +1,25 @@ |
|||
import { defHttp } from '/@/utils/http/axios'; |
|||
import { downloadFile } from "../../../api/common/api" |
|||
|
|||
export enum Api { |
|||
workreportPageList = '/huzhouWorkreport/workreportPageList', |
|||
addWorkreport="/huzhouWorkreport/addWorkreport", |
|||
modifyWorkreport = '/huzhouWorkreport/modifyWorkreport', |
|||
getWorkreportById="/huzhouWorkreport/getWorkreportById", |
|||
deleteWorkreport = '/huzhouWorkreport/deleteWorkreport', |
|||
|
|||
} |
|||
|
|||
export const workreportPageList = (params) => defHttp.get({ url: Api.workreportPageList, params }) |
|||
export const getWorkreportById = (params) => defHttp.get({ url: Api.getWorkreportById, params }) |
|||
export const isExistContractinfo = (params) => defHttp.get({ url: Api.isExistContractinfo, params }) |
|||
export const getContractinfoListById = (params) => defHttp.get({ url: Api.getContractinfoListById, params }) |
|||
|
|||
export const addWorkreport = (params?) =>defHttp.post({ url: Api.addWorkreport,headers:{ "Content-Type": "multipart/form-data" }, params }) |
|||
|
|||
export const modifyWorkreport = (params?) =>defHttp.post({ url: Api.modifyWorkreport,headers:{ "Content-Type": "multipart/form-data" }, params }) |
|||
|
|||
export const deleteWorkreport = (params?) =>defHttp.post({ url: Api.deleteWorkreport, params }) |
|||
|
|||
|
|||
|
@ -0,0 +1,196 @@ |
|||
import { collapseTextChangeRangesAcrossMultipleVersions } from 'typescript'; |
|||
import { FormSchema } from '/@/components/Form'; |
|||
import { BasicColumn } from '/@/components/Table'; |
|||
import dayjs from "dayjs"; |
|||
import { da } from 'element-plus/es/locale'; |
|||
|
|||
|
|||
export const workReportShowcolumns: BasicColumn[] = [ |
|||
{ |
|||
title: '项目名称', |
|||
dataIndex: 'projectName', |
|||
}, |
|||
{ |
|||
title: '类型', |
|||
dataIndex: 'type', |
|||
}, |
|||
{ |
|||
title: '开始时间', |
|||
dataIndex: 'startDate', |
|||
}, |
|||
{ |
|||
title: '结束时间', |
|||
dataIndex: 'endDate', |
|||
}, |
|||
{ |
|||
title: '文件名称', |
|||
dataIndex: 'documentName', |
|||
width: 150, |
|||
}, |
|||
{ |
|||
title: '文件大小', |
|||
dataIndex: 'size', |
|||
width: 150, |
|||
customRender: ({ record }) => { |
|||
let kbNum: number = record.size / 1024 |
|||
if (kbNum < 1024) { |
|||
return kbNum.toFixed(2).toString() + "KB" |
|||
} else { |
|||
let mbNum: number = kbNum / 1024 |
|||
return mbNum.toFixed(2).toString() + "MB" |
|||
} |
|||
|
|||
}, |
|||
|
|||
}, |
|||
|
|||
]; |
|||
export const workReportDetailcolumns: BasicColumn[] = [ |
|||
{ |
|||
title: '合同总金额', |
|||
dataIndex: 'totalAmount', |
|||
}, |
|||
{ |
|||
title: '首付时间', |
|||
dataIndex: 'downpaymentDate', |
|||
|
|||
}, |
|||
{ |
|||
title: '首付比例', |
|||
dataIndex: 'downpaymentRatio', |
|||
|
|||
}, |
|||
|
|||
{ |
|||
title: '初验时间', |
|||
dataIndex: 'initialDate', |
|||
}, |
|||
|
|||
{ |
|||
title: '初验比例', |
|||
dataIndex: 'initialRatio', |
|||
|
|||
}, |
|||
{ |
|||
title: '终验时间', |
|||
dataIndex: 'finalDate', |
|||
|
|||
}, |
|||
{ |
|||
title: '终验比例', |
|||
dataIndex: 'finalRatio', |
|||
}, |
|||
{ |
|||
title: '文件名称', |
|||
dataIndex: 'documentName', |
|||
width: 150, |
|||
}, |
|||
{ |
|||
title: '文件大小', |
|||
dataIndex: 'size', |
|||
width: 150, |
|||
customRender: ({ record }) => { |
|||
let kbNum: number = record.size / 1024 |
|||
if (kbNum < 1024) { |
|||
return kbNum.toFixed(2).toString() + "KB" |
|||
} else { |
|||
let mbNum: number = kbNum / 1024 |
|||
return mbNum.toFixed(2).toString() + "MB" |
|||
} |
|||
|
|||
}, |
|||
|
|||
}, |
|||
|
|||
]; |
|||
export const searchFormSchema: FormSchema[] = [ |
|||
{ |
|||
label: '项目名称', |
|||
field: 'projectName', |
|||
component: 'Input', |
|||
}, |
|||
{ |
|||
label: '文件名称', |
|||
field: 'documentName', |
|||
component: 'Input', |
|||
} |
|||
|
|||
]; |
|||
export const workReportformSchemas: FormSchema[] = [ |
|||
{ |
|||
label: '类型', |
|||
field: 'type', |
|||
component: 'Select', |
|||
componentProps: ({ formModel, formActionType }) => { |
|||
return { |
|||
//
|
|||
options: [ |
|||
{ |
|||
value: '周报', |
|||
label: '周报' |
|||
}, { |
|||
value: '月报', |
|||
label: '月报' |
|||
} |
|||
], |
|||
onChange: async (value) => { |
|||
const { setFieldsValue } = formActionType; |
|||
|
|||
if(formModel.startDate){ |
|||
if(value=="周报"){ |
|||
let nextDate = dayjs(formModel.startDate).add(7,"day").format("YYYY-MM-DD") |
|||
setFieldsValue({ endDate: nextDate }) |
|||
}else{ |
|||
let nextDate = dayjs(formModel.startDate).add(1,"month").format("YYYY-MM-DD") |
|||
setFieldsValue({ endDate: nextDate }) |
|||
} |
|||
} |
|||
}, |
|||
}; |
|||
}, |
|||
required: true, |
|||
colProps: { span: 12 }, |
|||
}, |
|||
{ |
|||
label: '开始时间', |
|||
field: 'startDate', |
|||
component: 'DatePicker', |
|||
// componentProps: {
|
|||
// valueFormat: 'YYYY-MM-DD',
|
|||
|
|||
// },
|
|||
componentProps: ({ formModel, formActionType }) => { |
|||
return { |
|||
//
|
|||
valueFormat: 'YYYY-MM-DD', |
|||
onChange: async (value) => { |
|||
const { setFieldsValue } = formActionType; |
|||
|
|||
if(formModel.type){ |
|||
if(formModel.type=="周报"){ |
|||
let nextDate = dayjs(value).add(7,"day").format("YYYY-MM-DD") |
|||
setFieldsValue({ endDate: nextDate }) |
|||
}else{ |
|||
let nextDate = dayjs(value).add(1,"month").format("YYYY-MM-DD") |
|||
setFieldsValue({ endDate: nextDate }) |
|||
} |
|||
} |
|||
}, |
|||
}; |
|||
}, |
|||
required: true, |
|||
colProps: { span: 12 }, |
|||
}, |
|||
|
|||
{ |
|||
label: '结束时间', |
|||
field: 'endDate', |
|||
component: 'DatePicker', |
|||
componentProps: { |
|||
valueFormat: 'YYYY-MM-DD', |
|||
}, |
|||
dynamicDisabled: true, |
|||
colProps: { span: 12 }, |
|||
}, |
|||
|
|||
]; |
Loading…
Reference in new issue