Browse Source

提交

master
zhouhaibin 8 months ago
parent
commit
1e92736e9e
  1. 177
      src/views/ProcessApprovalSubPage/initiatesProjectsApproval/index.vue
  2. 241
      src/views/ProcessApprovalSubPage/uploadfileApproval/index.vue
  3. 18
      src/views/addressBook/address/address.api.ts
  4. 56
      src/views/addressBook/address/address.data.ts
  5. 38
      src/views/addressBook/address/index copy.vue
  6. 46
      src/views/addressBook/address/index.vue
  7. 89
      src/views/addressBook/address/index_adrees_bak.vue
  8. 4
      src/views/myWork/completed/complectedDetail.vue
  9. 161
      src/views/myWork/completed/index.vue
  10. 127
      src/views/myWork/inComplete/inComplectedDetail.vue
  11. 14
      src/views/myWork/inComplete/inComplete.api.ts
  12. 155
      src/views/myWork/inComplete/index.vue
  13. 304
      src/views/projectLib/initiatesProjects/index.vue
  14. 19
      src/views/projectLib/initiatesProjects/initiatesProjects.api.ts
  15. 492
      src/views/projectLib/initiatesProjects/initiatesProjects.data.ts
  16. 189
      src/views/projectLib/initiatesProjects/role.api.ts
  17. 170
      src/views/projectLib/projectInfo/Detailpage.vue
  18. 121
      src/views/projectLib/projectInfo/index.vue
  19. 11
      src/views/projectLib/projectInfo/projectInfo.api.ts
  20. 321
      src/views/projectLib/projectInfo/projectInfo.data.ts
  21. 168
      src/views/projectLib/projectInfo/uploadFile.vue
  22. 132
      src/views/projectLib/projectPlan/addPlan.vue
  23. 116
      src/views/projectLib/projectPlan/index.vue
  24. 20
      src/views/projectLib/projectPlan/projectPlan.api.ts
  25. 279
      src/views/projectLib/projectPlan/projectPlan.data.ts
  26. 75
      src/views/projectLib/projectPlan/viewPlanDetail.vue
  27. 121
      src/views/projectLib/projectPlanModule/addModuleDetailPage.vue
  28. 83
      src/views/projectLib/projectPlanModule/addModulePage.vue
  29. 131
      src/views/projectLib/projectPlanModule/index.vue
  30. 23
      src/views/projectLib/projectPlanModule/projectPlanModule.api.ts
  31. 173
      src/views/projectLib/projectPlanModule/projectPlanModule.data.ts

177
src/views/ProcessApprovalSubPage/initiatesProjectsApproval/index.vue

@ -0,0 +1,177 @@
<template>
<!-- 自定义表单 -->
<el-divider content-position="left">项目入库详情</el-divider>
<BasicForm @register="registerProjectForm" />
<el-divider content-position="left">项目审批详情</el-divider>
<BasicTable @register="registerTable" />
<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="initiatesProjectsApproval" setup>
import { ref, onMounted, reactive, onUpdated } from 'vue'
import { useForm, BasicForm } from '/@/components/Form';
import { formSchemas, approveStartProcessColumns } from '../../projectLib/projectInfo/projectInfo.data';
import { approvalformSchemas } from '../../myWork/inComplete/inComplete.data'
import { queryProjectInfoById, queryProcessInfo } from '../../projectLib/projectInfo/projectInfo.api'
import { BasicTable } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { submitTask, getActionParam } from '../../myWork/inComplete/inComplete.api';
import { getUserInfoByid } from '../../projectLib/initiatesProjects/initiatesProjects.api'
import { useRouter, useRoute } from 'vue-router'
const route = useRoute();
const router = useRouter()
console.log("routerouterouteroute", route.query)
let projectid = route.query.projectid
let taskid = route.query.taskId
const emit = defineEmits(['close']);
let showApprovalForm = ref()
let resButton = reactive({
showApprovalForm: false,
IsEdit: false,
buttons: []
})
onMounted(async () => {
let param: any = {
projectid: projectid
}
let res = await queryProjectInfoById(param)
console.log("结果是", res)
setFieldsValue(res)
reload()
resButton = await getActionParam({ projectid: projectid, status: "1", taskId: taskid, procesType: route.query.procesType })
console.log("resButton", resButton)
if (resButton.IsEdit) {
setProps({ disabled: false })
}
showApprovalForm.value = resButton.showApprovalForm
})
onUpdated(async () => {
console.log("我更新了")
updateSchema({
field: 'flag',
componentProps: {
options: resButton.buttons,
}
})
let proform = getFieldsValueProjectForm()
for (let key in proform) {
if (key.indexOf("Contactor") != -1) {
let userid = proform[key]
let res = await getUserInfoByid({ id: userid })
console.log(key,res.realname)
updateProjectSchema({
field: key,
componentProps: {
options: [{
value: userid,
label: res.realname
}
],
}
})
}
}
}
)
/**
* BasicForm绑定注册;src\views\ProcessApprovalSubPage\initiatesProjectsApproval\initiatesProjectsApproval.vue
* useForm 是整个框架的核心用于表单渲染里边封装了很多公共方法;
* 支持schemas: 渲染表单列autoSubmitOnEnter回车提交,submitButtonOptions自定义按钮文本和图标等方法
* 平台通过此封装简化了代码支持自定义扩展;
*/
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: !resButton.IsEdit
});
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
})
const { tableContext } = useListPage({
tableProps: {
size: 'small',//
title: '流程审批情况',
api: queryProcessInfo,
columns: approveStartProcessColumns,
showActionColumn: false,
useSearchForm: false,
beforeFetch(params) {
params.status = "1",
params.projectid = projectid
},
},
});
// BasicTable
const [registerTable, { reload }] = tableContext;
async function handleSubmit() {
let approvalform = await getFieldsValueApprovalForm();
let projectform = await getFieldsValueProjectForm();
let param = {
flag: approvalform.flag,
projectid: projectid,
comment: approvalform.comment,
taskId: taskid,
status: route.query.status,
projectInfo: projectform,
isEdit: resButton.IsEdit == true ? "1" : "0"
}
// let outrs = Object.assign({},param,projectform)
console.log("param", param, "approvalform", approvalform, "projectform", projectform)
if (await validateApprovalForm() && await validateProjectForm()) {
console.log("提交成功!")
let res = await submitTask(param)
console.log("提交成功!", res)
router.go(-1)
}
}
async function customResetFunc() {
// let index = router.currentRoute.value
// console.log("index",index)
// router.close(index)
router.go(-1)
}
</script>
<style></style>

241
src/views/ProcessApprovalSubPage/uploadfileApproval/index.vue

@ -0,0 +1,241 @@
<template>
<!-- 自定义表单 -->
<el-divider content-position="left">项目入库详情</el-divider>
<BasicForm @register="registerProjectForm" />
<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">
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<div slot="tip" class="el-upload__tip">文件大小且不超过5M</div>
</el-upload>
</div>
<el-divider content-position="left">项目审批详情</el-divider>
<BasicTable @register="registerTable" />
<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="uploadfileApproval" setup>
import { onMounted, ref, reactive, onUpdated } from 'vue'
import { useForm, BasicForm } from '/@/components/Form';
import { formSchemas, approveStartProcessColumns, } from '../../projectLib/projectInfo/projectInfo.data';
import { approvalformSchemas } from '../../myWork/inComplete/inComplete.data'
import { queryProjectInfoById, queryProcessInfo } from '../../projectLib/projectInfo/projectInfo.api'
import { BasicTable, ActionItem, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { approveUploadFile, getActionParam } from '../../myWork/inComplete/inComplete.api';
import { resourcetableColumns } from '../../projectLib/projectInfo/projectInfo.data';
import { queryResourceInfo } from '../../projectLib/projectInfo/projectInfo.api'
import { useRouter, useRoute } from 'vue-router'
import { downloadFile } from "../../../api/common/api"
import { ElMessage } from 'element-plus'
const route = useRoute();
const router = useRouter()
console.log("routerouterouteroute", route.query)
let projectid = route.query.projectid
let taskid = route.query.taskId
const emit = defineEmits(['close']);
let showApprovalForm = ref()
let resButton = reactive({
showApprovalForm: false,
IsEdit: false,
buttons: []
})
let fileList = reactive<Array<any>>([]);
onMounted(async () => {
let param: any = {
projectid: projectid
}
let res = await queryProjectInfoById(param)
console.log("结果是", res)
setFieldsValue(res)
reload()
resButton = await getActionParam({ projectid: projectid, status: "2", taskId: taskid, procesType: route.query.procesType })
showApprovalForm.value = resButton.showApprovalForm
})
onUpdated(async () => {
console.log("我更新了:")
updateSchema({
field: 'flag',
componentProps: {
options: resButton.buttons,
}
})
})
/**
* BasicForm绑定注册;src\views\ProcessApprovalSubPage\initiatesProjectsApproval\initiatesProjectsApproval.vue
* 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 [registerApprovalForm, { validate, getFieldsValue, 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
})
const { tableContext } = useListPage({
tableProps: {
size: 'small',//
title: '流程审批情况',
api: queryProcessInfo,
columns: approveStartProcessColumns,
showActionColumn: false,
useSearchForm: false,
beforeFetch(params) {
params.status = "2",
params.projectid = projectid
},
},
});
// BasicTable
const [registerTable, { reload }] = tableContext;
//table
const { tableContext: resourceTableContext } = useListPage({
tableProps: {
size: 'small',//
title: '项目入库资料详情',
api: queryResourceInfo,
columns: resourcetableColumns,
useSearchForm: false,
actionColumn: {
width: 120,
fixed: "right",
},
beforeFetch(params) {
params.status = "2",
params.projectid = 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("/huzhouProject/downloadfile", record.documentName, param)
}
function httpRequest(option) {
fileList.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
}
//xlsx
// let fileName = file.name
// let reg = /^.+(\.xlsx)$/
// if(!reg.test(fileName)){
// ElMessage.error("xlsx!")
// return false
// }
return true
}
//
function handleExceed() {
ElMessage.warning("最多只能上传五个文件")
}
async function handleSubmit() {
let approvalform = await getFieldsValue();
const params = new FormData()
params.append("flag", approvalform.flag)
params.append("projectid", projectid)
params.append("comment", approvalform.comment)
params.append("taskId", taskid)
params.append("status", route.query.status)
if (fileList.length > 0) {
fileList.forEach((x) => {
console.log("xxxxxxxxxx", x)
params.append("file", x.file)
});
}
console.log("param", params, "approvalform", approvalform)
if (await validate()) {
let res = await approveUploadFile(params)
console.log("提交成功!", res)
router.go(-1)
}
}
async function customResetFunc() {
router.go(-1)
}
</script>
<style></style>

18
src/views/addressBook/address/address.api.ts

@ -1,19 +1,11 @@
import { defHttp } from '/@/utils/http/axios';
export enum Api {
list = '/sys/user/queryByOrgCodeForAddressList',
getMyAddressBook = '/huzhouUser/getMyAddressBook',
positionList = '/sys/position/list',
queryDepartTreeSync = '/sys/sysDepart/queryDepartTreeSync',
}
/**
*
*/
export const queryDepartTreeSync = (params?) => defHttp.get({ url: Api.queryDepartTreeSync, params });
/**
*
*/
export const list = (params?) => defHttp.get({ url: Api.list, params });
/**
* list
*/
export const positionList = (params?) => defHttp.get({ url: Api.positionList, params });
export const getMyAddressBook = (params?) => defHttp.get({ url: Api.getMyAddressBook, params });

56
src/views/addressBook/address/address.data.ts

@ -1,7 +1,16 @@
import { FormSchema } from '/@/components/Form';
import { BasicColumn } from '/@/components/Table';
import { getDictItemsByCode } from '/@/utils/dict/index';
import { useUserStore } from '/@/store/modules/user';
const userStore = useUserStore();
const workplaceTypeDicts: Array<Object> = getDictItemsByCode("workplaceType")
export const columns: BasicColumn[] = [
{
title: '用户名',
dataIndex: 'username',
width: 150,
},
{
title: '姓名',
dataIndex: 'realname',
@ -14,20 +23,16 @@ export const columns: BasicColumn[] = [
},
{
title: '单位类型',
dataIndex: 'workplaceTpye',
dataIndex: 'workplaceType',
width: 200,
customRender: ({ record }) => {
for(let i =0;i<workplaceTypeDicts.length;i++){
if(record.workplaceType==workplaceTypeDicts[i].value){
return workplaceTypeDicts[i].text
}
}
},
},
{
title: '项目编号',
width: 150,
dataIndex: 'projectId',
},
{
title: '项目名称',
dataIndex: 'projectName',
width: 150,
},
{
title: '手机号',
width: 150,
@ -37,34 +42,17 @@ export const columns: BasicColumn[] = [
export const searchFormSchema: FormSchema[] = [
{
label: '人员姓名',
field: 'username',
label: '姓名',
field: 'realname',
component: 'Input',
//colProps: { span: 6 },
},
{
label: '项目名称',
field: 'project',
component: 'Input',
//colProps: { span: 6 },
},
// {
// label: '性别',
// field: 'sex',
// component: 'JDictSelectTag',
// componentProps: {
// dictCode: 'sex',
// placeholder: '请选择性别',
// stringToNumber: true,
// },
// //colProps: { span: 6 },
// },
{
label: '项目编号',
field: 'project',
label: '用户名',
field: 'username',
component: 'Input',
//colProps: { span: 6 },
}
},
// {
// label: '',
// field: 'status',

38
src/views/addressBook/address/index copy.vue

@ -1,38 +0,0 @@
<template>
<div>
<el-form :inline="true" :model="formQueryParam" class="demo-form-inline">
<el-form-item label="人员名称">
<el-input v-model="formQueryParam.userName" placeholder="人员名称" clearable />
</el-form-item>
<el-form-item label="项目编号">
<el-input v-model="formQueryParam.projectId" placeholder="项目编号" clearable />
</el-form-item>
<el-form-item label="项目名称">
<el-input v-model="formQueryParam.projectName" placeholder="项目名称" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="query">查询</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script lang="ts" setup>
import {ref } from 'vue';
const formQueryParam = ref<any>({
userName:"",
projectId:"",
projectName:""
})
function query(){
}
</script>
<style lang="less">
@import './index.less';
</style>

46
src/views/addressBook/address/index.vue

@ -3,29 +3,26 @@
<!--引用表格-->
<BasicTable @register="registerTable">
<!--插槽:table标题-->
<!--操作栏-->
<!-- <template #action="{ record }">
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
</template> -->
</BasicTable>
</div>
</template>
<script lang="ts" name="system-user" setup>
//ts
import { ref, computed, unref } from 'vue';
import {BasicTable} from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, searchFormSchema } from './address.data';
// import { list } from './address.api';
import { defHttp } from '/@/utils/http/axios';
//ajaxapi
const demoListApi = (params) => {
return defHttp.get({ url: "", params });
};
import { getMyAddressBook } from './address.api';
const { tableContext } = useListPage({
designScope: 'basic-table-demo-ajax',
tableProps: {
title: '通讯录名单',
api: demoListApi,
api: getMyAddressBook,
columns: columns,
actionColumn: {
width: 120,
@ -38,6 +35,37 @@
});
//BasicTable
const [registerTable] = tableContext;
// function getTableAction(record): ActionItem[] {
// return [
// {
// label: '',
// onClick: handleEditDetailpage.bind(null, record),
// },
// ];
// }
// /**
// *
// */
// function getDropDownAction(record): ActionItem[] {
// return [
// {
// label: '',
// ifShow: true,
// onClick: handleModifyModule.bind(null, record)
// },
// {
// label: '',
// ifShow: true,
// onClick: handleDeleteModule.bind(null, record)
// },
// ];
// }
</script>
<style scoped></style>

89
src/views/addressBook/address/index_adrees_bak.vue

@ -1,89 +0,0 @@
<template>
<a-row :class="['p-4', `${prefixCls}--box`]" type="flex" :gutter="10" style="max-height: 800px">
<a-col :xl="6" :lg="24" :md="24" style="margin-bottom: 10px">
<DepartLeftTree ref="leftTree" @select="onTreeSelect" />
</a-col>
<a-col :xl="18" :lg="24" :md="24" style="margin-bottom: 10px">
<div style="height: 100%;" class="address-book">
<!--引用表格-->
<BasicTable @register="registerTable">
<template #post="{ text }">
{{
(text || '')
.split(',')
.map((t) => (positionInfo[t] ? positionInfo[t] : t))
.join(',')
}}
</template>
</BasicTable>
</div>
</a-col>
</a-row>
</template>
<script lang="ts" setup>
import { provide, ref, unref } from 'vue';
import { useDesign } from '/@/hooks/web/useDesign';
import DepartLeftTree from './components/DepartLeftTree.vue';
import { BasicTable } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, searchFormSchema } from './address.data';
import { list, positionList } from './address.api';
const { prefixCls } = useDesign('address-list');
provide('prefixCls', prefixCls);
// ref
const leftTree = ref();
// code
const orgCode = ref('');
const positionInfo = ref({});
//
const { tableContext } = useListPage({
tableProps: {
api: list,
columns,
//update-begin---author:wangshuai ---date:20220629 for[VUEN-1485]--------------
rowKey: 'userId',
//update-end---author:wangshuai ---date:20220629 for[VUEN-1485]----------------
showIndexColumn: true,
formConfig: {
schemas: searchFormSchema,
},
canResize: false,
actionColumn: null,
showTableSetting: false,
//
beforeFetch(params) {
params.orgCode = orgCode.value;
},
},
});
//table
const [registerTable, { reload }] = tableContext;
//
function onTreeSelect(data) {
orgCode.value = data.orgCode;
reload();
}
//
async function queryPositionInfo() {
const result = await positionList({ pageSize: 99999 });
if (result) {
let obj = {};
result.records.forEach((position) => {
obj[position['id']] = position['name'];
});
positionInfo.value = obj;
}
}
queryPositionInfo();
</script>
<style lang="less">
@import './index.less';
</style>

4
src/views/myWork/completed/complectedDetail.vue

@ -13,7 +13,7 @@
<script lang="ts" name="complectedDetail" setup>
import { defineProps,watchEffect} from 'vue'
import { useForm, BasicForm } from '/@/components/Form';
import { formSchemas,ProcessColumns} from '../../projectLib/projectInfo/projectInfo.data';
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';
@ -64,7 +64,7 @@ watchEffect(async ()=>{
size:'small',//
title: '流程审批情况',
api:queryProcessInfo,
columns: ProcessColumns,
columns: approveStartProcessColumns,
showActionColumn:false,
useSearchForm:false,
beforeFetch(params) {

161
src/views/myWork/completed/index.vue

@ -1,91 +1,96 @@
<template>
<div>
<!--引用表格-->
<BasicTable @register="registerTable">
<!--插槽:table标题-->
<!--操作栏-->
<div>
<!--引用表格-->
<BasicTable @register="registerTable">
<!--插槽:table标题-->
<!--操作栏-->
<template #action="{ record }">
<!-- <TableAction :actions="getTableAction(record)" /> -->
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<BasicModal @register="registerModal" title="已办流程信息详情" width="1200px" :showOkBtn="false">
<complectedDetail :dataTo="proid" :taskid="taskid" @close="closeModals()"/>
</BasicTable>
<BasicModal @register="registerModal" title="已办流程信息详情" width="1200px" :showOkBtn="false">
<complectedDetail :dataTo="proid" :taskid="taskid" @close="closeModals()" />
</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 { columns, searchFormSchema } from './complete.data';
// import { list } from './address.api';
import {myCompleteTask} from '../inComplete/inComplete.api';
</div>
</template>
import { useModal } from '/@/components/Modal';
import { BasicModal } from '/@/components/Modal';
import complectedDetail from './complectedDetail.vue';
<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 { columns, searchFormSchema } from './complete.data';
// import { list } from './address.api';
import { myCompleteTask } from '../inComplete/inComplete.api';
import { useModal } from '/@/components/Modal';
import { BasicModal } from '/@/components/Modal';
const [registerModal, { openModal,closeModal }] = useModal();
import complectedDetail from './complectedDetail.vue';
const [registerModal, { openModal, closeModal }] = useModal();
import { useRouter, useRoute } from 'vue-router'
const route = useRoute();
const router = useRouter();
console.log(" const route = useRoute();", route.query)
let proid = ref();
let taskid = ref()
const { tableContext } = useListPage({
designScope: 'basic-table-demo-ajax',
tableProps: {
title: '我的已办',
api: myCompleteTask,
columns: columns,
actionColumn: {
width: 120,
},
//
formConfig: {
schemas: searchFormSchema,
}
let proid = ref();
let taskid = ref()
const { tableContext } = useListPage({
designScope: 'basic-table-demo-ajax',
tableProps: {
title: '我的已办',
api: myCompleteTask,
columns: columns,
actionColumn: {
width: 120,
},
});
//BasicTable
const [registerTable,{reload}] = tableContext;
function getTableAction(record): ActionItem[] {
return [
{
label: '处理',
onClick: handleEdit.bind(null, record),
},
];
}
/**
* 下拉操作栏
*/
function getDropDownAction(record): ActionItem[] {
return [
{
label: '发起计划流程',
ifShow:true,
onClick: handleEdit.bind(null, record),
},
];
//
formConfig: {
schemas: searchFormSchema,
}
function handleEdit(record) {
console.log("打开子页面",record);
openModal();
proid.value =record.projectid
// console.log(selectedRows.value);
// console.log(selectedRowKeys.value);
}
function closeModals(){
closeModal()
reload()
},
});
//BasicTable
const [registerTable, { reload }] = tableContext;
function getTableAction(record): ActionItem[] {
return [
{
label: '处理',
onClick: handleEdit.bind(null, record),
},
}
</script>
];
}
function handleEdit(record) {
record.procesType="1" // 1 0
console.log("打开子页面", record);
// openModal();
// proid.value =record.projectid
// record.procesType="1" // 1 0
if (record.status == 1) {
router.push({ // push
path: '/ProcessApprovalSubPage/initiatesProjectsApproval', //name inComplectedDetail
query: record
})
}
else if (record.status == 2) {
router.push({ // push
path: '/ProcessApprovalSubPage/uploadfileApproval', //name inComplectedDetail
query: record
})
}
// console.log(selectedRows.value);
// console.log(selectedRowKeys.value);
}
function closeModals() {
closeModal()
reload()
}
</script>
<style scoped></style>
<style scoped></style>

127
src/views/myWork/inComplete/inComplectedDetail.vue

@ -1,127 +0,0 @@
<template>
<!-- 自定义表单 -->
<el-divider content-position="left">项目入库详情</el-divider>
<BasicForm @register="registerProjectForm" />
<el-divider content-position="left">项目审批详情</el-divider>
<BasicTable @register="registerTable"/>
<el-divider content-position="left">项目审批</el-divider>
<div>
<BasicForm @register="registerApprovalForm" @submit="handleSubmit"/>
</div>
</template>
<script lang="ts" name="inComplectedDetail" setup>
import { defineProps,watchEffect} from 'vue'
import { useForm, BasicForm } from '/@/components/Form';
import { formSchemas,ProcessColumns,} from '../../projectLib/projectInfo/projectInfo.data';
import {approvalformSchemas} from './inComplete.data'
import {queryProjectInfoById,queryProcessInfo} from '../../projectLib/projectInfo/projectInfo.api'
import {BasicTable } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import {submitTask} from './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[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
})
const { tableContext } = useListPage({
tableProps: {
size:'small',//
title: '流程审批情况',
api:queryProcessInfo,
columns: ProcessColumns,
showActionColumn:false,
useSearchForm:false,
beforeFetch(params) {
params.status = "1",
params.projectid=proid.dataTo
},
},
});
// BasicTable
const [registerTable,{reload}] = tableContext;
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>
../datamodule/inComplected.data

14
src/views/myWork/inComplete/inComplete.api.ts

@ -1,14 +1,18 @@
import { defHttp } from '/@/utils/http/axios';
export enum Api {
saveprojectInfo="",
myTaskList='/workflow/myTaskList',
submitTask="/huzhouProject/approveProjectInfo",
myCompleteTask='/workflow/myCompleteTask'
saveprojectInfo = "",
myTaskList = '/workflow/myTaskList',
submitTask = "/huzhouProject/approveProjectInfo",
myCompleteTask = '/workflow/myCompleteTask',
getActionParam = '/workflow/getActionParam',
approveUploadFile = "/huzhouProject/approveUploadFile",
}
/**
*
*/
export const myTaskList = (params) => defHttp.get({ url: Api.myTaskList, params })
export const submitTask = (params) => defHttp.post({ url: Api.submitTask, params })
export const myCompleteTask = (params) => defHttp.get({ url: Api.myCompleteTask, params })
export const myCompleteTask = (params) => defHttp.get({ url: Api.myCompleteTask, params })
export const getActionParam = (params) => defHttp.get({ url: Api.getActionParam, params })
export const approveUploadFile = (params) => defHttp.post({ url: Api.approveUploadFile, headers: { "Content-Type": "multipart/form-data" }, params })

155
src/views/myWork/inComplete/index.vue

@ -1,92 +1,87 @@
<template>
<div>
<!--引用表格-->
<BasicTable @register="registerTable">
<!--插槽:table标题-->
<!--操作栏-->
<div>
<!--引用表格-->
<BasicTable @register="registerTable">
<!--插槽:table标题-->
<!--操作栏-->
<template #action="{ record }">
<!-- <TableAction :actions="getTableAction(record)" /> -->
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<BasicModal @register="registerModalDetail" title="代办流程信息详情" width="1200px" :showOkBtn="false" :showCancelBtn="false">
</BasicTable>
<!-- <BasicModal @register="registerModalDetail" title="代办流程信息详情" width="1200px" :showOkBtn="false" :showCancelBtn="false">
<inComplectedDetail :dataTo="proid" :taskid="taskid" @close="closeModalDetail()"/>
</BasicModal>
</div>
</template>
<script lang="ts" name="system-user" setup>
//ts
import { ref, computed, unref } from 'vue';
import { ActionItem,BasicTable,TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, searchFormSchema } from './inComplete.data';
// import { list } from './address.api';
import {myTaskList} from './inComplete.api';
</BasicModal> -->
</div>
</template>
import inComplectedDetail from './inComplectedDetail.vue';
<script lang="ts" name="system-user" setup>
//ts
import { ref, computed, unref } from 'vue';
import { ActionItem, BasicTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, searchFormSchema } from './inComplete.data';
// import { list } from './address.api';
import { myTaskList } from './inComplete.api';
import { useModal } from '/@/components/Modal';
import { BasicModal } from '/@/components/Modal';
let proid = ref()
let taskid = ref()
const [registerModalDetail, { openModal:openDetail, closeModal:closeDetail}] = useModal();//
import { useRouter, useRoute } from 'vue-router'
const router = useRouter();
import { useModal } from '/@/components/Modal';
import { BasicModal } from '/@/components/Modal';
let proid = ref()
let taskid = ref()
const [registerModalDetail, { openModal: openDetail, closeModal: closeDetail }] = useModal();//
//
const { tableContext } = useListPage({
designScope: 'basic-table-demo-ajax',
tableProps: {
title: '我的代办',
api: myTaskList,
columns: columns,
actionColumn: {
width: 120,
},
//
formConfig: {
schemas: searchFormSchema,
}
//
const { tableContext } = useListPage({
designScope: 'basic-table-demo-ajax',
tableProps: {
title: '我的代办',
api: myTaskList,
columns: columns,
actionColumn: {
width: 120,
},
});
//BasicTable
const [registerTable,{reload}] = tableContext;
function getTableAction(record): ActionItem[] {
return [
{
label: '处理',
onClick: handleEdit.bind(null, record),
},
];
//
formConfig: {
schemas: searchFormSchema,
}
/**
* 下拉操作栏
*/
function getDropDownAction(record): ActionItem[] {
return [
{
label: '上传项目资料',
ifShow:true,
onClick: handleEdit.bind(null, record),
},
];
}
function handleEdit(record) {
console.log(record.description,record);
proid.value =record.projectid
taskid.value= record.taskId
openDetail()
// console.log(selectedRows.value);
// console.log(selectedRowKeys.value);
}
function closeModalDetail(){
closeDetail()
reload()
},
});
//BasicTable
const [registerTable, { reload }] = tableContext;
function getTableAction(record): ActionItem[] {
return [
{
label: '处理',
onClick: handleEdit.bind(null, record),
},
];
}
function handleEdit(record) {
record.procesType="0" //流程类型, 已办是1 代办是0Object.assign({}, xiaoming, {test1:'demo1', test2:'demo2'}); // 第一个参数是 目标对象后面的全是源对象执行完之后返回目标对象
if (record.status == 1) {
router.push({ // push
path: '/ProcessApprovalSubPage/initiatesProjectsApproval', //name inComplectedDetail
query: record
})
}
</script>
<style scoped></style>
else if (record.status == 2) {
router.push({ // push
path: '/ProcessApprovalSubPage/uploadfileApproval', //name inComplectedDetail
query: record
})
}
// console.log(selectedRows.value);
// console.log(selectedRowKeys.value);
}
function closeModalDetail() {
closeDetail()
reload()
}
</script>
<style scoped></style>

304
src/views/projectLib/initiatesProjects/index.vue

@ -1,230 +1,98 @@
<template>
<div class="inintatesProject">
<div style="display: flex; justify-content: center; align-items: center; height: 100px;">
<h1 style="font-weight: bold; font-size: 20px; color: black;">项目入库申请表</h1>
<!-- 自定义表单 -->
<div class="inintatesProject">
<div style="display: flex; justify-content: center; align-items: center; height: 100px;">
<h1 style="font-weight: bold; font-size: 20px; color: black;">项目入库申请表</h1>
</div>
<BasicForm @register="registerForm" @submit="handleSubmit" />
</div>
<el-form :model="projectForm" label-width="120px">
<el-row>
<el-col :span="12">
<el-form-item label="项目名称">
<el-input v-model="projectForm.projectName" placeholder="项目名称"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目类型">
<el-select v-model="projectForm.projectType" placeholder="项目类型" style="width: 100%;">
<el-option v-for="item in projectTypeDict" :key="item.value" :label="item.text" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<!-- 主要任务及标志性成果 -->
<el-form-item label="主要任务">
<el-input v-model="projectForm.description" type="textarea" placeholder="主要任务"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="责任单位">
<el-input v-model="projectForm.dutyWorkplace" placeholder="责任单位"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="建设年限">
<el-input v-model="projectForm.constructionPeriod" type="number" placeholder="建设年限"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="中央资金">
<el-input v-model="projectForm.centralMoney" type="number" placeholder="中央资金"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="省级资金">
<el-input v-model="projectForm.provincialMoney" type="number" placeholder="省级资金"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="市级资金">
<el-input v-model="projectForm.cityMoney" type="number" placeholder="市级资金"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="区县级资金">
<el-input v-model="projectForm.countyMoney" type="number" placeholder="区县级资金"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="所属改革任务">
<el-input v-model="projectForm.reformName" placeholder="所属改革任务"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上级指导处室">
<el-input v-model="projectForm.superLeader" placeholder="上级指导处室"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="项目联系人">
<el-input v-model="projectForm.projectContacts" placeholder="项目联系人"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系电话">
<el-input v-model="projectForm.phone" placeholder="联系电话"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="管理单位">
<el-input v-model="projectForm.manageOrg" placeholder="管理单位"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="管理单位负责人">
<el-input v-model="projectForm.manageContactor" placeholder="管理单位负责人"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="监管单位">
<el-input v-model="projectForm.controler" placeholder="监管单位"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="监管单位负责人">
<el-input v-model="projectForm.controlerContactor" placeholder="监管单位负责人"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="建设单位">
<el-input v-model="projectForm.owner" placeholder="建设单位"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="建设单位负责人">
<el-input v-model="projectForm.ownerContactor" placeholder="建设单位负责人"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="承建单位">
<el-input v-model="projectForm.contructor" placeholder="承建单位"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="承建单位负责人">
<el-input v-model="projectForm.contructorContactor" placeholder="承建单位负责人"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div style="display: flex; justify-content: center; align-items: center; height: 100px;">
<el-button type="primary" @click="onSubmit">发起入库申请</el-button>
<el-button type="primary" @click="craeteprocess">创建流程</el-button>
<!-- <el-button>取消</el-button> -->
</div>
</div>
</template>
<script lang="ts" setup>
import { reactive } from 'vue'
import { defHttp } from '/@/utils/http/axios';
<script lang="ts" name="addModulePage" setup>
import { } from 'vue'
import { useForm, BasicForm } from '/@/components/Form';
import { formSchemas } from './initiatesProjects.data';
import { submitProjectInfo, getWorkPlaceTypeDict } from './initiatesProjects.api'
import { Modal } from 'ant-design-vue';
import { getDictItemsByCode } from '/@/utils/dict/index';
import {submitProjectInfo,Api} from "./initiatesProjects.api";
// do not use same name with ref
let projectForm = reactive({
projectName: '',
projectType: '',
dutyWorkplace: '',
description: '',
constructionPeriod: '',
phone: "",
centralMoney: '',
provincialMoney: '',
reformName: '',
countyMoney: "",
cityMoney: "",
superLeader: '',
projectContacts: "",
contructorContactor: '',
contructor: "",
ownerContactor: "",
owner: "",
controlerContactor: "",
controler: "",
manageContactor: "",
manageOrg: ""
})
let res = getWorkPlaceTypeDict({ workPlaceType: "2" })
console.log("getWorkPlaceTypeDictgetWorkPlaceTypeDictgetWorkPlaceTypeDictgetWorkPlaceTypeDictgetWorkPlaceTypeDictgetWorkPlaceTypeDict", res)
/**
* BasicForm绑定注册;
* useForm 是整个框架的核心用于表单渲染里边封装了很多公共方法;
* 支持schemas: 渲染表单列autoSubmitOnEnter回车提交,submitButtonOptions自定义按钮文本和图标等方法
* 平台通过此封装简化了代码支持自定义扩展;
*/
const [registerForm, { validate, setFieldsValue, getFieldsValue }] = useForm({
//
schemas: formSchemas,
//
// autoSubmitOnEnter: true,
// //
showResetButton: false,
//
resetButtonOptions: { text: '取消', preIcon: '' },
submitButtonOptions: { text: '提交', preIcon: '' },
// 24 0-24
resetFunc: customResetFunc,
actionColOptions: { span: 14 },
labelCol: { style: { width: '120px' } },
wrapperCol: { style: { width: 'auto' } },
});
//table
function handleDetailpage(record) {
console.log("我这一行的数据是", record)
let param = {
path: record.documentPath,
fileName: record.documentName
}
//
console.log("我这一行的数据是", param)
downloadFile("/huzhouProject/downloadfile", record.documentName, param)
}
async function customResetFunc() {
const projectTypeDict = getDictItemsByCode("projectType")
const onSubmit = () => {
Modal.confirm({
title: '提示窗口',
content: '是否提交入库申请表?',
okText: '确认',
cancelText: '取消',
onOk: () => {
//, { joinParamsToUrl: true }
return defHttp.post({ url: Api.submitProjectInfo, data: projectForm }).then(()=>{
projectForm = clearObjectValues(projectForm);
})
},
});
}
async function craeteprocess() {
const res = await submitProjectInfo({a:"111"});
console.log(res)
}
function clearObjectValues(obj) {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
obj[key] = null
}
}
return obj;
async function handleSubmit() {
if (await validate()) {
Modal.confirm({
title: '提示窗口',
content: '是否提交入库申请表?',
okText: '确认',
cancelText: '取消',
onOk: async() => {
let datas = await getFieldsValue()
console.log("datas",datas)
await submitProjectInfo(datas)
let datasnull = clearObjectValues(datas)
setFieldsValue(datasnull)
},
});
console.log("我提交了")
} else {
console.log("未完成")
}
}
function clearObjectValues(obj) {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
obj[key] = null
}
}
return obj;
}
</script>
<style scoped>
.inintatesProject {
padding-top: 40px;
padding-left: 40px;
padding-right: 40px
padding-top: 40px;
padding-left: 40px;
padding-right: 40px
}
</style>
</style>

19
src/views/projectLib/initiatesProjects/initiatesProjects.api.ts

@ -2,18 +2,23 @@ import { defHttp } from '/@/utils/http/axios';
export enum Api {
saveprojectInfo="",
submitProjectInfo='/huzhouProject/submitProject'
submitProjectInfo='/huzhouProject/submitProject',
getContactorDict='/huzhouUser/getContactorDict',
getWorkPlaceTypeDict='/huzhouUser/getWorkPlaceTypeDict',
getUserInfoByid="/huzhouUser/getUserInfoByid"
}
/**
*
*/
export const submitProjectInfo = (params) => defHttp.post({ url: Api.submitProjectInfo, params })
// /**
// * 部门用户信息
// */
// export const list = (params?) => defHttp.get({ url: Api.list, params });
/**
*
*/
// /**
// * 职务list
// */
// export const positionList = (params?) => defHttp.get({ url: Api.positionList, params });
export const getWorkPlaceTypeDict = (params?) => defHttp.get({ url: Api.getWorkPlaceTypeDict, params });
export const getContactorDict = (params?) => defHttp.get({ url: Api.getContactorDict, params });
export const getUserInfoByid = (params?) => defHttp.get({ url: Api.getUserInfoByid, params });

492
src/views/projectLib/initiatesProjects/initiatesProjects.data.ts

@ -0,0 +1,492 @@
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" })
function projectTypeDict() {
for (let i = 0; i < projectTypeDicts.length; i++) {
projectTypeDicts[i].label = projectTypeDicts[i].text;
}
return projectTypeDicts
}
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: 'projectType',
component: 'Select',
colProps: { span: 12 },
//填写组件Select的属性
componentProps: {
options: projectTypeDict()
},
required: true,
},
{
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: 'constructionPeriod',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'InputNumber',
componentProps: {
//数值精度
precision: 0,
//步数
step: 0.1
},
suffix: "年",
//一列占比总共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
},
suffix: "元",
//一列占比总共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
},
suffix: "元",
//一列占比总共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
},
suffix: "元",
//一列占比总共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
},
suffix: "元",
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
label: '改革所属项目',
//字段
field: 'reformName',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
label: '上级指导室',
//字段
field: 'superLeader',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
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 },
required: true,
},
{
//标题名称
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 },
required: true,
},
{
//标题名称
label: '管理单位负责人',
//字段
field: 'manageContactor',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Select',
componentProps: {
options: [],
}, //一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
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 },
required: true,
},
{
//标题名称
label: '监管单位负责人',
//字段
field: 'supervisorContactor',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Select',
componentProps: {
options: [],
},
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
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 },
required: true,
},
{
//标题名称
label: '承建单位负责人',
//字段
field: 'contructorContactor',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Select',
componentProps: {
options: [],
},
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
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 },
},
];

189
src/views/projectLib/initiatesProjects/role.api.ts

@ -1,189 +0,0 @@
import { defHttp } from '/@/utils/http/axios';
import { Modal } from 'ant-design-vue';
enum Api {
list = '/sys/role/list',
listByTenant = '/sys/role/listByTenant',
save = '/sys/role/add',
edit = '/sys/role/edit',
deleteRole = '/sys/role/delete',
deleteBatch = '/sys/role/deleteBatch',
exportXls = '/sys/role/exportXls',
importExcel = '/sys/role/importExcel',
isRoleExist = '/sys/role/checkRoleCode',
queryTreeListForRole = '/sys/role/queryTreeList',
queryRolePermission = '/sys/permission/queryRolePermission',
saveRolePermission = '/sys/permission/saveRolePermission',
queryDataRule = '/sys/role/datarule',
getParentDesignList = '/act/process/extActDesignFlowData/getDesFormFlows',
getRoleDegisnList = '/joa/designform/designFormCommuse/getRoleDegisnList',
saveRoleDesign = '/joa/designform/designFormCommuse/sysRoleDesignAdd',
userList = '/sys/user/userRoleList',
deleteUserRole = '/sys/user/deleteUserRole',
batchDeleteUserRole = '/sys/user/deleteUserRoleBatch',
addUserRole = '/sys/user/addSysUserRole',
saveRoleIndex = '/sys/sysRoleIndex/add',
editRoleIndex = '/sys/sysRoleIndex/edit',
queryIndexByCode = '/sys/sysRoleIndex/queryByCode',
}
/**
* api
*/
export const getExportUrl = Api.exportXls;
/**
* api
*/
export const getImportUrl = Api.importExcel;
/**
*
* @param params
*/
export const list = (params) => defHttp.get({ url: Api.list, params });
/**
*
* @param params
*/
export const listByTenant = (params) => defHttp.get({ url: Api.listByTenant, params });
/**
*
*/
export const deleteRole = (params, handleSuccess) => {
return defHttp.delete({ url: Api.deleteRole, params }, { joinParamsToUrl: true }).then(() => {
handleSuccess();
});
};
/**
*
* @param params
*/
export const batchDeleteRole = (params, handleSuccess) => {
Modal.confirm({
title: '确认删除',
content: '是否删除选中数据',
okText: '确认',
cancelText: '取消',
onOk: () => {
return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
handleSuccess();
});
},
});
};
/**
*
* @param params
*/
export const saveOrUpdateRole = (params, isUpdate) => {
let url = isUpdate ? Api.edit : Api.save;
return defHttp.post({ url: url, params });
};
/**
*
* @param params
*/
// update-begin--author:liaozhiyang---date:20231215---for:【QQYUN-7415】表单调用接口进行校验的添加防抖
let timer;
export const isRoleExist = (params) => {
return new Promise((resolve, rejected) => {
clearTimeout(timer);
timer = setTimeout(() => {
defHttp
.get({ url: Api.isRoleExist, params }, { isTransformResponse: false })
.then((res) => {
resolve(res);
})
.catch((error) => {
rejected(error);
});
}, 500);
});
};
// update-end--author:liaozhiyang---date:20231215---for:【QQYUN-7415】表单调用接口进行校验的添加防抖
/**
*
*/
export const queryTreeListForRole = () => defHttp.get({ url: Api.queryTreeListForRole });
/**
*
*/
export const queryRolePermission = (params) => defHttp.get({ url: Api.queryRolePermission, params });
/**
*
*/
export const saveRolePermission = (params) => defHttp.post({ url: Api.saveRolePermission, params });
/**
*
*/
export const queryDataRule = (params) =>
defHttp.get({ url: `${Api.queryDataRule}/${params.functionId}/${params.roleId}` }, { isTransformResponse: false });
/**
*
*/
export const saveDataRule = (params) => defHttp.post({ url: Api.queryDataRule, params });
/**
*
* @return List<Map>
*/
export const getParentDesignList = () => defHttp.get({ url: Api.getParentDesignList });
/**
*
* @return List<Map>
*/
export const getRoleDegisnList = (params) => defHttp.get({ url: Api.getRoleDegisnList, params });
/**
*
*/
export const saveRoleDesign = (params) => defHttp.post({ url: Api.saveRoleDesign, params });
/**
*
* @param params
*/
export const userList = (params) => defHttp.get({ url: Api.userList, params });
/**
*
*/
export const deleteUserRole = (params, handleSuccess) => {
return defHttp.delete({ url: Api.deleteUserRole, params }, { joinParamsToUrl: true }).then(() => {
handleSuccess();
});
};
/**
*
* @param params
*/
export const batchDeleteUserRole = (params, handleSuccess) => {
Modal.confirm({
title: '确认删除',
content: '是否删除选中数据',
okText: '确认',
cancelText: '取消',
onOk: () => {
return defHttp.delete({ url: Api.batchDeleteUserRole, params }, { joinParamsToUrl: true }).then(() => {
handleSuccess();
});
},
});
};
/**
*
*/
export const addUserRole = (params, handleSuccess) => {
return defHttp.post({ url: Api.addUserRole, params }).then(() => {
handleSuccess();
});
};
/**
*
* @param params
* @param isUpdate
*/
export const saveOrUpdateRoleIndex = (params, isUpdate) => {
let url = isUpdate ? Api.editRoleIndex : Api.saveRoleIndex;
return defHttp.post({ url: url, params });
};
/**
* code查询首页配置
* @param params
*/
export const queryIndexByCode = (params) => defHttp.get({ url: Api.queryIndexByCode, params }, { isTransformResponse: false });

