项目管理
parent
ad658e16d3
commit
b986f05757
|
|
@ -0,0 +1,125 @@
|
|||
/* eslint-disable */
|
||||
// @ts-nocheck
|
||||
// biome-ignore lint: disable
|
||||
// oxlint-disable
|
||||
// ------
|
||||
// Generated by unplugin-vue-components
|
||||
// Read more: https://github.com/vuejs/core/pull/3399
|
||||
import { GlobalComponents } from 'vue'
|
||||
|
||||
export {}
|
||||
|
||||
/* prettier-ignore */
|
||||
declare module 'vue' {
|
||||
export interface GlobalComponents {
|
||||
ElAside: typeof import('element-plus/es')['ElAside']
|
||||
ElAvatar: typeof import('element-plus/es')['ElAvatar']
|
||||
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
|
||||
ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
|
||||
ElButton: typeof import('element-plus/es')['ElButton']
|
||||
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
|
||||
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
|
||||
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
|
||||
ElContainer: typeof import('element-plus/es')['ElContainer']
|
||||
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
|
||||
ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
|
||||
ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
|
||||
ElDialog: typeof import('element-plus/es')['ElDialog']
|
||||
ElDivider: typeof import('element-plus/es')['ElDivider']
|
||||
ElDropdown: typeof import('element-plus/es')['ElDropdown']
|
||||
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
|
||||
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
|
||||
ElEmpty: typeof import('element-plus/es')['ElEmpty']
|
||||
ElForm: typeof import('element-plus/es')['ElForm']
|
||||
ElFormItem: typeof import('element-plus/es')['ElFormItem']
|
||||
ElHeader: typeof import('element-plus/es')['ElHeader']
|
||||
ElIcon: typeof import('element-plus/es')['ElIcon']
|
||||
ElIconCircleClose: typeof import('@element-plus/icons-vue')['CircleClose']
|
||||
ElIconPhone: typeof import('@element-plus/icons-vue')['Phone']
|
||||
ElIconPicture: typeof import('@element-plus/icons-vue')['Picture']
|
||||
ElIconPlus: typeof import('@element-plus/icons-vue')['Plus']
|
||||
ElImage: typeof import('element-plus/es')['ElImage']
|
||||
ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
|
||||
ElInput: typeof import('element-plus/es')['ElInput']
|
||||
ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
|
||||
ElMain: typeof import('element-plus/es')['ElMain']
|
||||
ElOption: typeof import('element-plus/es')['ElOption']
|
||||
ElPagination: typeof import('element-plus/es')['ElPagination']
|
||||
ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
|
||||
ElRadio: typeof import('element-plus/es')['ElRadio']
|
||||
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
||||
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
|
||||
ElSelect: typeof import('element-plus/es')['ElSelect']
|
||||
ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
||||
ElTable: typeof import('element-plus/es')['ElTable']
|
||||
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
|
||||
ElTabPane: typeof import('element-plus/es')['ElTabPane']
|
||||
ElTabs: typeof import('element-plus/es')['ElTabs']
|
||||
ElTag: typeof import('element-plus/es')['ElTag']
|
||||
ElText: typeof import('element-plus/es')['ElText']
|
||||
ElTooltip: typeof import('element-plus/es')['ElTooltip']
|
||||
ElTransfer: typeof import('element-plus/es')['ElTransfer']
|
||||
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
|
||||
ElUpload: typeof import('element-plus/es')['ElUpload']
|
||||
RouterLink: typeof import('vue-router')['RouterLink']
|
||||
RouterView: typeof import('vue-router')['RouterView']
|
||||
}
|
||||
export interface GlobalDirectives {
|
||||
vLoading: typeof import('element-plus/es')['ElLoadingDirective']
|
||||
}
|
||||
}
|
||||
|
||||
// For TSX support
|
||||
declare global {
|
||||
const ElAside: typeof import('element-plus/es')['ElAside']
|
||||
const ElAvatar: typeof import('element-plus/es')['ElAvatar']
|
||||
const ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
|
||||
const ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
|
||||
const ElButton: typeof import('element-plus/es')['ElButton']
|
||||
const ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
|
||||
const ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
|
||||
const ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
|
||||
const ElContainer: typeof import('element-plus/es')['ElContainer']
|
||||
const ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
|
||||
const ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
|
||||
const ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
|
||||
const ElDialog: typeof import('element-plus/es')['ElDialog']
|
||||
const ElDivider: typeof import('element-plus/es')['ElDivider']
|
||||
const ElDropdown: typeof import('element-plus/es')['ElDropdown']
|
||||
const ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
|
||||
const ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
|
||||
const ElEmpty: typeof import('element-plus/es')['ElEmpty']
|
||||
const ElForm: typeof import('element-plus/es')['ElForm']
|
||||
const ElFormItem: typeof import('element-plus/es')['ElFormItem']
|
||||
const ElHeader: typeof import('element-plus/es')['ElHeader']
|
||||
const ElIcon: typeof import('element-plus/es')['ElIcon']
|
||||
const ElIconCircleClose: typeof import('@element-plus/icons-vue')['CircleClose']
|
||||
const ElIconPhone: typeof import('@element-plus/icons-vue')['Phone']
|
||||
const ElIconPicture: typeof import('@element-plus/icons-vue')['Picture']
|
||||
const ElIconPlus: typeof import('@element-plus/icons-vue')['Plus']
|
||||
const ElImage: typeof import('element-plus/es')['ElImage']
|
||||
const ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
|
||||
const ElInput: typeof import('element-plus/es')['ElInput']
|
||||
const ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
|
||||
const ElMain: typeof import('element-plus/es')['ElMain']
|
||||
const ElOption: typeof import('element-plus/es')['ElOption']
|
||||
const ElPagination: typeof import('element-plus/es')['ElPagination']
|
||||
const ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
|
||||
const ElRadio: typeof import('element-plus/es')['ElRadio']
|
||||
const ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
||||
const ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
|
||||
const ElSelect: typeof import('element-plus/es')['ElSelect']
|
||||
const ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
||||
const ElTable: typeof import('element-plus/es')['ElTable']
|
||||
const ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
|
||||
const ElTabPane: typeof import('element-plus/es')['ElTabPane']
|
||||
const ElTabs: typeof import('element-plus/es')['ElTabs']
|
||||
const ElTag: typeof import('element-plus/es')['ElTag']
|
||||
const ElText: typeof import('element-plus/es')['ElText']
|
||||
const ElTooltip: typeof import('element-plus/es')['ElTooltip']
|
||||
const ElTransfer: typeof import('element-plus/es')['ElTransfer']
|
||||
const ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
|
||||
const ElUpload: typeof import('element-plus/es')['ElUpload']
|
||||
const RouterLink: typeof import('vue-router')['RouterLink']
|
||||
const RouterView: typeof import('vue-router')['RouterView']
|
||||
}
|
||||
|
|
@ -33,6 +33,11 @@
|
|||
</ElFormItem>
|
||||
</template>
|
||||
<template #simpleSearchFormItem="{searchForm}">
|
||||
<ElFormItem>
|
||||
<ElSelect v-model="searchForm.identityCategory" placeholder="身份类型">
|
||||
<ElOption v-for="item in identityCategory" :key="item.val" :label="item.txt" :value="item.val"/>
|
||||
</ElSelect>
|
||||
</ElFormItem>
|
||||
<ElFormItem>
|
||||
<ElInput v-model="searchForm.nickname" placeholder="客户姓名"/>
|
||||
</ElFormItem>
|
||||
|
|
@ -135,20 +140,20 @@ const actionColumn = reactive<ActionColumnType<CustomerTypes.TableData>>({
|
|||
},
|
||||
},
|
||||
/* {
|
||||
icon: 'Delete',
|
||||
loading: false,
|
||||
type: 'danger',
|
||||
tooltip: '删除',
|
||||
confirm: {
|
||||
title: '是否删除当前数据',
|
||||
},
|
||||
action({row}) {
|
||||
return CustomerApi.del([ row.id! ])
|
||||
.then(() => {
|
||||
ElMessage.success('删除成功')
|
||||
return true
|
||||
})
|
||||
},
|
||||
icon: 'Delete',
|
||||
loading: false,
|
||||
type: 'danger',
|
||||
tooltip: '删除',
|
||||
confirm: {
|
||||
title: '是否删除当前数据',
|
||||
},
|
||||
action({row}) {
|
||||
return CustomerApi.del([ row.id! ])
|
||||
.then(() => {
|
||||
ElMessage.success('删除成功')
|
||||
return true
|
||||
})
|
||||
},
|
||||
}, */
|
||||
],
|
||||
})
|
||||
|
|
|
|||
|
|
@ -2,6 +2,18 @@
|
|||
<FormPage
|
||||
ref="formPage"
|
||||
:action-column="actionColumn"
|
||||
:formStyle=" {
|
||||
border: false,
|
||||
colCount: 3,
|
||||
vgap: '20px',
|
||||
hgap: '20px',
|
||||
}"
|
||||
:left-tools="leftTools"
|
||||
:search-form-props="{
|
||||
labelPosition: 'left',
|
||||
labelWidth: '100px',
|
||||
inline: true,
|
||||
}"
|
||||
:paging="paging">
|
||||
<template #searchFormItem="{ searchForm }">
|
||||
<ElFormItem label="项目名称">
|
||||
|
|
@ -9,20 +21,21 @@
|
|||
v-model="searchForm.projectName"
|
||||
placeholder="项目名称"/>
|
||||
</ElFormItem>
|
||||
<ElFormItem label="区县">
|
||||
<ElFormItem label="客户名称">
|
||||
<ElInput
|
||||
v-model="searchForm.areaName"
|
||||
placeholder="区县"/>
|
||||
v-model="searchForm.fringeName"
|
||||
placeholder="客户名称"/>
|
||||
</ElFormItem>
|
||||
<ElFormItem label="乡镇街道">
|
||||
<ElFormItem label="运输方名称">
|
||||
<ElInput
|
||||
v-model="searchForm.townName"
|
||||
placeholder="乡镇街道"/>
|
||||
v-model="searchForm.transName"
|
||||
placeholder="运输方名称"/>
|
||||
</ElFormItem>
|
||||
<ElFormItem label="详细地址">
|
||||
<ElInput
|
||||
v-model="searchForm.address"
|
||||
placeholder="详细地址"/>
|
||||
<ElFormItem label="合同有效期">
|
||||
<ADtPicker v-model="searchForm.contractTimes" :change-handler="research"/>
|
||||
</ElFormItem>
|
||||
<ElFormItem label="创建时间">
|
||||
<ADtPicker v-model="searchForm.createTimes" :change-handler="research"/>
|
||||
</ElFormItem>
|
||||
</template>
|
||||
<template #simpleSearchFormItem="{ searchForm }">
|
||||
|
|
@ -31,22 +44,34 @@
|
|||
v-model="searchForm.projectName"
|
||||
placeholder="项目名称"/>
|
||||
</ElFormItem>
|
||||
<ElFormItem>
|
||||
<ElInput
|
||||
v-model="searchForm.fringeName"
|
||||
placeholder="客户名称"/>
|
||||
</ElFormItem>
|
||||
<ElFormItem>
|
||||
<ElInput
|
||||
v-model="searchForm.transName"
|
||||
placeholder="运输方名称"/>
|
||||
</ElFormItem>
|
||||
</template>
|
||||
<template #columns>
|
||||
<ElTableColumn label="项目名称" prop="projectName"/>
|
||||
<!-- <ElTableColumn label="合同图片" prop="contractPicture"/> -->
|
||||
<ElTableColumn label="运输方企业" prop="transOrgInfo.orgName"/>
|
||||
<ElTableColumn label="产废方/购买方企业" prop="fringeOrgInfo.orgName"/>
|
||||
<!-- <ElTableColumn label="市" prop="cityName"/> -->
|
||||
<ElTableColumn label="区县" prop="areaName"/>
|
||||
<ElTableColumn label="乡镇街道" prop="townName"/>
|
||||
<ElTableColumn label="详细地址" prop="address"/>
|
||||
<ElTableColumn label="合同有效期" prop="contractStartDate"/>
|
||||
<ElTableColumn label="合同有效期" prop="contractEndDate"/>
|
||||
<ElTableColumn label="创建时间" prop="createTime"/>
|
||||
<ElTableColumn label="修改时间" prop="modifyTime"/>
|
||||
<ElTableColumn label="运输方联系人" prop="transCustomerName" width="140px"/>
|
||||
<ElTableColumn label="运输方联系电话" prop="transCustomerPhone" width="140px"/>
|
||||
<ElTableColumn label="运输企业名称" prop="transOrgName" width="140px"/>
|
||||
<ElTableColumn label="客户名称" prop="fringeCustomerName" width="140px"/>
|
||||
<ElTableColumn label="客户联系电话" prop="fringeCustomerPhone" width="140px"/>
|
||||
<ElTableColumn label="客户企业名称" prop="fringeOrgName" width="140px"/>
|
||||
<!-- <ElTableColumn label="详细地址" prop="address" width="240" show-overflow-tooltip/> -->
|
||||
<ElTableColumn label="合同有效期" prop="contractStartDate" width="210">
|
||||
<template #default="{ row }">
|
||||
{{ row.contractStartDate + ' 至 ' + row.contractEndDate ?? '--' }}
|
||||
</template>
|
||||
</ElTableColumn>
|
||||
<ElTableColumn label="创建时间" prop="createTime" width="170"/>
|
||||
</template>
|
||||
<ProjectForm ref="projectForm" @edit-succ="research"/>
|
||||
<ProjectForm ref="projectForm" :research="research"/>
|
||||
<ProjectDetail ref="projectDetail" @edit-succ="research"/>
|
||||
</FormPage>
|
||||
</template>
|
||||
|
|
@ -56,11 +81,16 @@ import ProjectApi from '@/pages/cst/project/project-api.ts'
|
|||
import ProjectDetail from '@/pages/cst/project/ProjectDetail.vue'
|
||||
import ProjectForm from '@/pages/cst/project/ProjectForm.vue'
|
||||
import FormPage from '@/components/page/FormPage.vue'
|
||||
import type { ActionColumnType } from '@/components/page/a-page-type.ts'
|
||||
import type {
|
||||
ActionColumnType,
|
||||
ToolType,
|
||||
} from '@/components/page/a-page-type.ts'
|
||||
import type { ComponentExposed } from 'vue-component-type-helpers'
|
||||
import ADtPicker from '@/components/a-dt-picker/ADtPicker.vue'
|
||||
|
||||
const formPageIns = useTemplateRef<ComponentExposed<typeof FormPage>>('formPage')
|
||||
const projectDetailIns = useTemplateRef<InstanceType<typeof ProjectDetail>>('projectDetail')
|
||||
const projectFormIns = useTemplateRef<InstanceType<typeof ProjectDetail>>('projectForm')
|
||||
|
||||
const actionColumn = reactive<ActionColumnType<ProjectTypes.SearchProjectResult>>({
|
||||
tableActions: [
|
||||
|
|
@ -73,6 +103,15 @@ const actionColumn = reactive<ActionColumnType<ProjectTypes.SearchProjectResult>
|
|||
},
|
||||
],
|
||||
})
|
||||
const leftTools: ToolType[] = [
|
||||
{
|
||||
icon: 'Plus',
|
||||
label: '新建',
|
||||
action() {
|
||||
projectFormIns.value?.open()
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
function research() {
|
||||
formPageIns.value?.doSearch()
|
||||
|
|
|
|||
|
|
@ -3,57 +3,16 @@ export {}
|
|||
declare global {
|
||||
namespace ProjectTypes {
|
||||
interface SearchProjectParam extends G.PageParam {
|
||||
// Id
|
||||
id?: string;
|
||||
// 项目名称
|
||||
projectName?: string;
|
||||
orgName?: string;
|
||||
// 合同图片
|
||||
contractPicture?: string;
|
||||
// 运输方客户 Id
|
||||
transCustomerId?: string;
|
||||
// 运输方企业 Id
|
||||
transOrgId?: string;
|
||||
// 产废方/购买方客户 Id
|
||||
fringeCustomerId?: string;
|
||||
// 产废方/购买方企业 Id
|
||||
fringeOrgId?: string;
|
||||
// 省;代码
|
||||
province?: string;
|
||||
// 市;代码
|
||||
city?: string;
|
||||
// 区县;代码
|
||||
area?: string;
|
||||
// 乡镇街道;代码
|
||||
town?: string;
|
||||
// 省;名称
|
||||
provinceName?: string;
|
||||
// 市;名称
|
||||
cityName?: string;
|
||||
// 区县;名称
|
||||
areaName?: string;
|
||||
// 乡镇街道;名称
|
||||
townName?: string;
|
||||
// 详细地址
|
||||
address?: string;
|
||||
// 经度
|
||||
lng?: number;
|
||||
// 纬度
|
||||
lat?: number;
|
||||
// 合同有效期
|
||||
contractStartDate?: string;
|
||||
// 合同有效期
|
||||
contractEndDate?: string;
|
||||
// 创建人 Id; sys_user.id
|
||||
creatorId?: string;
|
||||
// 修改人 Id; sys_user.id
|
||||
modifierId?: string;
|
||||
// 创建时间
|
||||
createTime?: string;
|
||||
// 修改时间
|
||||
modifyTime?: string;
|
||||
// 是否删除; 0-->未删除、1-->已删除
|
||||
deleted?: boolean;
|
||||
projectName?: string
|
||||
fringeName?: string
|
||||
transName?: string
|
||||
contractTimes?: [ string | undefined, string | undefined ]
|
||||
contractStartDate?: string
|
||||
contractEndDate?: string
|
||||
createTimes?: [ string | undefined, string | undefined ]
|
||||
createTimeStart?: string
|
||||
createTimeEnd?: string
|
||||
}
|
||||
|
||||
interface SearchProjectResult {
|
||||
|
|
@ -65,12 +24,18 @@ declare global {
|
|||
contractPicture?: string
|
||||
// 运输方客户 Id
|
||||
transCustomerId?: string
|
||||
transCustomerName?: string
|
||||
transCustomerPhone?: string
|
||||
// 运输方企业 Id
|
||||
transOrgId?: string
|
||||
transOrgName?: string
|
||||
// 产废方/购买方客户 Id
|
||||
fringeCustomerId?: string
|
||||
fringeCustomerName?: string
|
||||
fringeCustomerPhone?: string
|
||||
// 产废方/购买方企业 Id
|
||||
fringeOrgId?: string
|
||||
fringeOrgName?: string
|
||||
// 省;代码
|
||||
province?: string
|
||||
// 市;代码
|
||||
|
|
@ -97,16 +62,8 @@ declare global {
|
|||
contractStartDate?: string
|
||||
// 合同有效期
|
||||
contractEndDate?: string
|
||||
// 创建人 Id; sys_user.id
|
||||
creatorId?: string
|
||||
// 修改人 Id; sys_user.id
|
||||
modifierId?: string
|
||||
// 创建时间
|
||||
createTime?: string
|
||||
// 修改时间
|
||||
modifyTime?: string
|
||||
// 是否删除; 0-->未删除、1-->已删除
|
||||
deleted?: boolean
|
||||
}
|
||||
|
||||
interface AddProjectParam {
|
||||
|
|
|
|||
|
|
@ -9,9 +9,7 @@ declare global {
|
|||
categoryName?: string
|
||||
// 创建时间范围
|
||||
createTimes?: [ string | undefined, string | undefined ]
|
||||
// 修改时间
|
||||
createTimeStart?: string
|
||||
// 是否删除; 0-->未删除、1-->已删除
|
||||
createTimeEnd?: string
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -50,10 +50,7 @@ const actionColumn = reactive<ActionColumnType<RoleTypes.SearchRoleResult>>({
|
|||
tableActions: [
|
||||
{
|
||||
tooltip: '资源',
|
||||
icon: 'Edit',
|
||||
show({row}) {
|
||||
return row.id != '1'
|
||||
},
|
||||
icon: 'ScaleToOriginal',
|
||||
action({row}: { row: RoleTypes.SearchRoleResult }) {
|
||||
bindResIns.value?.open(row.id!)
|
||||
},
|
||||
|
|
@ -61,6 +58,9 @@ const actionColumn = reactive<ActionColumnType<RoleTypes.SearchRoleResult>>({
|
|||
{
|
||||
tooltip: '编辑',
|
||||
icon: 'Edit',
|
||||
show({row}) {
|
||||
return row.id != '1'
|
||||
},
|
||||
action({row}: { row: RoleTypes.SearchRoleResult }) {
|
||||
if (row.id == '1') {
|
||||
ElMessage.error('不能操作管理员')
|
||||
|
|
|
|||
Loading…
Reference in New Issue