lzq 2026-01-22 23:06:51 +08:00
parent fb8cd34f9b
commit ee3a206003
61 changed files with 1807 additions and 2501 deletions

View File

@ -1,10 +1,6 @@
# 应用名称
VITE_APP_NAME=(开发环境)再昇云收运处平台
# 后台服务地址
# VITE_HTTP_PROXY_TARGET=http://localhost:10086
# VITE_HTTP_PROXY_TARGET=http://192.168.2.124:10086
VITE_HTTP_PROXY_TARGET=http://192.168.2.2:8808
VITE_HTTP_PROXY_TARGET=http://localhost:10086
# VITE_HTTP_PROXY_TARGET=https://s2.njzscloud.com/api/
# VITE_HTTP_PROXY_TARGET=https://chengdu.njzscloud.com/api
VITE_WS_PROXY_TARGET=ws://localhost:10086

19
package-lock.json generated
View File

@ -81,7 +81,6 @@
"integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/code-frame": "^7.27.1",
"@babel/generator": "^7.28.5",
@ -1064,7 +1063,6 @@
"integrity": "sha512-lLt8KLHyl7IClc3RqRpRikz15eCfTRlAWL9leVzPyg5N87FfKE/7EWgWvpiL/z4Tf3dQCIqQb88TmHE0JTIDvA==",
"devOptional": true,
"license": "MIT",
"peer": true,
"dependencies": {
"c12": "^3.3.1",
"consola": "^3.4.2",
@ -1776,7 +1774,6 @@
"resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz",
"integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@types/lodash": "*"
}
@ -1794,7 +1791,6 @@
"integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"undici-types": "~7.16.0"
}
@ -2448,7 +2444,6 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.8.25",
"caniuse-lite": "^1.0.30001754",
@ -3746,15 +3741,13 @@
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/lodash-es": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/lodash-unified": {
"version": "1.0.3",
@ -4251,7 +4244,6 @@
"resolved": "https://registry.npmjs.org/pinia/-/pinia-3.0.4.tgz",
"integrity": "sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/devtools-api": "^7.7.7"
},
@ -4324,7 +4316,6 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@ -4943,7 +4934,6 @@
"integrity": "sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@adobe/css-tools": "~4.3.3",
"debug": "^4.3.2",
@ -5024,7 +5014,6 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"devOptional": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12"
},
@ -5082,7 +5071,6 @@
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"devOptional": true,
"license": "Apache-2.0",
"peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@ -5545,7 +5533,6 @@
"integrity": "sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.5.0",
@ -5836,7 +5823,6 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12"
},
@ -5856,7 +5842,6 @@
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.25.tgz",
"integrity": "sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.25",
"@vue/compiler-sfc": "3.5.25",

View File

@ -43,7 +43,7 @@
<ElTableColumn label="账号" prop="username"/>
<ElTableColumn label="联系人" prop="nickname"/>
<ElTableColumn label="身份类型" prop="identityCategoryTxt"/>
<ElTableColumn label="组织信息" prop="orgId"/>
<ElTableColumn label="企业信息" prop="orgId"/>
<ElTableColumn label="客户姓名" prop="customerName"/>
<ElTableColumn label="结算方式" prop="settlementWayTxt"/>
<ElTableColumn label="是否管理员">

View File

@ -8,18 +8,18 @@
<template #default="{formData}">
<div class="form-items">
<ElFormItem label="身份类型" prop="identityCategory">
<ElSelect v-model="formData.identityCategory" :disabled="status === 'view'" placeholder="身份类型">
<ElSelect v-model="formData.identityCategory" placeholder="身份类型">
<ElOption v-for="item in identityCategory" :key="item.val" :label="item.txt" :value="item.val"/>
</ElSelect>
</ElFormItem>
<ElFormItem label="客户姓名" prop="customerName">
<ElInput v-model="formData.customerName" :disabled="status === 'view'" placeholder="客户姓名"/>
<ElInput v-model="formData.customerName" placeholder="客户姓名"/>
</ElFormItem>
<ElFormItem label="联系电话" prop="phone">
<ElInput v-model="formData.phone" :disabled="status === 'view'" placeholder="联系电话"/>
<ElInput v-model="formData.phone" placeholder="联系电话"/>
</ElFormItem>
<ElFormItem label="结算方式" prop="settlementWay">
<ElSelect v-model="formData.settlementWay" :disabled="status === 'view'" placeholder="结算方式">
<ElSelect v-model="formData.settlementWay" placeholder="结算方式">
<ElOption v-for="item in settlementWay" :key="item.val" :label="item.txt" :value="item.val"/>
</ElSelect>
</ElFormItem>
@ -37,6 +37,7 @@ import {
identityCategory,
settlementWay,
} from '@/pages/cst/customer/constants.ts'
import type { ComponentExposed } from 'vue-component-type-helpers'
const props = withDefaults(defineProps<{
@ -45,13 +46,13 @@ const props = withDefaults(defineProps<{
research: () => {
},
})
const formPanelIns = useTemplateRef<InstanceType<typeof AFormPanel>>('formPanel')
const status = ref<'add' | 'view' | 'modify'>('add')
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const status = ref<'add' | 'modify'>('add')
const rules = reactive<FormRules<CustomerTypes.SearchCustomerResult>>({
id: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
userId: [ {required: true, message: '请填写用户', trigger: 'blur'} ],
identityCategory: [ {required: true, message: '请填写身份类型', trigger: 'blur'} ],
orgId: [ {required: true, message: '请填写组织信息', trigger: 'blur'} ],
orgId: [ {required: true, message: '请填写企业信息', trigger: 'blur'} ],
customerName: [ {required: true, message: '请填写客户姓名', trigger: 'blur'} ],
phone: [ {required: true, message: '请填写客户联系电话', trigger: 'blur'} ],
settlementWay: [ {required: true, message: '请填写结算方式', trigger: 'blur'} ],
@ -80,7 +81,7 @@ function doSubmit(data: CustomerTypes.SearchCustomerResult) {
if (status.value === 'add') {
return CustomerApi.add(data)
.then(props.research)
} else if (status.value === 'modify') {
} else {
return CustomerApi.modify(data)
.then(props.research)
}

View File

@ -9,7 +9,7 @@ declare global {
userId?: string
// 身份类型多个身份多条数据PingTai-->平台、ChanFei-->产废方、QingYun-->清运方、XiaoNa-->消纳方、CaiGou-->采购方
identityCategory?: string
// 组织信息 Idcst_org.id
// 企业信息 Idcst_org.id
orgId?: string
// 客户姓名
customerName?: string
@ -17,7 +17,7 @@ declare global {
phone?: string
// 结算方式YueJie-->月结、YuE-->余额、XianFu-->现付
settlementWay?: string
// 是否管理员;是否为当前的组织管理员0-->否、1-->是
// 是否管理员;是否为当前的企业管理员0-->否、1-->是
manager?: boolean
// 创建人 Idsys_user.id
creatorId?: string
@ -38,7 +38,7 @@ declare global {
userId?: string
// 身份类型多个身份多条数据PingTai-->平台、ChanFei-->产废方、QingYun-->清运方、XiaoNa-->消纳方、CaiGou-->采购方
identityCategory?: string
// 组织信息 Idcst_org.id
// 企业信息 Idcst_org.id
orgId?: string
// 客户姓名
customerName?: string
@ -46,7 +46,7 @@ declare global {
phone?: string
// 结算方式YueJie-->月结、YuE-->余额、XianFu-->现付
settlementWay?: string
// 是否管理员;是否为当前的组织管理员0-->否、1-->是
// 是否管理员;是否为当前的企业管理员0-->否、1-->是
manager?: boolean
// 创建人 Idsys_user.id
creatorId?: string
@ -67,7 +67,7 @@ declare global {
userId?: string
// 身份类型多个身份多条数据PingTai-->平台、ChanFei-->产废方、QingYun-->清运方、XiaoNa-->消纳方、CaiGou-->采购方
identityCategory?: string
// 组织信息 Idcst_org.id
// 企业信息 Idcst_org.id
orgId?: string
// 客户姓名
customerName?: string
@ -75,7 +75,7 @@ declare global {
phone?: string
// 结算方式YueJie-->月结、YuE-->余额、XianFu-->现付
settlementWay?: string
// 是否管理员;是否为当前的组织管理员0-->否、1-->是
// 是否管理员;是否为当前的企业管理员0-->否、1-->是
manager?: boolean
// 创建人 Idsys_user.id
creatorId?: string
@ -96,7 +96,7 @@ declare global {
userId?: string
// 身份类型多个身份多条数据PingTai-->平台、ChanFei-->产废方、QingYun-->清运方、XiaoNa-->消纳方、CaiGou-->采购方
identityCategory?: string
// 组织信息 Idcst_org.id
// 企业信息 Idcst_org.id
orgId?: string
// 客户姓名
customerName?: string
@ -104,7 +104,7 @@ declare global {
phone?: string
// 结算方式YueJie-->月结、YuE-->余额、XianFu-->现付
settlementWay?: string
// 是否管理员;是否为当前的组织管理员0-->否、1-->是
// 是否管理员;是否为当前的企业管理员0-->否、1-->是
manager?: boolean
// 创建人 Idsys_user.id
creatorId?: string

View File

@ -23,6 +23,14 @@
<ElInput v-model="searchForm.modifyTime" placeholder="修改时间"/>
</ElFormItem>
</template>
<template #simpleSearchFormItem="{searchForm}">
<ElFormItem>
<ElInput v-model="searchForm.driverName" placeholder="司机姓名"/>
</ElFormItem>
<ElFormItem>
<ElInput v-model="searchForm.phone" placeholder="手机号"/>
</ElFormItem>
</template>
<template #columns>
<ElTableColumn label="司机名称" prop="driverName"/>
<ElTableColumn label="归属公司" prop="orgName"/>
@ -34,7 +42,7 @@
<ElTableColumn label="创建时间" prop="createTime"/>
<ElTableColumn label="修改时间" prop="modifyTime"/>
</template>
<DriverForm ref="driverForm" @edit-succ="research"/>
<DriverForm ref="driverForm" :research="research"/>
<DriverDetail ref="driverDetail" @edit-succ="research"/>
</FormPage>
</template>
@ -43,7 +51,8 @@
import DriverApi from '@/pages/cst/driver/driver-api.ts'
import DriverForm from '@/pages/cst/driver/DriverForm.vue'
import DriverDetail from '@/pages/cst/driver/DriverDetail.vue'
import FormPage, { type ActionColumnType } from '@/components/page/FormPage.vue'
import FormPage from '@/components/page/FormPage.vue'
import type { ActionColumnType } from '@/components/page/a-page-type.ts'
import type { ComponentExposed } from 'vue-component-type-helpers'
const driverDetailIns = useTemplateRef<InstanceType<typeof DriverDetail>>('driverDetail')

View File

@ -1,204 +1,137 @@
<template>
<ElDialog v-model="showDialog"
:close-on-click-modal="false"
destroy-on-close
width="fit-content"
@close="dialogCloseHandler">
<ElForm :model="formData"
:rules="rules"
ref="driverForm"
class="form-panel"
label-width="auto">
<ElFormItem label-width="90" label="Id" prop="id">
<ElInput
v-model="formData.id"
:disabled="status === 'view'"
placeholder="Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="归属用户 Idsys_user.id" prop="userId">
<ElInput
v-model="formData.userId"
:disabled="status === 'view'"
placeholder="归属用户 Idsys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="归属客户 Idcst_customer.id" prop="customerId">
<ElInput
v-model="formData.customerId"
:disabled="status === 'view'"
placeholder="归属客户 Idcst_customer.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="归属公司 Idcst_org.id" prop="orgId">
<ElInput
v-model="formData.orgId"
:disabled="status === 'view'"
placeholder="归属公司 Idcst_org.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="驾驶证编号" prop="drivingLicenceNo">
<ElInput
v-model="formData.drivingLicenceNo"
:disabled="status === 'view'"
placeholder="驾驶证编号"/>
</ElFormItem>
<ElFormItem label-width="90" label="司机姓名" prop="driverName">
<ElInput
v-model="formData.driverName"
:disabled="status === 'view'"
placeholder="司机姓名"/>
</ElFormItem>
<ElFormItem label-width="90" label="手机号" prop="phone">
<ElInput
v-model="formData.phone"
:disabled="status === 'view'"
placeholder="手机号"/>
</ElFormItem>
<ElFormItem label-width="90" label="驾驶证图片" prop="drivingLicence">
<ElInput
v-model="formData.drivingLicence"
:disabled="status === 'view'"
placeholder="驾驶证图片"/>
</ElFormItem>
<ElFormItem label-width="90" label="驾驶证有效期" prop="licenceStartTime">
<ElInput
v-model="formData.licenceStartTime"
:disabled="status === 'view'"
placeholder="驾驶证有效期"/>
</ElFormItem>
<ElFormItem label-width="90" label="驾驶证有效期" prop="licenceEndTime">
<ElInput
v-model="formData.licenceEndTime"
:disabled="status === 'view'"
placeholder="驾驶证有效期"/>
</ElFormItem>
<!-- <ElFormItem label-width="90" label="忙碌中" prop="busy">
<ElInput
v-model="formData.busy"
:disabled="status === 'view'"
placeholder="忙碌中"/>
</ElFormItem> -->
<ElFormItem label-width="90" label="创建人 Idsys_user.id" prop="creatorId">
<ElInput
v-model="formData.creatorId"
:disabled="status === 'view'"
placeholder="创建人 Idsys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="修改人 Id sys_user.id" prop="modifierId">
<ElInput
v-model="formData.modifierId"
:disabled="status === 'view'"
placeholder="修改人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="创建时间" prop="createTime">
<ElInput
v-model="formData.createTime"
:disabled="status === 'view'"
placeholder="创建时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="修改时间" prop="modifyTime">
<ElInput
v-model="formData.modifyTime"
:disabled="status === 'view'"
placeholder="修改时间"/>
</ElFormItem>
<!-- <ElFormItem label-width="90" label="是否删除" prop="deleted">
<ElInput
v-model="formData.deleted"
:disabled="status === 'view'"
placeholder="是否删除"/>
</ElFormItem> -->
</ElForm>
<template #footer>
<ElButton @click="showDialog = false">{{ status === 'view' ? '关闭' : '取消' }}</ElButton>
<ElButton v-if="status !== 'view'" :loading="submiting" type="primary" @click="submitHandler"></ElButton>
<AFormPanel
ref="formPanel"
:details-loader="detailsLoader"
:do-submit="doSubmit"
:rules="rules"
:title="status === 'add' ? '新建司机信息' : '修改司机信息'"
>
<template #default="{formData}">
<div class="form-items">
<ElFormItem label="Id" prop="id">
<ElInput
v-model="formData.id"
placeholder="Id"/>
</ElFormItem>
<ElFormItem label="归属用户 Idsys_user.id" prop="userId">
<ElInput
v-model="formData.userId"
placeholder="归属用户 Idsys_user.id"/>
</ElFormItem>
<ElFormItem label="归属客户 Idcst_customer.id" prop="customerId">
<ElInput
v-model="formData.customerId"
placeholder="归属客户 Idcst_customer.id"/>
</ElFormItem>
<ElFormItem label="归属公司 Idcst_org.id" prop="orgId">
<ElInput
v-model="formData.orgId"
placeholder="归属公司 Idcst_org.id"/>
</ElFormItem>
<ElFormItem label="驾驶证编号" prop="drivingLicenceNo">
<ElInput
v-model="formData.drivingLicenceNo"
placeholder="驾驶证编号"/>
</ElFormItem>
<ElFormItem label="司机姓名" prop="driverName">
<ElInput
v-model="formData.driverName"
placeholder="司机姓名"/>
</ElFormItem>
<ElFormItem label="手机号" prop="phone">
<ElInput
v-model="formData.phone"
placeholder="手机号"/>
</ElFormItem>
<ElFormItem label="驾驶证图片" prop="drivingLicence">
<ElInput
v-model="formData.drivingLicence"
placeholder="驾驶证图片"/>
</ElFormItem>
<ElFormItem label="驾驶证有效期" prop="licenceStartTime">
<ElInput
v-model="formData.licenceStartTime"
placeholder="驾驶证有效期"/>
</ElFormItem>
<ElFormItem label="驾驶证有效期" prop="licenceEndTime">
<ElInput
v-model="formData.licenceEndTime"
placeholder="驾驶证有效期"/>
</ElFormItem>
</div>
</template>
</ElDialog>
</AFormPanel>
</template>
<script lang="ts" setup>
import DriverApi from '@/pages/cst/driver/driver-api.ts'
import Strings from '@/common/utils/strings.ts'
import FormUtil from '@/common/utils/formUtil.ts'
import {
ElMessage,
type FormInstance,
type FormRules,
} from 'element-plus'
import { type FormRules } from 'element-plus'
import AFormPanel from '@/components/a-form-panel/AFormPanel.vue'
import type { ComponentExposed } from 'vue-component-type-helpers'
const emits = defineEmits(['editSucc'])
const showDialog = ref(false)
const submiting = ref(false)
const status = ref<'add' | 'view' | 'modify'>('add')
const driverFormIns = useTemplateRef<FormInstance>('driverForm')
const formData = ref<DriverTypes.SearchDriverResult>({})
const rules = reactive<FormRules<DriverTypes.SearchDriverResult>>({
id: [{ required: true, message: '请填写Id', trigger: 'blur' }],
userId: [{ required: true, message: '请填写归属用户 Idsys_user.id', trigger: 'blur' }],
customerId: [{ required: true, message: '请填写归属客户 Idcst_customer.id', trigger: 'blur' }],
orgId: [{ required: true, message: '请填写归属公司 Idcst_org.id', trigger: 'blur' }],
drivingLicenceNo: [{ required: true, message: '请填写驾驶证编号', trigger: 'blur' }],
driverName: [{ required: true, message: '请填写司机姓名', trigger: 'blur' }],
phone: [{ required: true, message: '请填写手机号', trigger: 'blur' }],
drivingLicence: [{ required: true, message: '请填写驾驶证图片', trigger: 'blur' }],
licenceStartTime: [{ required: true, message: '请填写驾驶证有效期', trigger: 'blur' }],
licenceEndTime: [{ required: true, message: '请填写驾驶证有效期', trigger: 'blur' }],
busy: [{ required: true, message: '请填写忙碌中', trigger: 'blur' }],
creatorId: [{ required: true, message: '请填写创建人 Idsys_user.id', trigger: 'blur' }],
modifierId: [{ required: true, message: '请填写修改人 Id sys_user.id', trigger: 'blur' }],
createTime: [{ required: true, message: '请填写创建时间', trigger: 'blur' }],
modifyTime: [{ required: true, message: '请填写修改时间', trigger: 'blur' }],
deleted: [{ required: true, message: '请填写是否删除', trigger: 'blur' }],
const props = withDefaults(defineProps<{
research?: () => void
}>(), {
research: () => {
},
})
const rules = reactive<FormRules<DriverTypes.SearchDriverResult>>({
id: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
userId: [ {required: true, message: '请填写归属用户 Idsys_user.id', trigger: 'blur'} ],
customerId: [ {required: true, message: '请填写归属客户 Idcst_customer.id', trigger: 'blur'} ],
orgId: [ {required: true, message: '请填写归属公司 Idcst_org.id', trigger: 'blur'} ],
drivingLicenceNo: [ {required: true, message: '请填写驾驶证编号', trigger: 'blur'} ],
driverName: [ {required: true, message: '请填写司机姓名', trigger: 'blur'} ],
phone: [ {required: true, message: '请填写手机号', trigger: 'blur'} ],
drivingLicence: [ {required: true, message: '请填写驾驶证图片', trigger: 'blur'} ],
licenceStartTime: [ {required: true, message: '请填写驾驶证有效期', trigger: 'blur'} ],
licenceEndTime: [ {required: true, message: '请填写驾驶证有效期', trigger: 'blur'} ],
busy: [ {required: true, message: '请填写忙碌中', trigger: 'blur'} ],
creatorId: [ {required: true, message: '请填写创建人 Idsys_user.id', trigger: 'blur'} ],
modifierId: [ {required: true, message: '请填写修改人 Id sys_user.id', trigger: 'blur'} ],
createTime: [ {required: true, message: '请填写创建时间', trigger: 'blur'} ],
modifyTime: [ {required: true, message: '请填写修改时间', trigger: 'blur'} ],
deleted: [ {required: true, message: '请填写是否删除', trigger: 'blur'} ],
})
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const status = ref<'add' | 'modify'>('add')
function dialogCloseHandler() {
formData.value = {}
function detailsLoader(id?: string) {
if (Strings.isBlank(id)) {
status.value = 'add'
return Promise.resolve()
} else {
status.value = 'modify'
return DriverApi
.detail(id!)
.then(res => res.data)
}
}
function submitHandler() {
if (status.value === 'view') return
submiting.value = true
if (formData.value.id != null) {
FormUtil.submit(driverFormIns, () => DriverApi.modify(formData.value))
.then(() => {
ElMessage.success('修改成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
function doSubmit(data: DriverTypes.SearchDriverResult) {
if (status.value === 'add') {
return DriverApi.add(data)
.then(props.research)
} else {
FormUtil.submit(driverFormIns, () => DriverApi.add(formData.value))
.then(() => {
ElMessage.success('添加成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
return DriverApi.modify(data)
.then(props.research)
}
}
defineExpose({
open(data: DriverTypes.SearchDriverResult = {}) {
showDialog.value = true
if (!Strings.isBlank(data.id)) {
status.value = 'modify'
DriverApi.detail(data.id!)
.then(res => {
formData.value = res.data
})
} else {
status.value = 'add'
formData.value = data
}
}
open(data?: DriverTypes.SearchDriverResult) {
formPanelIns.value?.open(data?.id)
},
})
</script>
<style lang="stylus" scoped>
.form-panel {
padding 20px
.form-items {
grid-template-columns: 1fr 1fr;
:deep(.el-form-item) {
}
}
</style>

View File

@ -7,8 +7,8 @@
<ElFormItem label="统一社会信用代码">
<ElInput v-model="searchForm.uscc" placeholder="统一社会信用代码"/>
</ElFormItem>
<ElFormItem label="组织名称">
<ElInput v-model="searchForm.orgName" placeholder="组织名称"/>
<ElFormItem label="企业名称">
<ElInput v-model="searchForm.orgName" placeholder="企业名称"/>
</ElFormItem>
<ElFormItem label="法人名称">
<ElInput v-model="searchForm.legalRepresentative" placeholder="法人名称"/>
@ -26,11 +26,19 @@
<ElInput v-model="searchForm.address" placeholder="详细地址"/>
</ElFormItem>
</template>
<template #simpleSearchFormItem="{searchForm}">
<ElFormItem>
<ElInput v-model="searchForm.uscc" placeholder="统一社会信用代码"/>
</ElFormItem>
<ElFormItem>
<ElInput v-model="searchForm.orgName" placeholder="企业名称"/>
</ElFormItem>
</template>
<template #columns>
<!-- GeTiHu-个体户QiYe--企业 -->
<ElTableColumn label="主体类型" prop="orgCategoryTxt"/>
<!-- <ElTableColumn label="统一社会信用代码" prop="uscc" /> -->
<ElTableColumn label="组织名称" prop="orgName" width="140"/>
<ElTableColumn label="企业名称" prop="orgName" width="140"/>
<ElTableColumn label="营业执照" width="100px">
<template #default="{ row }">
<el-image :preview-src-list="[AppApi.fileUrl(row.businessLicense)]" :src="AppApi.fileUrl(row.businessLicense)" preview-teleported show-progress style="width: 60px; height: 60px"/>
@ -60,7 +68,7 @@
<ElTableColumn label="创建时间" prop="createTime" width="140"/>
<ElTableColumn label="修改时间" prop="modifyTime" width="140"/>
</template>
<OrgForm ref="orgForm" @edit-succ="research"/>
<OrgForm ref="orgForm" :research="research"/>
</FormPage>
</template>
@ -68,7 +76,8 @@
import OrgApi from '@/pages/cst/org/org-api.ts'
import OrgForm from '@/pages/cst/org/OrgForm.vue'
import AppApi from '@/common/app/app-api.ts'
import FormPage, { type ActionColumnType } from '@/components/page/FormPage.vue'
import FormPage from '@/components/page/FormPage.vue'
import type { ActionColumnType } from '@/components/page/a-page-type.ts'
import type { ComponentExposed } from 'vue-component-type-helpers'
const formPageIns = useTemplateRef<ComponentExposed<typeof FormPage>>('formPage')

View File

@ -1,290 +1,242 @@
<template>
<ElDialog v-model="showDialog"
:close-on-click-modal="false"
destroy-on-close
width="fit-content"
@close="dialogCloseHandler">
<ElForm :model="formData"
:rules="rules"
ref="orgForm"
class="form-panel"
label-width="auto">
<ElFormItem label-width="90" label="Id" prop="id">
<ElInput
v-model="formData.id"
:disabled="status === 'view'"
placeholder="Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="主体类型GeTiHu-->个体户、QiYe-->企业" prop="orgCategory">
<ElInput
v-model="formData.orgCategory"
:disabled="status === 'view'"
placeholder="主体类型GeTiHu-->个体户、QiYe-->企业"/>
</ElFormItem>
<ElFormItem label-width="90" label="统一社会信用代码" prop="uscc">
<ElInput
v-model="formData.uscc"
:disabled="status === 'view'"
placeholder="统一社会信用代码"/>
</ElFormItem>
<ElFormItem label-width="90" label="组织名称" prop="orgName">
<ElInput
v-model="formData.orgName"
:disabled="status === 'view'"
placeholder="组织名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="营业执照" prop="businessLicense">
<ElInput
v-model="formData.businessLicense"
:disabled="status === 'view'"
placeholder="营业执照"/>
</ElFormItem>
<ElFormItem label-width="90" label="营业执照有效期" prop="licenseStartTime">
<ElInput
v-model="formData.licenseStartTime"
:disabled="status === 'view'"
placeholder="营业执照有效期"/>
</ElFormItem>
<ElFormItem label-width="90" label="营业执照有效期" prop="licenseEndTime">
<ElInput
v-model="formData.licenseEndTime"
:disabled="status === 'view'"
placeholder="营业执照有效期"/>
</ElFormItem>
<ElFormItem label-width="90" label="法人名称" prop="legalRepresentative">
<ElInput
v-model="formData.legalRepresentative"
:disabled="status === 'view'"
placeholder="法人名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="法人身份证号" prop="idcard">
<ElInput
v-model="formData.idcard"
:disabled="status === 'view'"
placeholder="法人身份证号"/>
</ElFormItem>
<ElFormItem label-width="90" label="法人身份证有效期" prop="idcardStartTime">
<ElInput
v-model="formData.idcardStartTime"
:disabled="status === 'view'"
placeholder="法人身份证有效期"/>
</ElFormItem>
<ElFormItem label-width="90" label="法人身份证有效期" prop="idcardEndTime">
<ElInput
v-model="formData.idcardEndTime"
:disabled="status === 'view'"
placeholder="法人身份证有效期"/>
</ElFormItem>
<ElFormItem label-width="90" label="法人身份证正面" prop="idcardFront">
<ElInput
v-model="formData.idcardFront"
:disabled="status === 'view'"
placeholder="法人身份证正面"/>
</ElFormItem>
<ElFormItem label-width="90" label="法人身份证反面" prop="idcardBack">
<ElInput
v-model="formData.idcardBack"
:disabled="status === 'view'"
placeholder="法人身份证反面"/>
</ElFormItem>
<ElFormItem label-width="90" label="省;代码" prop="province">
<ElInput
v-model="formData.province"
:disabled="status === 'view'"
placeholder="省;代码"/>
</ElFormItem>
<ElFormItem label-width="90" label="市;代码" prop="city">
<ElInput
v-model="formData.city"
:disabled="status === 'view'"
placeholder="市;代码"/>
</ElFormItem>
<ElFormItem label-width="90" label="区县;代码" prop="area">
<ElInput
v-model="formData.area"
:disabled="status === 'view'"
placeholder="区县;代码"/>
</ElFormItem>
<ElFormItem label-width="90" label="乡镇街道;代码" prop="town">
<ElInput
v-model="formData.town"
:disabled="status === 'view'"
placeholder="乡镇街道;代码"/>
</ElFormItem>
<ElFormItem label-width="90" label="省;名称" prop="provinceName">
<ElInput
v-model="formData.provinceName"
:disabled="status === 'view'"
placeholder="省;名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="市;名称" prop="cityName">
<ElInput
v-model="formData.cityName"
:disabled="status === 'view'"
placeholder="市;名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="区县;名称" prop="areaName">
<ElInput
v-model="formData.areaName"
:disabled="status === 'view'"
placeholder="区县;名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="乡镇街道;名称" prop="townName">
<ElInput
v-model="formData.townName"
:disabled="status === 'view'"
placeholder="乡镇街道;名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="详细地址" prop="address">
<ElInput
v-model="formData.address"
:disabled="status === 'view'"
placeholder="详细地址"/>
</ElFormItem>
<ElFormItem label-width="90" label="经度" prop="lng">
<ElInput
v-model="formData.lng"
:disabled="status === 'view'"
placeholder="经度"/>
</ElFormItem>
<ElFormItem label-width="90" label="纬度" prop="lat">
<ElInput
v-model="formData.lat"
:disabled="status === 'view'"
placeholder="纬度"/>
</ElFormItem>
<ElFormItem label-width="90" label="创建人 Id sys_user.id" prop="creatorId">
<ElInput
v-model="formData.creatorId"
:disabled="status === 'view'"
placeholder="创建人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="修改人 Id sys_user.id" prop="modifierId">
<ElInput
v-model="formData.modifierId"
:disabled="status === 'view'"
placeholder="修改人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="创建时间" prop="createTime">
<ElInput
v-model="formData.createTime"
:disabled="status === 'view'"
placeholder="创建时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="修改时间" prop="modifyTime">
<ElInput
v-model="formData.modifyTime"
:disabled="status === 'view'"
placeholder="修改时间"/>
</ElFormItem>
</ElForm>
<template #footer>
<ElButton @click="showDialog = false">{{ status === 'view' ? '关闭' : '取消' }}</ElButton>
<ElButton v-if="status !== 'view'" :loading="submiting" type="primary" @click="submitHandler"></ElButton>
<AFormPanel
ref="formPanel"
:details-loader="detailsLoader"
:do-submit="doSubmit"
:rules="rules"
:title="status === 'add' ? '新建企业信息' : '修改企业信息'"
>
<template #default="{formData}">
<div class="form-items">
<ElFormItem label="Id" prop="id">
<ElInput
v-model="formData.id"
placeholder="Id"/>
</ElFormItem>
<ElFormItem label="主体类型GeTiHu-->个体户、QiYe-->企业" prop="orgCategory">
<ElInput
v-model="formData.orgCategory"
placeholder="主体类型GeTiHu-->个体户、QiYe-->企业"/>
</ElFormItem>
<ElFormItem label="统一社会信用代码" prop="uscc">
<ElInput
v-model="formData.uscc"
placeholder="统一社会信用代码"/>
</ElFormItem>
<ElFormItem label="企业名称" prop="orgName">
<ElInput
v-model="formData.orgName"
placeholder="企业名称"/>
</ElFormItem>
<ElFormItem label="营业执照" prop="businessLicense">
<ElInput
v-model="formData.businessLicense"
placeholder="营业执照"/>
</ElFormItem>
<ElFormItem label="营业执照有效期" prop="licenseStartTime">
<ElInput
v-model="formData.licenseStartTime"
placeholder="营业执照有效期"/>
</ElFormItem>
<ElFormItem label="营业执照有效期" prop="licenseEndTime">
<ElInput
v-model="formData.licenseEndTime"
placeholder="营业执照有效期"/>
</ElFormItem>
<ElFormItem label="法人名称" prop="legalRepresentative">
<ElInput
v-model="formData.legalRepresentative"
placeholder="法人名称"/>
</ElFormItem>
<ElFormItem label="法人身份证号" prop="idcard">
<ElInput
v-model="formData.idcard"
placeholder="法人身份证号"/>
</ElFormItem>
<ElFormItem label="法人身份证有效期" prop="idcardStartTime">
<ElInput
v-model="formData.idcardStartTime"
placeholder="法人身份证有效期"/>
</ElFormItem>
<ElFormItem label="法人身份证有效期" prop="idcardEndTime">
<ElInput
v-model="formData.idcardEndTime"
placeholder="法人身份证有效期"/>
</ElFormItem>
<ElFormItem label="法人身份证正面" prop="idcardFront">
<ElInput
v-model="formData.idcardFront"
placeholder="法人身份证正面"/>
</ElFormItem>
<ElFormItem label="法人身份证反面" prop="idcardBack">
<ElInput
v-model="formData.idcardBack"
placeholder="法人身份证反面"/>
</ElFormItem>
<ElFormItem label="省;代码" prop="province">
<ElInput
v-model="formData.province"
placeholder="省;代码"/>
</ElFormItem>
<ElFormItem label="市;代码" prop="city">
<ElInput
v-model="formData.city"
placeholder="市;代码"/>
</ElFormItem>
<ElFormItem label="区县;代码" prop="area">
<ElInput
v-model="formData.area"
placeholder="区县;代码"/>
</ElFormItem>
<ElFormItem label="乡镇街道;代码" prop="town">
<ElInput
v-model="formData.town"
placeholder="乡镇街道;代码"/>
</ElFormItem>
<ElFormItem label="省;名称" prop="provinceName">
<ElInput
v-model="formData.provinceName"
placeholder="省;名称"/>
</ElFormItem>
<ElFormItem label="市;名称" prop="cityName">
<ElInput
v-model="formData.cityName"
placeholder="市;名称"/>
</ElFormItem>
<ElFormItem label="区县;名称" prop="areaName">
<ElInput
v-model="formData.areaName"
placeholder="区县;名称"/>
</ElFormItem>
<ElFormItem label="乡镇街道;名称" prop="townName">
<ElInput
v-model="formData.townName"
placeholder="乡镇街道;名称"/>
</ElFormItem>
<ElFormItem label="详细地址" prop="address">
<ElInput
v-model="formData.address"
placeholder="详细地址"/>
</ElFormItem>
<ElFormItem label="经度" prop="lng">
<ElInput
v-model="formData.lng"
placeholder="经度"/>
</ElFormItem>
<ElFormItem label="纬度" prop="lat">
<ElInput
v-model="formData.lat"
placeholder="纬度"/>
</ElFormItem>
<ElFormItem label="创建人 Id sys_user.id" prop="creatorId">
<ElInput
v-model="formData.creatorId"
placeholder="创建人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label="修改人 Id sys_user.id" prop="modifierId">
<ElInput
v-model="formData.modifierId"
placeholder="修改人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label="创建时间" prop="createTime">
<ElInput
v-model="formData.createTime"
placeholder="创建时间"/>
</ElFormItem>
<ElFormItem label="修改时间" prop="modifyTime">
<ElInput
v-model="formData.modifyTime"
placeholder="修改时间"/>
</ElFormItem>
</div>
</template>
</ElDialog>
</AFormPanel>
</template>
<script lang="ts" setup>
import OrgApi from '@/pages/cst/org/org-api.ts'
import Strings from '@/common/utils/strings.ts'
import FormUtil from '@/common/utils/formUtil.ts'
import Utils from '@/common/utils'
import {
ElMessage,
type FormInstance,
type FormRules,
} from 'element-plus'
import { type FormRules } from 'element-plus'
import AFormPanel from '@/components/a-form-panel/AFormPanel.vue'
import type { ComponentExposed } from 'vue-component-type-helpers'
import OrgApi from '@/pages/cst/org/org-api.ts'
const emits = defineEmits(['editSucc'])
const showDialog = ref(false)
const submiting = ref(false)
const status = ref<'add' | 'view' | 'modify'>('add')
const orgFormIns = useTemplateRef<FormInstance>('orgForm')
const formData = Utils.resetAble(reactive<any>({}))
const rules = reactive<FormRules<OrgTypes.SearchOrgResult>>({
id: [{ required: true, message: '请填写Id', trigger: 'blur' }],
orgCategory: [{ required: true, message: '请填写主体类型GeTiHu-->个体户、QiYe-->企业', trigger: 'blur' }],
uscc: [{ required: true, message: '请填写统一社会信用代码', trigger: 'blur' }],
orgName: [{ required: true, message: '请填写组织名称', trigger: 'blur' }],
businessLicense: [{ required: true, message: '请填写营业执照', trigger: 'blur' }],
licenseStartTime: [{ required: true, message: '请填写营业执照有效期', trigger: 'blur' }],
licenseEndTime: [{ required: true, message: '请填写营业执照有效期', trigger: 'blur' }],
legalRepresentative: [{ required: true, message: '请填写法人名称', trigger: 'blur' }],
idcard: [{ required: true, message: '请填写法人身份证号', trigger: 'blur' }],
idcardStartTime: [{ required: true, message: '请填写法人身份证有效期', trigger: 'blur' }],
idcardEndTime: [{ required: true, message: '请填写法人身份证有效期', trigger: 'blur' }],
idcardFront: [{ required: true, message: '请填写法人身份证正面', trigger: 'blur' }],
idcardBack: [{ required: true, message: '请填写法人身份证反面', trigger: 'blur' }],
province: [{ required: true, message: '请填写省;代码', trigger: 'blur' }],
city: [{ required: true, message: '请填写市;代码', trigger: 'blur' }],
area: [{ required: true, message: '请填写区县;代码', trigger: 'blur' }],
town: [{ required: true, message: '请填写乡镇街道;代码', trigger: 'blur' }],
provinceName: [{ required: true, message: '请填写省;名称', trigger: 'blur' }],
cityName: [{ required: true, message: '请填写市;名称', trigger: 'blur' }],
areaName: [{ required: true, message: '请填写区县;名称', trigger: 'blur' }],
townName: [{ required: true, message: '请填写乡镇街道;名称', trigger: 'blur' }],
address: [{ required: true, message: '请填写详细地址', trigger: 'blur' }],
lng: [{ required: true, message: '请填写经度', trigger: 'blur' }],
lat: [{ required: true, message: '请填写纬度', trigger: 'blur' }],
creatorId: [{ required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur' }],
modifierId: [{ required: true, message: '请填写修改人 Id sys_user.id', trigger: 'blur' }],
createTime: [{ required: true, message: '请填写创建时间', trigger: 'blur' }],
modifyTime: [{ required: true, message: '请填写修改时间', trigger: 'blur' }],
deleted: [{ required: true, message: '请填写是否删除; 0-->未删除、1-->已删除', trigger: 'blur' }],
id: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
orgCategory: [ {required: true, message: '请填写主体类型GeTiHu-->个体户、QiYe-->企业', trigger: 'blur'} ],
uscc: [ {required: true, message: '请填写统一社会信用代码', trigger: 'blur'} ],
orgName: [ {required: true, message: '请填写企业名称', trigger: 'blur'} ],
businessLicense: [ {required: true, message: '请填写营业执照', trigger: 'blur'} ],
licenseStartTime: [ {required: true, message: '请填写营业执照有效期', trigger: 'blur'} ],
licenseEndTime: [ {required: true, message: '请填写营业执照有效期', trigger: 'blur'} ],
legalRepresentative: [ {required: true, message: '请填写法人名称', trigger: 'blur'} ],
idcard: [ {required: true, message: '请填写法人身份证号', trigger: 'blur'} ],
idcardStartTime: [ {required: true, message: '请填写法人身份证有效期', trigger: 'blur'} ],
idcardEndTime: [ {required: true, message: '请填写法人身份证有效期', trigger: 'blur'} ],
idcardFront: [ {required: true, message: '请填写法人身份证正面', trigger: 'blur'} ],
idcardBack: [ {required: true, message: '请填写法人身份证反面', trigger: 'blur'} ],
province: [ {required: true, message: '请填写省;代码', trigger: 'blur'} ],
city: [ {required: true, message: '请填写市;代码', trigger: 'blur'} ],
area: [ {required: true, message: '请填写区县;代码', trigger: 'blur'} ],
town: [ {required: true, message: '请填写乡镇街道;代码', trigger: 'blur'} ],
provinceName: [ {required: true, message: '请填写省;名称', trigger: 'blur'} ],
cityName: [ {required: true, message: '请填写市;名称', trigger: 'blur'} ],
areaName: [ {required: true, message: '请填写区县;名称', trigger: 'blur'} ],
townName: [ {required: true, message: '请填写乡镇街道;名称', trigger: 'blur'} ],
address: [ {required: true, message: '请填写详细地址', trigger: 'blur'} ],
lng: [ {required: true, message: '请填写经度', trigger: 'blur'} ],
lat: [ {required: true, message: '请填写纬度', trigger: 'blur'} ],
creatorId: [ {required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur'} ],
modifierId: [ {required: true, message: '请填写修改人 Id sys_user.id', trigger: 'blur'} ],
createTime: [ {required: true, message: '请填写创建时间', trigger: 'blur'} ],
modifyTime: [ {required: true, message: '请填写修改时间', trigger: 'blur'} ],
deleted: [ {required: true, message: '请填写是否删除; 0-->未删除、1-->已删除', trigger: 'blur'} ],
})
function dialogCloseHandler() {
formData.$reset()
const props = withDefaults(defineProps<{
research?: () => void
}>(), {
research: () => {
},
})
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const status = ref<'add' | 'modify'>('add')
function detailsLoader(id?: string) {
if (Strings.isBlank(id)) {
status.value = 'add'
return Promise.resolve()
} else {
status.value = 'modify'
return OrgApi
.detail(id!)
.then(res => res.data)
}
}
function submitHandler() {
if (status.value === 'view') return
submiting.value = true
if (formData.id != null) {
FormUtil.submit(orgFormIns, () => OrgApi.modify(formData))
.then(() => {
ElMessage.success('修改成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
function doSubmit(data: OrgTypes.SearchOrgResult) {
if (status.value === 'add') {
return OrgApi.add(data)
.then(props.research)
} else {
FormUtil.submit(orgFormIns, () => OrgApi.add(formData))
.then(() => {
ElMessage.success('添加成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
return OrgApi.modify(data)
.then(props.research)
}
}
defineExpose({
open(data: any = {}) {
showDialog.value = true
if (!Strings.isBlank(data.id)) {
status.value = 'modify'
OrgApi.detail(data.id!)
.then(res => {
formData.$reset(res.data)
})
} else {
status.value = 'add'
formData.$reset(data)
}
}
open(data?: OrgTypes.SearchOrgResult) {
formPanelIns.value?.open(data?.id)
},
})
</script>
<style lang="stylus" scoped>
.form-panel {
padding 20px
.form-items {
grid-template-columns: 1fr 1fr;
:deep(.el-form-item) {
}
}
</style>

View File

@ -9,7 +9,7 @@ declare global {
orgCategory?: string
// 统一社会信用代码
uscc?: string
// 组织名称
// 企业名称
orgName?: string
// 营业执照
businessLicense?: string
@ -70,7 +70,7 @@ declare global {
orgCategory?: string
// 统一社会信用代码
uscc?: string
// 组织名称
// 企业名称
orgName?: string
// 营业执照
businessLicense?: string
@ -131,7 +131,7 @@ declare global {
orgCategory?: string
// 统一社会信用代码
uscc?: string
// 组织名称
// 企业名称
orgName?: string
// 营业执照
businessLicense?: string
@ -192,7 +192,7 @@ declare global {
orgCategory?: string
// 统一社会信用代码
uscc?: string
// 组织名称
// 企业名称
orgName?: string
// 营业执照
businessLicense?: string

View File

@ -25,11 +25,18 @@
placeholder="详细地址"/>
</ElFormItem>
</template>
<template #simpleSearchFormItem="{ searchForm }">
<ElFormItem>
<ElInput
v-model="searchForm.projectName"
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="transOrgInfo.orgName"/>
<ElTableColumn label="产废方/购买方企业" prop="fringeOrgInfo.orgName"/>
<!-- <ElTableColumn label="市" prop="cityName"/> -->
<ElTableColumn label="区县" prop="areaName"/>
<ElTableColumn label="乡镇街道" prop="townName"/>
@ -48,7 +55,8 @@
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, { type ActionColumnType } from '@/components/page/FormPage.vue'
import FormPage from '@/components/page/FormPage.vue'
import type { ActionColumnType } from '@/components/page/a-page-type.ts'
import type { ComponentExposed } from 'vue-component-type-helpers'
const formPageIns = useTemplateRef<ComponentExposed<typeof FormPage>>('formPage')

View File

@ -4,10 +4,10 @@
<el-descriptions-item label="项目名称">
{{ formData.projectName }}
</el-descriptions-item>
<el-descriptions-item label="运输方组织">
<el-descriptions-item label="运输方企业">
{{ formData?.transOrgInfo?.orgName }}
</el-descriptions-item>
<el-descriptions-item label="产废方/购买方组织">
<el-descriptions-item label="产废方/购买方企业">
{{ formData.fringeOrgInfo?.orgName }}
</el-descriptions-item>
<el-descriptions-item label="区县">

View File

@ -1,261 +1,192 @@
<template>
<ElDialog v-model="showDialog"
:close-on-click-modal="false"
destroy-on-close
width="fit-content"
@close="dialogCloseHandler">
<ElForm :model="formData"
:rules="rules"
ref="projectForm"
class="form-panel"
label-width="auto">
<ElFormItem label-width="90" label="Id" prop="id">
<ElInput
v-model="formData.id"
:disabled="status === 'view'"
placeholder="Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="项目名称" prop="projectName">
<ElInput
v-model="formData.projectName"
:disabled="status === 'view'"
placeholder="项目名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="合同图片" prop="contractPicture">
<ElInput
v-model="formData.contractPicture"
:disabled="status === 'view'"
placeholder="合同图片"/>
</ElFormItem>
<ElFormItem label-width="90" label="运输方客户 Id" prop="transCustomerId">
<ElInput
v-model="formData.transCustomerId"
:disabled="status === 'view'"
placeholder="运输方客户 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="运输方组织 Id" prop="transOrgId">
<ElInput
v-model="formData.transOrgId"
:disabled="status === 'view'"
placeholder="运输方组织 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="产废方/购买方客户 Id" prop="fringeCustomerId">
<ElInput
v-model="formData.fringeCustomerId"
:disabled="status === 'view'"
placeholder="产废方/购买方客户 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="产废方/购买方组织 Id" prop="fringeOrgId">
<ElInput
v-model="formData.fringeOrgId"
:disabled="status === 'view'"
placeholder="产废方/购买方组织 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="省;代码" prop="province">
<ElInput
v-model="formData.province"
:disabled="status === 'view'"
placeholder="省;代码"/>
</ElFormItem>
<ElFormItem label-width="90" label="市;代码" prop="city">
<ElInput
v-model="formData.city"
:disabled="status === 'view'"
placeholder="市;代码"/>
</ElFormItem>
<ElFormItem label-width="90" label="区县;代码" prop="area">
<ElInput
v-model="formData.area"
:disabled="status === 'view'"
placeholder="区县;代码"/>
</ElFormItem>
<ElFormItem label-width="90" label="乡镇街道;代码" prop="town">
<ElInput
v-model="formData.town"
:disabled="status === 'view'"
placeholder="乡镇街道;代码"/>
</ElFormItem>
<ElFormItem label-width="90" label="省;名称" prop="provinceName">
<ElInput
v-model="formData.provinceName"
:disabled="status === 'view'"
placeholder="省;名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="市;名称" prop="cityName">
<ElInput
v-model="formData.cityName"
:disabled="status === 'view'"
placeholder="市;名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="区县;名称" prop="areaName">
<ElInput
v-model="formData.areaName"
:disabled="status === 'view'"
placeholder="区县;名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="乡镇街道;名称" prop="townName">
<ElInput
v-model="formData.townName"
:disabled="status === 'view'"
placeholder="乡镇街道;名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="详细地址" prop="address">
<ElInput
v-model="formData.address"
:disabled="status === 'view'"
placeholder="详细地址"/>
</ElFormItem>
<ElFormItem label-width="90" label="经度" prop="lng">
<ElInput
v-model="formData.lng"
:disabled="status === 'view'"
placeholder="经度"/>
</ElFormItem>
<ElFormItem label-width="90" label="纬度" prop="lat">
<ElInput
v-model="formData.lat"
:disabled="status === 'view'"
placeholder="纬度"/>
</ElFormItem>
<ElFormItem label-width="90" label="合同有效期" prop="contractStartDate">
<ElInput
v-model="formData.contractStartDate"
:disabled="status === 'view'"
placeholder="合同有效期"/>
</ElFormItem>
<ElFormItem label-width="90" label="合同有效期" prop="contractEndDate">
<ElInput
v-model="formData.contractEndDate"
:disabled="status === 'view'"
placeholder="合同有效期"/>
</ElFormItem>
<ElFormItem label-width="90" label="创建人 Id sys_user.id" prop="creatorId">
<ElInput
v-model="formData.creatorId"
:disabled="status === 'view'"
placeholder="创建人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="修改人 Id sys_user.id" prop="modifierId">
<ElInput
v-model="formData.modifierId"
:disabled="status === 'view'"
placeholder="修改人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="创建时间" prop="createTime">
<ElInput
v-model="formData.createTime"
:disabled="status === 'view'"
placeholder="创建时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="修改时间" prop="modifyTime">
<ElInput
v-model="formData.modifyTime"
:disabled="status === 'view'"
placeholder="修改时间"/>
</ElFormItem>
</ElForm>
<template #footer>
<ElButton @click="showDialog = false">{{ status === 'view' ? '关闭' : '取消' }}</ElButton>
<ElButton v-if="status !== 'view'" :loading="submiting" type="primary" @click="submitHandler"></ElButton>
<AFormPanel
ref="formPanel"
:details-loader="detailsLoader"
:do-submit="doSubmit"
:rules="rules"
:title="status === 'add' ? '新建项目' : '修改项目'"
>
<template #default="{formData}">
<div class="form-items">
<ElFormItem label="项目名称" prop="projectName">
<ElInput
v-model="formData.projectName"
placeholder="项目名称"/>
</ElFormItem>
<ElFormItem label="合同图片" prop="contractPicture">
<ElInput
v-model="formData.contractPicture"
placeholder="合同图片"/>
</ElFormItem>
<ElFormItem label="运输方客户 Id" prop="transCustomerId">
<ElInput
v-model="formData.transCustomerId"
placeholder="运输方客户 Id"/>
</ElFormItem>
<ElFormItem label="运输方企业 Id" prop="transOrgId">
<ElInput
v-model="formData.transOrgId"
placeholder="运输方企业 Id"/>
</ElFormItem>
<ElFormItem label="产废方/购买方客户 Id" prop="fringeCustomerId">
<ElInput
v-model="formData.fringeCustomerId"
placeholder="产废方/购买方客户 Id"/>
</ElFormItem>
<ElFormItem label="产废方/购买方企业 Id" prop="fringeOrgId">
<ElInput
v-model="formData.fringeOrgId"
placeholder="产废方/购买方企业 Id"/>
</ElFormItem>
<ElFormItem label="省;代码" prop="province">
<ElInput
v-model="formData.province"
placeholder="省;代码"/>
</ElFormItem>
<ElFormItem label="市;代码" prop="city">
<ElInput
v-model="formData.city"
placeholder="市;代码"/>
</ElFormItem>
<ElFormItem label="区县;代码" prop="area">
<ElInput
v-model="formData.area"
placeholder="区县;代码"/>
</ElFormItem>
<ElFormItem label="乡镇街道;代码" prop="town">
<ElInput
v-model="formData.town"
placeholder="乡镇街道;代码"/>
</ElFormItem>
<ElFormItem label="省;名称" prop="provinceName">
<ElInput
v-model="formData.provinceName"
placeholder="省;名称"/>
</ElFormItem>
<ElFormItem label="市;名称" prop="cityName">
<ElInput
v-model="formData.cityName"
placeholder="市;名称"/>
</ElFormItem>
<ElFormItem label="区县;名称" prop="areaName">
<ElInput
v-model="formData.areaName"
placeholder="区县;名称"/>
</ElFormItem>
<ElFormItem label="乡镇街道;名称" prop="townName">
<ElInput
v-model="formData.townName"
placeholder="乡镇街道;名称"/>
</ElFormItem>
<ElFormItem label="详细地址" prop="address">
<ElInput
v-model="formData.address"
placeholder="详细地址"/>
</ElFormItem>
<ElFormItem label="经度" prop="lng">
<ElInput
v-model="formData.lng"
placeholder="经度"/>
</ElFormItem>
<ElFormItem label="纬度" prop="lat">
<ElInput
v-model="formData.lat"
placeholder="纬度"/>
</ElFormItem>
<ElFormItem label="合同有效期" prop="contractStartDate">
<ElInput
v-model="formData.contractStartDate"
placeholder="合同有效期"/>
</ElFormItem>
<ElFormItem label="合同有效期" prop="contractEndDate">
<ElInput
v-model="formData.contractEndDate"
placeholder="合同有效期"/>
</ElFormItem>
</div>
</template>
</ElDialog>
</AFormPanel>
</template>
<script lang="ts" setup>
import ProjectApi from '@/pages/cst/project/project-api.ts'
import Strings from '@/common/utils/strings.ts'
import FormUtil from '@/common/utils/formUtil.ts'
import {
ElMessage,
type FormInstance,
type FormRules,
} from 'element-plus'
import { type FormRules } from 'element-plus'
import AFormPanel from '@/components/a-form-panel/AFormPanel.vue'
import type { ComponentExposed } from 'vue-component-type-helpers'
const emits = defineEmits(['editSucc'])
const showDialog = ref(false)
const submiting = ref(false)
const status = ref<'add' | 'view' | 'modify'>('add')
const projectFormIns = useTemplateRef<FormInstance>('projectForm')
const formData = ref<ProjectTypes.SearchProjectResult>({})
const rules = reactive<FormRules<ProjectTypes.SearchProjectResult>>({
id: [{ required: true, message: '请填写Id', trigger: 'blur' }],
projectName: [{ required: true, message: '请填写项目名称', trigger: 'blur' }],
contractPicture: [{ required: true, message: '请填写合同图片', trigger: 'blur' }],
transCustomerId: [{ required: true, message: '请填写运输方客户 Id', trigger: 'blur' }],
transOrgId: [{ required: true, message: '请填写运输方组织 Id', trigger: 'blur' }],
fringeCustomerId: [{ required: true, message: '请填写产废方/购买方客户 Id', trigger: 'blur' }],
fringeOrgId: [{ required: true, message: '请填写产废方/购买方组织 Id', trigger: 'blur' }],
province: [{ required: true, message: '请填写省;代码', trigger: 'blur' }],
city: [{ required: true, message: '请填写市;代码', trigger: 'blur' }],
area: [{ required: true, message: '请填写区县;代码', trigger: 'blur' }],
town: [{ required: true, message: '请填写乡镇街道;代码', trigger: 'blur' }],
provinceName: [{ required: true, message: '请填写省;名称', trigger: 'blur' }],
cityName: [{ required: true, message: '请填写市;名称', trigger: 'blur' }],
areaName: [{ required: true, message: '请填写区县;名称', trigger: 'blur' }],
townName: [{ required: true, message: '请填写乡镇街道;名称', trigger: 'blur' }],
address: [{ required: true, message: '请填写详细地址', trigger: 'blur' }],
lng: [{ required: true, message: '请填写经度', trigger: 'blur' }],
lat: [{ required: true, message: '请填写纬度', trigger: 'blur' }],
contractStartDate: [{ required: true, message: '请填写合同有效期', trigger: 'blur' }],
contractEndDate: [{ required: true, message: '请填写合同有效期', trigger: 'blur' }],
creatorId: [{ required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur' }],
modifierId: [{ required: true, message: '请填写修改人 Id sys_user.id', trigger: 'blur' }],
createTime: [{ required: true, message: '请填写创建时间', trigger: 'blur' }],
modifyTime: [{ required: true, message: '请填写修改时间', trigger: 'blur' }],
deleted: [{ required: true, message: '请填写是否删除; 0-->未删除、1-->已删除', trigger: 'blur' }],
id: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
projectName: [ {required: true, message: '请填写项目名称', trigger: 'blur'} ],
contractPicture: [ {required: true, message: '请填写合同图片', trigger: 'blur'} ],
transCustomerId: [ {required: true, message: '请填写运输方客户 Id', trigger: 'blur'} ],
transOrgId: [ {required: true, message: '请填写运输方企业 Id', trigger: 'blur'} ],
fringeCustomerId: [ {required: true, message: '请填写产废方/购买方客户 Id', trigger: 'blur'} ],
fringeOrgId: [ {required: true, message: '请填写产废方/购买方企业 Id', trigger: 'blur'} ],
province: [ {required: true, message: '请填写省;代码', trigger: 'blur'} ],
city: [ {required: true, message: '请填写市;代码', trigger: 'blur'} ],
area: [ {required: true, message: '请填写区县;代码', trigger: 'blur'} ],
town: [ {required: true, message: '请填写乡镇街道;代码', trigger: 'blur'} ],
provinceName: [ {required: true, message: '请填写省;名称', trigger: 'blur'} ],
cityName: [ {required: true, message: '请填写市;名称', trigger: 'blur'} ],
areaName: [ {required: true, message: '请填写区县;名称', trigger: 'blur'} ],
townName: [ {required: true, message: '请填写乡镇街道;名称', trigger: 'blur'} ],
address: [ {required: true, message: '请填写详细地址', trigger: 'blur'} ],
lng: [ {required: true, message: '请填写经度', trigger: 'blur'} ],
lat: [ {required: true, message: '请填写纬度', trigger: 'blur'} ],
contractStartDate: [ {required: true, message: '请填写合同有效期', trigger: 'blur'} ],
contractEndDate: [ {required: true, message: '请填写合同有效期', trigger: 'blur'} ],
creatorId: [ {required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur'} ],
modifierId: [ {required: true, message: '请填写修改人 Id sys_user.id', trigger: 'blur'} ],
createTime: [ {required: true, message: '请填写创建时间', trigger: 'blur'} ],
modifyTime: [ {required: true, message: '请填写修改时间', trigger: 'blur'} ],
deleted: [ {required: true, message: '请填写是否删除; 0-->未删除、1-->已删除', trigger: 'blur'} ],
})
function dialogCloseHandler() {
formData.value = {}
const props = withDefaults(defineProps<{
research?: () => void
}>(), {
research: () => {
},
})
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const status = ref<'add' | 'modify'>('add')
function detailsLoader(id?: string) {
if (Strings.isBlank(id)) {
status.value = 'add'
return Promise.resolve()
} else {
status.value = 'modify'
return ProjectApi
.detail(id!)
.then(res => res.data)
}
}
function submitHandler() {
if (status.value === 'view') return
submiting.value = true
if (formData.value.id != null) {
FormUtil.submit(projectFormIns, () => ProjectApi.modify(formData.value))
.then(() => {
ElMessage.success('修改成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
function doSubmit(data: ProjectTypes.SearchProjectResult) {
if (status.value === 'add') {
return ProjectApi.add(data)
.then(props.research)
} else {
FormUtil.submit(projectFormIns, () => ProjectApi.add(formData.value))
.then(() => {
ElMessage.success('添加成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
return ProjectApi.modify(data)
.then(props.research)
}
}
defineExpose({
open(data: ProjectTypes.SearchProjectResult = {}) {
showDialog.value = true
if (!Strings.isBlank(data.id)) {
status.value = 'modify'
ProjectApi.detail(data.id!)
.then(res => {
formData.value = res.data
})
} else {
status.value = 'add'
formData.value = data
}
}
open(data?: ProjectTypes.SearchProjectResult) {
formPanelIns.value?.open(data?.id)
},
})
</script>
<style lang="stylus" scoped>
.form-panel {
padding 20px
.form-items {
grid-template-columns: 1fr 1fr;
:deep(.el-form-item) {
}
}
</style>

View File

@ -12,11 +12,11 @@ declare global {
contractPicture?: string;
// 运输方客户 Id
transCustomerId?: string;
// 运输方组织 Id
// 运输方企业 Id
transOrgId?: string;
// 产废方/购买方客户 Id
fringeCustomerId?: string;
// 产废方/购买方组织 Id
// 产废方/购买方企业 Id
fringeOrgId?: string;
// 省;代码
province?: string;
@ -65,11 +65,11 @@ declare global {
contractPicture?: string
// 运输方客户 Id
transCustomerId?: string
// 运输方组织 Id
// 运输方企业 Id
transOrgId?: string
// 产废方/购买方客户 Id
fringeCustomerId?: string
// 产废方/购买方组织 Id
// 产废方/购买方企业 Id
fringeOrgId?: string
// 省;代码
province?: string
@ -118,11 +118,11 @@ declare global {
contractPicture?: string
// 运输方客户 Id
transCustomerId?: string
// 运输方组织 Id
// 运输方企业 Id
transOrgId?: string
// 产废方/购买方客户 Id
fringeCustomerId?: string
// 产废方/购买方组织 Id
// 产废方/购买方企业 Id
fringeOrgId?: string
// 省;代码
province?: string
@ -171,11 +171,11 @@ declare global {
contractPicture?: string
// 运输方客户 Id
transCustomerId?: string
// 运输方组织 Id
// 运输方企业 Id
transOrgId?: string
// 产废方/购买方客户 Id
fringeCustomerId?: string
// 产废方/购买方组织 Id
// 产废方/购买方企业 Id
fringeOrgId?: string
// 省;代码
province?: string

View File

@ -69,7 +69,7 @@
<ElTableColumn label="创建时间" prop="createTime" width="170px"/>
<ElTableColumn label="修改时间" prop="modifyTime" width="170px"/>
</template>
<StationForm ref="stationForm" @edit-succ="research"/>
<StationForm ref="stationForm" :research="research"/>
</FormPage>
</template>

View File

@ -1,238 +1,126 @@
<template>
<!-- destroy-on-close -->
<ElDialog v-model="showDialog" :close-on-click-modal="false" width="fit-content" @close="dialogCloseHandler">
<ElForm :model="formData" :rules="rules" ref="stationForm" class="form-panel" label-width="auto" style="width: 600px">
<AFormPanel
ref="formPanel"
:details-loader="detailsLoader"
:do-submit="doSubmit"
:rules="rules"
:title="status === 'add' ? '新建站点' : '修改站点'"
>
<template #default="{formData}">
<div class="form-items">
<ElFormItem label="企业信息 Id" prop="orgId">
<ElFormItem label-width="90" label="组织信息 Id" prop="orgId">
<!-- <ElInput v-model="formData.orgId" :disabled="status === 'view'" placeholder="组织信息 Id" /> -->
</ElFormItem>
<ElFormItem label="站点名称" prop="stationName">
<ElInput v-model="formData.stationName" placeholder="站点名称"/>
</ElFormItem>
<!-- <ElFormItem label="省;代码" prop="province">
<ElInput v-model="formData.province" placeholder="省;代码" />
</ElFormItem>
<ElFormItem label="市;代码" prop="city">
<ElInput v-model="formData.city" placeholder="市;代码" />
</ElFormItem>
<ElFormItem label="区县;代码" prop="area">
<ElInput v-model="formData.area" placeholder="区县;代码" />
</ElFormItem>
<ElFormItem label="乡镇街道;代码" prop="town">
<ElInput v-model="formData.town" placeholder="乡镇街道;代码" />
</ElFormItem> -->
<ElFormItem label="详细地址" prop="address">
</ElFormItem>
<ElFormItem label="省" prop="provinceName">
<ElInput v-model="formData.provinceName" placeholder="省"/>
</ElFormItem>
<ElFormItem label="市" prop="cityName">
<ElInput v-model="formData.cityName" placeholder="市"/>
</ElFormItem>
<ElFormItem label="区县" prop="areaName">
<ElInput v-model="formData.areaName" placeholder="区县"/>
</ElFormItem>
<ElFormItem label="乡镇街道" prop="townName">
<ElInput v-model="formData.townName" placeholder="乡镇街道"/>
</ElFormItem>
<el-select v-model="formData.orgId" :disabled="status === 'view'" placeholder="产品类型" filterable remote reserve-keyword remote-show-suffix :remote-method="remoteOrg" :loading="loadingOrg">
<el-option v-for="item in orgList" :key="item.id" :label="item.orgName" :value="item.id" />
</el-select>
</ElFormItem>
<ElFormItem label-width="90" label="站点名称" prop="stationName">
<ElInput v-model="formData.stationName" :disabled="status === 'view'" placeholder="站点名称" />
</ElFormItem>
<!-- <ElFormItem label-width="90" label="省;代码" prop="province">
<ElInput v-model="formData.province" :disabled="status === 'view'" placeholder="省;代码" />
</ElFormItem>
<ElFormItem label-width="90" label="市;代码" prop="city">
<ElInput v-model="formData.city" :disabled="status === 'view'" placeholder="市;代码" />
</ElFormItem>
<ElFormItem label-width="90" label="区县;代码" prop="area">
<ElInput v-model="formData.area" :disabled="status === 'view'" placeholder="区县;代码" />
</ElFormItem>
<ElFormItem label-width="90" label="乡镇街道;代码" prop="town">
<ElInput v-model="formData.town" :disabled="status === 'view'" placeholder="乡镇街道;代码" />
</ElFormItem> -->
<ElFormItem label-width="90" label="详细地址" prop="address">
<el-select v-model="formData.address" :disabled="status === 'view'" placeholder="详细地址" filterable remote reserve-keyword remote-show-suffix :remote-method="remoteMethod" @change="addressChange" :loading="loading">
<el-option v-for="item in addList" :key="item.id" :label="item.address" :value="item.address" />
</el-select>
</ElFormItem>
<ElFormItem label-width="90" label="省" prop="provinceName">
<ElInput v-model="formData.provinceName" :disabled="status === 'view'" placeholder="省" />
</ElFormItem>
<ElFormItem label-width="90" label="市" prop="cityName">
<ElInput v-model="formData.cityName" :disabled="status === 'view'" placeholder="市" />
</ElFormItem>
<ElFormItem label-width="90" label="区县" prop="areaName">
<ElInput v-model="formData.areaName" :disabled="status === 'view'" placeholder="区县" />
</ElFormItem>
<ElFormItem label-width="90" label="乡镇街道" prop="townName">
<ElInput v-model="formData.townName" :disabled="status === 'view'" placeholder="乡镇街道" />
</ElFormItem>
<ElFormItem label="经度" prop="lng">
<ElInput v-model="formData.lng" placeholder="经度"/>
</ElFormItem>
<ElFormItem label="纬度" prop="lat">
<ElInput v-model="formData.lat" placeholder="纬度"/>
</ElFormItem>
<ElFormItem label-width="90" label="经度" prop="lng">
<ElInput v-model="formData.lng" :disabled="status === 'view'" placeholder="经度" />
</ElFormItem>
<ElFormItem label-width="90" label="纬度" prop="lat">
<ElInput v-model="formData.lat" :disabled="status === 'view'" placeholder="纬度" />
</ElFormItem>
</ElForm>
<div id="container" style="width: 100%; height: 400px"></div>
<div id="container" style="width: 100%; height: 400px"></div>
<template #footer>
<ElButton @click="showDialog = false">{{ status === "view" ? "关闭" : "取消" }}</ElButton>
<ElButton v-if="status !== 'view'" :loading="submiting" type="primary" @click="submitHandler"></ElButton>
</div>
</template>
</ElDialog>
</AFormPanel>
</template>
<script lang="ts" setup>
import StationApi from "@/pages/cst/station/station-api.ts";
import Strings from "@/common/utils/strings.ts";
import FormUtil from "@/common/utils/formUtil.ts";
import Utils from "@/common/utils";
import { ElMessage, type FormInstance, type FormRules } from "element-plus";
import { geocoder, init, latLng, marker, search } from "./map.ts";
import OrgApi from "@/pages/cst/org/org-api.ts";
import StationApi from '@/pages/cst/station/station-api.ts'
import Strings from '@/common/utils/strings.ts'
import { type FormRules } from 'element-plus'
import AFormPanel from '@/components/a-form-panel/AFormPanel.vue'
import type { ComponentExposed } from 'vue-component-type-helpers'
const emits = defineEmits(["editSucc"]);
const showDialog = ref(false);
const submiting = ref(false);
const status = ref<"add" | "view" | "modify">("add");
const props = withDefaults(defineProps<{
research?: () => void
}>(), {
research: () => {
},
})
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const status = ref<'add' | 'modify'>('add')
const stationFormIns = useTemplateRef<FormInstance>("stationForm");
const formData = Utils.resetAble(reactive<StationTypes.SearchStationResult>({}));
const rules = reactive<FormRules<StationTypes.SearchStationResult>>({
id: [{ required: true, message: "请填写Id", trigger: "blur" }],
orgId: [{ required: true, message: "请填写组织信息 Id", trigger: "blur" }],
stationName: [{ required: true, message: "请填写站点名称", trigger: "blur" }],
province: [{ required: true, message: "请填写省;代码", trigger: "blur" }],
city: [{ required: true, message: "请填写市;代码", trigger: "blur" }],
area: [{ required: true, message: "请填写区县;代码", trigger: "blur" }],
town: [{ required: true, message: "请填写乡镇街道;代码", trigger: "blur" }],
provinceName: [{ required: true, message: "请填写省", trigger: "blur" }],
cityName: [{ required: true, message: "请填写市", trigger: "blur" }],
areaName: [{ required: true, message: "请填写区县", trigger: "blur" }],
townName: [{ required: true, message: "请填写乡镇街道", trigger: "blur" }],
address: [{ required: true, message: "请填写详细地址", trigger: "blur" }],
lng: [{ required: true, message: "请填写经度", trigger: "blur" }],
lat: [{ required: true, message: "请填写纬度", trigger: "blur" }],
creatorId: [{ required: true, message: "请填写创建人", trigger: "blur" }],
modifierId: [{ required: true, message: "请填写修改人", trigger: "blur" }],
createTime: [{ required: true, message: "请填写创建时间", trigger: "blur" }],
modifyTime: [{ required: true, message: "请填写修改时间", trigger: "blur" }],
deleted: [{ required: true, message: "请填写是否删除", trigger: "blur" }],
});
id: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
orgId: [ {required: true, message: '请填写企业信息 Id', trigger: 'blur'} ],
stationName: [ {required: true, message: '请填写站点名称', trigger: 'blur'} ],
province: [ {required: true, message: '请填写省;代码', trigger: 'blur'} ],
city: [ {required: true, message: '请填写市;代码', trigger: 'blur'} ],
area: [ {required: true, message: '请填写区县;代码', trigger: 'blur'} ],
town: [ {required: true, message: '请填写乡镇街道;代码', trigger: 'blur'} ],
provinceName: [ {required: true, message: '请填写省', trigger: 'blur'} ],
cityName: [ {required: true, message: '请填写市', trigger: 'blur'} ],
areaName: [ {required: true, message: '请填写区县', trigger: 'blur'} ],
townName: [ {required: true, message: '请填写乡镇街道', trigger: 'blur'} ],
address: [ {required: true, message: '请填写详细地址', trigger: 'blur'} ],
lng: [ {required: true, message: '请填写经度', trigger: 'blur'} ],
lat: [ {required: true, message: '请填写纬度', trigger: 'blur'} ],
creatorId: [ {required: true, message: '请填写创建人', trigger: 'blur'} ],
modifierId: [ {required: true, message: '请填写修改人', trigger: 'blur'} ],
createTime: [ {required: true, message: '请填写创建时间', trigger: 'blur'} ],
modifyTime: [ {required: true, message: '请填写修改时间', trigger: 'blur'} ],
deleted: [ {required: true, message: '请填写是否删除', trigger: 'blur'} ],
})
function dialogCloseHandler() {
formData.$reset();
if (markers) {
markers.setMap(null);
markers = null;
}
}
function submitHandler() {
if (status.value === "view") return;
submiting.value = true;
if (formData.id != null) {
FormUtil.submit(stationFormIns, () => StationApi.modify(formData))
.then(() => {
ElMessage.success("修改成功");
emits("editSucc");
showDialog.value = false;
})
.finally(() => {
submiting.value = false;
});
function detailsLoader(id?: string) {
if (Strings.isBlank(id)) {
status.value = 'add'
return Promise.resolve()
} else {
FormUtil.submit(stationFormIns, () => StationApi.add(formData))
.then(() => {
ElMessage.success("添加成功");
emits("editSucc");
showDialog.value = false;
})
.finally(() => {
submiting.value = false;
});
status.value = 'modify'
return StationApi
.detail(id!)
.then(res => res.data)
}
}
let map: any;
let markers: any;
const getDetail = (latLng: string) => {
if (markers) {
markers.setMap(null);
markers = null;
function doSubmit(data: ProjectTypes.SearchProjectResult) {
if (status.value === 'add') {
return StationApi.add(data)
.then(props.research)
} else {
return StationApi.modify(data)
.then(props.research)
}
markers = marker(map, latLng);
map.easeTo({ zoom: 13, center: latLng }, { duration: 1000 });
geocoder(latLng)
.getAddress({
location: latLng,
})
.then((res: any) => {
// address.value = res.result.formatted_addresses.standard_address
let res1 = res.result;
formData.address = res1.formatted_addresses.standard_address;
formData.area = res1.ad_info.adcode;
formData.areaName = res1.ad_info.district;
formData.city = res1.ad_info.city_code;
formData.cityName = res1.ad_info.city;
formData.province = "340000";
formData.provinceName = "安徽省";
formData.lat = res1.location.lat;
formData.lng = res1.location.lng;
formData.town = res1.address_reference.town.id;
formData.townName = res1.address_reference.town.title;
console.log(formData, "formData");
});
};
const orgList = ref<OrgTypes.SearchOrgResult[]>([]);
const loadingOrg = ref(false);
const remoteOrg = (query: string) => {
loading.value = true;
OrgApi.paging({ size: 50, orgName: query || undefined }).then((res) => {
orgList.value = res.data.records;
loadingOrg.value = false;
// category.value = list.value.filter((item) => {
// return item.label.toLowerCase().includes(query.toLowerCase())
// })
});
// } else {
// category.value = [];
// }
};
const loading = ref(false);
const addList = ref<any>([]);
const remoteMethod = (query: string) => {
if (query) {
loading.value = true;
search()
.searchRectangle({
keyword: query,
bounds: map.getBounds(),
})
.then((res: any) => {
addList.value = res.data;
loading.value = false;
});
}
};
let addressChange = (e: string) => {
console.log(e, "eee");
if (addList.value) {
let item = addList.value.find((add: any) => (add.address == e));
if (item) getDetail(latLng(item.location.lat, item.location.lng));
}
};
}
defineExpose({
open(data: StationTypes.SearchStationResult = {}) {
showDialog.value = true;
if (!Strings.isBlank(data.id)) {
status.value = "modify";
StationApi.detail(data.id!).then((res) => {
formData.$reset(res.data);
});
} else {
status.value = "add";
formData.$reset(data);
}
setTimeout(() => {
if (!map) {
map = init("container");
map.on("click", (evt: any) => {
getDetail(evt.latLng);
});
}
}, 50);
open(data?: ProjectTypes.SearchProjectResult) {
formPanelIns.value?.open(data?.id)
},
});
})
</script>
<style lang="stylus" scoped>

View File

@ -5,7 +5,7 @@ declare global {
interface SearchStationParam extends G.PageParam {
// Id
id?: string
// 组织信息 Id
// 企业信息 Id
orgId?: string
// 站点名称
stationName?: string
@ -46,7 +46,7 @@ declare global {
interface SearchStationResult {
// Id
id?: string
// 组织信息 Id
// 企业信息 Id
orgId?: string
// 站点名称
stationName?: string
@ -87,7 +87,7 @@ declare global {
interface AddStationParam {
// Id
id?: string
// 组织信息 Id
// 企业信息 Id
orgId?: string
// 站点名称
stationName?: string
@ -128,7 +128,7 @@ declare global {
interface ModifyStationParam {
// Id
id?: string
// 组织信息 Id
// 企业信息 Id
orgId?: string
// 站点名称
stationName?: string

View File

@ -50,7 +50,7 @@
</ElTableColumn>
<ElTableColumn label="创建时间" prop="createTime" width="100px"/>
</template>
<TruckForm ref="truckForm" @edit-succ="research"/>
<TruckForm ref="truckForm" :research="research"/>
<TruckDetail ref="truckDetail"/>
</FormPage>
</template>
@ -60,7 +60,8 @@ import TruckApi from '@/pages/cst/truck/truck-api.ts'
import TruckForm from '@/pages/cst/truck/TruckForm.vue'
import TruckDetail from '@/pages/cst/truck/TruckDetail.vue'
import AppApi from '@/common/app/app-api.ts'
import FormPage, { type ActionColumnType } from '@/components/page/FormPage.vue'
import FormPage from '@/components/page/FormPage.vue'
import type { ActionColumnType } from '@/components/page/a-page-type.ts'
import type { ComponentExposed } from 'vue-component-type-helpers'
const truckDetailIns = useTemplateRef<InstanceType<typeof TruckDetail>>('truckDetail')

View File

@ -75,7 +75,7 @@ const formData = ref<TruckTypes.SearchTruckResult>({});
// const rules = reactive<FormRules<TruckTypes.SearchTruckResult>>({
// id: [{ required: true, message: "Id", trigger: "blur" }],
// customerId: [{ required: true, message: " Idcst_customer.id", trigger: "blur" }],
// orgId: [{ required: true, message: "", trigger: "blur" }],
// orgId: [{ required: true, message: "", trigger: "blur" }],
// licensePlate: [{ required: true, message: "", trigger: "blur" }],
// truckLicense: [{ required: true, message: "", trigger: "blur" }],
// vnCode: [{ required: true, message: "", trigger: "blur" }],

View File

@ -1,233 +1,163 @@
<template>
<ElDialog v-model="showDialog"
:close-on-click-modal="false"
destroy-on-close
width="fit-content"
@close="dialogCloseHandler">
<ElForm :model="formData"
:rules="rules"
ref="truckForm"
class="form-panel"
label-width="auto">
<ElFormItem label-width="90" label="Id" prop="id">
<ElInput
v-model="formData.id"
:disabled="status === 'view'"
placeholder="Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="归属客户" prop="customerId">
<ElInput
v-model="formData.customerId"
:disabled="status === 'view'"
placeholder="归属客户"/>
</ElFormItem>
<ElFormItem label-width="90" label="归属组织" prop="orgId">
<ElInput
v-model="formData.orgId"
:disabled="status === 'view'"
placeholder="归属组织"/>
</ElFormItem>
<ElFormItem label-width="90" label="车牌" prop="licensePlate">
<ElInput
v-model="formData.licensePlate"
:disabled="status === 'view'"
placeholder="车牌"/>
</ElFormItem>
<ElFormItem label-width="90" label="行驶证图片" prop="truckLicense">
<ElInput
v-model="formData.truckLicense"
:disabled="status === 'view'"
placeholder="行驶证图片"/>
</ElFormItem>
<ElFormItem label-width="90" label="车架号" prop="vnCode">
<ElInput
v-model="formData.vnCode"
:disabled="status === 'view'"
placeholder="车架号"/>
</ElFormItem>
<ElFormItem label-width="90" label="合格证图片" prop="qualification">
<ElInput
v-model="formData.qualification"
:disabled="status === 'view'"
placeholder="合格证图片"/>
</ElFormItem>
<ElFormItem label-width="90" label="最大载重;单位:千克" prop="carryingCapacity">
<ElInput
v-model="formData.carryingCapacity"
:disabled="status === 'view'"
placeholder="最大载重;单位:千克"/>
</ElFormItem>
<ElFormItem label-width="90" label="皮重;单位:千克" prop="tareWeight">
<ElInput
v-model="formData.tareWeight"
:disabled="status === 'view'"
placeholder="皮重;单位:千克"/>
</ElFormItem>
<ElFormItem label-width="90" label="行驶证有效期" prop="licenseStartDate">
<ElInput
v-model="formData.licenseStartDate"
:disabled="status === 'view'"
placeholder="行驶证有效期"/>
</ElFormItem>
<ElFormItem label-width="90" label="行驶证有效期" prop="licenseEndDate">
<ElInput
v-model="formData.licenseEndDate"
:disabled="status === 'view'"
placeholder="行驶证有效期"/>
</ElFormItem>
<ElFormItem label-width="90" label="合格证有效期" prop="qualificationStartDate">
<ElInput
v-model="formData.qualificationStartDate"
:disabled="status === 'view'"
placeholder="合格证有效期"/>
</ElFormItem>
<ElFormItem label-width="90" label="合格证有效期" prop="qualificationEndDate">
<ElInput
v-model="formData.qualificationEndDate"
:disabled="status === 'view'"
placeholder="合格证有效期"/>
</ElFormItem>
<ElFormItem label-width="90" label="车辆类型" prop="truckCategory">
<ElInput
v-model="formData.truckCategory"
:disabled="status === 'view'"
placeholder="车辆类型"/>
</ElFormItem>
<ElFormItem label-width="90" label="车辆图片" prop="picture">
<ElInput
v-model="formData.picture"
:disabled="status === 'view'"
placeholder="车辆图片"/>
</ElFormItem>
<!-- <ElFormItem label-width="90" label="忙碌中" prop="busy">
<ElInput
v-model="formData.busy"
:disabled="status === 'view'"
placeholder="忙碌中"/>
</ElFormItem> -->
<ElFormItem label-width="90" label="创建人 Id sys_user.id" prop="creatorId">
<ElInput
v-model="formData.creatorId"
:disabled="status === 'view'"
placeholder="创建人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="修改人 Id sys_user.id" prop="modifierId">
<ElInput
v-model="formData.modifierId"
:disabled="status === 'view'"
placeholder="修改人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="创建时间" prop="createTime">
<ElInput
v-model="formData.createTime"
:disabled="status === 'view'"
placeholder="创建时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="修改时间" prop="modifyTime">
<ElInput
v-model="formData.modifyTime"
:disabled="status === 'view'"
placeholder="修改时间"/>
</ElFormItem>
</ElForm>
<template #footer>
<ElButton @click="showDialog = false">{{ status === 'view' ? '关闭' : '取消' }}</ElButton>
<ElButton v-if="status !== 'view'" :loading="submiting" type="primary" @click="submitHandler"></ElButton>
<AFormPanel
ref="formPanel"
:details-loader="detailsLoader"
:do-submit="doSubmit"
:rules="rules"
:title="status === 'add' ? '新建车辆信息' : '修改车辆信息'"
>
<template #default="{formData}">
<div class="form-items">
<ElFormItem label="归属客户" prop="customerId">
<ElInput
v-model="formData.customerId"
placeholder="归属客户"/>
</ElFormItem>
<ElFormItem label="归属企业" prop="orgId">
<ElInput
v-model="formData.orgId"
placeholder="归属企业"/>
</ElFormItem>
<ElFormItem label="车牌" prop="licensePlate">
<ElInput
v-model="formData.licensePlate"
placeholder="车牌"/>
</ElFormItem>
<ElFormItem label="行驶证图片" prop="truckLicense">
<ElInput
v-model="formData.truckLicense"
placeholder="行驶证图片"/>
</ElFormItem>
<ElFormItem label="车架号" prop="vnCode">
<ElInput
v-model="formData.vnCode"
placeholder="车架号"/>
</ElFormItem>
<ElFormItem label="合格证图片" prop="qualification">
<ElInput
v-model="formData.qualification"
placeholder="合格证图片"/>
</ElFormItem>
<ElFormItem label="最大载重;单位:千克" prop="carryingCapacity">
<ElInput
v-model="formData.carryingCapacity"
placeholder="最大载重;单位:千克"/>
</ElFormItem>
<ElFormItem label="皮重;单位:千克" prop="tareWeight">
<ElInput
v-model="formData.tareWeight"
placeholder="皮重;单位:千克"/>
</ElFormItem>
<ElFormItem label="行驶证有效期" prop="licenseStartDate">
<ElInput
v-model="formData.licenseStartDate"
placeholder="行驶证有效期"/>
</ElFormItem>
<ElFormItem label="行驶证有效期" prop="licenseEndDate">
<ElInput
v-model="formData.licenseEndDate"
placeholder="行驶证有效期"/>
</ElFormItem>
<ElFormItem label="合格证有效期" prop="qualificationStartDate">
<ElInput
v-model="formData.qualificationStartDate"
placeholder="合格证有效期"/>
</ElFormItem>
<ElFormItem label="合格证有效期" prop="qualificationEndDate">
<ElInput
v-model="formData.qualificationEndDate"
placeholder="合格证有效期"/>
</ElFormItem>
<ElFormItem label="车辆类型" prop="truckCategory">
<ElInput
v-model="formData.truckCategory"
placeholder="车辆类型"/>
</ElFormItem>
<ElFormItem label="车辆图片" prop="picture">
<ElInput
v-model="formData.picture"
placeholder="车辆图片"/>
</ElFormItem>
</div>
</template>
</ElDialog>
</AFormPanel>
</template>
<script lang="ts" setup>
import TruckApi from '@/pages/cst/truck/truck-api.ts'
import Strings from '@/common/utils/strings.ts'
import FormUtil from '@/common/utils/formUtil.ts'
import {
ElMessage,
type FormInstance,
type FormRules,
} from 'element-plus'
import { type FormRules } from 'element-plus'
import type { ComponentExposed } from 'vue-component-type-helpers'
import AFormPanel from '@/components/a-form-panel/AFormPanel.vue'
const emits = defineEmits(['editSucc'])
const showDialog = ref(false)
const submiting = ref(false)
const status = ref<'add' | 'view' | 'modify'>('add')
const truckFormIns = useTemplateRef<FormInstance>('truckForm')
const formData = ref<TruckTypes.SearchTruckResult>({})
const props = withDefaults(defineProps<{
research?: () => void
}>(), {
research: () => {
},
})
const rules = reactive<FormRules<TruckTypes.SearchTruckResult>>({
id: [{ required: true, message: '请填写Id', trigger: 'blur' }],
customerId: [{ required: true, message: '请填写归属客户 Idcst_customer.id', trigger: 'blur' }],
orgId: [{ required: true, message: '请填写归属组织', trigger: 'blur' }],
licensePlate: [{ required: true, message: '请填写车牌', trigger: 'blur' }],
truckLicense: [{ required: true, message: '请填写行驶证图片', trigger: 'blur' }],
vnCode: [{ required: true, message: '请填写车架号', trigger: 'blur' }],
qualification: [{ required: true, message: '请填写合格证图片', trigger: 'blur' }],
carryingCapacity: [{ required: true, message: '请填写最大载重;单位:千克', trigger: 'blur' }],
tareWeight: [{ required: true, message: '请填写皮重;单位:千克', trigger: 'blur' }],
licenseStartDate: [{ required: true, message: '请填写行驶证有效期', trigger: 'blur' }],
licenseEndDate: [{ required: true, message: '请填写行驶证有效期', trigger: 'blur' }],
qualificationStartDate: [{ required: true, message: '请填写合格证有效期', trigger: 'blur' }],
qualificationEndDate: [{ required: true, message: '请填写合格证有效期', trigger: 'blur' }],
truckCategory: [{ required: true, message: '请填写车辆类型', trigger: 'blur' }],
picture: [{ required: true, message: '请填写车辆图片', trigger: 'blur' }],
busy: [{ required: true, message: '请填写忙碌中', trigger: 'blur' }],
creatorId: [{ required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur' }],
modifierId: [{ required: true, message: '请填写修改人 Id sys_user.id', trigger: 'blur' }],
createTime: [{ required: true, message: '请填写创建时间', trigger: 'blur' }],
modifyTime: [{ required: true, message: '请填写修改时间', trigger: 'blur' }],
deleted: [{ required: true, message: '请填写是否删除', trigger: 'blur' }],
id: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
customerId: [ {required: true, message: '请填写归属客户 Idcst_customer.id', trigger: 'blur'} ],
orgId: [ {required: true, message: '请填写归属企业', trigger: 'blur'} ],
licensePlate: [ {required: true, message: '请填写车牌', trigger: 'blur'} ],
truckLicense: [ {required: true, message: '请填写行驶证图片', trigger: 'blur'} ],
vnCode: [ {required: true, message: '请填写车架号', trigger: 'blur'} ],
qualification: [ {required: true, message: '请填写合格证图片', trigger: 'blur'} ],
carryingCapacity: [ {required: true, message: '请填写最大载重;单位:千克', trigger: 'blur'} ],
tareWeight: [ {required: true, message: '请填写皮重;单位:千克', trigger: 'blur'} ],
licenseStartDate: [ {required: true, message: '请填写行驶证有效期', trigger: 'blur'} ],
licenseEndDate: [ {required: true, message: '请填写行驶证有效期', trigger: 'blur'} ],
qualificationStartDate: [ {required: true, message: '请填写合格证有效期', trigger: 'blur'} ],
qualificationEndDate: [ {required: true, message: '请填写合格证有效期', trigger: 'blur'} ],
truckCategory: [ {required: true, message: '请填写车辆类型', trigger: 'blur'} ],
picture: [ {required: true, message: '请填写车辆图片', trigger: 'blur'} ],
busy: [ {required: true, message: '请填写忙碌中', trigger: 'blur'} ],
creatorId: [ {required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur'} ],
modifierId: [ {required: true, message: '请填写修改人 Id sys_user.id', trigger: 'blur'} ],
createTime: [ {required: true, message: '请填写创建时间', trigger: 'blur'} ],
modifyTime: [ {required: true, message: '请填写修改时间', trigger: 'blur'} ],
deleted: [ {required: true, message: '请填写是否删除', trigger: 'blur'} ],
})
function dialogCloseHandler() {
formData.value = {}
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const status = ref<'add' | 'modify'>('add')
function detailsLoader(id?: string) {
if (Strings.isBlank(id)) {
status.value = 'add'
return Promise.resolve()
} else {
status.value = 'modify'
return TruckApi
.detail(id!)
.then(res => res.data)
}
}
function submitHandler() {
if (status.value === 'view') return
submiting.value = true
if (formData.value.id != null) {
FormUtil.submit(truckFormIns, () => TruckApi.modify(formData.value))
.then(() => {
ElMessage.success('修改成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
function doSubmit(data: TruckTypes.SearchTruckResult) {
if (status.value === 'add') {
return TruckApi.add(data)
.then(props.research)
} else {
FormUtil.submit(truckFormIns, () => TruckApi.add(formData.value))
.then(() => {
ElMessage.success('添加成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
return TruckApi.modify(data)
.then(props.research)
}
}
defineExpose({
open(data: TruckTypes.SearchTruckResult = {}) {
showDialog.value = true
if (!Strings.isBlank(data.id)) {
status.value = 'modify'
TruckApi.detail(data.id!)
.then(res => {
formData.value = res.data
})
} else {
status.value = 'add'
formData.value = data
}
}
open(data?: TruckTypes.SearchTruckResult) {
formPanelIns.value?.open(data?.id)
},
})
</script>
<style lang="stylus" scoped>
.form-panel {
padding 20px
.form-items {
grid-template-columns: 1fr 1fr;
:deep(.el-form-item) {
}
}
</style>

View File

@ -7,7 +7,7 @@ declare global {
id?: string
// 归属客户 Idcst_customer.id
customerId?: string
// 归属组织
// 归属企业
orgId?: string
// 车牌
licensePlate?: string
@ -52,7 +52,7 @@ declare global {
id?: string
// 归属客户 Idcst_customer.id
customerId?: string
// 归属组织
// 归属企业
orgId?: string
// 车牌
licensePlate?: string
@ -97,7 +97,7 @@ declare global {
id?: string
// 归属客户 Idcst_customer.id
customerId?: string
// 归属组织
// 归属企业
orgId?: string
// 车牌
licensePlate?: string
@ -142,7 +142,7 @@ declare global {
id?: string
// 归属客户 Idcst_customer.id
customerId?: string
// 归属组织
// 归属企业
orgId?: string
// 车牌
licensePlate?: string

View File

@ -12,15 +12,15 @@
<Uploader ref="uploader" v-model:file="formData.picture"/>
</ElFormItem>
<ElFormItem label="业务类型" prop="bizType">
<ElSelect v-model="formData.bizType" :disabled="status === 'view'" placeholder="业务类型">
<ElSelect v-model="formData.bizType" placeholder="业务类型">
<ElOption v-for="item in bizType" :key="item.val" :label="item.txt" :value="item.val"/>
</ElSelect>
</ElFormItem>
<ElFormItem label="分类名称" prop="categoryName">
<ElInput v-model="formData.categoryName" :disabled="status === 'view'" placeholder="分类名称"/>
<ElInput v-model="formData.categoryName" placeholder="分类名称"/>
</ElFormItem>
<ElFormItem label="排序" prop="sort">
<ElInputNumber v-model="formData.sort" :disabled="status === 'view'" :min="0" placeholder="排序"/>
<ElInputNumber v-model="formData.sort" :min="0" placeholder="排序"/>
</ElFormItem>
</div>
</template>
@ -34,6 +34,7 @@ import Uploader from '@/components/uploader/Uploader.vue'
import { type FormRules } from 'element-plus'
import AFormPanel from '@/components/a-form-panel/AFormPanel.vue'
import { bizType } from '@/pages/gds/goods-category/constants.ts'
import type { ComponentExposed } from 'vue-component-type-helpers'
const props = withDefaults(defineProps<{
research?: () => void
@ -41,9 +42,9 @@ const props = withDefaults(defineProps<{
research: () => {
},
})
const formPanelIns = useTemplateRef<InstanceType<typeof AFormPanel>>('formPanel')
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const uploaderIns = useTemplateRef<InstanceType<typeof Uploader>>('uploader')
const status = ref<'add' | 'view' | 'modify'>('add')
const status = ref<'add' | 'modify'>('add')
const rules = reactive<FormRules<GoodsCategoryTypes.SearchGoodsCategoryResult>>({
bizType: [ {required: true, message: '请填写业务类型', trigger: 'blur'} ],
categoryName: [ {required: true, message: '请填写分类名称', trigger: 'blur'} ],
@ -69,7 +70,7 @@ function doSubmit(data: GoodsCategoryTypes.SearchGoodsCategoryResult) {
if (status.value === 'add') {
return GoodsCategoryApi.add(data)
.then(props.research)
} else if (status.value === 'modify') {
} else {
return GoodsCategoryApi.modify(data)
.then(props.research)
}

View File

@ -23,7 +23,7 @@
<ElFormItem>
<ElInput v-model="searchForm.sn" placeholder="产品编码"/>
</ElFormItem>
<ElFormItem label="产品名称">
<ElFormItem>
<ElInput v-model="searchForm.goodsName" placeholder="产品名称"/>
</ElFormItem>
</template>

View File

@ -20,22 +20,22 @@
<GoodsCategoryDropTable v-model="formData.goodsCategoryId"/>
</ElFormItem>
<ElFormItem label="产品名称" prop="goodsName">
<ElInput v-model="formData.goodsName" :disabled="status === 'view'" placeholder="产品名称"/>
<ElInput v-model="formData.goodsName" placeholder="产品名称"/>
</ElFormItem>
<ElFormItem label="规格" prop="specParams">
<ElInput v-model="formData.specParams" :disabled="status === 'view'" placeholder="规格"/>
<ElInput v-model="formData.specParams" placeholder="规格"/>
</ElFormItem>
<ElFormItem label="排序" prop="sort">
<ElInputNumber v-model="formData.sort" :disabled="status === 'view'" placeholder="请输入排序"/>
<ElInputNumber v-model="formData.sort" placeholder="请输入排序"/>
</ElFormItem>
<ElFormItem label="计量单位" prop="unit">
<ADict v-model="formData.unit" :disabled="status === 'view'" dict-key="unit" placeholder="计量单位"/>
<ADict v-model="formData.unit" dict-key="unit" placeholder="计量单位"/>
</ElFormItem>
<ElFormItem label="是否可用" prop="canuse">
<el-switch v-model="formData.canuse" :disabled="status === 'view'"/>
<el-switch v-model="formData.canuse"/>
</ElFormItem>
<ElFormItem label="备注" prop="memo">
<ElInput v-model="formData.memo" :disabled="status === 'view'" placeholder="请输入备注"/>
<ElInput v-model="formData.memo" placeholder="请输入备注"/>
</ElFormItem>
</div>
</template>
@ -50,6 +50,7 @@ import Uploader from '@/components/uploader/Uploader.vue'
import ADict from '@/components/a-dict/ADict.vue'
import AFormPanel from '@/components/a-form-panel/AFormPanel.vue'
import GoodsCategoryDropTable from '@/pages/gds/goods-category/GoodsCategoryDropTable.vue'
import type { ComponentExposed } from 'vue-component-type-helpers'
const props = withDefaults(defineProps<{
research?: () => void
@ -58,9 +59,9 @@ const props = withDefaults(defineProps<{
},
})
const formPanelIns = useTemplateRef<InstanceType<typeof AFormPanel>>('formPanel')
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const uploaderIns = useTemplateRef<InstanceType<typeof Uploader>>('uploader')
const status = ref<'add' | 'view' | 'modify'>('add')
const status = ref<'add' | 'modify'>('add')
const rules = reactive<FormRules<GoodsTypes.SearchGoodsResult>>({
goodsCategoryId: [ {required: true, message: '请填写产品类型', trigger: 'blur'} ],
sn: [ {required: true, message: '请填写产品编码', trigger: 'blur'} ],
@ -91,7 +92,7 @@ function doSubmit(data: GoodsTypes.SearchGoodsResult) {
if (status.value === 'add') {
return GoodsApi.add(data)
.then(props.research)
} else if (status.value === 'modify') {
} else {
return GoodsApi.modify(data)
.then(props.research)
}

View File

@ -9,37 +9,37 @@
:rules="rules"
class="form-panel"
label-width="auto">
<ElFormItem label-width="90" label="产品" prop="goodsId">
<ElFormItem label="产品" prop="goodsId">
<ADropTable v-model="formData.goodsId as string" :columns="dropTableColumns" :loader="dropTableLoader" display-field="goodsName"/>
</ElFormItem>
<ElFormItem label-width="90" label="工艺名称" prop="craftName">
<ElFormItem label="工艺名称" prop="craftName">
<ElInput
v-model="formData.craftName"
:disabled="status === 'view'"
placeholder="工艺名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="工艺版本号" prop="craftVer">
<ElFormItem label="工艺版本号" prop="craftVer">
<ElInput
v-model="formData.craftVer"
:disabled="status === 'view'"
placeholder="工艺版本号"/>
</ElFormItem>
<ElFormItem label-width="90" label="工艺类型" prop="craftCategory">
<ElFormItem label="工艺类型" prop="craftCategory">
<ElSelect v-model="formData.craftCategory">
<ElOption label="自动化" value="ZiDongHua"/>
<ElOption label="人工" value="RenGong"/>
</ElSelect>
</ElFormItem>
<ElFormItem label-width="90" label="备注" prop="memo">
<ElFormItem label="备注" prop="memo">
<ElInput
v-model="formData.memo"
:disabled="status === 'view'"
placeholder="备注"/>
</ElFormItem>
<ElFormItem label-width="90" label="是否可用" prop="canuse">
<ElFormItem label="是否可用" prop="canuse">
<ElCheckbox
v-model="formData.canuse"
:disabled="status === 'view'"
placeholder="是否可用"/>
</ElFormItem>
</ElForm>

View File

@ -31,8 +31,8 @@
<ElFormItem label="完结时间">
<ElInput v-model="searchForm.finishTime" placeholder="完结时间" />
</ElFormItem>
<ElFormItem label="运输组织">
<ElInput v-model="searchForm.transOrgId" placeholder="运输组织" />
<ElFormItem label="运输企业">
<ElInput v-model="searchForm.transOrgId" placeholder="运输企业"/>
</ElFormItem>
<ElFormItem label="指派清运公司时间">
<ElInput v-model="searchForm.assignmentTransTime" placeholder="指派清运公司时间" />

View File

@ -37,7 +37,7 @@
<ElDescriptionsItem label="完结时间" prop="finishTime">
{{ detailData.finishTime }}
</ElDescriptionsItem>
<ElDescriptionsItem label="运输组织 Idcst_org.id" prop="transOrgId">
<ElDescriptionsItem label="运输企业 Idcst_org.id" prop="transOrgId">
{{ detailData.transOrgId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="运输方客户 Id" prop="transCustomerId">

View File

@ -9,166 +9,166 @@
ref="orderForm"
class="form-panel"
label-width="auto">
<ElFormItem label-width="90" label="Id" prop="id">
<ElFormItem label="Id" prop="id">
<ElInput
v-model="formData.id"
:disabled="status === 'view'"
placeholder="Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="订单编号" prop="sn">
<ElFormItem label="订单编号" prop="sn">
<ElInput
v-model="formData.sn"
:disabled="status === 'view'"
placeholder="订单编号"/>
</ElFormItem>
<ElFormItem label-width="90" label="项目 Id" prop="projectId">
<ElFormItem label="项目 Id" prop="projectId">
<ElInput
v-model="formData.projectId"
:disabled="status === 'view'"
placeholder="项目 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="下单人 Idsys_user.id" prop="userId">
<ElFormItem label="下单人 Idsys_user.id" prop="userId">
<ElInput
v-model="formData.userId"
:disabled="status === 'view'"
placeholder="下单人 Idsys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="下单人客户 Idcst_customer.id" prop="customerId">
<ElFormItem label="下单人客户 Idcst_customer.id" prop="customerId">
<ElInput
v-model="formData.customerId"
:disabled="status === 'view'"
placeholder="下单人客户 Idcst_customer.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="下单人姓名" prop="contacts">
<ElFormItem label="下单人姓名" prop="contacts">
<ElInput
v-model="formData.contacts"
:disabled="status === 'view'"
placeholder="下单人姓名"/>
</ElFormItem>
<ElFormItem label-width="90" label="下单人联系方式" prop="phone">
<ElFormItem label="下单人联系方式" prop="phone">
<ElInput
v-model="formData.phone"
:disabled="status === 'view'"
placeholder="下单人联系方式"/>
</ElFormItem>
<ElFormItem label-width="90" label="下单时间" prop="orderTime">
<ElFormItem label="下单时间" prop="orderTime">
<ElInput
v-model="formData.orderTime"
:disabled="status === 'view'"
placeholder="下单时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="订单类型字典代码order_categoryHuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出" prop="orderCategory">
<ElFormItem label="订单类型字典代码order_categoryHuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出" prop="orderCategory">
<ElInput
v-model="formData.orderCategory"
:disabled="status === 'view'"
placeholder="订单类型字典代码order_categoryHuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出"/>
</ElFormItem>
<ElFormItem label-width="90" label="订单状态字典代码order_statusYiYuYue-->已预约、JinXingZhong-->进行中、YiWanCheng-->已完成、YiQuXiao-->已取消" prop="orderStatus">
<ElFormItem label="订单状态字典代码order_statusYiYuYue-->已预约、JinXingZhong-->进行中、YiWanCheng-->已完成、YiQuXiao-->已取消" prop="orderStatus">
<ElInput
v-model="formData.orderStatus"
:disabled="status === 'view'"
placeholder="订单状态字典代码order_statusYiYuYue-->已预约、JinXingZhong-->进行中、YiWanCheng-->已完成、YiQuXiao-->已取消"/>
</ElFormItem>
<ElFormItem label-width="90" label="完结时间" prop="finishTime">
<ElFormItem label="完结时间" prop="finishTime">
<ElInput
v-model="formData.finishTime"
:disabled="status === 'view'"
placeholder="完结时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="运输组织 Idcst_org.id" prop="transOrgId">
<ElFormItem label="运输企业 Idcst_org.id" prop="transOrgId">
<ElInput
v-model="formData.transOrgId"
:disabled="status === 'view'"
placeholder="运输组织 Idcst_org.id"/>
placeholder="运输企业 Idcst_org.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="运输方客户 Id" prop="transCustomerId">
<ElFormItem label="运输方客户 Id" prop="transCustomerId">
<ElInput
v-model="formData.transCustomerId"
:disabled="status === 'view'"
placeholder="运输方客户 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="指派清运公司时间" prop="assignmentTransTime">
<ElFormItem label="指派清运公司时间" prop="assignmentTransTime">
<ElInput
v-model="formData.assignmentTransTime"
:disabled="status === 'view'"
placeholder="指派清运公司时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="站点 Idcst_station.id" prop="stationId">
<ElFormItem label="站点 Idcst_station.id" prop="stationId">
<ElInput
v-model="formData.stationId"
:disabled="status === 'view'"
placeholder="站点 Idcst_station.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="站点名称cst_station.station.name" prop="stationName">
<ElFormItem label="站点名称cst_station.station.name" prop="stationName">
<ElInput
v-model="formData.stationName"
:disabled="status === 'view'"
placeholder="站点名称cst_station.station.name"/>
</ElFormItem>
<ElFormItem label-width="90" label="运距;单位:米" prop="transDistance">
<ElFormItem label="运距;单位:米" prop="transDistance">
<ElInput
v-model="formData.transDistance"
:disabled="status === 'view'"
placeholder="运距;单位:米"/>
</ElFormItem>
<ElFormItem label-width="90" label="预估量" prop="estimatedQuantity">
<ElFormItem label="预估量" prop="estimatedQuantity">
<ElInput
v-model="formData.estimatedQuantity"
:disabled="status === 'view'"
placeholder="预估量"/>
</ElFormItem>
<ElFormItem label-width="90" label="预估车数" prop="estimatedTrainNum">
<ElFormItem label="预估车数" prop="estimatedTrainNum">
<ElInput
v-model="formData.estimatedTrainNum"
:disabled="status === 'view'"
placeholder="预估车数"/>
</ElFormItem>
<ElFormItem label-width="90" label="产品 Id" prop="goodsId">
<ElFormItem label="产品 Id" prop="goodsId">
<ElInput
v-model="formData.goodsId"
:disabled="status === 'view'"
placeholder="产品 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="产品名称" prop="goodsName">
<ElFormItem label="产品名称" prop="goodsName">
<ElInput
v-model="formData.goodsName"
:disabled="status === 'view'"
placeholder="产品名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="计量单位字典代码unit" prop="unit">
<ElFormItem label="计量单位字典代码unit" prop="unit">
<ElInput
v-model="formData.unit"
:disabled="status === 'view'"
placeholder="计量单位字典代码unit"/>
</ElFormItem>
<ElFormItem label-width="90" label="客户备注" prop="customerMemo">
<ElFormItem label="客户备注" prop="customerMemo">
<ElInput
v-model="formData.customerMemo"
:disabled="status === 'view'"
placeholder="客户备注"/>
</ElFormItem>
<ElFormItem label-width="90" label="创建人 Id sys_user.id" prop="creatorId">
<ElFormItem label="创建人 Id sys_user.id" prop="creatorId">
<ElInput
v-model="formData.creatorId"
:disabled="status === 'view'"
placeholder="创建人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="修改人 Id sys_user.id" prop="modifierId">
<ElFormItem label="修改人 Id sys_user.id" prop="modifierId">
<ElInput
v-model="formData.modifierId"
:disabled="status === 'view'"
placeholder="修改人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="创建时间" prop="createTime">
<ElFormItem label="创建时间" prop="createTime">
<ElInput
v-model="formData.createTime"
:disabled="status === 'view'"
placeholder="创建时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="修改时间" prop="modifyTime">
<ElFormItem label="修改时间" prop="modifyTime">
<ElInput
v-model="formData.modifyTime"
:disabled="status === 'view'"
placeholder="修改时间"/>
</ElFormItem>
</ElForm>
@ -210,7 +210,7 @@ orderTime: [{ required: true, message: '请填写下单时间', trigger: 'blur'
orderCategory: [{ required: true, message: '请填写订单类型字典代码order_categoryHuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出', trigger: 'blur' }],
orderStatus: [{ required: true, message: '请填写订单状态字典代码order_statusYiYuYue-->已预约、JinXingZhong-->进行中、YiWanCheng-->已完成、YiQuXiao-->已取消', trigger: 'blur' }],
finishTime: [{ required: true, message: '请填写完结时间', trigger: 'blur' }],
transOrgId: [{ required: true, message: '请填写运输组织 Idcst_org.id', trigger: 'blur' }],
transOrgId: [ {required: true, message: '请填写运输企业 Idcst_org.id', trigger: 'blur'} ],
transCustomerId: [{ required: true, message: '请填写运输方客户 Id', trigger: 'blur' }],
assignmentTransTime: [{ required: true, message: '请填写指派清运公司时间', trigger: 'blur' }],
stationId: [{ required: true, message: '请填写站点 Idcst_station.id', trigger: 'blur' }],

View File

@ -25,7 +25,7 @@ declare global {
orderStatus?: string
// 完结时间
finishTime?: string
// 运输组织 Idcst_org.id
// 运输企业 Idcst_org.id
transOrgId?: string
// 运输方客户 Id
transCustomerId?: string
@ -84,7 +84,7 @@ declare global {
orderStatus?: string
// 完结时间
finishTime?: string
// 运输组织 Idcst_org.id
// 运输企业 Idcst_org.id
transOrgId?: string
// 运输方客户 Id
transCustomerId?: string
@ -143,7 +143,7 @@ declare global {
orderStatus?: string
// 完结时间
finishTime?: string
// 运输组织 Idcst_org.id
// 运输企业 Idcst_org.id
transOrgId?: string
// 运输方客户 Id
transCustomerId?: string
@ -202,7 +202,7 @@ declare global {
orderStatus?: string
// 完结时间
finishTime?: string
// 运输组织 Idcst_org.id
// 运输企业 Idcst_org.id
transOrgId?: string
// 运输方客户 Id
transCustomerId?: string

View File

@ -1,7 +1,7 @@
<template>
<ElDialog v-model="showDialog" :close-on-click-modal="false" destroy-on-close width="fit-content" @close="dialogCloseHandler">
<ElForm :model="formData" :rules="rules" ref="transForm" class="form-panel" label-width="auto">
<ElFormItem label-width="90" label="看料照片" prop="checkPhoto">
<ElFormItem label="看料照片" prop="checkPhoto">
<Uploader v-model:files="formData.checkPhoto"
:limit="3"
:upload-props="{
@ -10,8 +10,8 @@
}"/>
</ElFormItem>
<ElFormItem label-width="90" label="备注" prop="weight">
<ElInput v-model="formData.checkerMemo" :disabled="status === 'view'" placeholder="请输入备注"></ElInput>
<ElFormItem label="备注" prop="weight">
<ElInput v-model="formData.checkerMemo" placeholder="请输入备注"></ElInput>
</ElFormItem>
</ElForm>
<template #footer>

View File

@ -1,13 +1,13 @@
<template>
<ElDialog v-model="showDialog" :close-on-click-modal="false" destroy-on-close width="fit-content" @close="dialogCloseHandler">
<ElForm :model="formData" :rules="rules" ref="transForm" class="form-panel" label-width="auto">
<ElFormItem label-width="90" label="磅重" prop="weight">
<ElInput v-model="formData.weight" type="number" :disabled="status === 'view'" placeholder="请输入磅重">
<ElFormItem label="磅重" prop="weight">
<ElInput v-model="formData.weight" placeholder="请输入磅重" type="number">
<template #append></template>
</ElInput>
</ElFormItem>
<ElFormItem label-width="90" label="车头照" prop="cargoPhoto">
<ElFormItem label="车头照" prop="cargoPhoto">
<Uploader v-model:file="formData.cargoPhoto"
:upload-props="{
accept: 'image/*',
@ -15,7 +15,7 @@
}"/>
</ElFormItem>
<ElFormItem label-width="90" label="车斗照" prop="bodyPhoto">
<ElFormItem label="车斗照" prop="bodyPhoto">
<Uploader v-model:file="formData.bodyPhoto"
:upload-props="{
accept: 'image/*',

View File

@ -1,13 +1,13 @@
<template>
<ElDialog v-model="showDialog" :close-on-click-modal="false" destroy-on-close width="fit-content" @close="dialogCloseHandler">
<ElForm :model="formData" :rules="rules" ref="transForm" class="form-panel" label-width="auto">
<ElFormItem label-width="90" label="磅重" prop="weight">
<ElInput v-model="formData.weight" type="number" :disabled="status === 'view'" placeholder="请输入磅重">
<ElFormItem label="磅重" prop="weight">
<ElInput v-model="formData.weight" placeholder="请输入磅重" type="number">
<template #append></template>
</ElInput>
</ElFormItem>
<ElFormItem label-width="90" label="车头照" prop="cargoPhoto">
<ElFormItem label="车头照" prop="cargoPhoto">
<Uploader v-model:file="formData.cargoPhoto"
:upload-props="{
accept: 'image/*',
@ -15,7 +15,7 @@
}"/>
</ElFormItem>
<ElFormItem label-width="90" label="车斗照" prop="bodyPhoto">
<ElFormItem label="车斗照" prop="bodyPhoto">
<Uploader v-model:file="formData.bodyPhoto"
:upload-props="{
accept: 'image/*',

View File

@ -1,33 +1,33 @@
<template>
<Page>
<ElForm v-show="showSearchForm" inline @submit.prevent="paging">
<ElFormItem label-width="90" label="车次">
<ElFormItem label="车次">
<ElInput v-model="searchForm.trainNum" placeholder="车次" />
</ElFormItem>
<ElFormItem label-width="90" label="订单 Id">
<ElFormItem label="订单 Id">
<ElInput v-model="searchForm.orderId" placeholder="订单 Id" />
</ElFormItem>
<!-- 字典代码trans_statusDaiPaiDan--待派单DaiJieDan--待接单YiJieDan--已接单YunShuZhong--运输中YiJinChang--已进场YiChuChang--已出场YiWanCheng--已完成YiQuXiao--已取消 -->
<ElFormItem label-width="90" label="运输状态">
<ElFormItem label="运输状态">
<ElInput v-model="searchForm.transStatus" placeholder="运输状态" />
</ElFormItem>
<ElFormItem label-width="90" label="车道名称">
<ElFormItem label="车道名称">
<ElInput v-model="searchForm.lane" placeholder="车道名称" />
</ElFormItem>
<ElFormItem label-width="90" label="勘料状态">
<ElFormItem label="勘料状态">
<!-- 字典代码check_statusWu--无需勘料YiKanLiao--已勘料WeiKanLiao--未勘料 -->
<ElInput v-model="searchForm.checkStatus" placeholder="勘料状态" />
</ElFormItem>
<ElFormItem label-width="90" label="车辆 Id">
<ElFormItem label="车辆 Id">
<ElInput v-model="searchForm.truckId" placeholder="车辆 Id" />
</ElFormItem>
<ElFormItem label-width="90" label="车牌号">
<ElFormItem label="车牌号">
<ElInput v-model="searchForm.truckLicensePlate" placeholder="车牌号" />
</ElFormItem>
<ElFormItem label-width="90" label="历史皮重">
<ElFormItem label="历史皮重">
<ElInput v-model="searchForm.historyTareWeight" placeholder="历史皮重" />
</ElFormItem>
<ElFormItem label-width="90" label="创建时间">
<ElFormItem label="创建时间">
<ElInput v-model="searchForm.createTime" placeholder="创建时间" />
</ElFormItem>
@ -56,7 +56,7 @@
<ElTableColumn label="勘料时间" prop="checkTime" width="160" />
<ElTableColumn label="司机 Id" prop="driverId" />
<!-- <ElTableColumn label="司机所属用户 Id" prop="driverUserId" /> -->
<ElTableColumn label="归属组织" prop="truckOrgId" />
<ElTableColumn label="归属企业" prop="truckOrgId"/>
<ElTableColumn label="车辆 Id" prop="truckId" />
<ElTableColumn label="车牌号" width="100" prop="truckLicensePlate" />
<ElTableColumn label="历史皮重" prop="historyTareWeight" />

View File

@ -58,7 +58,7 @@
<ElDescriptionsItem label="归属客户 Idcst_customer.id" prop="truckCustomerId">
{{ detailData.truckCustomerId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="归属组织" prop="truckOrgId">
<ElDescriptionsItem label="归属企业" prop="truckOrgId">
{{ detailData.truckOrgId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="车辆 Id" prop="truckId">

View File

@ -9,280 +9,280 @@
ref="transForm"
class="form-panel"
label-width="auto">
<ElFormItem label-width="90" label="Id" prop="id">
<ElFormItem label="Id" prop="id">
<ElInput
v-model="formData.id"
:disabled="status === 'view'"
placeholder="Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="车次" prop="trainNum">
<ElFormItem label="车次" prop="trainNum">
<ElInput
v-model="formData.trainNum"
:disabled="status === 'view'"
placeholder="车次"/>
</ElFormItem>
<ElFormItem label-width="90" label="订单 Id" prop="orderId">
<ElFormItem label="订单 Id" prop="orderId">
<ElInput
v-model="formData.orderId"
:disabled="status === 'view'"
placeholder="订单 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="车道名称" prop="lane">
<ElFormItem label="车道名称" prop="lane">
<ElInput
v-model="formData.lane"
:disabled="status === 'view'"
placeholder="车道名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="指派司机时间" prop="assignmentDriverTime">
<ElFormItem label="指派司机时间" prop="assignmentDriverTime">
<ElInput
v-model="formData.assignmentDriverTime"
:disabled="status === 'view'"
placeholder="指派司机时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="司机确认接单时间" prop="driverConfirmTime">
<ElFormItem label="司机确认接单时间" prop="driverConfirmTime">
<ElInput
v-model="formData.driverConfirmTime"
:disabled="status === 'view'"
placeholder="司机确认接单时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="开始运输时间" prop="transTime">
<ElFormItem label="开始运输时间" prop="transTime">
<ElInput
v-model="formData.transTime"
:disabled="status === 'view'"
placeholder="开始运输时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="完结时间" prop="finishTime">
<ElFormItem label="完结时间" prop="finishTime">
<ElInput
v-model="formData.finishTime"
:disabled="status === 'view'"
placeholder="完结时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="看料员 Idsys_user.id" prop="checkerId">
<ElFormItem label="看料员 Idsys_user.id" prop="checkerId">
<ElInput
v-model="formData.checkerId"
:disabled="status === 'view'"
placeholder="看料员 Idsys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="勘料状态字典代码check_statusWu-->无需勘料、YiKanLiao-->已勘料、WeiKanLiao-->未勘料" prop="checkStatus">
<ElFormItem label="勘料状态字典代码check_statusWu-->无需勘料、YiKanLiao-->已勘料、WeiKanLiao-->未勘料" prop="checkStatus">
<ElInput
v-model="formData.checkStatus"
:disabled="status === 'view'"
placeholder="勘料状态字典代码check_statusWu-->无需勘料、YiKanLiao-->已勘料、WeiKanLiao-->未勘料"/>
</ElFormItem>
<ElFormItem label-width="90" label="勘料时间" prop="checkTime">
<ElFormItem label="勘料时间" prop="checkTime">
<ElInput
v-model="formData.checkTime"
:disabled="status === 'view'"
placeholder="勘料时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="勘料照片" prop="checkPhoto">
<ElFormItem label="勘料照片" prop="checkPhoto">
<ElInput
v-model="formData.checkPhoto"
:disabled="status === 'view'"
placeholder="勘料照片"/>
</ElFormItem>
<ElFormItem label-width="90" label="勘料员备注" prop="checkerMemo">
<ElFormItem label="勘料员备注" prop="checkerMemo">
<ElInput
v-model="formData.checkerMemo"
:disabled="status === 'view'"
placeholder="勘料员备注"/>
</ElFormItem>
<ElFormItem label-width="90" label="司机 Id" prop="driverId">
<ElFormItem label="司机 Id" prop="driverId">
<ElInput
v-model="formData.driverId"
:disabled="status === 'view'"
placeholder="司机 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="司机所属客户 Idcst_customer.id" prop="driverCustomerId">
<ElFormItem label="司机所属客户 Idcst_customer.id" prop="driverCustomerId">
<ElInput
v-model="formData.driverCustomerId"
:disabled="status === 'view'"
placeholder="司机所属客户 Idcst_customer.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="司机所属用户 Id" prop="driverUserId">
<ElFormItem label="司机所属用户 Id" prop="driverUserId">
<ElInput
v-model="formData.driverUserId"
:disabled="status === 'view'"
placeholder="司机所属用户 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="归属客户 Idcst_customer.id" prop="truckCustomerId">
<ElFormItem label="归属客户 Idcst_customer.id" prop="truckCustomerId">
<ElInput
v-model="formData.truckCustomerId"
:disabled="status === 'view'"
placeholder="归属客户 Idcst_customer.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="归属组织" prop="truckOrgId">
<ElFormItem label="归属企业" prop="truckOrgId">
<ElInput
v-model="formData.truckOrgId"
:disabled="status === 'view'"
placeholder="归属组织"/>
placeholder="归属企业"/>
</ElFormItem>
<ElFormItem label-width="90" label="车辆 Id" prop="truckId">
<ElFormItem label="车辆 Id" prop="truckId">
<ElInput
v-model="formData.truckId"
:disabled="status === 'view'"
placeholder="车辆 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="车牌号" prop="truckLicensePlate">
<ElFormItem label="车牌号" prop="truckLicensePlate">
<ElInput
v-model="formData.truckLicensePlate"
:disabled="status === 'view'"
placeholder="车牌号"/>
</ElFormItem>
<ElFormItem label-width="90" label="历史皮重" prop="historyTareWeight">
<ElFormItem label="历史皮重" prop="historyTareWeight">
<ElInput
v-model="formData.historyTareWeight"
:disabled="status === 'view'"
placeholder="历史皮重"/>
</ElFormItem>
<ElFormItem label-width="90" label="毛重;单位:千克" prop="roughWeight">
<ElFormItem label="毛重;单位:千克" prop="roughWeight">
<ElInput
v-model="formData.roughWeight"
:disabled="status === 'view'"
placeholder="毛重;单位:千克"/>
</ElFormItem>
<ElFormItem label-width="90" label="皮重;单位:千克" prop="tareWeight">
<ElFormItem label="皮重;单位:千克" prop="tareWeight">
<ElInput
v-model="formData.tareWeight"
:disabled="status === 'view'"
placeholder="皮重;单位:千克"/>
</ElFormItem>
<ElFormItem label-width="90" label="净重;单位:千克" prop="settleWeight">
<ElFormItem label="净重;单位:千克" prop="settleWeight">
<ElInput
v-model="formData.settleWeight"
:disabled="status === 'view'"
placeholder="净重;单位:千克"/>
</ElFormItem>
<ElFormItem label-width="90" label="运距;单位:米" prop="transDistance">
<ElFormItem label="运距;单位:米" prop="transDistance">
<ElInput
v-model="formData.transDistance"
:disabled="status === 'view'"
placeholder="运距;单位:米"/>
</ElFormItem>
<ElFormItem label-width="90" label="进场车头照片" prop="inFrontPhoto">
<ElFormItem label="进场车头照片" prop="inFrontPhoto">
<ElInput
v-model="formData.inFrontPhoto"
:disabled="status === 'view'"
placeholder="进场车头照片"/>
</ElFormItem>
<ElFormItem label-width="90" label="进场车斗照片" prop="inBodyPhoto">
<ElFormItem label="进场车斗照片" prop="inBodyPhoto">
<ElInput
v-model="formData.inBodyPhoto"
:disabled="status === 'view'"
placeholder="进场车斗照片"/>
</ElFormItem>
<ElFormItem label-width="90" label="出场车头照片" prop="outFrontPhoto">
<ElFormItem label="出场车头照片" prop="outFrontPhoto">
<ElInput
v-model="formData.outFrontPhoto"
:disabled="status === 'view'"
placeholder="出场车头照片"/>
</ElFormItem>
<ElFormItem label-width="90" label="出场车斗照片" prop="outBodyPhoto">
<ElFormItem label="出场车斗照片" prop="outBodyPhoto">
<ElInput
v-model="formData.outBodyPhoto"
:disabled="status === 'view'"
placeholder="出场车斗照片"/>
</ElFormItem>
<ElFormItem label-width="90" label="进场时间" prop="inTime">
<ElFormItem label="进场时间" prop="inTime">
<ElInput
v-model="formData.inTime"
:disabled="status === 'view'"
placeholder="进场时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="出场时间" prop="outTime">
<ElFormItem label="出场时间" prop="outTime">
<ElInput
v-model="formData.outTime"
:disabled="status === 'view'"
placeholder="出场时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="支付状态MianFei-->免费、WeiZhiFu-->未支付、YiZhiFu-->已支付、YiTuiKuan-->已退款" prop="paymentStatus">
<ElFormItem label="支付状态MianFei-->免费、WeiZhiFu-->未支付、YiZhiFu-->已支付、YiTuiKuan-->已退款" prop="paymentStatus">
<ElInput
v-model="formData.paymentStatus"
:disabled="status === 'view'"
placeholder="支付状态MianFei-->免费、WeiZhiFu-->未支付、YiZhiFu-->已支付、YiTuiKuan-->已退款"/>
</ElFormItem>
<ElFormItem label-width="90" label="支付时间" prop="payTime">
<ElFormItem label="支付时间" prop="payTime">
<ElInput
v-model="formData.payTime"
:disabled="status === 'view'"
placeholder="支付时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="退款时间" prop="refundTime">
<ElFormItem label="退款时间" prop="refundTime">
<ElInput
v-model="formData.refundTime"
:disabled="status === 'view'"
placeholder="退款时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="总金额;单位:元" prop="totalMoney">
<ElFormItem label="总金额;单位:元" prop="totalMoney">
<ElInput
v-model="formData.totalMoney"
:disabled="status === 'view'"
placeholder="总金额;单位:元"/>
</ElFormItem>
<ElFormItem label-width="90" label="优惠金额;单位:元,有正负" prop="discountMoney">
<ElFormItem label="优惠金额;单位:元,有正负" prop="discountMoney">
<ElInput
v-model="formData.discountMoney"
:disabled="status === 'view'"
placeholder="优惠金额;单位:元,有正负"/>
</ElFormItem>
<ElFormItem label-width="90" label="手动修正金额;单位:元,有正负" prop="reviseMoney">
<ElFormItem label="手动修正金额;单位:元,有正负" prop="reviseMoney">
<ElInput
v-model="formData.reviseMoney"
:disabled="status === 'view'"
placeholder="手动修正金额;单位:元,有正负"/>
</ElFormItem>
<ElFormItem label-width="90" label="结算金额;单位:元" prop="settleMoney">
<ElFormItem label="结算金额;单位:元" prop="settleMoney">
<ElInput
v-model="formData.settleMoney"
:disabled="status === 'view'"
placeholder="结算金额;单位:元"/>
</ElFormItem>
<ElFormItem label-width="90" label="结算方式YueJie-->月结、YuE-->余额、XianFu-->现付" prop="settlementWay">
<ElFormItem label="结算方式YueJie-->月结、YuE-->余额、XianFu-->现付" prop="settlementWay">
<ElInput
v-model="formData.settlementWay"
:disabled="status === 'view'"
placeholder="结算方式YueJie-->月结、YuE-->余额、XianFu-->现付"/>
</ElFormItem>
<ElFormItem label-width="90" label="付款人 Idsys_user.id" prop="payerUserId">
<ElFormItem label="付款人 Idsys_user.id" prop="payerUserId">
<ElInput
v-model="formData.payerUserId"
:disabled="status === 'view'"
placeholder="付款人 Idsys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="付款人客户 Idcst_customer.id" prop="payerCustomerId">
<ElFormItem label="付款人客户 Idcst_customer.id" prop="payerCustomerId">
<ElInput
v-model="formData.payerCustomerId"
:disabled="status === 'view'"
placeholder="付款人客户 Idcst_customer.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="付款方资金账户 Id" prop="payerMoneyAccount">
<ElFormItem label="付款方资金账户 Id" prop="payerMoneyAccount">
<ElInput
v-model="formData.payerMoneyAccount"
:disabled="status === 'view'"
placeholder="付款方资金账户 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="创建人 Idsys_user.id" prop="creatorId">
<ElFormItem label="创建人 Idsys_user.id" prop="creatorId">
<ElInput
v-model="formData.creatorId"
:disabled="status === 'view'"
placeholder="创建人 Idsys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="修改人 Id sys_user.id" prop="modifierId">
<ElFormItem label="修改人 Id sys_user.id" prop="modifierId">
<ElInput
v-model="formData.modifierId"
:disabled="status === 'view'"
placeholder="修改人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="创建时间" prop="createTime">
<ElFormItem label="创建时间" prop="createTime">
<ElInput
v-model="formData.createTime"
:disabled="status === 'view'"
placeholder="创建时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="修改时间" prop="modifyTime">
<ElFormItem label="修改时间" prop="modifyTime">
<ElInput
v-model="formData.modifyTime"
:disabled="status === 'view'"
placeholder="修改时间"/>
</ElFormItem>
</ElForm>
@ -331,7 +331,7 @@ driverId: [{ required: true, message: '请填写司机 Id', trigger: 'blur' }],
driverCustomerId: [{ required: true, message: '请填写司机所属客户 Idcst_customer.id', trigger: 'blur' }],
driverUserId: [{ required: true, message: '请填写司机所属用户 Id', trigger: 'blur' }],
truckCustomerId: [{ required: true, message: '请填写归属客户 Idcst_customer.id', trigger: 'blur' }],
truckOrgId: [{ required: true, message: '请填写归属组织', trigger: 'blur' }],
truckOrgId: [ {required: true, message: '请填写归属企业', trigger: 'blur'} ],
truckId: [{ required: true, message: '请填写车辆 Id', trigger: 'blur' }],
truckLicensePlate: [{ required: true, message: '请填写车牌号', trigger: 'blur' }],
historyTareWeight: [{ required: true, message: '请填写历史皮重', trigger: 'blur' }],

View File

@ -39,7 +39,7 @@ declare global {
driverUserId?: string;
// 归属客户 Idcst_customer.id
truckCustomerId?: string;
// 归属组织
// 归属企业
truckOrgId?: string;
// 车辆 Id
truckId?: string;
@ -138,7 +138,7 @@ declare global {
driverUserId?: string;
// 归属客户 Idcst_customer.id
truckCustomerId?: string;
// 归属组织
// 归属企业
truckOrgId?: string;
// 车辆 Id
truckId?: string;
@ -237,7 +237,7 @@ declare global {
driverUserId?: string;
// 归属客户 Idcst_customer.id
truckCustomerId?: string;
// 归属组织
// 归属企业
truckOrgId?: string;
// 车辆 Id
truckId?: string;
@ -336,7 +336,7 @@ declare global {
driverUserId?: string;
// 归属客户 Idcst_customer.id
truckCustomerId?: string;
// 归属组织
// 归属企业
truckOrgId?: string;
// 车辆 Id
truckId?: string;

View File

@ -7,22 +7,22 @@
<ElForm :model="dictFormData"
class="sys_dict-form"
label-width="auto">
<ElFormItem label-width="90" label="字典标识">
<ElFormItem label="字典标识">
<ElInput
v-model="dictFormData.dictKey"
:disabled="status === 'view'"
placeholder="字典标识"/>
</ElFormItem>
<ElFormItem label-width="90" label="字典名称">
<ElFormItem label="字典名称">
<ElInput
v-model="dictFormData.dictName"
:disabled="status === 'view'"
placeholder="字典名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="备注">
<ElFormItem label="备注">
<ElInput
v-model="dictFormData.memo"
:disabled="status === 'view'"
placeholder="备注"/>
</ElFormItem>
</ElForm>

View File

@ -7,30 +7,30 @@
<ElForm :model="dictItemFormData"
class="sys_dict_item-form"
label-width="auto">
<ElFormItem label-width="90" label="值">
<ElFormItem label="值">
<ElInput
v-model="dictItemFormData.val"
:disabled="status === 'view'"
placeholder="值"/>
</ElFormItem>
<ElFormItem label-width="90" label="文本">
<ElFormItem label="文本">
<ElInput
v-model="dictItemFormData.txt"
:disabled="status === 'view'"
placeholder="文本"/>
</ElFormItem>
<ElFormItem label-width="90" label="排序">
<ElFormItem label="排序">
<ElInputNumber
v-model="dictItemFormData.sort"
:disabled="status === 'view'"
:min="1"
placeholder="排序"
style="width: 100%"/>
</ElFormItem>
<ElFormItem label-width="90" label="备注">
<ElFormItem label="备注">
<ElInput
v-model="dictItemFormData.memo"
:disabled="status === 'view'"
placeholder="备注"/>
</ElFormItem>
</ElForm>

View File

@ -11,10 +11,10 @@
class="form-panel"
label-width="auto">
<ElFormItem label-width="90" label="请求方式" prop="requestMethod">
<ElFormItem label="请求方式" prop="requestMethod">
<ElSelect
v-model="formData.requestMethod"
:disabled="status === 'view'"
placeholder="请求方式">
<ElOption label="GET 请求" value="GET"/>
<ElOption label="POST 请求" value="POST"/>
@ -22,22 +22,22 @@
<ElOption label="DELETE 请求" value="DELETE"/>
</ElSelect>
</ElFormItem>
<ElFormItem label-width="90" label="路由前缀" prop="routingPath">
<ElFormItem label="路由前缀" prop="routingPath">
<ElInput
v-model="formData.routingPath"
:disabled="status === 'view'"
placeholder="以 / 开头 或 为空"/>
</ElFormItem>
<ElFormItem label-width="90" label="端点地址" prop="endpointPath">
<ElFormItem label="端点地址" prop="endpointPath">
<ElInput
v-model="formData.endpointPath"
:disabled="status === 'view'"
placeholder="以 / 开头"/>
</ElFormItem>
<ElFormItem label-width="90" label="访问模式" prop="accessModel">
<ElFormItem label="访问模式" prop="accessModel">
<ElSelect
v-model="formData.accessModel"
:disabled="status === 'view'"
placeholder="访问模式">
<ElOption label="允许匿名访问" value="Anonymous"/>
<ElOption label="允许已登录用户访问" value="Logined"/>
@ -45,10 +45,10 @@
<ElOption label="禁止访问" value="Forbidden"/>
</ElSelect>
</ElFormItem>
<ElFormItem label-width="90" label="备注" prop="memo">
<ElFormItem label="备注" prop="memo">
<ElInput
v-model="formData.memo"
:disabled="status === 'view'"
placeholder="备注"/>
</ElFormItem>
</ElForm>

View File

@ -11,7 +11,7 @@
ref="codeForm"
:rules="rules"
label-width="auto">
<ElFormItem label-width="90" label="表名称">
<ElFormItem label="表名称">
<ElTooltip
:content="currentTable.tableComment"
placement="top">
@ -21,7 +21,7 @@
/>
</ElTooltip>
</ElFormItem>
<ElFormItem label-width="90" label="前端/后端" prop="lang">
<ElFormItem label="前端/后端" prop="lang">
<ElSelect
v-model="formData.lang"
placeholder="前端/后端"
@ -34,7 +34,7 @@
value="java"/>
</ElSelect>
</ElFormItem>
<ElFormItem label-width="90" label="表前缀" prop="data.prefix">
<ElFormItem label="表前缀" prop="data.prefix">
<ElInput
v-model="formData.data.prefix"
placeholder="表前缀"/>

View File

@ -20,7 +20,8 @@
<script lang="ts" setup>
import CodePreview from '@/pages/sys/gen/db-table/CodePreview.vue'
import DbTableApi from '@/pages/sys/gen/db-table/db-table-api.ts'
import FormPage, { type ActionColumnType } from '@/components/page/FormPage.vue'
import FormPage from '@/components/page/FormPage.vue'
import type { ActionColumnType } from '@/components/page/a-page-type.ts'
const codePreviewIns = useTemplateRef<InstanceType<typeof CodePreview>>('codePreview')

View File

@ -7,16 +7,16 @@
<ElForm :model="tplFormData"
class="sys_tpl-form"
label-width="auto">
<ElFormItem label-width="90" label="模板名称">
<ElFormItem label="模板名称">
<ElInput
v-model="tplFormData.tplName"
:disabled="status === 'view'"
placeholder="模板名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="前端/后端">
<ElFormItem label="前端/后端">
<ElSelect
v-model="tplFormData.lang"
:disabled="status === 'view'"
placeholder="前端/后端"
>
<ElOption
@ -27,31 +27,31 @@
value="java"/>
</ElSelect>
</ElFormItem>
<ElFormItem label-width="90" label="模板内容">
<ElFormItem label="模板内容">
<ElInput
v-model="tplFormData.tpl.content"
:spellcheck="false"
:disabled="status === 'view'"
placeholder="模板内容"
resize="none"
type="textarea"/>
</ElFormItem>
<ElFormItem label-width="90" label="文件路径">
<ElFormItem label="文件路径">
<ElInput
:spellcheck="false"
v-model="tplFormData.tpl.dir"
:disabled="status === 'view'"
placeholder="文件路径"
resize="none"
type="textarea"/>
</ElFormItem>
<ElFormItem label-width="90" label="文件名称">
<ElFormItem label="文件名称">
<ElInput
:spellcheck="false"
v-model="tplFormData.tpl.filename"
:disabled="status === 'view'"
placeholder="文件名称"
resize="none"
type="textarea"/>

View File

@ -3,36 +3,36 @@
:close-on-click-modal="false"
destroy-on-close width="25vw" @close="dialogCloseHandler">
<ElForm :model="menuForm" class="menu-form" label-width="auto">
<ElFormItem label-width="90" label="上级">
<ElTreeSelect v-model="menuForm.pid" :data="menuTreeDataSource" :default-expanded-keys="['0']" :disabled="status === 'view'" :render-after-expand="false" check-strictly placeholder="选择上级菜单"/>
<ElFormItem label="上级">
<ElTreeSelect v-model="menuForm.pid" :data="menuTreeDataSource" :default-expanded-keys="['0']" :render-after-expand="false" check-strictly placeholder="选择上级菜单"/>
</ElFormItem>
<ElFormItem label-width="90" label="客户端" prop="clients">
<ElFormItem label="客户端" prop="clients">
<ElCheckboxGroup v-model="menuForm.clients">
<ElCheckbox v-for="client in ClientUtil.clients" :key="client.val" :label="client.txt" :value="client.val"/>
</ElCheckboxGroup>
</ElFormItem>
<ElFormItem label-width="90" label="类型">
<ElSelect v-model="menuForm.menuCategory" :data="menuCategoryData" :disabled="status === 'view'" placeholder="选择类型">
<ElFormItem label="类型">
<ElSelect v-model="menuForm.menuCategory" :data="menuCategoryData" placeholder="选择类型">
<ElOption v-for="menuCategory in menuCategoryData" :key="menuCategory.key" :label="menuCategory.label" :value="menuCategory.key"/>
</ElSelect>
</ElFormItem>
<ElFormItem label-width="90" label="名称">
<ElInput v-model="menuForm.title" :disabled="status === 'view'" placeholder="名称"/>
<ElFormItem label="名称">
<ElInput v-model="menuForm.title" placeholder="名称"/>
</ElFormItem>
<ElFormItem v-if="menuForm.menuCategory === MenuCategory.Page || menuForm.menuCategory === MenuCategory.SubPage" :disabled="status === 'view'" label="路由名称">
<ElFormItem v-if="menuForm.menuCategory === MenuCategory.Page || menuForm.menuCategory === MenuCategory.SubPage" label="路由名称">
<ElInput v-model="menuForm.routeName" :min="0" placeholder="路由名称"/>
</ElFormItem>
<ElFormItem v-if="menuForm.menuCategory === MenuCategory.Page || menuForm.menuCategory === MenuCategory.SubPage" :disabled="status === 'view'" label="路由地址">
<ElFormItem v-if="menuForm.menuCategory === MenuCategory.Page || menuForm.menuCategory === MenuCategory.SubPage" label="路由地址">
<ElInput v-model="menuForm.routePath" :min="0" placeholder="路由地址"/>
</ElFormItem>
<ElFormItem label-width="90" label="编码">
<ElInput v-model="menuForm.sn" :disabled="status === 'view'" :min="0" placeholder="编码"/>
<ElFormItem label="编码">
<ElInput v-model="menuForm.sn" :min="0" placeholder="编码"/>
</ElFormItem>
<ElFormItem label-width="90" label="图标">
<ElFormItem label="图标">
<ElDropdown closable header="图标列表" placement="bottom" style="width: 100%" trigger="click">
<ElInput v-model="menuForm.iconName" placeholder="选择图标" :disabled="status === 'view'" readonly>
<ElInput v-model="menuForm.iconName" placeholder="选择图标" readonly>
<template #suffix>
<AIcon :name="menuForm.icon!"/>
</template>
@ -62,8 +62,8 @@
</template>
</ElDropdown>
</ElFormItem>
<ElFormItem label-width="90" label="排序">
<ElInputNumber v-model="menuForm.sort" :disabled="status === 'view'" :min="0" placeholder="排序" style="width: 100%"/>
<ElFormItem label="排序">
<ElInputNumber v-model="menuForm.sort" :min="0" placeholder="排序" style="width: 100%"/>
</ElFormItem>
</ElForm>
<template #footer>

View File

@ -7,22 +7,22 @@
<ElForm :model="roleFormData"
class="sys_role-form"
label-width="auto">
<ElFormItem label-width="90" label="角色代码">
<ElFormItem label="角色代码">
<ElInput
v-model="roleFormData.roleCode"
:disabled="status === 'view'"
placeholder="角色代码"/>
</ElFormItem>
<ElFormItem label-width="90" label="角色名称">
<ElFormItem label="角色名称">
<ElInput
v-model="roleFormData.roleName"
:disabled="status === 'view'"
placeholder="角色名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="备注">
<ElFormItem label="备注">
<ElInput
v-model="roleFormData.memo"
:disabled="status === 'view'"
placeholder="备注"/>
</ElFormItem>
</ElForm>

View File

@ -3,37 +3,37 @@
:close-on-click-modal="false"
destroy-on-close width="25vw" @close="dialogCloseHandler">
<ElForm :model="taskFormData" class="sys_task-form" label-width="auto">
<ElFormItem label-width="90" label="任务名称">
<ElInput v-model="taskFormData.taskName" :disabled="status === 'view'" placeholder="任务名称"/>
<ElFormItem label="任务名称">
<ElInput v-model="taskFormData.taskName" placeholder="任务名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="任务执行函数">
<ElSelect v-model="taskFormData.fn" :disabled="status === 'view'" placeholder="请选择任务执行函数">
<ElFormItem label="任务执行函数">
<ElSelect v-model="taskFormData.fn" placeholder="请选择任务执行函数">
<ElOption v-for="item in fnList" :key="item.fn" :label="item.fn" :value="item.fn!"/>
</ElSelect>
</ElFormItem>
<ElFormItem label-width="90" label="日志等级">
<ElFormItem label="日志等级">
<ElSelect v-model="taskFormData.logLevel" placeholder="请选择日志等级">
<ElOption v-for="item in logLevelList" :key="item.value" :label="item.label" :value="item.value"/>
</ElSelect>
</ElFormItem>
<ElFormItem label-width="90" label="调度方式">
<ElFormItem label="调度方式">
<ElSelect v-model="taskFormData.scheduleType" placeholder="请选择调度方式" @change="scheduleTypeChange">
<ElOption v-for="item in scheduleTypeList" :key="item.value" :label="item.label" :value="item.value"/>
</ElSelect>
</ElFormItem>
<ElFormItem v-if="taskFormData.scheduleType === 'Cron'" label="调度配置">
<Cron v-model="taskFormData.scheduleConf" :disabled="status === 'view'" placeholder="调度配置"/>
<Cron v-model="taskFormData.scheduleConf" placeholder="调度配置"/>
</ElFormItem>
<ElFormItem v-else-if="taskFormData.scheduleType === 'Fixed'" label="调度配置">
<ElInput v-model="taskFormData.scheduleConf" :disabled="status === 'view'" placeholder="调度配置">
<ElInput v-model="taskFormData.scheduleConf" placeholder="调度配置">
<template #suffix>周期</template>
</ElInput>
</ElFormItem>
<ElFormItem label-width="90" label="是否禁用">
<ElFormItem label="是否禁用">
<ElSwitch v-model="taskFormData.disabled" active-text="" inactive-text=""/>
</ElFormItem>
<ElFormItem label-width="90" label="备注">
<ElInput v-model="taskFormData.memo" :disabled="status === 'view'" placeholder="备注"/>
<ElFormItem label="备注">
<ElInput v-model="taskFormData.memo" placeholder="备注"/>
</ElFormItem>
</ElForm>
<template #footer>

View File

@ -1,7 +1,7 @@
<template>
<div>
<ElForm v-show="showSearchForm" inline @submit.prevent="paging">
<ElFormItem label-width="90" label="日志时间">
<ElFormItem label="日志时间">
<ElDatePicker
v-model="searchForm.logTime"
:shortcuts="shortcuts"
@ -12,7 +12,7 @@
unlink-panels
/>
</ElFormItem>
<ElFormItem label-width="90" label="日志等级">
<ElFormItem label="日志等级">
<ElSelect v-model="searchForm.logLevel" placeholder="请选择日志等级" style="width: 150px;">
<ElOption v-for="item in logLevelList" :key="item.value" :label="item.label" :value="item.value"/>
</ElSelect>

View File

@ -1,7 +1,7 @@
<template>
<div>
<ElForm v-show="showSearchForm" inline @submit.prevent="paging">
<ElFormItem label-width="90" label="调度时间">
<ElFormItem label="调度时间">
<ElDatePicker
v-model="searchForm.scheduleTime"
:shortcuts="shortcuts"
@ -12,17 +12,17 @@
unlink-panels
/>
</ElFormItem>
<ElFormItem label-width="90" label="调度方式">
<ElFormItem label="调度方式">
<ElSelect v-model="searchForm.scheduleType" clearable placeholder="请选择调度方式" style="width: 150px" @clear="paging">
<ElOption v-for="item in scheduleTypeList" :key="item.value" :label="item.label" :value="item.value"/>
</ElSelect>
</ElFormItem>
<ElFormItem label-width="90" label="任务状态">
<ElFormItem label="任务状态">
<ElSelect v-model="searchForm.taskStatus" placeholder="请选择任务状态" style="width: 150px;">
<ElOption v-for="item in status" :key="item.value" :label="item.label" :value="item.value"/>
</ElSelect>
</ElFormItem>
<ElFormItem label-width="90" label="手动触发">
<ElFormItem label="手动触发">
<ElCheckbox
v-model="searchForm.manually"
placeholder="手动触发"/>

View File

@ -7,17 +7,17 @@
<ElForm :model="userFormData"
class="sys_user-form"
label-width="auto">
<ElFormItem label-width="90" label="姓名">
<ElFormItem label="姓名">
<ElInput
:readonly="userFormData.id=='1'"
v-model="userFormData.nickname"
:disabled="status === 'view'"
placeholder="姓名"/>
</ElFormItem>
<ElFormItem label-width="90" label="头像">
<ElFormItem label="头像">
<Uploader
v-model:file="userFormData.avatar"
:disabled="status === 'view'"
:upload-props="{
accept: 'image/*',
listType:'picture'
@ -25,10 +25,10 @@
<ElButton>点击上传头像</ElButton>
</Uploader>
</ElFormItem>
<ElFormItem label-width="90" label="联系电话">
<ElFormItem label="联系电话">
<ElInput
v-model="userFormData.phone"
:disabled="status === 'view'"
placeholder="联系电话"/>
</ElFormItem>
<ElFormItem v-if="status === 'add'" label="用户名">

View File

@ -33,6 +33,23 @@
<ElInput v-model="searchForm.goodsName" placeholder="产品名称"/>
</ElFormItem>
</template>
<template #simpleSearchFormItem="{ searchForm }">
<ElFormItem>
<ElInput v-model="searchForm.sn" placeholder="编号"/>
</ElFormItem>
<ElFormItem>
<ElInput v-model="searchForm.warehouseId" placeholder="仓库"/>
</ElFormItem>
<ElFormItem>
<ElInput v-model="searchForm.location" placeholder="存放位置"/>
</ElFormItem>
<ElFormItem>
<ElInput v-model="searchForm.inTime" placeholder="入库时间"/>
</ElFormItem>
<ElFormItem>
<ElInput v-model="searchForm.goodsName" placeholder="产品名称"/>
</ElFormItem>
</template>
<template #columns>
<ElTableColumn label="编号" prop="sn"/>
<ElTableColumn label="仓库" prop="warehouseName"/>
@ -48,7 +65,7 @@
<ElTableColumn label="创建时间" prop="createTime" width="170px"/>
<ElTableColumn label="修改时间" prop="modifyTime" width="170px"/>
</template>
<InOrderForm ref="inOrderForm" @edit-succ="research"/>
<InOrderForm ref="inOrderForm" :research="research"/>
</FormPage>
</template>

View File

@ -1,225 +1,130 @@
<template>
<ElDialog v-model="showDialog" :close-on-click-modal="false" destroy-on-close width="fit-content" @close="dialogCloseHandler">
<ElForm :model="formData" :rules="rules" ref="inOrderForm" class="form-panel" label-width="auto">
<!-- <ElFormItem label-width="90" label="编号" prop="sn">
<ElInput
v-model="formData.sn"
:disabled="status === 'view'"
placeholder="编号"/>
</ElFormItem> -->
<ElFormItem label-width="90" label="责任人" prop="responsibleId">
<!-- <ElInput
v-model="formData.responsibleId"
:disabled="status === 'view'"
placeholder="责任人"/> -->
<ASelect labelKey="nickname" :tableColumn="userColumn" v-model="formData.responsibleId" :api="UserApi.paging" :disabled="status === 'view'" placeholder="请选择负责人" />
</ElFormItem>
<AFormPanel
ref="formPanel"
:details-loader="detailsLoader"
:do-submit="doSubmit"
:rules="rules"
:title="status === 'add' ? '新建站点' : '修改站点'"
>
<template #default="{formData}">
<div class="form-items">
<ElFormItem label="责任人" prop="responsibleId">
</ElFormItem>
<ElFormItem label-width="90" label="仓库" prop="warehouseId">
<!-- <ElInput
v-model="formData.warehouseId"
:disabled="status === 'view'"
placeholder="仓库"/> -->
<ASelect labelKey="warehouseName" v-model="formData.warehouseId" @change="warehouseChange" :tableColumn="warehouseColumn" :api="WarehouseApi.paging" :disabled="status === 'view'" placeholder="选择仓库" />
</ElFormItem>
<ElFormItem label-width="90" label="存放位置" prop="location">
<ElInput readonly v-model="formData.location" :disabled="status === 'view'" placeholder="存放位置" />
</ElFormItem>
<ElFormItem label-width="90" label="入库时间" prop="inTime">
<ElDatePicker v-model="formData.inTime" :disabled="status === 'view'" format="YYYY-MM-DD" value-format="YYYY-MM-DD" type="date" placeholder="请选择入库日期" />
<!-- <ElInput v-model="formData.inTime" :disabled="status === 'view'" placeholder="入库时间" /> -->
</ElFormItem>
<ElFormItem label-width="90" label="采购单" prop="orderId">
<ASelect labelKey="sn" @change="orderChange" :tableColumn="orderColumn" v-model="formData.orderId" :api="PurchaseOrderApi.paging" :disabled="status === 'view'" placeholder="请选择负责人" />
<!-- <ElInput v-model="formData.orderId" :disabled="status === 'view'" placeholder="采购单 Idwh_purchase_order.id" /> -->
</ElFormItem>
<ElFormItem label-width="90" label="采购单单号" prop="orderSn">
<ElInput v-model="formData.orderSn" readonly :disabled="status === 'view'" placeholder="采购单单号wh_purchase_order.sn" />
</ElFormItem>
<!-- <ElFormItem label-width="90" label="产品分类 Id" prop="goodsCategoryId">
<ElInput v-model="formData.goodsCategoryId" :disabled="status === 'view'" placeholder="产品分类 Id" />
</ElFormItem> -->
<ElFormItem label-width="90" label="分类名称" prop="goodsCategoryName">
<ElInput v-model="formData.goodsCategoryName" readonly :disabled="status === 'view'" placeholder="分类名称" />
</ElFormItem>
<ElFormItem label-width="90" label="产品名称" prop="goodsName">
<ElInput v-model="formData.goodsName" readonly :disabled="status === 'view'" placeholder="产品名称" />
</ElFormItem>
<!-- <ElFormItem label-width="90" label="产品编码" prop="goodSn">
<ElInput v-model="formData.goodSn" readonly :disabled="status === 'view'" placeholder="产品编码" />
</ElFormItem> -->
<ElFormItem label-width="90" label="数量" prop="quantity">
<ElInput v-model="formData.quantity" readonly :disabled="status === 'view'" placeholder="数量" />
</ElFormItem>
<!-- <ElFormItem label-width="90" label="计量单位字典代码unit" prop="unit">
<ElInput v-model="formData.unit" :disabled="status === 'view'" placeholder="计量单位字典代码unit" />
</ElFormItem> -->
<ElFormItem label-width="90" label="备注" prop="memo">
<ElInput v-model="formData.memo" readonly :disabled="status === 'view'" placeholder="备注" />
</ElFormItem>
</ElForm>
<template #footer>
<ElButton @click="showDialog = false">{{ status === "view" ? "关闭" : "取消" }}</ElButton>
<ElButton v-if="status !== 'view'" :loading="submiting" type="primary" @click="submitHandler"></ElButton>
<ElFormItem label="仓库" prop="warehouseId">
</ElFormItem>
<ElFormItem label="存放位置" prop="location">
<ElInput v-model="formData.location" placeholder="存放位置" readonly/>
</ElFormItem>
<ElFormItem label="入库时间" prop="inTime">
<ElDatePicker v-model="formData.inTime" format="YYYY-MM-DD" placeholder="请选择入库日期" type="date" value-format="YYYY-MM-DD"/>
<!-- <ElInput v-model="formData.inTime" placeholder="入库时间" /> -->
</ElFormItem>
<ElFormItem label="采购单" prop="orderId">
</ElFormItem>
<ElFormItem label="采购单单号" prop="orderSn">
<ElInput v-model="formData.orderSn" placeholder="采购单单号wh_purchase_order.sn" readonly/>
</ElFormItem>
<!-- <ElFormItem label="产品分类 Id" prop="goodsCategoryId">
<ElInput v-model="formData.goodsCategoryId" placeholder="产品分类 Id" />
</ElFormItem> -->
<ElFormItem label="分类名称" prop="goodsCategoryName">
<ElInput v-model="formData.goodsCategoryName" placeholder="分类名称" readonly/>
</ElFormItem>
<ElFormItem label="产品名称" prop="goodsName">
<ElInput v-model="formData.goodsName" placeholder="产品名称" readonly/>
</ElFormItem>
<!-- <ElFormItem label="产品编码" prop="goodSn">
<ElInput v-model="formData.goodSn" readonly placeholder="产品编码" />
</ElFormItem> -->
<ElFormItem label="数量" prop="quantity">
<ElInput v-model="formData.quantity" placeholder="数量" readonly/>
</ElFormItem>
<!-- <ElFormItem label="计量单位字典代码unit" prop="unit">
<ElInput v-model="formData.unit" placeholder="计量单位字典代码unit" />
</ElFormItem> -->
<ElFormItem label="备注" prop="memo">
<ElInput v-model="formData.memo" placeholder="备注" readonly/>
</ElFormItem>
</div>
</template>
</ElDialog>
</AFormPanel>
</template>
<script lang="ts" setup>
import InOrderApi from '@/pages/wh/in-order/in-order-api.ts'
import Strings from '@/common/utils/strings.ts'
import FormUtil from '@/common/utils/formUtil.ts'
import Utils from '@/common/utils'
import {
ElMessage,
type FormInstance,
type FormRules,
} from 'element-plus'
import ASelect from '@/components/a-select/ASelect.vue'
import UserApi from '@/pages/sys/user/user-api.ts'
import WarehouseApi from '@/pages/wh/warehouse/warehouse-api.ts'
import PurchaseOrderApi from '@/pages/wh/purchase-order/purchase-order-api.ts'
import { type FormRules } from 'element-plus'
import type { ComponentExposed } from 'vue-component-type-helpers'
import AFormPanel from '@/components/a-form-panel/AFormPanel.vue'
const emits = defineEmits(["editSucc"]);
const showDialog = ref(false);
const submiting = ref(false);
const status = ref<"add" | "view" | "modify">("add");
const inOrderFormIns = useTemplateRef<FormInstance>("inOrderForm");
const formData = Utils.resetAble(reactive<InOrderTypes.SearchInOrderResult>({}));
const props = withDefaults(defineProps<{
research?: () => void
}>(), {
research: () => {
},
})
const rules = reactive<FormRules<InOrderTypes.SearchInOrderResult>>({
id: [{ required: true, message: "请填写Id", trigger: "blur" }],
sn: [{ required: true, message: "请填写编号", trigger: "blur" }],
responsibleId: [{ required: true, message: "请填写责任人", trigger: "blur" }],
warehouseId: [{ required: true, message: "请填写仓库", trigger: "blur" }],
location: [{ required: true, message: "请填写存放位置", trigger: "blur" }],
inTime: [{ required: true, message: "请填写入库时间", trigger: "blur" }],
orderId: [{ required: true, message: "请填写采购单", trigger: "blur" }],
orderSn: [{ required: true, message: "请填写采购单单号", trigger: "blur" }],
goodsCategoryId: [{ required: true, message: "请填写产品分类 Id", trigger: "blur" }],
goodsCategoryName: [{ required: true, message: "请填写分类名称", trigger: "blur" }],
goodsId: [{ required: true, message: "请填写产品 Id", trigger: "blur" }],
goodsName: [{ required: true, message: "请填写产品名称", trigger: "blur" }],
id: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
sn: [ {required: true, message: '请填写编号', trigger: 'blur'} ],
responsibleId: [ {required: true, message: '请填写责任人', trigger: 'blur'} ],
warehouseId: [ {required: true, message: '请填写仓库', trigger: 'blur'} ],
location: [ {required: true, message: '请填写存放位置', trigger: 'blur'} ],
inTime: [ {required: true, message: '请填写入库时间', trigger: 'blur'} ],
orderId: [ {required: true, message: '请填写采购单', trigger: 'blur'} ],
orderSn: [ {required: true, message: '请填写采购单单号', trigger: 'blur'} ],
goodsCategoryId: [ {required: true, message: '请填写产品分类 Id', trigger: 'blur'} ],
goodsCategoryName: [ {required: true, message: '请填写分类名称', trigger: 'blur'} ],
goodsId: [ {required: true, message: '请填写产品 Id', trigger: 'blur'} ],
goodsName: [ {required: true, message: '请填写产品名称', trigger: 'blur'} ],
goodSn: [ {required: true, message: '请填写产品编码', trigger: 'blur'} ],
quantity: [{ required: true, message: "请填写数量", trigger: "blur" }],
unit: [{ required: true, message: "请填写计量单位字典代码unit", trigger: "blur" }],
memo: [{ required: true, message: "请填写备注", trigger: "blur" }],
creatorId: [{ required: true, message: "请填写创建人 Id sys_user.id", trigger: "blur" }],
modifierId: [{ required: true, message: "请填写修改人 Id sys_user.id", trigger: "blur" }],
createTime: [{ required: true, message: "请填写创建时间", trigger: "blur" }],
modifyTime: [{ required: true, message: "请填写修改时间", trigger: "blur" }],
deleted: [{ required: true, message: "请填写是否删除; 0-->未删除、1-->已删除", trigger: "blur" }],
});
quantity: [ {required: true, message: '请填写数量', trigger: 'blur'} ],
unit: [ {required: true, message: '请填写计量单位字典代码unit', trigger: 'blur'} ],
memo: [ {required: true, message: '请填写备注', trigger: 'blur'} ],
creatorId: [ {required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur'} ],
modifierId: [ {required: true, message: '请填写修改人 Id sys_user.id', trigger: 'blur'} ],
createTime: [ {required: true, message: '请填写创建时间', trigger: 'blur'} ],
modifyTime: [ {required: true, message: '请填写修改时间', trigger: 'blur'} ],
deleted: [ {required: true, message: '请填写是否删除; 0-->未删除、1-->已删除', trigger: 'blur'} ],
})
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const userColumn = [
{
label: "姓名",
prop: "nickname",
},
{
label: "联系电话",
prop: "phone",
},
{
label: "用户名",
prop: "account.username",
},
];
const status = ref<'add' | 'modify'>('add')
const orderColumn = [
{
label: "编号",
prop: "sn",
},
{
label: "产品名称",
prop: "goodsName",
},
{
label: "采购日期",
prop: "purchaseDate ",
},
{
label: "数量",
prop: "quantity",
},
];
const warehouseColumn = [
{
label: "名称",
prop: "warehouseName",
},
{
label: "位置",
prop: "location",
},
];
function warehouseChange(e: any) {
formData.location = e.location;
}
function orderChange(e: any) {
console.log(e, "ee");
formData.orderSn = e.sn;
formData.goodsCategoryId = e.goodsCategoryId;
formData.goodsCategoryName = e.goodsCategoryName;
formData.goodsName = e.goodsName;
formData.goodSn = e.goodSn;
formData.goodsId = e.goodsId;
formData.quantity = e.quantity;
formData.unit = e.unit;
}
function dialogCloseHandler() {
formData.$reset();
}
function submitHandler() {
if (status.value === "view") return;
submiting.value = true;
if (formData.id != null) {
FormUtil.submit(inOrderFormIns, () => InOrderApi.modify(formData))
.then(() => {
ElMessage.success("修改成功");
emits("editSucc");
showDialog.value = false;
})
.finally(() => {
submiting.value = false;
});
function detailsLoader(id?: string) {
if (Strings.isBlank(id)) {
status.value = 'add'
return Promise.resolve()
} else {
FormUtil.submit(inOrderFormIns, () => InOrderApi.add(formData))
.then(() => {
ElMessage.success("添加成功");
emits("editSucc");
showDialog.value = false;
})
.finally(() => {
submiting.value = false;
});
status.value = 'modify'
return InOrderApi
.detail(id!)
.then(res => res.data)
}
}
function doSubmit(data: InOrderTypes.SearchInOrderResult) {
if (status.value === 'add') {
return InOrderApi.add(data)
.then(props.research)
} else {
return InOrderApi.modify(data)
.then(props.research)
}
}
defineExpose({
open(data: InOrderTypes.SearchInOrderResult = {}) {
showDialog.value = true;
if (!Strings.isBlank(data.id)) {
status.value = "modify";
InOrderApi.detail(data.id!).then((res) => {
formData.$reset(res.data);
});
} else {
status.value = "add";
formData.$reset(data);
}
open(data?: InOrderTypes.SearchInOrderResult) {
formPanelIns.value?.open(data?.id)
},
});
})
</script>
<style lang="stylus" scoped>
.form-panel {
padding 20px
.form-items {
grid-template-columns: 1fr 1fr;
:deep(.el-form-item) {
}
}
</style>

View File

@ -45,6 +45,23 @@
<ElInput v-model="searchForm.modifyTime" placeholder="修改时间"/>
</ElFormItem>
</template>
<template #simpleSearchFormItem="{ searchForm }">
<ElFormItem label="存放位置">
<ElInput v-model="searchForm.location" placeholder="存放位置"/>
</ElFormItem>
<ElFormItem label="当前库存数量">
<ElInput v-model="searchForm.stockQuantity" placeholder="当前库存数量"/>
</ElFormItem>
<ElFormItem label="锁定数量">
<ElInput v-model="searchForm.lockQuantity" placeholder="锁定数量"/>
</ElFormItem>
<ElFormItem label="总量">
<ElInput v-model="searchForm.totalQuantity" placeholder="总量"/>
</ElFormItem>
<ElFormItem label="剩余量">
<ElInput v-model="searchForm.remainingQuantity" placeholder="剩余量"/>
</ElFormItem>
</template>
<template #columns>
<ElTableColumn label="仓库" prop="warehouseName"/>
<ElTableColumn label="产品" prop="goodsName"/>
@ -57,7 +74,7 @@
<ElTableColumn label="创建时间" prop="createTime" width="180"/>
<ElTableColumn label="修改时间" prop="modifyTime" width="180"/>
</template>
<InventoryForm ref="inventoryForm" @edit-succ="research"/>
<InventoryForm ref="inventoryForm" :research="research"/>
</FormPage>
</template>

View File

@ -1,194 +1,120 @@
<template>
<ElDialog v-model="showDialog"
:close-on-click-modal="false"
destroy-on-close
width="fit-content"
@close="dialogCloseHandler">
<ElForm :model="formData"
:rules="rules"
ref="inventoryForm"
class="form-panel"
label-width="auto">
<!-- <ElFormItem label-width="90" label="Id" prop="id">
<ElInput
v-model="formData.id"
:disabled="status === 'view'"
placeholder="Id"/>
</ElFormItem> -->
<ElFormItem label-width="90" label="仓库" prop="warehouseId">
<AFormPanel
ref="formPanel"
:details-loader="detailsLoader"
:do-submit="doSubmit"
:rules="rules"
:title="status === 'add' ? '新建项目' : '修改项目'"
>
<template #default="{formData}">
<div class="form-items">
<ElFormItem label="仓库" prop="warehouseId">
</ElFormItem>
<ElFormItem label="产品" prop="goodsId">
</ElFormItem>
<ElFormItem label="存放位置" prop="location">
<ElInput
v-model="formData.location"
<ASelect labelKey="warehouseName" v-model="formData.warehouseId" :tableColumn="warehouseColumn" :api="WarehouseApi.paging" :disabled="status === 'view'" placeholder="选择仓库" />
placeholder="存放位置"/>
</ElFormItem>
<ElFormItem label="当前库存数量" prop="stockQuantity">
<ElInput
v-model="formData.stockQuantity"
<!-- <ElInput
v-model="formData.warehouseId"
:disabled="status === 'view'"
placeholder="仓库 Id"/> -->
</ElFormItem>
<ElFormItem label-width="90" label="产品" prop="goodsId">
<ASelect labelKey="goodsName" v-model="formData.goodsId" :tableColumn="goodColumn" @change="goodsChange" :api="GoodsApi.paging" :disabled="status === 'view'" placeholder="选择产品" />
<!-- <ElInput v-model="formData.goodsId" :disabled="status === 'view'" placeholder="产品 Id" /> -->
</ElFormItem>
<ElFormItem label-width="90" label="存放位置" prop="location">
<ElInput
v-model="formData.location"
:disabled="status === 'view'"
placeholder="存放位置"/>
</ElFormItem>
<ElFormItem label-width="90" label="当前库存数量" prop="stockQuantity">
<ElInput
v-model="formData.stockQuantity"
:disabled="status === 'view'"
placeholder="当前库存数量"/>
</ElFormItem>
<ElFormItem label-width="90" label="锁定数量" prop="lockQuantity">
<ElInput
v-model="formData.lockQuantity"
:disabled="status === 'view'"
placeholder="锁定数量"/>
</ElFormItem>
<ElFormItem label-width="90" label="总量" prop="totalQuantity">
<ElInput
v-model="formData.totalQuantity"
:disabled="status === 'view'"
placeholder="总量"/>
</ElFormItem>
<ElFormItem label-width="90" label="剩余量" prop="remainingQuantity">
<ElInput
v-model="formData.remainingQuantity"
:disabled="status === 'view'"
placeholder="剩余量"/>
</ElFormItem>
<!-- <ElFormItem label-width="90" label="计量单位" prop="unit">
<ElInput
v-model="formData.unit"
:disabled="status === 'view'"
placeholder="计量单位"/>
</ElFormItem> -->
placeholder="当前库存数量"/>
</ElFormItem>
<ElFormItem label="锁定数量" prop="lockQuantity">
<ElInput
v-model="formData.lockQuantity"
</ElForm>
<template #footer>
<ElButton @click="showDialog = false">{{ status === 'view' ? '关闭' : '取消' }}</ElButton>
<ElButton v-if="status !== 'view'" :loading="submiting" type="primary" @click="submitHandler"></ElButton>
placeholder="锁定数量"/>
</ElFormItem>
<ElFormItem label="总量" prop="totalQuantity">
<ElInput
v-model="formData.totalQuantity"
placeholder="总量"/>
</ElFormItem>
<ElFormItem label="剩余量" prop="remainingQuantity">
<ElInput
v-model="formData.remainingQuantity"
placeholder="剩余量"/>
</ElFormItem>
</div>
</template>
</ElDialog>
</AFormPanel>
</template>
<script lang="ts" setup>
import InventoryApi from '@/pages/wh/inventory/inventory-api.ts'
import Strings from '@/common/utils/strings.ts'
import FormUtil from '@/common/utils/formUtil.ts'
import Utils from '@/common/utils'
import {
ElMessage,
type FormInstance,
type FormRules,
} from 'element-plus'
import ASelect from "@/components/a-select/ASelect.vue";
import WarehouseApi from '@/pages/wh/warehouse/warehouse-api.ts'
import GoodsApi from "@/pages/gds/goods/goods-api.ts";
import { type FormRules } from 'element-plus'
import type { ComponentExposed } from 'vue-component-type-helpers'
import AFormPanel from '@/components/a-form-panel/AFormPanel.vue'
const emits = defineEmits(['editSucc'])
const showDialog = ref(false)
const submiting = ref(false)
const status = ref<'add' | 'view' | 'modify'>('add')
const inventoryFormIns = useTemplateRef<FormInstance>('inventoryForm')
const formData = Utils.resetAble(reactive<InventoryTypes.SearchInventoryResult>({}))
const rules = reactive<FormRules<InventoryTypes.SearchInventoryResult>>({
id: [{ required: true, message: '请填写Id', trigger: 'blur' }],
warehouseId: [{ required: true, message: '请填写仓库 Id', trigger: 'blur' }],
goodsId: [{ required: true, message: '请填写产品 Id', trigger: 'blur' }],
location: [{ required: true, message: '请填写存放位置', trigger: 'blur' }],
stockQuantity: [{ required: true, message: '请填写当前库存数量', trigger: 'blur' }],
lockQuantity: [{ required: true, message: '请填写锁定数量', trigger: 'blur' }],
totalQuantity: [{ required: true, message: '请填写总量', trigger: 'blur' }],
remainingQuantity: [{ required: true, message: '请填写剩余量', trigger: 'blur' }],
unit: [{ required: true, message: '请填写计量单位', trigger: 'blur' }],
creatorId: [{ required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur' }],
modifierId: [{ required: true, message: '请填写修改人 Id sys_user.id', trigger: 'blur' }],
createTime: [{ required: true, message: '请填写创建时间', trigger: 'blur' }],
modifyTime: [{ required: true, message: '请填写修改时间', trigger: 'blur' }],
deleted: [{ required: true, message: '请填写是否删除; 0-->未删除、1-->已删除', trigger: 'blur' }],
const props = withDefaults(defineProps<{
research?: () => void
}>(), {
research: () => {
},
})
function dialogCloseHandler() {
formData.$reset()
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const status = ref<'add' | 'modify'>('add')
const rules = reactive<FormRules<InventoryTypes.SearchInventoryResult>>({
id: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
warehouseId: [ {required: true, message: '请填写仓库 Id', trigger: 'blur'} ],
goodsId: [ {required: true, message: '请填写产品 Id', trigger: 'blur'} ],
location: [ {required: true, message: '请填写存放位置', trigger: 'blur'} ],
stockQuantity: [ {required: true, message: '请填写当前库存数量', trigger: 'blur'} ],
lockQuantity: [ {required: true, message: '请填写锁定数量', trigger: 'blur'} ],
totalQuantity: [ {required: true, message: '请填写总量', trigger: 'blur'} ],
remainingQuantity: [ {required: true, message: '请填写剩余量', trigger: 'blur'} ],
unit: [ {required: true, message: '请填写计量单位', trigger: 'blur'} ],
creatorId: [ {required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur'} ],
modifierId: [ {required: true, message: '请填写修改人 Id sys_user.id', trigger: 'blur'} ],
createTime: [ {required: true, message: '请填写创建时间', trigger: 'blur'} ],
modifyTime: [ {required: true, message: '请填写修改时间', trigger: 'blur'} ],
deleted: [ {required: true, message: '请填写是否删除; 0-->未删除、1-->已删除', trigger: 'blur'} ],
})
function detailsLoader(id?: string) {
if (Strings.isBlank(id)) {
status.value = 'add'
return Promise.resolve()
} else {
status.value = 'modify'
return InventoryApi
.detail(id!)
.then(res => res.data)
}
}
const warehouseColumn = [
{
label: "名称",
prop: "warehouseName",
},
{
label: "位置",
prop: "location",
}
];
const goodColumn = [
{
label: "名称",
prop: "goodsName",
},
{
label: "规格",
prop: "specParams",
},
{
label: "计量单位",
prop: "unitTxt",
},
];
const goodsChange = (val: any) => {
// console.log(item, 'itemmm')
formData.unit = val.unit;
};
function submitHandler() {
if (status.value === 'view') return
submiting.value = true
if (formData.id != null) {
FormUtil.submit(inventoryFormIns, () => InventoryApi.modify(formData))
.then(() => {
ElMessage.success('修改成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
function doSubmit(data: InventoryTypes.SearchInventoryResult) {
if (status.value === 'add') {
return InventoryApi.add(data)
.then(props.research)
} else {
FormUtil.submit(inventoryFormIns, () => InventoryApi.add(formData))
.then(() => {
ElMessage.success('添加成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
return InventoryApi.modify(data)
.then(props.research)
}
}
defineExpose({
open(data: InventoryTypes.SearchInventoryResult = {}) {
showDialog.value = true
if (!Strings.isBlank(data.id)) {
status.value = 'modify'
InventoryApi.detail(data.id!)
.then(res => {
formData.$reset(res.data)
})
} else {
status.value = 'add'
formData.$reset(data)
}
}
open(data?: InventoryTypes.SearchInventoryResult) {
formPanelIns.value?.open(data?.id)
},
})
</script>
<style lang="stylus" scoped>
.form-panel {
padding 20px
.form-items {
grid-template-columns: 1fr 1fr;
:deep(.el-form-item) {
}
}
</style>

View File

@ -72,6 +72,11 @@
<ElInput v-model="searchForm.modifyTime" placeholder="修改时间"/>
</ElFormItem>
</template>
<template #simpleSearchFormItem="{ searchForm }">
<ElFormItem label="编号">
<ElInput v-model="searchForm.sn" placeholder="编号"/>
</ElFormItem>
</template>
<template #columns>
<ElTableColumn label="编号" prop="sn"/>
<ElTableColumn label="仓库" prop="warehouseName"/>
@ -87,7 +92,7 @@
<ElTableColumn label="创建时间" prop="createTime" width="170px"/>
<ElTableColumn label="修改时间" prop="modifyTime" width="170px"/>
</template>
<OutOrderForm ref="outOrderForm" @edit-succ="research"/>
<OutOrderForm ref="outOrderForm" :research="research"/>
</FormPage>
</template>

View File

@ -1,220 +1,142 @@
<template>
<ElDialog v-model="showDialog" :close-on-click-modal="false" destroy-on-close width="fit-content" @close="dialogCloseHandler">
<ElForm :model="formData" :rules="rules" ref="outOrderForm" class="form-panel" label-width="auto">
<!-- <ElFormItem label-width="90" label="编号" prop="sn">
<ElInput
v-model="formData.sn"
:disabled="status === 'view'"
placeholder="编号"/>
</ElFormItem> -->
<ElFormItem label-width="90" label="责任人" prop="responsibleId">
<ASelect labelKey="nickname" :tableColumn="userColumn" v-model="formData.responsibleId" :api="UserApi.paging" :disabled="status === 'view'" placeholder="请选择负责人" />
</ElFormItem>
<AFormPanel
ref="formPanel"
:details-loader="detailsLoader"
:do-submit="doSubmit"
:rules="rules"
:title="status === 'add' ? '新建项目' : '修改项目'"
>
<template #default="{formData}">
<div class="form-items">
<ElFormItem label="责任人" prop="responsibleId">
<ASelect v-model="formData.responsibleId" :api="UserApi.paging" :tableColumn="userColumn" labelKey="nickname" placeholder="请选择负责人"/>
</ElFormItem>
<ElFormItem label-width="90" label="仓库" prop="warehouseId">
<ASelect labelKey="warehouseName" v-model="formData.warehouseId" @change="warehouseChange" :tableColumn="warehouseColumn" :api="WarehouseApi.paging" :disabled="status === 'view'" placeholder="选择仓库" />
</ElFormItem>
<ElFormItem label="仓库" prop="warehouseId">
<ASelect v-model="formData.warehouseId" :api="WarehouseApi.paging" :tableColumn="warehouseColumn" labelKey="warehouseName" placeholder="选择仓库" @change="warehouseChange"/>
</ElFormItem>
<ElFormItem label-width="90" label="存放位置" prop="location">
<ElInput v-model="formData.location" :disabled="status === 'view'" placeholder="存放位置" />
</ElFormItem>
<ElFormItem label-width="90" label="出库时间" prop="outTime">
<ElDatePicker v-model="formData.outTime" :disabled="status === 'view'" format="YYYY-MM-DD" value-format="YYYY-MM-DD" type="date" placeholder="请选择出库日期" />
</ElFormItem>
<ElFormItem label="存放位置" prop="location">
<ElInput v-model="formData.location" placeholder="存放位置"/>
</ElFormItem>
<ElFormItem label="出库时间" prop="outTime">
<ElDatePicker v-model="formData.outTime" format="YYYY-MM-DD" placeholder="请选择出库日期" type="date" value-format="YYYY-MM-DD"/>
</ElFormItem>
<ElFormItem label-width="90" label="销售单" prop="orderId">
<ASelect labelKey="sn" @change="orderChange" :tableColumn="orderColumn" v-model="formData.orderId" :api="SalesOrderApi.paging" :disabled="status === 'view'" placeholder="请选择销售单" />
<!-- <ElInput v-model="formData.orderId" :disabled="status === 'view'" placeholder="销售单 Idwh_sales_order.id" /> -->
</ElFormItem>
<!-- <ElFormItem label-width="90" label="销售单号wh_sales_order.sn" prop="orderSn">
<ElInput v-model="formData.orderSn" :disabled="status === 'view'" placeholder="销售单号wh_sales_order.sn" />
</ElFormItem> -->
<ElFormItem label-width="90" label="产品分类" prop="goodsCategoryId">
<ElInput v-model="formData.goodsCategoryId" :disabled="status === 'view'" placeholder="产品分类 Id" />
</ElFormItem>
<ElFormItem label-width="90" label="分类名称" prop="goodsCategoryName">
<ElInput v-model="formData.goodsCategoryName" :disabled="status === 'view'" placeholder="分类名称" />
</ElFormItem>
<ElFormItem label-width="90" label="产品" prop="goodsId">
<ElInput v-model="formData.goodsId" :disabled="status === 'view'" placeholder="产品 Id" />
</ElFormItem>
<ElFormItem label-width="90" label="产品名称" prop="goodsName">
<ElInput v-model="formData.goodsName" :disabled="status === 'view'" placeholder="产品名称" />
</ElFormItem>
<ElFormItem label="产品编码" label-width="90" prop="goodSn">
<ElInput v-model="formData.goodSn" :disabled="status === 'view'" placeholder="产品编码"/>
</ElFormItem>
<ElFormItem label-width="90" label="数量" prop="quantity">
<ElInput v-model="formData.quantity" :disabled="status === 'view'" placeholder="数量" />
</ElFormItem>
<!-- <ElFormItem label-width="90" label="计量单位字典代码unit" prop="unit">
<ElInput v-model="formData.unit" :disabled="status === 'view'" placeholder="计量单位字典代码unit" />
</ElFormItem> -->
<ElFormItem label-width="90" label="备注" prop="memo">
<ElInput v-model="formData.memo" :disabled="status === 'view'" placeholder="备注" />
</ElFormItem>
</ElForm>
<template #footer>
<ElButton @click="showDialog = false">{{ status === "view" ? "关闭" : "取消" }}</ElButton>
<ElButton v-if="status !== 'view'" :loading="submiting" type="primary" @click="submitHandler"></ElButton>
<ElFormItem label="销售单" prop="orderId">
<ASelect v-model="formData.orderId" :api="SalesOrderApi.paging" :tableColumn="orderColumn" labelKey="sn" placeholder="请选择销售单" @change="orderChange"/>
<!-- <ElInput v-model="formData.orderId" placeholder="销售单 Idwh_sales_order.id" /> -->
</ElFormItem>
<!-- <ElFormItem label="销售单号wh_sales_order.sn" prop="orderSn">
<ElInput v-model="formData.orderSn" placeholder="销售单号wh_sales_order.sn" />
</ElFormItem> -->
<ElFormItem label="产品分类" prop="goodsCategoryId">
<ElInput v-model="formData.goodsCategoryId" placeholder="产品分类 Id"/>
</ElFormItem>
<ElFormItem label="分类名称" prop="goodsCategoryName">
<ElInput v-model="formData.goodsCategoryName" placeholder="分类名称"/>
</ElFormItem>
<ElFormItem label="产品" prop="goodsId">
<ElInput v-model="formData.goodsId" placeholder="产品 Id"/>
</ElFormItem>
<ElFormItem label="产品名称" prop="goodsName">
<ElInput v-model="formData.goodsName" placeholder="产品名称"/>
</ElFormItem>
<ElFormItem label="产品编码" prop="goodSn">
<ElInput v-model="formData.goodSn" placeholder="产品编码"/>
</ElFormItem>
<ElFormItem label="数量" prop="quantity">
<ElInput v-model="formData.quantity" placeholder="数量"/>
</ElFormItem>
<!-- <ElFormItem label="计量单位字典代码unit" prop="unit">
<ElInput v-model="formData.unit" placeholder="计量单位字典代码unit" />
</ElFormItem> -->
<ElFormItem label="备注" prop="memo">
<ElInput v-model="formData.memo" placeholder="备注"/>
</ElFormItem>
</div>
</template>
</ElDialog>
</AFormPanel>
</template>
<script lang="ts" setup>
import OutOrderApi from '@/pages/wh/out-order/out-order-api.ts'
import Strings from '@/common/utils/strings.ts'
import FormUtil from '@/common/utils/formUtil.ts'
import Utils from '@/common/utils'
import {
ElMessage,
type FormInstance,
type FormRules,
} from 'element-plus'
import { type FormRules } from 'element-plus'
import SalesOrderApi from '@/pages/wh/sales-order/sales-order-api.ts'
import WarehouseApi from '@/pages/wh/warehouse/warehouse-api.ts'
import ASelect from '@/components/a-select/ASelect.vue'
import UserApi from '@/pages/sys/user/user-api.ts'
import type AFormPanel from '@/components/a-form-panel/AFormPanel.vue'
import type { ComponentExposed } from 'vue-component-type-helpers'
const userColumn = [
{
label: "姓名",
prop: "nickname",
const props = withDefaults(defineProps<{
research?: () => void
}>(), {
research: () => {
},
{
label: "联系电话",
prop: "phone",
},
{
label: "用户名",
prop: "account.username",
},
];
const orderColumn = [
{
label: "编号",
prop: "sn",
},
{
label: "产品名称",
prop: "goodsName",
},
{
label: "采购日期",
prop: "purchaseDate ",
},
{
label: "数量",
prop: "quantity",
},
];
const warehouseColumn = [
{
label: "名称",
prop: "warehouseName",
},
{
label: "位置",
prop: "location",
},
];
function warehouseChange(e: any) {
formData.location = e.location;
}
function orderChange(e: any) {
console.log(e, "ee");
formData.orderSn = e.sn;
formData.goodsCategoryId = e.goodsCategoryId;
formData.goodsCategoryName = e.goodsCategoryName;
formData.goodsName = e.goodsName;
formData.goodSn = e.goodSn;
formData.goodsId = e.goodsId;
formData.quantity = e.quantity;
formData.unit = e.unit;
}
const emits = defineEmits(["editSucc"]);
const showDialog = ref(false);
const submiting = ref(false);
const status = ref<"add" | "view" | "modify">("add");
const outOrderFormIns = useTemplateRef<FormInstance>("outOrderForm");
const formData = Utils.resetAble(reactive<OutOrderTypes.SearchOutOrderResult>({}));
})
const rules = reactive<FormRules<OutOrderTypes.SearchOutOrderResult>>({
id: [{ required: true, message: "请填写Id", trigger: "blur" }],
sn: [{ required: true, message: "请填写编号", trigger: "blur" }],
responsibleId: [{ required: true, message: "请填写责任人 Idsys_user.id", trigger: "blur" }],
warehouseId: [{ required: true, message: "请填写仓库 Idwh_warehouse.id", trigger: "blur" }],
location: [{ required: true, message: "请填写存放位置", trigger: "blur" }],
outTime: [{ required: true, message: "请填写出库时间", trigger: "blur" }],
orderId: [{ required: true, message: "请填写销售单 Idwh_sales_order.id", trigger: "blur" }],
orderSn: [{ required: true, message: "请填写销售单号wh_sales_order.sn", trigger: "blur" }],
goodsCategoryId: [{ required: true, message: "请填写产品分类 Id", trigger: "blur" }],
goodsCategoryName: [{ required: true, message: "请填写分类名称", trigger: "blur" }],
goodsId: [{ required: true, message: "请填写产品 Id", trigger: "blur" }],
goodsName: [{ required: true, message: "请填写产品名称", trigger: "blur" }],
id: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
sn: [ {required: true, message: '请填写编号', trigger: 'blur'} ],
responsibleId: [ {required: true, message: '请填写责任人 Idsys_user.id', trigger: 'blur'} ],
warehouseId: [ {required: true, message: '请填写仓库 Idwh_warehouse.id', trigger: 'blur'} ],
location: [ {required: true, message: '请填写存放位置', trigger: 'blur'} ],
outTime: [ {required: true, message: '请填写出库时间', trigger: 'blur'} ],
orderId: [ {required: true, message: '请填写销售单 Idwh_sales_order.id', trigger: 'blur'} ],
orderSn: [ {required: true, message: '请填写销售单号wh_sales_order.sn', trigger: 'blur'} ],
goodsCategoryId: [ {required: true, message: '请填写产品分类 Id', trigger: 'blur'} ],
goodsCategoryName: [ {required: true, message: '请填写分类名称', trigger: 'blur'} ],
goodsId: [ {required: true, message: '请填写产品 Id', trigger: 'blur'} ],
goodsName: [ {required: true, message: '请填写产品名称', trigger: 'blur'} ],
goodSn: [ {required: true, message: '请填写产品编码', trigger: 'blur'} ],
quantity: [{ required: true, message: "请填写数量", trigger: "blur" }],
unit: [{ required: true, message: "请填写计量单位字典代码unit", trigger: "blur" }],
memo: [{ required: true, message: "请填写备注", trigger: "blur" }],
creatorId: [{ required: true, message: "请填写创建人 Id sys_user.id", trigger: "blur" }],
modifierId: [{ required: true, message: "请填写修改人 Id sys_user.id", trigger: "blur" }],
createTime: [{ required: true, message: "请填写创建时间", trigger: "blur" }],
modifyTime: [{ required: true, message: "请填写修改时间", trigger: "blur" }],
deleted: [{ required: true, message: "请填写是否删除; 0-->未删除、1-->已删除", trigger: "blur" }],
});
quantity: [ {required: true, message: '请填写数量', trigger: 'blur'} ],
unit: [ {required: true, message: '请填写计量单位字典代码unit', trigger: 'blur'} ],
memo: [ {required: true, message: '请填写备注', trigger: 'blur'} ],
creatorId: [ {required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur'} ],
modifierId: [ {required: true, message: '请填写修改人 Id sys_user.id', trigger: 'blur'} ],
createTime: [ {required: true, message: '请填写创建时间', trigger: 'blur'} ],
modifyTime: [ {required: true, message: '请填写修改时间', trigger: 'blur'} ],
deleted: [ {required: true, message: '请填写是否删除; 0-->未删除、1-->已删除', trigger: 'blur'} ],
})
function dialogCloseHandler() {
formData.$reset();
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const status = ref<'add' | 'modify'>('add')
function detailsLoader(id?: string) {
if (Strings.isBlank(id)) {
status.value = 'add'
return Promise.resolve()
} else {
status.value = 'modify'
return OutOrderApi
.detail(id!)
.then(res => res.data)
}
}
function submitHandler() {
if (status.value === "view") return;
submiting.value = true;
if (formData.id != null) {
FormUtil.submit(outOrderFormIns, () => OutOrderApi.modify(formData))
.then(() => {
ElMessage.success("修改成功");
emits("editSucc");
showDialog.value = false;
})
.finally(() => {
submiting.value = false;
});
function doSubmit(data: OutOrderTypes.SearchOutOrderResult) {
if (status.value === 'add') {
return OutOrderApi.add(data)
.then(props.research)
} else {
FormUtil.submit(outOrderFormIns, () => OutOrderApi.add(formData))
.then(() => {
ElMessage.success("添加成功");
emits("editSucc");
showDialog.value = false;
})
.finally(() => {
submiting.value = false;
});
return OutOrderApi.modify(data)
.then(props.research)
}
}
defineExpose({
open(data: OutOrderTypes.SearchOutOrderResult = {}) {
showDialog.value = true;
if (!Strings.isBlank(data.id)) {
status.value = "modify";
OutOrderApi.detail(data.id!).then((res) => {
formData.$reset(res.data);
});
} else {
status.value = "add";
formData.$reset(data);
}
open(data?: OutOrderTypes.SearchOutOrderResult) {
formPanelIns.value?.open(data?.id)
},
});
})
</script>
<style lang="stylus" scoped>
.form-panel {
padding 20px
.form-items {
grid-template-columns: 1fr 1fr;
:deep(.el-form-item) {
}
}
</style>

View File

@ -41,6 +41,11 @@
<ElInput v-model="searchForm.quantity" placeholder="数量"/>
</ElFormItem>
</template>
<template #simpleSearchFormItem="{ searchForm }">
<ElFormItem label="编号">
<ElInput v-model="searchForm.sn" placeholder="编号"/>
</ElFormItem>
</template>
<template #columns>
<ElTableColumn label="编号" prop="sn"/>
<ElTableColumn label="状态" prop="purchaseOrderStatus"/>
@ -56,7 +61,7 @@
<ElTableColumn label="创建时间" prop="createTime"/>
<ElTableColumn label="修改时间" prop="modifyTime"/>
</template>
<PurchaseOrderForm ref="purchaseOrderForm" @edit-succ="paging"/>
<PurchaseOrderForm ref="purchaseOrderForm" :research="research"/>
</FormPage>
</template>
@ -68,8 +73,10 @@ import type {
ActionColumnType,
ToolType,
} from '@/components/page/a-page-type.ts'
import type { ComponentExposed } from 'vue-component-type-helpers'
const purchaseOrderFormIns = useTemplateRef<InstanceType<typeof PurchaseOrderForm>>('purchaseOrderForm')
const formPageIns = useTemplateRef<ComponentExposed<typeof FormPage>>('formPage')
const actionColumn = reactive<ActionColumnType<PurchaseOrderTypes.SearchPurchaseOrderResult>>({
tableActions: [
@ -93,7 +100,7 @@ const actionColumn = reactive<ActionColumnType<PurchaseOrderTypes.SearchPurchase
PurchaseOrderApi.del([ row.id! ])
.then(() => {
ElMessage.success('删除成功')
paging()
research()
})
.finally(() => {
this.loading = false
@ -112,8 +119,11 @@ const leftTools: ToolType[] = [
},
]
function research() {
formPageIns.value?.doSearch()
}
function paging(param: PurchaseOrderTypes.SearchPurchaseOrderParam) {
return PurchaseOrderApi.paging(param)
}
</script>

View File

@ -1,213 +1,126 @@
<template>
<ElDialog v-model="showDialog" :destroy-on-close="true" :close-on-click-modal="false" width="fit-content" @close="dialogCloseHandler">
<ElForm :model="formData" :rules="rules" ref="purchaseOrderForm" class="form-panel" label-width="auto">
<!-- <ElFormItem label-width="90" label="Id" prop="id">
<ElInput v-model="formData.id" :disabled="status === 'view'" placeholder="Id" />
</ElFormItem> -->
<!-- <ElFormItem label-width="90" label="编号" prop="sn">
<ElInput v-model="formData.sn" :disabled="status === 'view'" placeholder="编号" />
</ElFormItem> -->
<AFormPanel
ref="formPanel"
:details-loader="detailsLoader"
:do-submit="doSubmit"
:rules="rules"
:title="status === 'add' ? '新建项目' : '修改项目'"
>
<template #default="{formData}">
<div class="form-items">
<ElFormItem label="供货客户" prop="customerId">
</ElFormItem>
<ElFormItem label="采购日期" prop="purchaseDate">
<el-date-picker v-model="formData.purchaseDate" format="YYYY-MM-DD" placeholder="请选择采购日期" type="date" value-format="YYYY-MM-DD"/>
</ElFormItem>
<ElFormItem label="到货日期" prop="arrivalDate">
<el-date-picker v-model="formData.arrivalDate" format="YYYY-MM-DD" placeholder="请选择采购日期" type="date" value-format="YYYY-MM-DD"/>
<!-- JinXingZhong--进行中YiDaoHuo--已到货YiRuKu--已入库YiQuXiao--已取消 -->
<!-- <ElFormItem label-width="90" label="状态" prop="purchaseOrderStatus">
<ElInput v-model="formData.purchaseOrderStatus" :disabled="status === 'view'" placeholder="状态" />
</ElFormItem> -->
<ElFormItem label-width="90" label="供货客户" prop="customerId">
<!-- <ElSelect v-model="formData.goodsCategoryId" :disabled="status === 'view'" placeholder="产品类型" filterable remote reserve-keyword remote-show-suffix :remote-method="remoteMethod" :loading="loading" style="width: 240px">
<ElOption v-for="item in category" :key="item.id" :label="item.categoryName" :value="item.id" />
</ElSelect> -->
<ASelect labelKey="customerName" :tableColumn="customerColumn" v-model="formData.customerId" :api="CustomerApi.paging" :disabled="status === 'view'" placeholder="供货客户" />
</ElFormItem>
<ElFormItem label-width="90" label="采购日期" prop="purchaseDate">
<el-date-picker v-model="formData.purchaseDate" :disabled="status === 'view'" format="YYYY-MM-DD" value-format="YYYY-MM-DD" type="date" placeholder="请选择采购日期" />
</ElFormItem>
<ElFormItem label-width="90" label="到货日期" prop="arrivalDate">
<el-date-picker v-model="formData.arrivalDate" :disabled="status === 'view'" format="YYYY-MM-DD" value-format="YYYY-MM-DD" type="date" placeholder="请选择采购日期" />
<!-- <ElInput v-model="formData.arrivalDate" placeholder="到货日期" /> -->
</ElFormItem>
<!-- <ElFormItem label="产品分类" prop="goodsCategoryId">
<ElInput v-model="formData.goodsCategoryId" placeholder="产品分类" />
</ElFormItem>
<ElFormItem label="分类名称" prop="goodsCategoryName">
<ElInput v-model="formData.goodsCategoryName" placeholder="分类名称" />
</ElFormItem> -->
<!-- <ElInput v-model="formData.arrivalDate" :disabled="status === 'view'" placeholder="到货日期" /> -->
</ElFormItem>
<!-- <ElFormItem label-width="90" label="产品分类" prop="goodsCategoryId">
<ElInput v-model="formData.goodsCategoryId" :disabled="status === 'view'" placeholder="产品分类" />
</ElFormItem>
<ElFormItem label-width="90" label="分类名称" prop="goodsCategoryName">
<ElInput v-model="formData.goodsCategoryName" :disabled="status === 'view'" placeholder="分类名称" />
</ElFormItem> -->
<ElFormItem label="产品" prop="goodsId">
</ElFormItem>
<ElFormItem label-width="90" label="产品" prop="goodsId">
<ASelect labelKey="goodsName" v-model="formData.goodsId" :tableColumn="goodColumn" @change="goodsChange" :api="GoodsApi.paging" :disabled="status === 'view'" placeholder="选择产品" />
</ElFormItem>
<!-- <ElFormItem label-width="90" label="产品编码" prop="goodSn">
<ElInput v-model="formData.goodSn" :disabled="status === 'view'" placeholder="产品编码" />
</ElFormItem> -->
<ElFormItem label-width="90" label="数量" prop="quantity">
<ElInput v-model="formData.quantity" :disabled="status === 'view'" placeholder="数量" />
</ElFormItem>
<ElFormItem label-width="90" label="计量单位" prop="unit">
<ElInput v-model="formData.unit" readonly placeholder="计量单位" />
</ElFormItem>
<ElFormItem label-width="90" label="总金额" prop="totalMoney">
<ElInput v-model="formData.totalMoney" :disabled="status === 'view'" placeholder="总金额;单位:元" />
</ElFormItem>
<ElFormItem label-width="90" label="备注" prop="memo">
<ElInput v-model="formData.memo" :disabled="status === 'view'" placeholder="备注" />
</ElFormItem>
</ElForm>
<template #footer>
<ElButton @click="showDialog = false">{{ status === "view" ? "关闭" : "取消" }}</ElButton>
<ElButton v-if="status !== 'view'" :loading="submiting" type="primary" @click="submitHandler"></ElButton>
<!-- <ElFormItem label="产品编码" prop="goodSn">
<ElInput v-model="formData.goodSn" placeholder="产品编码" />
</ElFormItem> -->
<ElFormItem label="数量" prop="quantity">
<ElInput v-model="formData.quantity" placeholder="数量"/>
</ElFormItem>
<ElFormItem label="计量单位" prop="unit">
<ElInput v-model="formData.unit" placeholder="计量单位" readonly/>
</ElFormItem>
<ElFormItem label="总金额" prop="totalMoney">
<ElInput v-model="formData.totalMoney" placeholder="总金额;单位:元"/>
</ElFormItem>
<ElFormItem label="备注" prop="memo">
<ElInput v-model="formData.memo" placeholder="备注"/>
</ElFormItem>
</div>
</template>
</ElDialog>
</AFormPanel>
</template>
<script lang="ts" setup>
import PurchaseOrderApi from '@/pages/wh/purchase-order/purchase-order-api.ts'
import Strings from '@/common/utils/strings.ts'
import FormUtil from '@/common/utils/formUtil.ts'
import Utils from '@/common/utils'
import {
ElMessage,
type FormInstance,
type FormRules,
} from 'element-plus'
// import GoodsCategoryApi from '@/pages/gds/goods-category/goods-category-api.ts'
import CustomerApi from '@/pages/cst/customer/customer-api.ts'
import GoodsApi from '@/pages/gds/goods/goods-api.ts'
import ASelect from '@/components/a-select/ASelect.vue'
import { type FormRules } from 'element-plus'
import type { ComponentExposed } from 'vue-component-type-helpers'
import AFormPanel from '@/components/a-form-panel/AFormPanel.vue'
const emits = defineEmits(["editSucc"]);
const showDialog = ref(false);
const submiting = ref(false);
const status = ref<"add" | "view" | "modify">("add");
const props = withDefaults(defineProps<{
research?: () => void
}>(), {
research: () => {
},
})
const purchaseOrderFormIns = useTemplateRef<FormInstance>("purchaseOrderForm");
const formData = Utils.resetAble(reactive<PurchaseOrderTypes.SearchPurchaseOrderResult>({}));
const rules = reactive<FormRules<PurchaseOrderTypes.SearchPurchaseOrderResult>>({
sn: [{ required: true, message: "请填写编号", trigger: "blur" }],
purchaseOrderStatus: [{ required: true, message: "请填写状态", trigger: "blur" }],
customerId: [{ required: true, message: "请填写供货客户", trigger: "blur" }],
purchaseDate: [{ required: true, message: "请填写采购日期", trigger: "blur" }],
arrivalDate: [{ required: true, message: "请填写到货日期", trigger: "blur" }],
goodsCategoryId: [{ required: true, message: "请填写产品分类", trigger: "blur" }],
goodsCategoryName: [{ required: true, message: "请填写分类名称", trigger: "blur" }],
goodsId: [{ required: true, message: "请填写产品", trigger: "blur" }],
goodsName: [{ required: true, message: "请填写产品名称", trigger: "blur" }],
sn: [ {required: true, message: '请填写编号', trigger: 'blur'} ],
purchaseOrderStatus: [ {required: true, message: '请填写状态', trigger: 'blur'} ],
customerId: [ {required: true, message: '请填写供货客户', trigger: 'blur'} ],
purchaseDate: [ {required: true, message: '请填写采购日期', trigger: 'blur'} ],
arrivalDate: [ {required: true, message: '请填写到货日期', trigger: 'blur'} ],
goodsCategoryId: [ {required: true, message: '请填写产品分类', trigger: 'blur'} ],
goodsCategoryName: [ {required: true, message: '请填写分类名称', trigger: 'blur'} ],
goodsId: [ {required: true, message: '请填写产品', trigger: 'blur'} ],
goodsName: [ {required: true, message: '请填写产品名称', trigger: 'blur'} ],
goodSn: [ {required: true, message: '请填写产品编码', trigger: 'blur'} ],
quantity: [{ required: true, message: "请填写数量", trigger: "blur" }],
unit: [{ required: true, message: "请填写计量单位", trigger: "blur" }],
totalMoney: [{ required: true, message: "请填写总金额;单位:元", trigger: "blur" }],
memo: [{ required: true, message: "请填写备注", trigger: "blur" }],
creatorId: [{ required: true, message: "请填写创建人", trigger: "blur" }],
modifierId: [{ required: true, message: "请填写修改人", trigger: "blur" }],
createTime: [{ required: true, message: "请填写创建时间", trigger: "blur" }],
modifyTime: [{ required: true, message: "请填写修改时间", trigger: "blur" }],
});
quantity: [ {required: true, message: '请填写数量', trigger: 'blur'} ],
unit: [ {required: true, message: '请填写计量单位', trigger: 'blur'} ],
totalMoney: [ {required: true, message: '请填写总金额;单位:元', trigger: 'blur'} ],
memo: [ {required: true, message: '请填写备注', trigger: 'blur'} ],
creatorId: [ {required: true, message: '请填写创建人', trigger: 'blur'} ],
modifierId: [ {required: true, message: '请填写修改人', trigger: 'blur'} ],
createTime: [ {required: true, message: '请填写创建时间', trigger: 'blur'} ],
modifyTime: [ {required: true, message: '请填写修改时间', trigger: 'blur'} ],
})
const goodColumn = [
{
label: "名称",
prop: "goodsName",
},
{
label: "规格",
prop: "specParams",
},
{
label: "计量单位",
prop: "unitTxt",
},
];
const customerColumn = [
{
label: "公司",
prop: "orgName",
},
{
label: "地区",
prop: "areaName",
},
{
label: "负责人",
prop: "customerName",
},
];
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const status = ref<'add' | 'modify'>('add')
const goodsChange = (val: any) => {
// console.log(item, 'itemmm')
formData.goodsCategoryName = val.goodsCategoryName;
formData.goodsName = val.goodsName;
formData.goodSn = val.sn;
formData.unit = val.unit;
formData.goodsCategoryId = val.goodsCategoryId;
};
// const iconTableDataSource = ref<any>(
// icons.glyphs.filter((_, i) => {
// return i >= 0 && i < 5;
// })
// );
// const remoteMethod = (query: string) => {
// console.log(query, "query");
// loading.value = true;
// CustomerApi.paging({ size: 50, categoryName: query || undefined }).then((res) => {
// category.value = res.data.records;
// loading.value = false;
// });
// };
function dialogCloseHandler() {
formData.$reset();
function detailsLoader(id?: string) {
if (Strings.isBlank(id)) {
status.value = 'add'
return Promise.resolve()
} else {
status.value = 'modify'
return PurchaseOrderApi
.detail(id!)
.then(res => res.data)
}
}
function submitHandler() {
if (status.value === "view") return;
submiting.value = true;
if (formData.id != null) {
FormUtil.submit(purchaseOrderFormIns, () => PurchaseOrderApi.modify(formData))
.then(() => {
ElMessage.success("修改成功");
emits("editSucc");
showDialog.value = false;
})
.finally(() => {
submiting.value = false;
});
function doSubmit(data: PurchaseOrderTypes.SearchPurchaseOrderResult) {
if (status.value === 'add') {
return PurchaseOrderApi.add(data)
.then(props.research)
} else {
FormUtil.submit(purchaseOrderFormIns, () => PurchaseOrderApi.add(formData))
.then(() => {
ElMessage.success("添加成功");
emits("editSucc");
showDialog.value = false;
})
.finally(() => {
submiting.value = false;
});
return PurchaseOrderApi.modify(data)
.then(props.research)
}
}
defineExpose({
open(data: PurchaseOrderTypes.SearchPurchaseOrderResult = {}) {
if (!Strings.isBlank(data.id)) {
status.value = "modify";
PurchaseOrderApi.detail(data.id!).then((res) => {
formData.$reset(res.data);
});
} else {
status.value = "add";
formData.$reset(data);
}
showDialog.value = true;
console.log(formData.goodsId, "formData");
open(data?: PurchaseOrderTypes.SearchPurchaseOrderResult) {
formPanelIns.value?.open(data?.id)
},
});
})
</script>
<style lang="stylus" scoped>
.form-panel {
padding 20px
.form-items {
grid-template-columns: 1fr 1fr;
:deep(.el-form-item) {
}
}
</style>

View File

@ -67,6 +67,16 @@
<ElInput v-model="searchForm.modifyTime" placeholder="修改时间"/>
</ElFormItem>
</template>
<template #simpleSearchFormItem="{ searchForm }">
<!-- <ElFormItem label="Id">
<ElInput
v-model="searchForm.id"
placeholder="Id"/>
</ElFormItem> -->
<ElFormItem label="编号">
<ElInput v-model="searchForm.sn" placeholder="编号"/>
</ElFormItem>
</template>
<template #columns>
<!-- <ElTableColumn label="Id" prop="id" /> -->
<ElTableColumn label="编号" prop="sn"/>
@ -88,7 +98,7 @@
<ElTableColumn label="创建时间" prop="createTime" width="180"/>
<ElTableColumn label="修改时间" prop="modifyTime" width="180"/>
</template>
<SalesOrderForm ref="salesOrderForm" @edit-succ="research"/>
<SalesOrderForm ref="salesOrderForm" :research="research"/>
</FormPage>
</template>

View File

@ -1,219 +1,145 @@
<template>
<ElDialog v-model="showDialog" :close-on-click-modal="false" destroy-on-close width="fit-content" @close="dialogCloseHandler">
<ElForm :model="formData" :rules="rules" ref="salesOrderForm" class="form-panel" label-width="auto">
<!-- <ElFormItem label-width="90" label="编号" prop="sn">
<ElInput v-model="formData.sn" :disabled="status === 'view'" placeholder="编号" />
</ElFormItem> -->
<ElFormItem label-width="90" label="状态" prop="salesOrderStatus">
<ElSelect v-model="formData.salesOrderStatus" :disabled="status === 'view'" placeholder="身份类型">
<ElOption v-for="item in statusList" :key="item.value" :label="item.label" :value="item.value" />
</ElSelect>
<!-- <ElInput v-model="formData.salesOrderStatus" :disabled="status === 'view'" placeholder="状态" /> -->
</ElFormItem>
<AFormPanel
ref="formPanel"
:details-loader="detailsLoader"
:do-submit="doSubmit"
:rules="rules"
:title="status === 'add' ? '新建项目' : '修改项目'"
>
<template #default="{formData}">
<div class="form-items">
<ElFormItem label="状态" prop="salesOrderStatus">
<ElSelect v-model="formData.salesOrderStatus" placeholder="身份类型">
<ElOption v-for="item in salesOrderStatus" :key="item.val" :label="item.txt" :value="item.val"/>
</ElSelect>
<!-- <ElInput v-model="formData.salesOrderStatus" placeholder="状态" /> -->
</ElFormItem>
<ElFormItem label-width="90" label="购买方客户" prop="customerId">
<ASelect labelKey="customerName" :tableColumn="customerColumn" v-model="formData.customerId" :api="CustomerApi.paging" :disabled="status === 'view'" placeholder="购买方客户" />
<ElFormItem label="购买方客户" prop="customerId">
<!-- <ElInput v-model="formData.customerId" :disabled="status === 'view'" placeholder="购买方客户 Id" /> -->
</ElFormItem>
<ElFormItem label-width="90" label="下单日期" prop="orderDate">
<ElDatePicker v-model="formData.orderDate" :disabled="status === 'view'" format="YYYY-MM-DD" value-format="YYYY-MM-DD" type="date" placeholder="请选择采购日期" />
<!-- <ElInput v-model="formData.customerId" placeholder="购买方客户 Id" /> -->
</ElFormItem>
<ElFormItem label="下单日期" prop="orderDate">
<ElDatePicker v-model="formData.orderDate" format="YYYY-MM-DD" placeholder="请选择采购日期" type="date" value-format="YYYY-MM-DD"/>
<!-- <ElInput v-model="formData.orderDate" :disabled="status === 'view'" placeholder="下单日期" /> -->
</ElFormItem>
<ElFormItem label-width="90" label="发货日期" prop="shipmentDate">
<!-- <ElDatePicker v-model="formData.shipmentDate" :disabled="status === 'view'" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择发货日期" /> -->
<ElDatePicker v-model="formData.shipmentDate" :disabled="status === 'view'" format="YYYY-MM-DD" value-format="YYYY-MM-DD" type="date" placeholder="请选择发货日期" />
<!-- <ElInput v-model="formData.orderDate" placeholder="下单日期" /> -->
</ElFormItem>
<ElFormItem label="发货日期" prop="shipmentDate">
<!-- <ElDatePicker v-model="formData.shipmentDate" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择发货日期" /> -->
<ElDatePicker v-model="formData.shipmentDate" format="YYYY-MM-DD" placeholder="请选择发货日期" type="date" value-format="YYYY-MM-DD"/>
<!-- <ElInput v-model="formData.shipmentDate" :disabled="status === 'view'" placeholder="发货日期" /> -->
</ElFormItem>
<!-- <ElFormItem label-width="90" label="产品分类 Id" prop="goodsCategoryId">
<ElInput v-model="formData.goodsCategoryId" :disabled="status === 'view'" placeholder="产品分类 Id" />
</ElFormItem> -->
<!-- <ElFormItem label-width="90" label="分类名称" prop="goodsCategoryName">
<ElInput v-model="formData.goodsCategoryName" :disabled="status === 'view'" placeholder="分类名称" />
</ElFormItem> -->
<ElFormItem label-width="90" label="产品" prop="goodsId">
<ASelect labelKey="goodsName" v-model="formData.goodsId" :tableColumn="goodColumn" @change="goodsChange" :api="GoodsApi.paging" :disabled="status === 'view'" placeholder="选择产品" />
<!-- <ElInput v-model="formData.goodsId" :disabled="status === 'view'" placeholder="产品 Id" /> -->
</ElFormItem>
<ElFormItem label="产品编码" label-width="90" prop="goodSn">
<ElInput v-model="formData.goodSn" :disabled="status === 'view'" placeholder="产品编码"/>
</ElFormItem>
<ElFormItem label-width="90" label="数量" prop="quantity">
<ElInput v-model="formData.quantity" :disabled="status === 'view'" placeholder="数量" />
</ElFormItem>
<!-- <ElFormItem label-width="90" label="计量单位" prop="unit">
<ElInput v-model="formData.unit" readonly :disabled="status === 'view'" placeholder="计量单位字典代码unit" />
</ElFormItem> -->
<ElFormItem label-width="90" label="总金额(元)" prop="totalMoney">
<ElInput v-model="formData.totalMoney" :disabled="status === 'view'" placeholder="总金额;单位:元" />
</ElFormItem>
<ElFormItem label-width="90" label="备注" prop="memo">
<ElInput v-model="formData.memo" :disabled="status === 'view'" placeholder="备注" />
</ElFormItem>
<!-- <ElFormItem label-width="90" label="创建时间" prop="createTime">
<ElInput v-model="formData.createTime" :disabled="status === 'view'" placeholder="创建时间" />
</ElFormItem>
<ElFormItem label-width="90" label="修改时间" prop="modifyTime">
<ElInput v-model="formData.modifyTime" :disabled="status === 'view'" placeholder="修改时间" />
</ElFormItem> -->
</ElForm>
<template #footer>
<ElButton @click="showDialog = false">{{ status === "view" ? "关闭" : "取消" }}</ElButton>
<ElButton v-if="status !== 'view'" :loading="submiting" type="primary" @click="submitHandler"></ElButton>
<!-- <ElInput v-model="formData.shipmentDate" placeholder="发货日期" /> -->
</ElFormItem>
<!-- <ElFormItem label="产品分类 Id" prop="goodsCategoryId">
<ElInput v-model="formData.goodsCategoryId" placeholder="产品分类 Id" />
</ElFormItem> -->
<!-- <ElFormItem label="分类名称" prop="goodsCategoryName">
<ElInput v-model="formData.goodsCategoryName" placeholder="分类名称" />
</ElFormItem> -->
<ElFormItem label="产品" prop="goodsId">
<!-- <ElInput v-model="formData.goodsId" placeholder="产品 Id" /> -->
</ElFormItem>
<ElFormItem label="产品编码" prop="goodSn">
<ElInput v-model="formData.goodSn" placeholder="产品编码"/>
</ElFormItem>
<ElFormItem label="数量" prop="quantity">
<ElInput v-model="formData.quantity" placeholder="数量"/>
</ElFormItem>
<!-- <ElFormItem label="计量单位" prop="unit">
<ElInput v-model="formData.unit" readonly placeholder="计量单位字典代码unit" />
</ElFormItem> -->
<ElFormItem label="总金额(元)" prop="totalMoney">
<ElInput v-model="formData.totalMoney" placeholder="总金额;单位:元"/>
</ElFormItem>
<ElFormItem label="备注" prop="memo">
<ElInput v-model="formData.memo" placeholder="备注"/>
</ElFormItem>
<!-- <ElFormItem label="创建时间" prop="createTime">
<ElInput v-model="formData.createTime" placeholder="创建时间" />
</ElFormItem>
<ElFormItem label="修改时间" prop="modifyTime">
<ElInput v-model="formData.modifyTime" placeholder="修改时间" />
</ElFormItem> -->
</div>
</template>
</ElDialog>
</AFormPanel>
</template>
<script lang="ts" setup>
import SalesOrderApi from '@/pages/wh/sales-order/sales-order-api.ts'
import Strings from '@/common/utils/strings.ts'
import FormUtil from '@/common/utils/formUtil.ts'
import Utils from '@/common/utils'
import {
ElMessage,
type FormInstance,
type FormRules,
} from 'element-plus'
import CustomerApi from '@/pages/cst/customer/customer-api.ts'
import GoodsApi from '@/pages/gds/goods/goods-api.ts'
import ASelect from '@/components/a-select/ASelect.vue'
import { type FormRules } from 'element-plus'
import type { ComponentExposed } from 'vue-component-type-helpers'
import AFormPanel from '@/components/a-form-panel/AFormPanel.vue'
import { salesOrderStatus } from '@/pages/wh/sales-order/constants.ts'
const emits = defineEmits(["editSucc"]);
const showDialog = ref(false);
const submiting = ref(false);
const status = ref<"add" | "view" | "modify">("add");
const salesOrderFormIns = useTemplateRef<FormInstance>("salesOrderForm");
const formData = Utils.resetAble(reactive<SalesOrderTypes.SearchSalesOrderResult>({}));
const props = withDefaults(defineProps<{
research?: () => void
}>(), {
research: () => {
},
})
const rules = reactive<FormRules<SalesOrderTypes.SearchSalesOrderResult>>({
id: [{ required: true, message: "请填写Id", trigger: "blur" }],
sn: [{ required: true, message: "请填写编号", trigger: "blur" }],
salesOrderStatus: [{ required: true, message: "请填写状态", trigger: "blur" }],
customerId: [{ required: true, message: "请填写购买方客户 Id", trigger: "blur" }],
orderDate: [{ required: true, message: "请填写下单日期", trigger: "blur" }],
shipmentDate: [{ required: true, message: "请填写发货日期", trigger: "blur" }],
goodsCategoryId: [{ required: true, message: "请填写产品分类 Id", trigger: "blur" }],
goodsCategoryName: [{ required: true, message: "请填写分类名称", trigger: "blur" }],
goodsId: [{ required: true, message: "请填写产品 Id", trigger: "blur" }],
goodsName: [{ required: true, message: "请填写产品名称", trigger: "blur" }],
id: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
sn: [ {required: true, message: '请填写编号', trigger: 'blur'} ],
salesOrderStatus: [ {required: true, message: '请填写状态', trigger: 'blur'} ],
customerId: [ {required: true, message: '请填写购买方客户 Id', trigger: 'blur'} ],
orderDate: [ {required: true, message: '请填写下单日期', trigger: 'blur'} ],
shipmentDate: [ {required: true, message: '请填写发货日期', trigger: 'blur'} ],
goodsCategoryId: [ {required: true, message: '请填写产品分类 Id', trigger: 'blur'} ],
goodsCategoryName: [ {required: true, message: '请填写分类名称', trigger: 'blur'} ],
goodsId: [ {required: true, message: '请填写产品 Id', trigger: 'blur'} ],
goodsName: [ {required: true, message: '请填写产品名称', trigger: 'blur'} ],
goodSn: [ {required: true, message: '请填写产品编码', trigger: 'blur'} ],
quantity: [{ required: true, message: "请填写数量", trigger: "blur" }],
unit: [{ required: true, message: "请填写计量单位字典代码unit", trigger: "blur" }],
totalMoney: [{ required: true, message: "请填写总金额;单位:元", trigger: "blur" }],
memo: [{ required: true, message: "请填写备注", trigger: "blur" }],
creatorId: [{ required: true, message: "请填写创建人 Id sys_user.id", trigger: "blur" }],
modifierId: [{ required: true, message: "请填写修改人 Id sys_user.id", trigger: "blur" }],
createTime: [{ required: true, message: "请填写创建时间", trigger: "blur" }],
modifyTime: [{ required: true, message: "请填写修改时间", trigger: "blur" }],
deleted: [{ required: true, message: "请填写是否删除; 0-->未删除、1-->已删除", trigger: "blur" }],
});
quantity: [ {required: true, message: '请填写数量', trigger: 'blur'} ],
unit: [ {required: true, message: '请填写计量单位字典代码unit', trigger: 'blur'} ],
totalMoney: [ {required: true, message: '请填写总金额;单位:元', trigger: 'blur'} ],
memo: [ {required: true, message: '请填写备注', trigger: 'blur'} ],
creatorId: [ {required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur'} ],
modifierId: [ {required: true, message: '请填写修改人 Id sys_user.id', trigger: 'blur'} ],
createTime: [ {required: true, message: '请填写创建时间', trigger: 'blur'} ],
modifyTime: [ {required: true, message: '请填写修改时间', trigger: 'blur'} ],
deleted: [ {required: true, message: '请填写是否删除; 0-->未删除、1-->已删除', trigger: 'blur'} ],
})
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const status = ref<'add' | 'modify'>('add')
const statusList = [
{
value: "JinXingZhong",
label: "进行中",
},
{
value: "YiFaHuo",
label: "已发货",
},
{
value: "YiChuKu",
label: "已出库",
},
{
value: "YiQuXiao",
label: "已取消",
},
];
const goodColumn = [
{
label: "名称",
prop: "goodsName",
},
{
label: "规格",
prop: "specParams",
},
{
label: "计量单位",
prop: "unitTxt",
},
];
const goodsChange = (val: any) => {
// console.log(item, 'itemmm')
formData.goodsCategoryName = val.goodsCategoryName;
formData.goodsName = val.goodsName;
formData.goodSn = val.sn;
formData.unit = val.unit;
formData.goodsCategoryId = val.goodsCategoryId;
};
const customerColumn = [
{
label: "公司",
prop: "orgName",
},
{
label: "地区",
prop: "areaName",
},
{
label: "负责人",
prop: "customerName",
},
];
function dialogCloseHandler() {
formData.$reset();
function detailsLoader(id?: string) {
if (Strings.isBlank(id)) {
status.value = 'add'
return Promise.resolve()
} else {
status.value = 'modify'
return SalesOrderApi
.detail(id!)
.then(res => res.data)
}
}
function submitHandler() {
if (status.value === "view") return;
submiting.value = true;
if (formData.id != null) {
FormUtil.submit(salesOrderFormIns, () => SalesOrderApi.modify(formData))
.then(() => {
ElMessage.success("修改成功");
emits("editSucc");
showDialog.value = false;
})
.finally(() => {
submiting.value = false;
});
function doSubmit(data: SalesOrderTypes.SearchSalesOrderResult) {
if (status.value === 'add') {
return SalesOrderApi.add(data)
.then(props.research)
} else {
FormUtil.submit(salesOrderFormIns, () => SalesOrderApi.add(formData))
.then(() => {
ElMessage.success("添加成功");
emits("editSucc");
showDialog.value = false;
})
.finally(() => {
submiting.value = false;
});
return SalesOrderApi.modify(data)
.then(props.research)
}
}
defineExpose({
open(data: SalesOrderTypes.SearchSalesOrderResult = {}) {
showDialog.value = true;
if (!Strings.isBlank(data.id)) {
status.value = "modify";
SalesOrderApi.detail(data.id!).then((res) => {
formData.$reset(res.data);
});
} else {
status.value = "add";
formData.$reset(data);
}
open(data?: SalesOrderTypes.SearchSalesOrderResult) {
formPanelIns.value?.open(data?.id)
},
});
})
</script>
<style lang="stylus" scoped>
.form-panel {
padding 20px
.form-items {
grid-template-columns: 1fr 1fr;
:deep(.el-form-item) {
}
}
</style>

View File

@ -0,0 +1,22 @@
import { createEnum } from '@/common/utils/enums.ts'
const salesOrderStatusList = [
{
val: 'JinXingZhong',
txt: '进行中',
},
{
val: 'YiFaHuo',
txt: '已发货',
},
{
val: 'YiChuKu',
txt: '已出库',
},
{
val: 'YiQuXiao',
txt: '已取消',
},
] as const
export const salesOrderStatus = createEnum(salesOrderStatusList)

View File

@ -38,6 +38,15 @@
</ElFormItem>
</ElForm>
</template>
<template #simpleSearchFormItem="{ searchForm }">
<ElForm inline @submit.prevent="paging">
<ElFormItem label="仓库名称">
<ElInput
v-model="searchForm.warehouseName"
placeholder="仓库名称"/>
</ElFormItem>
</ElForm>
</template>
<template #columns>
<ElTableColumn label="Id" prop="id"/>
<ElTableColumn label="仓库名称" prop="warehouseName"/>
@ -48,7 +57,7 @@
<ElTableColumn label="修改时间" prop="modifyTime"/>
<!-- <ElTableColumn label="是否删除; 0-->未删除、1-->已删除" prop="deleted"/> -->
</template>
<WarehouseForm ref="warehouseForm" @edit-succ="research"/>
<WarehouseForm ref="warehouseForm" :research="research"/>
</FormPage>
</template>

View File

@ -1,114 +1,92 @@
<template>
<ElDialog v-model="showDialog"
:close-on-click-modal="false"
destroy-on-close
width="fit-content"
@close="dialogCloseHandler">
<ElForm :model="formData"
:rules="rules"
ref="warehouseForm"
class="form-panel"
label-width="auto">
<ElFormItem label-width="90" label="仓库名称" prop="warehouseName">
<ElInput
v-model="formData.warehouseName"
:disabled="status === 'view'"
placeholder="仓库名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="位置" prop="location">
<ElInput
v-model="formData.location"
:disabled="status === 'view'"
placeholder="位置"/>
</ElFormItem>
<AFormPanel
ref="formPanel"
:details-loader="detailsLoader"
:do-submit="doSubmit"
:rules="rules"
:title="status === 'add' ? '新建项目' : '修改项目'"
>
<template #default="{formData}">
<div class="form-items">
<ElFormItem label="仓库名称" prop="warehouseName">
<ElInput
v-model="formData.warehouseName"
</ElForm>
<template #footer>
<ElButton @click="showDialog = false">{{ status === 'view' ? '关闭' : '取消' }}</ElButton>
<ElButton v-if="status !== 'view'" :loading="submiting" type="primary" @click="submitHandler"></ElButton>
placeholder="仓库名称"/>
</ElFormItem>
<ElFormItem label="位置" prop="location">
<ElInput
v-model="formData.location"
placeholder="位置"/>
</ElFormItem>
</div>
</template>
</ElDialog>
</AFormPanel>
</template>
<script lang="ts" setup>
import WarehouseApi from '@/pages/wh/warehouse/warehouse-api.ts'
import Strings from '@/common/utils/strings.ts'
import FormUtil from '@/common/utils/formUtil.ts'
import Utils from '@/common/utils'
import {
ElMessage,
type FormInstance,
type FormRules,
} from 'element-plus'
import { type FormRules } from 'element-plus'
import type { ComponentExposed } from 'vue-component-type-helpers'
import AFormPanel from '@/components/a-form-panel/AFormPanel.vue'
const emits = defineEmits(['editSucc'])
const showDialog = ref(false)
const submiting = ref(false)
const status = ref<'add' | 'view' | 'modify'>('add')
const warehouseFormIns = useTemplateRef<FormInstance>('warehouseForm')
const formData = Utils.resetAble(reactive<WarehouseTypes.SearchWarehouseResult>({}))
const props = withDefaults(defineProps<{
research?: () => void
}>(), {
research: () => {
},
})
const rules = reactive<FormRules<WarehouseTypes.SearchWarehouseResult>>({
id: [{ required: true, message: '请填写Id', trigger: 'blur' }],
warehouseName: [{ required: true, message: '请填写仓库名称', trigger: 'blur' }],
location: [{ required: true, message: '请填写位置', trigger: 'blur' }],
creatorId: [{ required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur' }],
modifierId: [{ required: true, message: '请填写修改人 Idsys_user.id', trigger: 'blur' }],
createTime: [{ required: true, message: '请填写创建时间', trigger: 'blur' }],
modifyTime: [{ required: true, message: '请填写修改时间', trigger: 'blur' }],
deleted: [{ required: true, message: '请填写是否删除; 0-->未删除、1-->已删除', trigger: 'blur' }],
id: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
warehouseName: [ {required: true, message: '请填写仓库名称', trigger: 'blur'} ],
location: [ {required: true, message: '请填写位置', trigger: 'blur'} ],
creatorId: [ {required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur'} ],
modifierId: [ {required: true, message: '请填写修改人 Idsys_user.id', trigger: 'blur'} ],
createTime: [ {required: true, message: '请填写创建时间', trigger: 'blur'} ],
modifyTime: [ {required: true, message: '请填写修改时间', trigger: 'blur'} ],
deleted: [ {required: true, message: '请填写是否删除; 0-->未删除、1-->已删除', trigger: 'blur'} ],
})
function dialogCloseHandler() {
formData.$reset()
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const status = ref<'add' | 'modify'>('add')
function detailsLoader(id?: string) {
if (Strings.isBlank(id)) {
status.value = 'add'
return Promise.resolve()
} else {
status.value = 'modify'
return WarehouseApi
.detail(id!)
.then(res => res.data)
}
}
function submitHandler() {
if (status.value === 'view') return
submiting.value = true
if (formData.id != null) {
FormUtil.submit(warehouseFormIns, () => WarehouseApi.modify(formData))
.then(() => {
ElMessage.success('修改成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
function doSubmit(data: WarehouseTypes.SearchWarehouseResult) {
if (status.value === 'add') {
return WarehouseApi.add(data)
.then(props.research)
} else {
FormUtil.submit(warehouseFormIns, () => WarehouseApi.add(formData))
.then(() => {
ElMessage.success('添加成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
return WarehouseApi.modify(data)
.then(props.research)
}
}
defineExpose({
open(data: WarehouseTypes.SearchWarehouseResult = {}) {
showDialog.value = true
if (!Strings.isBlank(data.id)) {
status.value = 'modify'
WarehouseApi.detail(data.id!)
.then(res => {
formData.$reset(res.data)
})
} else {
status.value = 'add'
formData.$reset(data)
}
}
open(data?: WarehouseTypes.SearchWarehouseResult) {
formPanelIns.value?.open(data?.id)
},
})
</script>
<style lang="stylus" scoped>
.form-panel {
padding 20px
.form-items {
grid-template-columns: 1fr 1fr;
:deep(.el-form-item) {
}
}
</style>