170
src/views/projectLib/projectInfo/Detailpage.vue

@ -1,81 +1,123 @@
<template>
<!-- 自定义表单 -->
<el-divider content-position="left">项目入库详情</el-divider>
<BasicForm @register="registerProjectForm" />
<el-divider content-position="left">项目审批详情</el-divider>
<BasicTable @register="registerTable"/>
<!-- <el-dialog v-model="dialogTableVisible" title="Shipping address">
<el-table :data="gridData">
<el-table-column property="date" label="Date" width="150" />
<el-table-column property="name" label="Name" width="200" />
<el-table-column property="address" label="Address" />
</el-table>
<!-- 自定义表单 -->
<el-divider content-position="left">项目入库详情</el-divider>
<BasicForm @register="registerProjectForm" />
</el-dialog> -->
<div v-if="projectStatus >= 3">
<el-divider content-position="left">项目资料详情</el-divider>
<BasicTable @register="registerResourceTable">
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
</div>
<el-divider content-position="left">审批详情</el-divider>
<BasicTable @register="registerApproveStartTable" />
</template>
<script lang="ts" name="Detailpage" setup>
import { defineProps,watchEffect} from 'vue'
import { ref, defineProps, onMounted } from 'vue'
import { useForm, BasicForm } from '/@/components/Form';
import { formSchemas,ProcessColumns} from './projectInfo.data';
import{queryProjectInfoById,queryProcessInfo} from './projectInfo.api'
import {BasicTable } from '/@/components/Table';
import { formSchemas, approveStartProcessColumns, resourcetableColumns } from './projectInfo.data';
import { queryProjectInfoById, queryProcessInfo, queryResourceInfo } from './projectInfo.api'
import { ActionItem, BasicTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { downloadFile } from "../../../api/common/api"
let dataTo = defineProps(["projectid"])
let projectStatus = ref()
let proid = defineProps(["dataTo"])
watchEffect(async ()=>{
console.log("dataTo",proid.dataTo)
let param:any = {
projectid:proid.dataTo
onMounted(async () => {
console.log("projectid", dataTo.projectid)
let param: any = {
projectid: dataTo.projectid
}
let res =await queryProjectInfoById(param)
console.log("结果是",res)
setFieldsValue(res)
reload()
let resProject = await queryProjectInfoById(param)
setFieldsValue(resProject)
projectStatus.value = resProject.status
console.log("projectid", dataTo.projectid, projectStatus.value)
})
function getTableAction(record): ActionItem[] {
return [
{
label: '下载',
ifShow: true,
onClick: handleDetailpage.bind(null, record),
}
];
}
/**
* 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
});
/**
* 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
});
//table
const { tableContext: approveStarttableContext } = useListPage({
tableProps: {
size: 'small',//
title: '审批详情',
api: queryProcessInfo,
columns: approveStartProcessColumns,
showActionColumn: false,
useSearchForm: false,
beforeFetch(params) {
params.status = projectStatus.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.status = "2",
params.projectid = dataTo.projectid
},
},
});
const [registerResourceTable] = tableContext;
const { tableContext } = useListPage({
tableProps: {
size:'small',//
title: '流程审批情况',
api:queryProcessInfo,
columns: ProcessColumns,
showActionColumn:false,
useSearchForm:false,
beforeFetch(params) {
params.status = "1",
params.projectid=proid.dataTo
},
},
});
// BasicTable
const [registerTable,{reload}] = tableContext;
function handleDetailpage(record) {
console.log("我这一行的数据是", record)
let param = {
path: record.documentPath,
fileName: record.documentName
}
//
console.log("我这一行的数据是", param)
downloadFile("/huzhouProject/downloadfile", record.documentName, param)
}
</script>
<style></style>

121
src/views/projectLib/projectInfo/index.vue

@ -3,25 +3,26 @@
<!--引用表格-->
<BasicTable @register="registerTable">
<!--插槽:table标题-->
<!--操作栏-->
<template #action="{ record }">
<!-- <TableAction :actions="getTableAction(record)" /> -->
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
</template>
<!--操作栏-->
<template #action="{ record }">
<!-- <TableAction :actions="getTableAction(record)" /> -->
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
</template>
</BasicTable>
</div>
<BasicModal @register="registeProjectrModal" title="项目信息详情" width="1200px" :showOkBtn="false">
<Detailpage :dataTo="proid"/>
</BasicModal>
<BasicModal @register="registerModalUploadFiles" title="申报项目资料" width="1200px" :showOkBtn="false" :showCancelBtn="false">
<Detailpage :dataTo="proid" :taskid="taskid" @close="closeUploadFiles()"/>
</BasicModal>
</div>
<BasicModal @register="registeProjectrModal" title="项目信息详情" width="1200px" :showOkBtn="false">
<Detailpage :projectid="proid" />
</BasicModal>
<BasicModal @register="registerModalUploadFiles" title="申报项目资料" width="1200px" :showOkBtn="false"
:showCancelBtn="false">
<uploadFile :projectid="proid" @close="closeUploadFilesModal()" />
</BasicModal>
</template>
<script lang="ts" name="system-user" setup>
//ts
import { ref} from 'vue';
import { ActionItem,BasicTable,TableAction } from '/@/components/Table';
import { ref } from 'vue';
import { ActionItem, BasicTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { useModal } from '/@/components/Modal';
@ -29,16 +30,17 @@ import { BasicModal } from '/@/components/Modal';
import { columns, searchFormSchema } from './projectInfo.data';
// import { list } from './address.api';
import Detailpage from './Detailpage.vue';
import {projectInfoPageList} from './projectInfo.api';
// const projectInfoPageList1 = function (params){
// console.log(params)
// defHttp.get({ url: Api.projectInfoPageList, params })
// }
import Detailpage from './Detailpage.vue';
import uploadFile from './uploadFile.vue';
import { projectInfoPageList } from './projectInfo.api';
import { useUserStore } from '/@/store/modules/user';
import { useRouter, useRoute } from 'vue-router'
const router = useRouter();
const userStore = useUserStore();
let proid = ref();
const [registeProjectrModal, { openModal:openModalProjectr }] = useModal();
const [registerModalUploadFiles, { openModal:openUploadFiles, closeModal:closeUploadFiles}] = useModal();//
const [registeProjectrModal, { openModal: openModalProjectr }] = useModal();
const [registerModalUploadFiles, { openModal: openUploadFiles, closeModal: closeUploadFiles }] = useModal();//
const { tableContext } = useListPage({
designScope: 'basic-table-demo-ajax',
@ -57,44 +59,51 @@ const { tableContext } = useListPage({
},
});
//BasicTable
const [registerTable] = tableContext;
const [registerTable, { reload }] = tableContext;
function getTableAction(record): ActionItem[] {
record.typeid=1
return [
{
label: '详情',
onClick: handleEdit.bind(null, record),
},
];
}
/**
* 下拉操作栏
*/
function getDropDownAction(record): ActionItem[] {
record.typeid=2
return [
{
label: '发起计划流程',
ifShow:true,
onClick: handleEdit.bind(null, record),
return [
{
label: '详情',
onClick: handleDetailpage.bind(null, record),
},
];
}
/**
* 下拉操作栏
*/
function getDropDownAction(record): ActionItem[] {
return [
{
label: '上传项目资料',
ifShow: () => {
return record.status == 2 && record.creator==userStore.getUserInfo.id
},
];
}
onClick: handleuploadFile.bind(null, record)
},
function handleEdit(record) {
proid.value=record.id
if(record.typeid==1){
openModalProjectr()
}
if(record.typeid==2){
openUploadFiles()
}
];
}
function handleDetailpage(record) {
proid.value = record.id
openModalProjectr()
// console.log(selectedRows.value);
// console.log(selectedRowKeys.value);
}
function handleuploadFile(record) {
proid.value = record.id
openUploadFiles()
// console.log(selectedRows.value);
// console.log(selectedRowKeys.value);
}
// console.log(selectedRows.value);
// console.log(selectedRowKeys.value);
}
function closeUploadFilesModal() {
closeUploadFiles()
reload()
}
</script>
<style scoped></style>

11
src/views/projectLib/projectInfo/projectInfo.api.ts

@ -1,10 +1,14 @@
import { update } from 'lodash-es';
import { defHttp } from '/@/utils/http/axios';
export enum Api {
list = '/sys/user/queryByOrgCodeForAddressList',
queryProcessInfo = '/workflow/getprocessInfo',
queryProjectInfoById = '/huzhouProject/queryProjectInfoById',
projectInfoPageList="/huzhouProject/projectInfoPageList"
queryprocessinfoById="/huzhouProject/queryprocessinfoById",
projectInfoPageList="/huzhouProject/projectInfoPageList",
uploadFileUrl = '/huzhouProject/uploadFile',
queryResourceInfo = '/huzhouProject/queryResourceInfo'
}
/**
*
@ -18,3 +22,8 @@ export const projectInfoPageList = (params?) => defHttp.get({ url: Api.projectIn
* list
*/
export const queryProcessInfo = (params?) => defHttp.get({ url: Api.queryProcessInfo, params });
export const uploadFile = (params?) =>defHttp.post({ url: Api.uploadFileUrl,headers:{ "Content-Type": "multipart/form-data" }, params })
export const queryResourceInfo =(params?) => defHttp.get({ url: Api.queryResourceInfo, params });
export const queryprocessinfoById = (params?) => defHttp.get({ url: Api.queryprocessinfoById, params });

321
src/views/projectLib/projectInfo/projectInfo.data.ts

@ -2,16 +2,26 @@ import { FormSchema } from '/@/components/Form';
import { BasicColumn } from '/@/components/Table';
import { getDictItemsByCode } from '/@/utils/dict/index';
import { UploadTypeEnum } from '/@/components/Form/src/jeecg/components/JUpload';
import { size } from 'lodash-es';
import { el } from 'element-plus/es/locale';
const projectTypeDicts:Array<Object> = getDictItemsByCode("projectType")
const approvalRsesults:Array<Object> = getDictItemsByCode("approvalResult")
import { getWorkPlaceTypeDict, getContactorDict,getUserInfoByid } from '../initiatesProjects/initiatesProjects.api'
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" })
function projectTypeDict(){
for(let i = 0;i<projectTypeDicts.length;i++){
projectTypeDicts[i].label=projectTypeDicts[i].text;
}
return projectTypeDicts
}
// function approvalRsesult(){
// for(let i = 0;i<approvalRsesults.length;i++){
// approvalRsesults[i].label=approvalRsesults[i].text;
@ -40,16 +50,6 @@ export const columns: BasicColumn[] = [
dataIndex: 'dutyWorkplace',
width: 100,
},
{
title: '发起单位',
dataIndex: 'workplace',
width: 100,
},
{
title: '发起单位类型',
dataIndex: 'workplaceTpye',
width: 200,
},
{
title: '联系电话',
width: 150,
@ -76,8 +76,9 @@ export const uploadFileformSchemas: FormSchema[] = [
{
field: 'uploadFile',
component: 'JUpload',
helpMessage: '无限制上传',
helpMessage: '最多上传3个文件',
label: '上传文件',
componentProps: { maxCount: 3 },
},
{
field: 'uploadImage',
@ -89,15 +90,24 @@ export const uploadFileformSchemas: FormSchema[] = [
},
},
]
export const formSchemas: FormSchema[] = [
{
//标题名称
label: '项目id',
//字段
field: 'id',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//标题宽度,支持数字和字符串
// labelWidth: 150,
// //标题长度,超过位数隐藏
// labelLength: 3,
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
ifShow:false
},
{
//标题名称
label: '项目名称',
@ -111,6 +121,7 @@ export const formSchemas: FormSchema[] = [
// labelLength: 3,
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
label: '项目类型',
@ -124,6 +135,7 @@ export const formSchemas: FormSchema[] = [
},
//默认值
defaultValue: 1,
required: true,
},
{
@ -133,6 +145,7 @@ export const formSchemas: FormSchema[] = [
component: 'InputTextArea',
//一列占比总共24,比如一行显示2列
colProps: { span: 24 },
required: true,
},
{
//标题名称
@ -144,6 +157,7 @@ export const formSchemas: FormSchema[] = [
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
@ -155,6 +169,7 @@ export const formSchemas: FormSchema[] = [
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
@ -166,6 +181,7 @@ export const formSchemas: FormSchema[] = [
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
@ -177,6 +193,7 @@ export const formSchemas: FormSchema[] = [
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
@ -188,6 +205,7 @@ export const formSchemas: FormSchema[] = [
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
@ -199,6 +217,7 @@ export const formSchemas: FormSchema[] = [
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
@ -211,6 +230,7 @@ export const formSchemas: FormSchema[] = [
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
@ -222,6 +242,7 @@ export const formSchemas: FormSchema[] = [
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
@ -233,6 +254,7 @@ export const formSchemas: FormSchema[] = [
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
@ -244,92 +266,283 @@ export const formSchemas: FormSchema[] = [
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
label: '管理单位',
label: '管理单位',
//字段
field: 'manageOrg',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
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 },
required: true,
},
{
//标题名称
label: '管理单位负责人',
label: '管理单位负责人',
//字段
field: 'manageContactor',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
component: 'Select',
componentProps:(({formModel})=>{
console.log("formModel.manageContactor",formModel,formModel.manageContactor)
return {
options:[]
}
}),
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
label: '监管单位',
label: '监管单位',
//字段
field: 'controler',
field: 'supervisor',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
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 },
required: true,
},
{
//标题名称
label: '监管单位负责人',
//字段
field: 'supervisorContactor',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Select',
componentProps: {
options: [],
},
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
label: '监管单位负责人',
label: '承建单位',
//字段
field: 'controlerContactor',
field: 'contructor',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
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 },
required: true,
},
{
//标题名称
label: '承建单位负责人',
//字段
field: 'contructorContactor',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Select',
componentProps: {
options: [],
},
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
label: '建设单位',
label: '建设单位',
//字段
field: 'owner',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
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: '建设单位负责人',
label: '建设单位负责人',
//字段
field: 'ownerContactor',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
component: 'Select',
componentProps: {
options: [],
},
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
required: true,
},
{
//标题名称
label: '承建单位',
label: '监理单位',
//字段
field: 'contructor',
field: 'controler',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
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: '承建单位负责人',
label: '咨询单位',
//字段
field: 'contructorContactor',
field: 'consult',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
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 },
},
@ -343,10 +556,11 @@ export const formSchemas: FormSchema[] = [
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
ifShow:false
}
];
export const ProcessColumns: BasicColumn[] = [
export const approveStartProcessColumns: BasicColumn[] = [
{
title: '节点名称',
@ -380,3 +594,28 @@ export const ProcessColumns: BasicColumn[] = [
width: 100,
}
];
export const resourcetableColumns:BasicColumn[]=[
{
title: '文件名称',
dataIndex: 'documentName',
},
{
title: '文件大小',
dataIndex: 'size',
width: 100,
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"
}
},
},
{
title: '上传时间',
dataIndex: 'createtime',
}
]

168
src/views/projectLib/projectInfo/uploadFile.vue

@ -3,37 +3,80 @@
<el-divider content-position="left">项目入库详情</el-divider>
<BasicForm @register="registerProjectForm" />
<el-divider content-position="left">上传项目资料</el-divider>
<BasicForm @register="registerFormUploadFile" />
<!-- <el-dialog v-model="dialogTableVisible" title="Shipping address">
<el-table :data="gridData">
<el-table-column property="date" label="Date" width="150" />
<el-table-column property="name" label="Name" width="200" />
<el-table-column property="address" label="Address" />
</el-table>
<el-form ref="importFormRef" label-width="130px">
<!-- <el-form-item label="病种kgCode:" prop="kgCode" >
<el-input v-model="importForm.kgCode" ></el-input>
</el-form-item>
<el-form-item label="目标数据库URL:" prop="targetUrl" >
<el-input v-model="importForm.targetUrl"></el-input>
</el-form-item>
<el-form-item label="目标数据库账号:" prop="targetUsername" >
<el-input v-model="importForm.targetUsername"></el-input>
</el-form-item>
<el-form-item label="目标数据库密码: " prop="targetPassword" >
<el-input v-model="importForm.targetPassword"></el-input>
</el-form-item> -->
<el-form-item label="上传文件:" >
<el-upload
class="upload-demo"
ref="upload"
action
:http-request="httpRequest"
:before-upload="beforeUpload"
:on-exceed="handleExceed"
:limit="5">
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<div slot="tip" class="el-upload__tip">文件大小且不超过5M</div>
</el-upload>
</el-form-item>
<!-- <el-form-item label="上传word文件:" prop="excel">
<el-upload
class="upload-demo"
ref="upload"
action
:http-request="httpRequest"
:before-upload="beforeUpload"
:on-exceed="handleExceed"
:limit="1">
<el-button slot="trigger" size="small" type="primary">选取excel文件</el-button>
<div slot="tip" class="el-upload__tip">只能上传.xlsx文件且不超过5M</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>
</el-dialog> -->
</template>
<script lang="ts" name="uploadFile" setup>
import { defineProps,watchEffect} from 'vue'
import { ref,reactive,defineProps,watchEffect} from 'vue'
import { useForm, BasicForm } from '/@/components/Form';
import { formSchemas,uploadFileformSchemas} from './projectInfo.data';
import{queryProjectInfoById,queryProcessInfo} from './projectInfo.api';
import{queryProjectInfoById,uploadFile} from './projectInfo.api';
import { ElMessage } from 'element-plus'
import { defHttp } from '/@/utils/http/axios';
import { string } from 'vue-types';
let proid = defineProps(["dataTo"])
let fileList=reactive<Array<any>>([]);
let dataTo = defineProps(["projectid"])
const emit = defineEmits(['close']);
let projecyStatus =ref()
//
watchEffect(async ()=>{
console.log("dataTo",proid.dataTo)
console.log("dataTo",dataTo,dataTo.projectid)
let param:any = {
projectid:proid.dataTo
projectid:dataTo.projectid
}
let res =await queryProjectInfoById(param)
console.log("结果是",res)
setProjectFieldsValue(res)
projecyStatus.value=res.status
})
//
const [registerProjectForm,{setFieldsValue:setProjectFieldsValue}] = useForm({
const [registerProjectForm,{setFieldsValue:setProjectFieldsValue,getFieldsValue}] = useForm({
//
schemas: formSchemas,
showActionButtonGroup: false,
@ -50,23 +93,86 @@ watchEffect(async ()=>{
disabled:true
});
const [registerFormUploadFile] = useForm({
//
schemas: uploadFileformSchemas,
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 [registerFormUploadFile] = useForm({
// //
// schemas: uploadFileformSchemas,
// // showActionButtonGroup: false,
// resetButtonOptions: { text: '', preIcon: '' },
// // showActionButtonGroup: false,
// //
// // autoSubmitOnEnter: true,
// // //
// // showResetButton: false,
// //
// submitButtonOptions: { text: '', preIcon: '' },
// // 24 0-24
// actionColOptions: { span: 14 },
// labelCol: { style: { width: '120px' } },
// wrapperCol:{ style: { width: 'auto' } },
// });
// function handleSubmit(){
// }
// fileList,
function httpRequest(option) {
fileList.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
}
//xlsx
// let fileName = file.name
// let reg = /^.+(\.xlsx)$/
// if(!reg.test(fileName)){
// ElMessage.error("xlsx!")
// return false
// }
return true
}
//
function handleExceed() {
ElMessage.warning("最多只能上传五个文件")
}
//Excel
async function submitImportForm() {
let data = await getFieldsValue()
console.log("datadatadatadatadatadata",data)
if(data.status!=2){
ElMessage({
message: "当前阶段无法上传文件",
type: "error"
})
return
}
// 使form
const params = new FormData()
// paramsData
fileList.forEach((x) => {
console.log("xxxxxxxxxx",x,x.file)
params.append('file', x.file)
});
params.append("projectid",dataTo.projectid)
params.append("status","2")//
//axios
uploadFile(params).then(res=> {
console.log("导入结果",res)
if (res.indexOf) {
ElMessage({
message: "导入成功",
type: "success"
})
emit("close")
}
})
}
function dialogVisible(){
emit("close")
}
</script>
<style></style>

132
src/views/projectLib/projectPlan/addPlan.vue

@ -0,0 +1,132 @@
<template>
<BasicTable @register="registerTable">
<!-- <template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:plus-outlined" @click="handleCreate"> 新增计划</a-button>
</template> -->
</BasicTable>
<div style="display: flex; justify-content: center; align-items: center; height: 100px;">
<el-button type="primary" @click="onSubmit">修改</el-button>
<el-button @click="handlecancle">取消</el-button>
<!-- <el-button>取消</el-button> -->
</div>
</template>
<script lang="ts" name="addPlan" setup>
import { ref, defineProps, onMounted } from 'vue'
import { planDetailColumns } from './projectPlan.data'
import { queryPlanModuleDetailPage, queryPlanModuleone,saveProjectPlan} from './projectPlan.api'
import { ActionItem, BasicTable } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { downloadFile } from "../../../api/common/api"
import { ElMessage, dayjs } from 'element-plus'
let dataTo = defineProps(["projectType", "projectId"])
let emit = defineEmits(["close"])
let projectType = ref<string>()
let projectId = ref<string>()
let moduleId = ref()
onMounted(async () => {
setShowPagination(false)//
projectType.value = dataTo.projectType
projectId.value = dataTo.projectId
console.log("projectType", projectType)
let res = await queryPlanModuleone({ projectType: projectType.value })
moduleId.value = res.id
reload()//
// if (dataTo.projectType) {
// } else {
// let tableData = await getDataSource();
// }
})
function getTableAction(record): ActionItem[] {
return [
{
label: '删除',
ifShow: true,
onClick: handleRemoveDetail.bind(null, record),
}
];
}
//table
const { tableContext } = useListPage({
tableProps: {
size: 'small',//
title: '项目计划模板详情',
api: queryPlanModuleDetailPage,
columns: planDetailColumns,
useSearchForm: false,
showActionColumn: false,
actionColumn: {
width: 120,
fixed: "right",
},
beforeFetch(params) {
params.moduleId = moduleId.value
},
},
});
const [registerTable, { getDataSource, setTableData, setShowPagination,reload }] = tableContext;
function handleDetailpage(record) {
console.log("我这一行的数据是", record)
let param = {
path: record.documentPath,
fileName: record.documentName
}
//
console.log("我这一行的数据是", param)
downloadFile("/huzhouProject/downloadfile", record.documentName, param)
}
async function handleCreate() {
//await setShowPagination(false);
let tableData = await getDataSource();
tableData.push({ taskName: "aaa" })
setTableData(tableData)
}
// function onEditChange({ column, value, record }) {
// //
// if (column.dataIndex === 'scheduledEndTime') {
// record.editValueRefs.name4.value = `${value}`;
// }
// console.log(column, value, record);
// }
function handlecancle() {
emit("close")
}
async function onSubmit() {
let tableData = await getDataSource();
for (let i = 0; i < tableData.length; i++) {
//
if (tableData[i].scheduledStartTime && tableData[i].scheduledEndTime) {
tableData[i].projectId = projectId
} else {
ElMessage({
message: "请填写第" + (i + 1) + "行的数据",
type: "error"
})
return;
}
}
await saveProjectPlan(tableData)
emit("close")
}
async function handleRemoveDetail(record) {
let tableData = await getDataSource();
}
</script>
<style></style>

116
src/views/projectLib/projectPlan/index.vue

@ -0,0 +1,116 @@
<template>
<div>
<!--引用表格-->
<BasicTable @register="registerTable">
<!--插槽:table标题-->
<!--操作栏-->
<template #action="{ record }">
<!-- <TableAction :actions="getTableAction(record)" /> -->
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
</template>
</BasicTable>
</div>
<BasicModal @register="registeViewPlanDetail" title="项目信息详情" width="1200px" :showOkBtn="false">
<viewPlanDetail :projectId="projectId"/>
</BasicModal>
<BasicModal @register="registerProjectPlan" title="发起项目计划审批" width="1200px" :showOkBtn="false" :showCancelBtn="false">
<addPlan :projectType="projectType" :projectId="projectId" @close="closeProjectPlanModal()" />
</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 { useModal } from '/@/components/Modal';
import { BasicModal } from '/@/components/Modal';
import addPlan from './addPlan.vue'
import viewPlanDetail from "./viewPlanDetail.vue";
import { columns, searchFormSchema } from '../projectInfo/projectInfo.data';
import { queryProjectApprovedPage } from './projectPlan.api';
let projectId = ref();
let projectType = ref();
const [registeViewPlanDetail, { openModal:openViewPlanDetail }] = useModal();//
const [registerProjectPlan, { openModal: openProjectPlan, closeModal: closeProjectPlan }] = useModal();//
const { tableContext } = useListPage({
designScope: 'basic-table-demo-ajax',
tableProps: {
title: '项目信息',
api: queryProjectApprovedPage,
columns: columns,
actionColumn: {
width: 120,
fixed: "right",
},
//
formConfig: {
schemas: searchFormSchema,
}
},
});
//BasicTable
const [registerTable, { reload }] = tableContext;
function getTableAction(record): ActionItem[] {
return [
{
label: '详情',
onClick: handleDetailpage.bind(null, record),
},
];
}
/**
* 下拉操作栏
*/
function getDropDownAction(record): ActionItem[] {
return [
{
label: '设计项目计划',
ifShow: () => {
return record.status == 4
},
onClick: handlePlan.bind(null, record)
},
{
label: '查看项目计划',
ifShow: () => {
return record.status == 5
},
onClick: handleViewPlan.bind(null, record)
},
];
}
function handleDetailpage(record) {
projectId.value = record.id
openViewPlanDetail()
// console.log(selectedRows.value);
// console.log(selectedRowKeys.value);
}
function handlePlan(record) {
projectType.value = record.projectType
projectId.value = record.id
openProjectPlan()
// console.log(selectedRows.value);
// console.log(selectedRowKeys.value);
}
function handleViewPlan(record) {
projectId.value = record.id
projectType.value =undefined
openViewPlanDetail()
}
function closeProjectPlanModal() {
closeProjectPlan()
reload()
}
</script>
<style scoped></style>

20
src/views/projectLib/projectPlan/projectPlan.api.ts

@ -0,0 +1,20 @@
import { defHttp } from '/@/utils/http/axios';
export enum Api {
saveprojectInfo = "",
queryProjectApprovedPage = '/huzhouProject/queryProjectApprovedPage',
queryPlanModuleDetailPage = "/huzhouPlan/queryPlanModuleDetailPage",
queryPlanModuleone = '/huzhouPlan/queryPlanModuleone',
saveProjectPlan = '/huzhouPlan/saveProjectPlan',
queryProjectPlan="/huzhouPlan/queryProjectPlan"
}
/**
*
*/
export const queryProjectApprovedPage = (params) => defHttp.get({ url: Api.queryProjectApprovedPage, params })
export const queryPlanModuleDetailPage = (params) => defHttp.get({ url: Api.queryPlanModuleDetailPage, params })
export const queryPlanModuleone = (params) => defHttp.get({ url: Api.queryPlanModuleone, params })
export const saveProjectPlan = (params) => defHttp.post({ url: Api.saveProjectPlan, params })
export const queryProjectPlan = (params) => defHttp.get({ url: Api.queryProjectPlan, params })

279
src/views/projectLib/projectPlan/projectPlan.data.ts

@ -0,0 +1,279 @@
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";
const userStore = useUserStore();
const projectTypeDicts: Array<Object> = getDictItemsByCode("projectType")
function projectTypeDict() {
for (let i = 0; i < projectTypeDicts.length; i++) {
projectTypeDicts[i].label = projectTypeDicts[i].text;
}
return projectTypeDicts
}
const approvalRsesults: Array<Object> = getDictItemsByCode("approvalResult")
function approvalRsesult() {
for (let i = 0; i < approvalRsesults.length; i++) {
approvalRsesults[i].label = approvalRsesults[i].text;
}
return approvalRsesults
}
export const hommPageColumns: BasicColumn[] = [
{
title: '模板ID',
width: 150,
dataIndex: 'id',
},
{
title: '项目类型',
dataIndex: 'projectType',
width: 150,
customRender: ({ record }) => {
for (let i = 0; i < projectTypeDicts.length; i++) {
if (record.projectType == projectTypeDicts[i].value) {
return projectTypeDicts[i].text
}
}
},
},
{
title: '模板名称',
dataIndex: 'moduleName',
width: 150,
},
{
title: '创建时间',
dataIndex: 'createtime',
width: 100,
},
];
export const planDetailColumns: BasicColumn[] = [
{
title: '模板id',
width: 150,
dataIndex: 'moduleId',
},
{
title: '计划名称',
dataIndex: 'taskName',
width: 150,
},
{
title: '计划序号',
dataIndex: 'orderNumber',
width: 150,
},
{
title: '最大天数',
dataIndex: 'maxDays',
width: 100,
},
{
title: '计划开始时间',
dataIndex: 'scheduledStartTime',
width: 150,
edit: true,
editRule: async (text, record) => {
if (text > record.scheduledEndTime) {
return '开始时间必须小于结束时间';
}
if (!text) {
return '请选择日期';
}
if (record.maxDays && text && record.scheduledEndTime) {
let days = dayjs(record.scheduledEndTime).diff(text, "day")
console.log("我这一行的数据是daysdaysdays", days)
if ( days > record.maxDays) {
return '计划时常超过预定期限';
}
}
return '';
},
editComponent: 'DatePicker',
editComponentProps: {
//日期格式化,页面上显示的值
format: 'YYYY-MM-DD',
//返回值格式化(绑定值的格式)
valueFormat: 'YYYY-MM-DD',
//是否显示今天按钮
showToday: true,
//不可选择日期
disabledDate: (currentDate) => {
let date = dayjs(currentDate).format('YYYY-MM-DD');
let nowDate = dayjs(new Date()).format('YYYY-MM-DD');
//当天不可选择
if (date < nowDate) {
return true;
}
return false;
}
}
},
{
title: '计划结束时间',
dataIndex: 'scheduledEndTime',
width: 150,
edit: true,
editRule: async (text, record) => {
if (text < record.scheduledStartTime) {
return '结束时间必须大于开始时间';
}
if (!text) {
return '请选择日期';
}
if (record.maxDays && text && record.scheduledStartTime) {
let days = dayjs(text).diff(record.scheduledStartTime, "day")
if (days > record.maxDays) {
return '计划时常超过预定期限';
}
}
return '';
},
editComponent: 'DatePicker',
editComponentProps: {
//日期格式化,页面上显示的值
format: 'YYYY-MM-DD',
//返回值格式化(绑定值的格式)
valueFormat: 'YYYY-MM-DD',
//是否显示今天按钮
showToday: true,
//不可选择日期
disabledDate: (currentDate) => {
let date = dayjs(currentDate).format('YYYY-MM-DD');
let nowDate = dayjs(new Date()).format('YYYY-MM-DD');
//当天不可选择
if (date < nowDate) {
return true;
}
return false;
}
}
},
];
export const viewPlanDetailColumns: BasicColumn[] = [
{
title: '计划名称',
dataIndex: 'taskName',
width: 150,
},
{
title: '计划序号',
dataIndex: 'orderNumber',
width: 150,
},
{
title: '最大天数',
dataIndex: 'maxDays',
width: 100,
},
{
title: '计划开始时间',
dataIndex: 'scheduledStartTime',
width: 150,
},
{
title: '计划结束时间',
dataIndex: 'scheduledEndTime',
width: 150,
},
];
export const searchFormSchema: FormSchema[] = [
{
label: '项目类型',
field: 'projectType',
component: 'Select',
componentProps: {
options: projectTypeDict()
},
//colProps: { span: 6 },
},
{
label: '模板名称',
field: 'moduleName',
component: 'Input',
//colProps: { span: 6 },
},
];
export const planFormSchemas: FormSchema[] = [
// {
// label: '项目类型',
// field: 'user',
// component: 'Select',
// required: true,
// dynamicDisabled: true,
// componentProps: {
// options: [
// { value: userStore.getUserInfo.id, label: userStore.getUserInfo.username }
// ],
// },
// defaultValue: userStore.getUserInfo.id,
// colProps: { span: 12 },
// },
{
label: '模板id',
field: 'id',
component: 'Input',
dynamicDisabled: true,
colProps: { span: 12 },
},
{
label: '项目类型',
field: 'projectType',
component: 'Select',
required: true,
componentProps: {
options: projectTypeDict()
},
colProps: { span: 12 },
},
{
label: '模板名称',
field: 'moduleName',
component: 'Input',
required: true,
colProps: { span: 12 },
},
];
export const ProcessColumns: BasicColumn[] = [
{
title: '节点名称',
dataIndex: 'taskName',
},
{
title: '处理人',
dataIndex: 'operator',
width: 150,
},
{
title: '处理时间',
dataIndex: 'operateDate',
width: 150,
},
{
title: '审批状态',
dataIndex: 'approvalStatue',
width: 100,
},
{
title: '审批意见',
dataIndex: 'workplace',
width: 100,
}
];

75
src/views/projectLib/projectPlan/viewPlanDetail.vue

@ -0,0 +1,75 @@
<template>
<!-- 自定义表单 -->
<el-divider content-position="left">项目计划详情</el-divider>
<BasicTable @register="registerPlanDetail" />
<el-divider content-position="left">项目计划审批详情</el-divider>
<BasicTable @register="registerApproveTable" />
</template>
<script lang="ts" name="viewPlanDetail" setup>
import { ref, defineProps, onMounted } from 'vue'
import { viewPlanDetailColumns } from './projectPlan.data';
import {queryProjectPlan } from './projectPlan.api'
import { approveStartProcessColumns } from '../projectInfo/projectInfo.data';
import {queryProcessInfo } from '../projectInfo/projectInfo.api'
import { ActionItem, BasicTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { downloadFile } from "../../../api/common/api"
let dataTo = defineProps(["projectId"])
let projectId = ref()
onMounted(async () => {
projectId.value=dataTo.projectId
console.log("projectid", dataTo.projectId)
})
//table
const { tableContext: approveTableContext } = useListPage({
tableProps: {
size: 'small',//
title: '项目计划审批详情',
api: queryProcessInfo,
columns: approveStartProcessColumns,
showActionColumn: false,
useSearchForm: false,
beforeFetch(params) {
params.status = "3",
params.projectid = projectId.value;
},
},
});
// BasicTable
const [registerApproveTable] = approveTableContext;
//table
const { tableContext } = useListPage({
tableProps: {
size: 'small',//
title: '项目计划详情',
api: queryProjectPlan,
columns: viewPlanDetailColumns,
useSearchForm: false,
showActionColumn: false,
beforeFetch(params) {
params.projectid = projectId.value
},
},
});
const [registerPlanDetail] = tableContext;
function handleDetailpage(record) {
console.log("我这一行的数据是", record)
let param = {
path: record.documentPath,
fileName: record.documentName
}
//
console.log("我这一行的数据是", param)
downloadFile("/huzhouProject/downloadfile", record.documentName, param)
}
</script>
<style></style>

121
src/views/projectLib/projectPlanModule/addModuleDetailPage.vue

@ -0,0 +1,121 @@
<template>
<BasicTable @register="registerTable" @edit-change="onEditChange">
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:plus-outlined" @click="handleCreate"> 新增计划</a-button>
</template>
</BasicTable>
<div style="display: flex; justify-content: center; align-items: center; height: 100px;">
<el-button type="primary" @click="onSubmit">修改</el-button>
<el-button @click="handlecancle">取消</el-button>
<!-- <el-button>取消</el-button> -->
</div>
</template>
<script lang="ts" name="addPage" setup>
import { ref, defineProps, onMounted } from 'vue'
import { moduleDetailColumns } from './projectPlanModule.data';
import { queryPlanModuleDetailPage, savePlanModuleDatail } from './projectPlanModule.api'
import { ActionItem, BasicTable, TableAction, EditRecordRow } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { downloadFile } from "../../../api/common/api"
let dataTo = defineProps(["moduleId"])
let emit = defineEmits(["close"])
onMounted(async () => {
setShowPagination(false)//
console.log("moduleId.value=record.moduleId", dataTo.moduleId)
if (dataTo.moduleId) {
let param: any = {
projectid: dataTo.moduleId
}
// let res = await queryProjectInfoById(param)
//
} else {
let tableData = await getDataSource();
}
console.log("dataTo.moduleId", dataTo.moduleId)
})
function getTableAction(record): ActionItem[] {
return [
{
label: '删除',
ifShow: true,
onClick: handleRemoveDetail.bind(null, record),
}
];
}
//table
const { tableContext } = useListPage({
tableProps: {
size: 'small',//
title: '项目计划模板详情',
api: queryPlanModuleDetailPage,
columns: moduleDetailColumns,
useSearchForm: false,
showTableSetting: true,
actionColumn: {
width: 120,
fixed: "right",
},
beforeFetch(params) {
params.moduleId = dataTo.moduleId
},
},
});
const [registerTable, { getDataSource, setTableData, setShowPagination }] = tableContext;
function handleDetailpage(record) {
console.log("我这一行的数据是", record)
let param = {
path: record.documentPath,
fileName: record.documentName
}
//
console.log("我这一行的数据是", param)
downloadFile("/huzhouProject/downloadfile", record.documentName, param)
}
async function handleCreate() {
//await setShowPagination(false);
let tableData = await getDataSource();
tableData.push({ taskName: "aaa" })
setTableData(tableData)
}
function onEditChange({ column, value, record }) {
//
if (column.dataIndex === 'id') {
record.editValueRefs.name4.value = `${value}`;
}
console.log(column, value, record);
}
function handlecancle() {
emit("close")
}
async function onSubmit() {
let tableData = await getDataSource();
console.log("dddddddddddd", tableData)
let param = {
moduleId: dataTo.moduleId,
tableData: tableData,
}
tableData.forEach(item => {
item.moduleId = dataTo.moduleId
})
await savePlanModuleDatail(tableData)
emit("close")
}
async function handleRemoveDetail(record){
let tableData = await getDataSource();
}
</script>
<style></style>

83
src/views/projectLib/projectPlanModule/addModulePage.vue

@ -0,0 +1,83 @@
<template>
<!-- 自定义表单 -->
<BasicForm @register="registerForm" @submit="handleSubmit" />
</template>
<script lang="ts" name="addModulePage" setup>
import { ref, defineProps, onMounted, defineEmits } from 'vue'
import { useForm, BasicForm } from '/@/components/Form';
import { planModuleFormSchemas } from './projectPlanModule.data';
import { savePlanModule, queryPlanModuleone, modifyPlanModule } from './projectPlanModule.api'
import { downloadFile } from "../../../api/common/api"
let dataTo = defineProps(["moduleId", "projectType"])
let emit = defineEmits(["close"])
onMounted(async () => {
let param = {
id: dataTo.moduleId,
projectType: dataTo.projectType
}
let res = await queryPlanModuleone(param)
setFieldsValue(res)
})
/**
* BasicForm绑定注册;
* useForm 是整个框架的核心用于表单渲染里边封装了很多公共方法;
* 支持schemas: 渲染表单列autoSubmitOnEnter回车提交,submitButtonOptions自定义按钮文本和图标等方法
* 平台通过此封装简化了代码支持自定义扩展;
*/
const [registerForm, { validate, setFieldsValue, getFieldsValue }] = useForm({
//
schemas: planModuleFormSchemas,
//
// autoSubmitOnEnter: true,
// //
// showResetButton: false,
//
resetButtonOptions: { text: '取消', preIcon: '' },
submitButtonOptions: { text: '提交', preIcon: '' },
// 24 0-24
resetFunc: customResetFunc,
actionColOptions: { span: 14 },
labelCol: { style: { width: '120px' } },
wrapperCol: { style: { width: 'auto' } },
});
//table
function handleDetailpage(record) {
console.log("我这一行的数据是", record)
let param = {
path: record.documentPath,
fileName: record.documentName
}
//
console.log("我这一行的数据是", param)
downloadFile("/huzhouProject/downloadfile", record.documentName, param)
}
async function customResetFunc() {
emit("close")
}
async function handleSubmit() {
if (await validate()) {
let param = getFieldsValue()
if (dataTo.projectType) {
await modifyPlanModule(param)
} else {
await savePlanModule(param)
}
console.log("我提交了")
emit("close")
} else {
console.log("未完成")
}
}
</script>
<style></style>

131
src/views/projectLib/projectPlanModule/index.vue

@ -0,0 +1,131 @@
<template>
<div>
<!--引用表格-->
<BasicTable @register="registerTable">
<!--插槽:table标题-->
<!--操作栏-->
<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="handleCreate"> 新增模板</a-button>
</template>
</BasicTable>
</div>
<BasicModal @register="registePalanModuleModal" title="项目计划模板" width="1200px" :showOkBtn="false">
<addModulePage :moduleId="moduleId" :projectType="projectType" @close="closePalanModulePage"/>
</BasicModal>
<BasicModal @register="registePalanModuleDetailModal" title="项目计划模板详情" width="1200px" :showOkBtn="false" >
<addModuleDetailPage :moduleId="moduleId" @close="closePalanModuleDetailPage"/>
</BasicModal>
<!-- <BasicModal @register="registerModalUploadFiles" title="申报项目资料" width="1200px" :showOkBtn="false" :showCancelBtn="false">
<uploadFile :projectid="proid" @close="closeUploadFilesModal()"/>
</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 { useModal } from '/@/components/Modal';
import { BasicModal } from '/@/components/Modal';
import { hommPageColumns, searchFormSchema } from './projectPlanModule.data';
// import { list } from './address.api';
import addModulePage from './addModulePage.vue'
import addModuleDetailPage from './addModuleDetailPage.vue'
import { queryPlanModulePage,deletePlanModule } from './projectPlanModule.api';
import { Modal } from 'ant-design-vue';
let moduleId = ref();
let projectType =ref();
const [registePalanModuleModal, { openModal: openPalanModule,closeModal: closePalanModule}] = useModal();
const [registePalanModuleDetailModal, { openModal: openPalanModuleDetail,closeModal: closePalanModuleDetail }] = useModal();
const { tableContext } = useListPage({
tableProps: {
title: '项目信息',
api: queryPlanModulePage,
columns: hommPageColumns,
actionColumn: {
width: 120,
fixed: "right",
},
//
formConfig: {
schemas: searchFormSchema,
}
},
});
//BasicTable
const [registerTable, { reload }] = tableContext;
function getTableAction(record): ActionItem[] {
return [
{
label: '编辑详情',
onClick: handleEditDetailpage.bind(null, record),
},
];
}
/**
* 下拉操作栏
*/
function getDropDownAction(record): ActionItem[] {
return [
{
label: '修改模板',
ifShow: true,
onClick: handleModifyModule.bind(null, record)
},
{
label: '删除模板',
ifShow: true,
onClick: handleDeleteModule.bind(null, record)
},
];
}
function handleCreate() {
openPalanModule()
}
function handleModifyModule(record) {
moduleId.value = record.id
projectType.value = record.projectType
openPalanModule()
}
function closePalanModulePage(){
closePalanModule()
reload()
}
function handleEditDetailpage(record){
moduleId.value = record.id
console.log("record",record)
openPalanModuleDetail()
}
function closePalanModuleDetailPage(record){
console.log("record",record)
closePalanModuleDetail()
reload()
}
function handleDeleteModule(record){
Modal.confirm({
title: '提示窗口',
content: '是否删除此项目模板?',
okText: '确认',
cancelText: '取消',
onOk:async() => {
await deletePlanModule({ id: record.id })
reload()
},
});
}
</script>
<style scoped></style>

23
src/views/projectLib/projectPlanModule/projectPlanModule.api.ts

@ -0,0 +1,23 @@
import { defHttp } from '/@/utils/http/axios';
export enum Api {
saveprojectInfo = "",
queryPlanModulePage = '/huzhouPlan/queryPlanModulePage',
queryPlanModuleDetailPage = "/huzhouPlan/queryPlanModuleDetailPage",
queryPlanModuleone = '/huzhouPlan/queryPlanModuleone',
savePlanModule = '/huzhouPlan/savePlanModule',
savePlanModuleDatail = '/huzhouPlan/savePlanModuleDatail',
modifyPlanModule = '/huzhouPlan/modifyPlanModule',
deletePlanModule='/huzhouPlan/deletePlanModule',
}
/**
*
*/
export const queryPlanModulePage = (params) => defHttp.get({ url: Api.queryPlanModulePage, params })
export const queryPlanModuleDetailPage = (params) => defHttp.get({ url: Api.queryPlanModuleDetailPage, params })
export const queryPlanModuleone = (params) => defHttp.get({ url: Api.queryPlanModuleone, params })
export const savePlanModule = (params) => defHttp.post({ url: Api.savePlanModule, params })
export const savePlanModuleDatail = (params) => defHttp.post({ url: Api.savePlanModuleDatail, params })
export const modifyPlanModule = (params) => defHttp.post({ url: Api.modifyPlanModule, params })
export const deletePlanModule = (params) => defHttp.delete({ url: Api.deletePlanModule, params},{ joinParamsToUrl: true })

173
src/views/projectLib/projectPlanModule/projectPlanModule.data.ts

@ -0,0 +1,173 @@
import { FormSchema } from '/@/components/Form';
import { BasicColumn } from '/@/components/Table';
import { getDictItemsByCode } from '/@/utils/dict/index';
import { useUserStore } from '/@/store/modules/user';
const userStore = useUserStore();
const projectTypeDicts: Array<Object> = getDictItemsByCode("projectType")
function projectTypeDict() {
for (let i = 0; i < projectTypeDicts.length; i++) {
projectTypeDicts[i].label = projectTypeDicts[i].text;
}
return projectTypeDicts
}
const approvalRsesults:Array<Object> = getDictItemsByCode("approvalResult")
function approvalRsesult(){
for(let i = 0;i<approvalRsesults.length;i++){
approvalRsesults[i].label=approvalRsesults[i].text;
}
return approvalRsesults
}
export const hommPageColumns: BasicColumn[] = [
{
title: '模板ID',
width: 150,
dataIndex: 'id',
},
{
title: '项目类型',
dataIndex: 'projectType',
width: 150,
customRender: ({ record }) => {
for(let i =0;i<projectTypeDicts.length;i++){
if(record.projectType==projectTypeDicts[i].value){
return projectTypeDicts[i].text
}
}
},
},
{
title: '模板名称',
dataIndex: 'moduleName',
width: 150,
},
{
title: '创建时间',
dataIndex: 'createtime',
width: 100,
},
];
export const moduleDetailColumns: BasicColumn[] = [
{
title: '模板id',
width: 150,
dataIndex: 'moduleId',
},
{
title: '计划名称',
dataIndex: 'taskName',
width: 150,
edit: true,
},
{
title: '计划序号',
dataIndex: 'orderNumber',
width: 150,
edit: true,
editComponent: 'InputNumber',
},
{
title: '最大天数',
dataIndex: 'maxDays',
width: 100,
edit: true,
},
];
export const searchFormSchema: FormSchema[] = [
{
label: '项目类型',
field: 'projectType',
component: 'Select',
componentProps:{
options:projectTypeDict()
},
//colProps: { span: 6 },
},
{
label: '模板名称',
field: 'moduleName',
component: 'Input',
//colProps: { span: 6 },
},
];
export const planModuleFormSchemas: FormSchema[] = [
// {
// label: '项目类型',
// field: 'user',
// component: 'Select',
// required: true,
// dynamicDisabled: true,
// componentProps: {
// options: [
// { value: userStore.getUserInfo.id, label: userStore.getUserInfo.username }
// ],
// },
// defaultValue: userStore.getUserInfo.id,
// colProps: { span: 12 },
// },
{
label: '模板id',
field: 'id',
component: 'Input',
dynamicDisabled: true,
colProps: { span: 12 },
},
{
label: '项目类型',
field: 'projectType',
component: 'Select',
required: true,
componentProps: {
options: projectTypeDict()
},
colProps: { span: 12 },
},
{
label: '模板名称',
field: 'moduleName',
component: 'Input',
required: true,
colProps: { span: 12 },
},
];
export const ProcessColumns: BasicColumn[] = [
{
title: '节点名称',
dataIndex: 'taskName',
},
{
title: '处理人',
dataIndex: 'operator',
width: 150,
},
{
title: '处理时间',
dataIndex: 'operateDate',
width: 150,
},
{
title: '审批状态',
dataIndex: 'approvalStatue',
width: 100,
},
{
title: '审批意见',
dataIndex: 'workplace',
width: 100,
}
];
Loading…
Cancel
Save