Commit cec29ea6 authored by 高滢's avatar 高滢

Merge remote-tracking branch 'origin/develop' into develop

parents f462dfc2 5826ca23
...@@ -11,7 +11,7 @@ VITE_BUILD_COMPRESS = 'gzip' ...@@ -11,7 +11,7 @@ VITE_BUILD_COMPRESS = 'gzip'
# Basic interface address SPA # Basic interface address SPA
VITE_GLOB_API_URL = http://58.223.177.48:8088 VITE_GLOB_API_URL = https://dev.unitj.cn
# File upload address, optional # File upload address, optional
# It can be forwarded by nginx or write the actual address directly # It can be forwarded by nginx or write the actual address directly
......
export interface BasicPageParams { export interface BasicPageParams {
pageNum: number; page: number;
pageSize: number; size: number;
} }
export interface BasicFetchResult<T> { export interface BasicFetchResult<T> {
......
...@@ -7,7 +7,7 @@ import { ...@@ -7,7 +7,7 @@ import {
import { defHttp } from '@/utils/http/axios'; import { defHttp } from '@/utils/http/axios';
enum Api { enum Api {
GetList = '/pro/tenderManager/list/page', GetList = '/pro/tenderManager/page',
AddProject = '/pro/tenderManager/add', AddProject = '/pro/tenderManager/add',
UpdateProject = '/pro/tenderManager/update', UpdateProject = '/pro/tenderManager/update',
DeleteProject = '/pro/tenderManager/del', DeleteProject = '/pro/tenderManager/del',
...@@ -33,5 +33,8 @@ export const updateItem = (params?: any) => ...@@ -33,5 +33,8 @@ export const updateItem = (params?: any) =>
'Content-Type': 'application/json;charset=UTF-8', 'Content-Type': 'application/json;charset=UTF-8',
}, },
}); });
export const deleteItem = (params?: any) =>
defHttp.delete<ProjectModel>({ url: Api.DeleteProject, params });
export const getItem = (params?: any) => export const getItem = (params?: any) =>
defHttp.get<ListItem[]>({ url: Api.ProjectDetail, params }); defHttp.get<ListItem[]>({ url: Api.ProjectDetail, params });
import { ProjectPageParams, ListGetResultModel, ProjectModel,ListItem } from './model/biddingPlanModel'; import {
ProjectPageParams,
ListGetResultModel,
ProjectModel,
ListItem,
} from './model/biddingPlanModel';
import { defHttp } from '@/utils/http/axios'; import { defHttp } from '@/utils/http/axios';
enum Api { enum Api {
GetList = '/pro/tendePlan/page', GetList = '/pro/tenderPlan/page',
AddProject = '/pro/tendePlan/add', AddProject = '/pro/tenderPlan/add',
UpdateProject = '/pro/tendePlan/update', UpdateProject = '/pro/tenderPlan/update',
DeleteProject = '/pro/tenderPlan/del', DeleteProject = '/pro/tenderPlan/del',
ProjectDetail = '/pro/tendePlan/details', ProjectDetail = '/pro/tenderPlan/details',
} }
export const getListByPage = (params?: ProjectPageParams) => export const getListByPage = (params?: ProjectPageParams) =>
defHttp.post<ListGetResultModel>({ url: Api.GetList, data: params }); defHttp.post<ListGetResultModel>({ url: Api.GetList, data: params });
...@@ -28,5 +33,9 @@ export const updateItem = (params?: any) => ...@@ -28,5 +33,9 @@ export const updateItem = (params?: any) =>
'Content-Type': 'application/json;charset=UTF-8', 'Content-Type': 'application/json;charset=UTF-8',
}, },
}); });
export const deleteItem = (params?: any) =>
defHttp.delete<ProjectModel>({ url: Api.DeleteProject, params });
export const getItem = (params?: any) => export const getItem = (params?: any) =>
defHttp.get<ListItem[]>({ url: Api.ProjectDetail, params }); defHttp.get<ListItem[]>({ url: Api.ProjectDetail, params });
...@@ -23,7 +23,7 @@ export interface ListItem { ...@@ -23,7 +23,7 @@ export interface ListItem {
delFlag?: string | number; delFlag?: string | number;
} }
export interface ProjectModel<T> { export interface ProjectModel {
id?: string | number; id?: string | number;
proNumber?: string | number; proNumber?: string | number;
biddingQuarter?: any; biddingQuarter?: any;
......
...@@ -23,7 +23,7 @@ export interface ListItem { ...@@ -23,7 +23,7 @@ export interface ListItem {
delFlag?: string | number; delFlag?: string | number;
} }
export interface ProjectModel<T> { export interface ProjectModel {
id?: string | number; id?: string | number;
proNumber?: string | number; proNumber?: string | number;
biddingQuarter?: any; biddingQuarter?: any;
......
...@@ -24,6 +24,16 @@ const dashboard: AppRouteModule = { ...@@ -24,6 +24,16 @@ const dashboard: AppRouteModule = {
title: '项目库', title: '项目库',
}, },
}, },
{
path: 'detail',
name: 'project-detail',
component: () => import('@/views/project/detail.vue'),
meta: {
orderNo: 1,
// affix: true,
title: '项目库',
},
},
], ],
}; };
......
...@@ -9,9 +9,9 @@ export default { ...@@ -9,9 +9,9 @@ export default {
// support xxx.xxx.xxx // support xxx.xxx.xxx
fetchSetting: { fetchSetting: {
// The field name of the current page passed to the background // The field name of the current page passed to the background
pageField: 'pageNum', pageField: 'page',
// The number field name of each page displayed in the background // The number field name of each page displayed in the background
sizeField: 'pageSize', sizeField: 'size',
// Field name of the form data returned by the interface // Field name of the form data returned by the interface
listField: 'items', listField: 'items',
// Total number of tables returned by the interface field name // Total number of tables returned by the interface field name
......
...@@ -41,8 +41,9 @@ ...@@ -41,8 +41,9 @@
import { getListByPage, deleteItem } from '@/api/project/biddingManagement'; import { getListByPage, deleteItem } from '@/api/project/biddingManagement';
import { columns, searchFormSchema } from './biddingManagement.data'; import { columns, searchFormSchema } from './biddingManagement.data';
import { useModal } from '@/components/Modal'; import { useModal } from '@/components/Modal';
import { router } from '@/router';
import yearModal from '@/components/yearModal.vue'; import yearModal from '@/components/yearModal.vue';
import { useRouter } from 'vue-router';
const { push } = useRouter();
defineOptions({ name: 'RoleManagement' }); defineOptions({ name: 'RoleManagement' });
const [registerTable, { reload }] = useTable({ const [registerTable, { reload }] = useTable({
...@@ -72,7 +73,7 @@ ...@@ -72,7 +73,7 @@
} }
function handleEdit(record: Recordable, disabled: boolean) { function handleEdit(record: Recordable, disabled: boolean) {
router.push({ push({
path: '/biddingManagement/edit', path: '/biddingManagement/edit',
query: { query: {
id: record.id, id: record.id,
...@@ -88,7 +89,7 @@ ...@@ -88,7 +89,7 @@
function handleNew(e) { function handleNew(e) {
console.log(e); console.log(e);
router.push({ push({
path: '/biddingManagement/edit', path: '/biddingManagement/edit',
query: e, query: e,
}); });
......
...@@ -41,9 +41,9 @@ ...@@ -41,9 +41,9 @@
import { getListByPage, deleteItem } from '@/api/project/biddingPlan'; import { getListByPage, deleteItem } from '@/api/project/biddingPlan';
import { useModal } from '@/components/Modal'; import { useModal } from '@/components/Modal';
import yearModal from '@/components/yearModal.vue'; import yearModal from '@/components/yearModal.vue';
import { router } from '@/router';
import { columns, searchFormSchema } from './biddingPlan.data'; import { columns, searchFormSchema } from './biddingPlan.data';
import { useRouter } from 'vue-router';
const { push } = useRouter();
const [register, { openModal: openModal }] = useModal(); const [register, { openModal: openModal }] = useModal();
const [registerTable, { reload }] = useTable({ const [registerTable, { reload }] = useTable({
api: getListByPage, api: getListByPage,
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
bordered: true, bordered: true,
showIndexColumn: false, showIndexColumn: false,
actionColumn: { actionColumn: {
width: 80, width: 150,
title: '操作', title: '操作',
dataIndex: 'action', dataIndex: 'action',
// slots: { customRender: 'action' }, // slots: { customRender: 'action' },
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
} }
function handleEdit(record: Recordable, disabled: boolean) { function handleEdit(record: Recordable, disabled: boolean) {
router.push({ push({
path: '/biddingManagement/edit', path: '/biddingManagement/edit',
query: { query: {
id: record.id, id: record.id,
...@@ -88,7 +88,7 @@ ...@@ -88,7 +88,7 @@
function handleNew(e) { function handleNew(e) {
console.log(e); console.log(e);
router.push({ push({
path: '/biddingPlan/edit', path: '/biddingPlan/edit',
query: e, query: e,
}); });
......
...@@ -125,53 +125,208 @@ export const searchFormSchema: FormSchema[] = [ ...@@ -125,53 +125,208 @@ export const searchFormSchema: FormSchema[] = [
}, },
]; ];
export const formSchema: FormSchema[] = [ export const formSchema: ({ colProps: { offset: number; span: number }; component: string; field: string; componentProps: { readonly: boolean; style: { border: string } }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { readonly: boolean; style: { border: string } }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { readonly: boolean; style: { border: string } }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { readonly: boolean; style: { border: string } }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { readonly: boolean; style: { border: string } }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { readonly: boolean; style: { border: string } }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { readonly: boolean; style: { border: string } }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { readonly: boolean; style: { border: string } }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { readonly: boolean; style: { border: string } }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { valueFormat: string; format: string; style: { width: string }; placeholder: string }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { addonAfter: string }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { addonAfter: string }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { addonAfter: string }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { addonAfter: string }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { options: ({ label: string; value: string } | { label: string; value: string } | { label: string; value: string })[] }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; icon: string; componentProps: { style: { width: string }; placeholder: string[] }; label: string; required: boolean } | { colProps: { offset: number; span: number }; component: string; field: string; componentProps: { options: ({ label: string; value: string } | { label: string; value: string } | { label: string; value: string })[] }; label: string; required: boolean })[] = [
{ {
field: 'projectName', field: 'projectName',
label: '项目名称', label: '项目名称',
component: 'Input',
required: true, required: true,
component: 'Input',
componentProps: { componentProps: {
placeholder: 'XXXX项目', readonly: true,
disabled: true, style: { border: 'none' },
style: {
background: 'none',
border: 'none',
},
}, },
colProps: { span: 8 }, colProps: { span: 7, offset: 1 },
}, },
{ {
field: 'projectName', field: 'constructionSite',
label: '建设地点', label: '建设地点',
component: 'Input',
required: true, required: true,
component: 'Input',
componentProps: { componentProps: {
placeholder: '华苑片区', readonly: true,
disabled: true, style: { border: 'none' },
style: {
background: 'none',
border: 'none',
},
}, },
colProps: { span: 8 }, colProps: { span: 7, offset: 1 },
}, },
{ {
field: 'projectName', field: 'constructionMode',
label: '建设模式', label: '建设模式',
required: true,
component: 'Input',
componentProps: {
readonly: true,
style: { border: 'none' },
},
colProps: { span: 7, offset: 1 },
},
{
field: 'projectType',
label: '项目类型',
required: true,
component: 'Input',
componentProps: {
readonly: true,
style: { border: 'none' },
},
colProps: { span: 7, offset: 1 },
},
{
field: 'constructionScale',
label: '建设规模',
required: true,
component: 'Input',
componentProps: {
readonly: true,
style: { border: 'none' },
},
colProps: { span: 7, offset: 1 },
},
{
field: 'projectOverview',
label: '项目概况:',
required: true,
component: 'Input',
componentProps: {
readonly: true,
style: { border: 'none' },
},
colProps: { span: 7, offset: 1 },
},
{
field: 'fundingSource',
label: '资金来源:',
required: true,
component: 'Input',
componentProps: {
readonly: true,
style: { border: 'none' },
},
colProps: { span: 7, offset: 1 },
},
{
field: 'implementingEntity',
label: '实施主体:',
required: true,
component: 'Input', component: 'Input',
componentProps: {
readonly: true,
style: { border: 'none' },
},
colProps: { span: 7, offset: 1 },
},
{
field: 'projectOverview',
label: '项目概况:',
required: true, required: true,
component: 'Input',
componentProps: { componentProps: {
placeholder: '自建', readonly: true,
disabled: true, style: { border: 'none' },
style: {
background: 'none',
border: 'none',
},
}, },
colProps: { span: 8 }, colProps: { span: 7, offset: 1 },
}, },
// { // {
// field: 'data',
// label: '填报周期:',
// required: true,
// component: 'DatePicker',
// componentProps: {
// placeholder: '选择填报周期',
// style: { width: '100%' },
// valueFormat: 'YYYY-MM-DD',
// format: 'YYYY-MM-DD',
// },
// colProps: { span: 7, offset: 1 },
// },
// {
// field: 'investmentAmount',
// label: '总投资',
// required: true,
// component: 'Input',
// componentProps: {
// addonAfter: '万元',
// },
// colProps: { span: 7, offset: 1 },
// },
// {
// field: 'investmentAmount',
// label: '项目主管部门',
// required: true,
// component: 'Input',
// colProps: { span: 7, offset: 1 },
// },
//
// {
// field: 'investmentAmount',
// label: '2024年财政预算匹配资金',
// required: true,
// component: 'Input',
// componentProps: {
// addonAfter: '万元',
// },
// colProps: { span: 7, offset: 1 },
// },
// {
// field: 'investmentAmount',
// label: '其中专项债项目2024年预计使用专项债资金',
// required: true,
// component: 'Input',
// componentProps: {
// addonAfter: '万元',
// },
// colProps: { span: 7, offset: 1 },
// },
// {
// field: 'investmentAmount',
// label: '2024年计划资金',
// required: true,
// component: 'Input',
// componentProps: {
// addonAfter: '万元',
// },
// colProps: { span: 7, offset: 1 },
// },
// {
// field: 'investmentAmount',
// label: '建设性质',
// required: true,
// component: 'Select',
// componentProps: {
// options: [
// { label: '新建', value: '0' },
// { label: '结转', value: '1' },
// { label: '缓建', value: '2' },
// ],
// },
// colProps: { span: 7, offset: 1 },
// },
// {
// component: 'RangePicker',
// label: '开竣工时间',
// required: true,
// icon: 'healthicons:i-schedule-school-date-time-outline',
// field: '',
// colProps: { span: 7, offset: 1 },
// componentProps: {
// placeholder: ['开始日期', '结束日期'],
// style: { width: '100%' },
// },
// },
// {
// field: 'investmentAmount',
// label: '2024年底预计形象进度',
// required: true,
// component: 'Select',
// componentProps: {
// options: [
// { label: 'A(已经立项实施的跨年工程)', value: '0' },
// { label: 'B(该年度必须建设的项目)', value: '1' },
// { label: 'B(该年度必须建设的项目)', value: '2' },
// ],
// },
// colProps: { span: 7, offset: 1 },
// },
// {
// field: 'isReserveProject', // field: 'isReserveProject',
// label: '是否为储备项目', // label: '是否为储备项目',
// component: 'RadioButtonGroup', // component: 'RadioButtonGroup',
......
...@@ -16,11 +16,13 @@ ...@@ -16,11 +16,13 @@
<TableAction <TableAction
:actions="[ :actions="[
{ {
icon: 'clarity:note-edit-line', label: '修改',
// icon: 'clarity:note-edit-line',
onClick: handleEdit.bind(null, record), onClick: handleEdit.bind(null, record),
}, },
{ {
icon: 'ant-design:delete-outlined', label: '删除',
// icon: 'ant-design:delete-outlined',
color: 'error', color: 'error',
popConfirm: { popConfirm: {
title: '是否确认删除', title: '是否确认删除',
...@@ -68,7 +70,7 @@ ...@@ -68,7 +70,7 @@
bordered: true, bordered: true,
showIndexColumn: false, showIndexColumn: false,
actionColumn: { actionColumn: {
width: 80, width: 160,
title: '操作', title: '操作',
dataIndex: 'action', dataIndex: 'action',
// slots: { customRender: 'action' }, // slots: { customRender: 'action' },
...@@ -77,9 +79,15 @@ ...@@ -77,9 +79,15 @@
}); });
function handleEdit(record: Recordable) { function handleEdit(record: Recordable) {
openDrawer(true, { // openDrawer(true, {
record, // record,
isUpdate: true, // isUpdate: true,
// });
router.push({
path: '/engineeringProject/edit',
query: {
id: record.id,
},
}); });
} }
......
This diff is collapsed.
<template>
<PageWrapper :class="prefixCls">
<PageCard>
<div class="header">
<div class="header-tab">
<img class="header-tab-logo" src="../../assets/images/logo.png" alt="" />
<div class="header-tab-right">
<div class="header-tab-right-title">{{ detail.projectName }}</div>
<div class="header-tab-right-desc">{{ detail.projectName }}</div>
</div>
</div>
<div class="header-body">
<div class="header-body-item">
<div class="header-body-item-title">实施主体</div>
<div class="header-body-item-value">{{ detail.implementingEntity }}</div>
</div>
<div class="header-body-item">
<div class="header-body-item-title">建设模式</div>
<div class="header-body-item-value">{{ detail.constructionMode }}</div>
</div>
<div class="header-body-item">
<div class="header-body-item-title">建设地点</div>
<div class="header-body-item-value">{{ detail.constructionSite }}</div>
</div>
<div class="header-body-item">
<div class="header-body-item-title">项目类型</div>
<div class="header-body-item-value">{{ detail.projectType }}</div>
</div>
<div class="header-body-item">
<div class="header-body-item-title">资金来源</div>
<div class="header-body-item-value">{{ detail.fundingSource }}</div>
</div>
<div class="header-body-item">
<div class="header-body-item-title">建设规模</div>
<div class="header-body-item-value">{{ detail.constructionScale }}</div>
</div>
<div class="header-body-item">
<div class="header-body-item-title">建设目的及项目功能</div>
<div class="header-body-item-value">{{ detail.constructionPurpose }}</div>
</div>
<div class="header-body-item">
<div class="header-body-item-title">更新人/更新时间</div>
<div class="header-body-item-value"
>{{ detail.updateBy || '--' }}/{{ detail.updateTime || '--' }}</div
>
</div>
</div>
<!-- <Descriptions></Descriptions> -->
</div>
</PageCard>
<BasicTable @register="registerTable">
<template #tabSlot>
<Tabs v-model:activeKey="activeKey" @change="reload()">
<template v-for="item in tabList" :key="item.key">
<TabPane :tab="item.tab" />
</template>
</Tabs>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'projectName'">
<Tag color="warning" v-if="record.isReserveProject == 'true'"> 储备 </Tag>
{{ record.projectName }}
</template>
<template v-if="column.key === 'constructionMode'">
<Tag color="processing">
{{ record.constructionMode }}
</Tag>
</template>
<template v-if="column.key === 'action'">
<TableAction
:actions="[
// {
// label: '详情',
// onClick: handleDetail.bind(null, record),
// },
// {
// label: '编辑',
// onClick: handleEdit.bind(null, record, false),
// },
// {
// label: '删除',
// color: 'error',
// popConfirm: {
// title: '是否确认删除',
// placement: 'left',
// confirm: handleDelete.bind(null, record),
// },
// },
]"
/>
</template>
</template>
</BasicTable>
</PageWrapper>
</template>
<script lang="ts" setup>
import { Tabs } from 'ant-design-vue';
import { BasicTable, useTable, TableAction } from '@/components/Table';
import { getListByPage, getItem } from '@/api/project/project';
import { columns, searchFormSchema, tabList } from './project.data';
import { ref, onMounted } from 'vue';
import { useRoute } from 'vue-router';
let detail = ref<any>({});
const activeKey = ref('1');
const [registerTable, { reload }] = useTable({
api: getListByPage,
columns,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
},
searchInfo: { tabName: activeKey },
useSearchForm: true,
showTableSetting: false,
bordered: true,
showIndexColumn: false,
actionColumn: {
width: 200,
title: '操作',
dataIndex: 'action',
// slots: { customRender: 'action' },
fixed: undefined,
},
});
onMounted(async () => {
const route = useRoute();
const id = route.query.id; // 获取名为id的参数
let res = await getItem({ id });
console.log(res);
detail.value = res;
console.log(detail.value);
});
</script>
<style lang="less" scoped>
.header {
background-color: #ffffff;
margin: 0 16px;
margin-top: 16px;
height: 208px;
&-tab {
padding: 30px;
display: flex;
justify-content: flex-start;
align-items: center;
&-logo {
border-radius: 100%;
width: 72px;
height: 72px;
margin-right: 10px;
}
&-right {
display: flex;
flex-flow: column;
color: #1c1c1c;
&-title {
font-size: 36px;
}
&-desc {
font-size: 14px;
margin-top: 6px;
}
}
}
&-body {
display: flex;
flex-wrap: wrap;
&-item {
flex: 1;
&-title {
text-align: center;
color: #536387;
font-size: 14px;
}
&-value {
text-align: center;
color: #000000;
margin-top: 16px;
font-size: 12px;
}
}
}
}
</style>
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
:actions="[ :actions="[
{ {
label: '详情', label: '详情',
onClick: handleEdit.bind(null, record, true), onClick: handleDetail.bind(null, record),
}, },
{ {
label: '编辑', label: '编辑',
...@@ -83,6 +83,8 @@ ...@@ -83,6 +83,8 @@
import { Row, Col } from 'ant-design-vue'; import { Row, Col } from 'ant-design-vue';
import projectDrawer from './projectDrawer.vue'; import projectDrawer from './projectDrawer.vue';
import { useDrawer } from '@/components/Drawer'; import { useDrawer } from '@/components/Drawer';
import { useRouter } from 'vue-router';
const { push } = useRouter();
const [registerDrawer, { openDrawer }] = useDrawer(); const [registerDrawer, { openDrawer }] = useDrawer();
const prefixCls = 'list-basic'; const prefixCls = 'list-basic';
const [registerTable, { reload }] = useTable({ const [registerTable, { reload }] = useTable({
...@@ -110,7 +112,14 @@ ...@@ -110,7 +112,14 @@
isUpdate: false, isUpdate: false,
}); });
} }
function handleDetail(record: any) {
push({
path: '/project/detail',
query: {
id: record.id,
},
});
}
async function handleEdit(record: Recordable, disabled: boolean) { async function handleEdit(record: Recordable, disabled: boolean) {
// let res = await getItem({ id: record.id }); // let res = await getItem({ id: record.id });
// console.log(res); // console.log(res);
......
...@@ -211,144 +211,19 @@ export const formSchema: FormSchema[] = [ ...@@ -211,144 +211,19 @@ export const formSchema: FormSchema[] = [
]; ];
export const searchFormSchema: FormSchema[] = [ export const searchFormSchema: FormSchema[] = [
{ {
field: 'projectName', field: 'year',
label: '', label: '',
component: 'Input', component: 'DatePicker',
componentProps: { required: true,
placeholder: '输入搜索关键词',
},
colProps: { span: 4 },
},
{
field: 'constructionMode',
component: 'RadioButtonGroup',
colProps: {
span: 6,
},
componentProps: {
options: [
{
label: '全部项目',
value: undefined,
},
{
label: '自建',
value: '1自建',
},
{
label: '委托建设',
value: '委托建设',
},
{
label: '代理',
value: '代理',
},
{
label: '承建',
value: '承建',
},
],
},
},
{
field: 'isReserveProject',
component: 'Switch',
colProps: {
span: 2,
},
componentProps: {
checkedValue: 'true',
unCheckedValue: 'false',
},
label: '储备项目',
labelWidth: 70,
},
{
field: 'ImplementingEntity',
label: '',
component: 'Select',
componentProps: {
placeholder: '实施主体',
options: [
{
label: '了解产品',
value: '了解产品',
key: '了解产品',
},
{
label: '正在跟进',
value: '正在跟进',
key: '正在跟进',
},
{
label: '正在试用',
value: '正在试用',
key: '正在试用',
},
{
label: '准备购买',
value: '准备购买',
key: '准备购买',
},
{
label: '准备付款',
value: '准备付款',
key: '准备付款',
},
{
label: '已经购买',
value: '已经购买',
key: '已经购买',
},
{
label: '暂时闲置',
value: '暂时闲置',
key: '暂时闲置',
},
],
},
colProps: { span: 3 },
},
{
field: 'projectType',
label: '',
component: 'Select',
componentProps: { componentProps: {
placeholder: '项目类型', placeholder: '选择填报周期',
options: [ valueFormat: 'YYYY-MM-dd',
{ format: 'YYYY-MM-dd',
label: '公共设施配套类', style: {
value: '公共设施配套类', width: '100%',
key: '公共设施配套类', },
},
{
label: '基础设施类',
value: '基础设施类',
key: '基础设施类',
},
{
label: '产业载体类',
value: '产业载体类',
key: '产业载体类',
},
{
label: '房地产类',
value: '房地产类',
key: '房地产类',
},
{
label: '存量盘活类',
value: '存量盘活类',
key: '存量盘活类',
},
{
label: '其他类(零星工程)',
value: '其他类(零星工程)',
key: '其他类(零星工程)',
},
],
}, },
colProps: { span: 3 }, colProps: { span: 5 },
}, },
]; ];
...@@ -394,3 +269,61 @@ export const columns: BasicColumn[] = [ ...@@ -394,3 +269,61 @@ export const columns: BasicColumn[] = [
width: 180, width: 180,
}, },
]; ];
export const tabList = [
{
key: '1',
tab: '投资计划',
},
{
key: '2',
tab: '计划完成情况',
},
{
key: '3',
tab: '年度资金计划',
},
{
key: '4',
tab: '月度资金计划',
},
{
key: '5',
tab: '已竣工验收项目陈欠资金计划',
},
{
key: '6',
tab: '招标计划',
},
{
key: '7',
tab: '招标管理',
},
{
key: '8',
tab: '结算管理',
},
{
key: '9',
tab: '变更签证管理',
},
{
key: '10',
tab: '安全隐患管理',
},
{
key: '11',
tab: '安全教育培训',
},
{
key: '12',
tab: '合同管理',
},
{
key: '13',
tab: '附件记录',
},
{
key: '14',
tab: '更新记录',
},
];
...@@ -18,8 +18,8 @@ export default defineApplicationConfig({ ...@@ -18,8 +18,8 @@ export default defineApplicationConfig({
server: { server: {
proxy: { proxy: {
'/api': { '/api': {
// target: 'https://dev.unitj.cn', target: 'https://dev.unitj.cn',
target: 'http://58.223.177.48:8088', // target: 'http://58.223.177.48:8088',
changeOrigin: true, changeOrigin: true,
// ws: false, // ws: false,
rewrite: (path) => path.replace(new RegExp(`^/api`), ''), rewrite: (path) => path.replace(new RegExp(`^/api`), ''),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment