diff --git a/.workbuddy/memory/2026-08-24.md b/.workbuddy/memory/2026-08-24.md new file mode 100644 index 0000000..ace16c3 --- /dev/null +++ b/.workbuddy/memory/2026-08-24.md @@ -0,0 +1,8 @@ +# 2026-08-24 + +## project-apply.vue:弹窗改独立页(与新增项目管理一致) +- 将「重大项目补录 / 查看 / 项目变更」三种打开方式从 `el-dialog` 改为路由跳转独立页 `/business/project-apply/form?mode=...`,与已有的「新增 / 编辑」独立页统一。 +- `openProjectDialog` 全部 type 统一走 `$router.push`;`openProjectFormPage` 按 `route.query.mode`(add/edit/view/majorSupplement/change)加载详情或空表单。 +- 独立页标题改用全局 `archive-page-form__title`(自带 4px 主色竖条),删除原本地 `.project-apply-page__title` scoped 样式。 +- 仅改 1 个文件 `src/views/business/project-apply.vue`(约 +25 / -18 行);路由、API、全局样式未动。footer 逻辑(保存/提交/返回)沿用既有 `isProjectFormPage` 分支,无需改。 +- 验证:dev localhost:2889 下分别点「重大项目补录 / 新增 / 编辑 / 查看 / 项目变更」应都进入独立页面,标题显示「重大项目补录 / 新增项目管理 / 编辑项目管理 / 查看项目管理 / 项目变更」。 diff --git a/src/option/business/contract-manage.js b/src/option/business/contract-manage.js index f1dafee..4db040c 100644 --- a/src/option/business/contract-manage.js +++ b/src/option/business/contract-manage.js @@ -80,8 +80,8 @@ export const config = { ['signDate', '签订日期'], ['contractFormat', '合同格式'], ['legalSealFlag', '是否需要加盖法人章'], - ['copyCount', '一式'], - ['paymentDays', '回款账期'], + ['copyCount', '一式(份)'], + ['paymentDays', '回款账期(天)'], ['remark', '备注', 2], ], }, @@ -175,7 +175,7 @@ export const config = { }, { action: 'startChange', - label: '发起变更', + label: '变更', statusProp: 'approvalStatus', status: ['approved'], stage: ['formal'], @@ -184,7 +184,7 @@ export const config = { }, { action: 'startChange', - label: '再次发起变更', + label: '变更', statusProp: 'approvalStatus', status: ['change_approved'], stage: ['formal'], @@ -476,7 +476,7 @@ export const option = createCrudOption([ rules: selectRule('是否需要加盖法人章'), }, { - label: '一式', + label: '一式(份)', prop: 'copyCount', labelWidth: '72px', formslot: true, @@ -485,7 +485,7 @@ export const option = createCrudOption([ minWidth: 110, }, { - label: '回款账期', + label: '回款账期(天)', prop: 'paymentDays', formslot: true, hide: true, diff --git a/src/option/business/project-apply.js b/src/option/business/project-apply.js index 6feeb97..9b3168f 100644 --- a/src/option/business/project-apply.js +++ b/src/option/business/project-apply.js @@ -219,7 +219,7 @@ export const option = createCrudOption([ minWidth: 120, }, { - label: '项目资金使用额度(万元)', + label: '项目资金使用额度(万元)', prop: 'fundLimit', type: 'number', precision: 2, @@ -228,7 +228,7 @@ export const option = createCrudOption([ rules: amountRules('项目资金使用额度'), }, { - label: '项目应收账款额度(万元)', + label: '项目应收账款额度(万元)', prop: 'receivableLimit', type: 'number', precision: 2, @@ -237,7 +237,7 @@ export const option = createCrudOption([ rules: amountRules('项目应收账款额度'), }, { - label: '应收账款回款期限(天)', + label: '应收账款回款期限(天)', prop: 'receivableDays', type: 'number', hide: true, @@ -245,7 +245,7 @@ export const option = createCrudOption([ rules: [{ required: true, message: '请输入应收账款回款期限', trigger: 'blur' }], }, { - label: '回款账期(天)', + label: '回款账期(天)', prop: 'paymentDays', type: 'number', hide: true, @@ -311,7 +311,7 @@ export const option = createCrudOption([ minWidth: 130, }, { - label: '项目规模(万元)', + label: '项目规模(万元)', prop: 'projectScale', type: 'number', precision: 2, @@ -320,7 +320,7 @@ export const option = createCrudOption([ rules: [nonNegativeRule('项目规模')], }, { - label: '预计利润(万元)', + label: '预计利润(万元)', prop: 'estimatedProfit', type: 'number', precision: 2, @@ -329,7 +329,7 @@ export const option = createCrudOption([ rules: [nonNegativeRule('预计利润')], }, { - label: '资金需求(万元)', + label: '资金需求(万元)', prop: 'fundDemand', type: 'number', precision: 2, diff --git a/src/option/business/waybill-manage.js b/src/option/business/waybill-manage.js index 4805f93..352c40f 100644 --- a/src/option/business/waybill-manage.js +++ b/src/option/business/waybill-manage.js @@ -578,7 +578,7 @@ export const option = { viewDisplay: false, }, { - label: '单价(计价单位)', + label: '单价(计价单位)', prop: 'unitPrice', formatter: row => formatUnitPrice(row), minWidth: 140, diff --git a/src/option/job/jobinfo.js b/src/option/job/jobinfo.js index 3930f0b..7ab14b9 100644 --- a/src/option/job/jobinfo.js +++ b/src/option/job/jobinfo.js @@ -8,11 +8,11 @@ export const timeExpressionTypeDic = [ value: 2, }, { - label: '固定频率(毫秒)', + label: '固定频率(毫秒)', value: 3, }, { - label: '固定延迟(毫秒)', + label: '固定延迟(毫秒)', value: 4, }, { @@ -428,14 +428,14 @@ export default { value: 0, }, { - label: '最低内存(GB)', + label: '最低内存(GB)', labelTip: '可用内存小于该值的Worker 将不会执行该任务,0 代表无任何限制', prop: 'minMemorySpace', type: 'number', value: 0, }, { - label: '最低磁盘空间(GB)', + label: '最低磁盘空间(GB)', labelTip: '可用磁盘空间小于该值的Worker 将不会执行该任务,0 代表无任何限制', prop: 'minDiskSpace', type: 'number', @@ -475,14 +475,14 @@ export default { value: 0, }, { - label: '统计窗口(s)', + label: '统计窗口(s)', labelTip: '统计的窗口长度(s),0代表不限制', prop: 'statisticWindowLen', type: 'number', value: 0, }, { - label: '沉默窗口(s)', + label: '沉默窗口(s)', labelTip: '沉默时间窗口(s),0代表不限制', prop: 'silenceWindowLen', type: 'number', diff --git a/src/option/transportCapacity/transport-vehicle.js b/src/option/transportCapacity/transport-vehicle.js index 320d3a4..03d14fa 100644 --- a/src/option/transportCapacity/transport-vehicle.js +++ b/src/option/transportCapacity/transport-vehicle.js @@ -71,7 +71,7 @@ export const option = { align: 'center', }, { - label: '核定载质量(KG)', + label: '核定载质量(KG)', prop: 'approvedLoadKg', minWidth: 140, align: 'right', diff --git a/src/option/vehicle/annual-inspection-record.js b/src/option/vehicle/annual-inspection-record.js index e017adf..771e5f7 100644 --- a/src/option/vehicle/annual-inspection-record.js +++ b/src/option/vehicle/annual-inspection-record.js @@ -154,7 +154,7 @@ export const option = { ], }, { - label: '评定(复核)单位', + label: '评定(复核)单位', prop: 'assessmentUnit', minWidth: 160, overHidden: true, diff --git a/src/views/authority/apikey.vue b/src/views/authority/apikey.vue index 5a0fc1c..c89d7da 100644 --- a/src/views/authority/apikey.vue +++ b/src/views/authority/apikey.vue @@ -512,7 +512,7 @@ export default { { label: '请求接口', prop: 'requestUri', search: true, slot: true }, { label: '请求方法', prop: 'method', slot: true, width: 85 }, { label: '调用IP', prop: 'remoteIp', search: true, width: 140 }, - { label: '耗时(ms)', prop: 'time', width: 85 }, + { label: '耗时(ms)', prop: 'time', width: 85 }, { label: '日志时间', prop: 'createTime', sortable: true, span: 24, width: 180 }, { label: '用户代理', prop: 'userAgent', span: 24, hide: true }, diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue index 0a2d4f8..68bd9c4 100644 --- a/src/views/business/components/business-crud-page.vue +++ b/src/views/business/components/business-crud-page.vue @@ -892,7 +892,7 @@ - + - + - + @@ -1963,7 +1963,7 @@ :disabled="dialogReadonly" @input="value => handleIntegerInput('paymentDays', value)" /> - + @@ -2207,7 +2207,7 @@ - + @@ -2237,7 +2237,7 @@ - + 添加 @@ -2858,7 +2858,7 @@ v-if="waybillIsRoadTransport(detailRow) && !waybillIsCarrier(detailRow)" class="business-crud-page__waybill-detail-field" > - 里程(km){{ detailRow.mileage || '-' }} + 里程(km){{ detailRow.mileage || '-' }}
- +

{{ segmentNumber(route, index) }}{{ route.departureName || '-' }} → {{ route.arrivalName || '-' }}{{ segmentTransportType(route) || '-' }}已调度 {{ quantity(route.dispatchedQuantity) }} / {{ quantity(plannedQuantity(route)) }} {{ plannedUnit(route) }}

总量{{ quantity(master.totalQuantity) }}
已调度{{ quantity(route.dispatchedQuantity) }}
剩余{{ quantity(remainingQuantity(route)) }}
- +

关联计划单

@@ -30,15 +30,15 @@ - - + + - + diff --git a/src/views/business/components/master-order-dispatch.vue b/src/views/business/components/master-order-dispatch.vue index e27810e..9746010 100644 --- a/src/views/business/components/master-order-dispatch.vue +++ b/src/views/business/components/master-order-dispatch.vue @@ -159,7 +159,7 @@ - + diff --git a/src/views/business/contract-manage-change.vue b/src/views/business/contract-manage-change.vue index 6501e32..d70b607 100644 --- a/src/views/business/contract-manage-change.vue +++ b/src/views/business/contract-manage-change.vue @@ -17,8 +17,8 @@ -
- +
+ @@ -56,7 +56,7 @@ - + diff --git a/src/views/business/loading-manage.vue b/src/views/business/loading-manage.vue index 4ca1f5a..94036e3 100644 --- a/src/views/business/loading-manage.vue +++ b/src/views/business/loading-manage.vue @@ -868,7 +868,7 @@ - + -
+
{{ projectDialogTitle }}
this.applyProjectDetail(res.data.data || {})); + this.api.getDetail(id).then(res => { + const detail = res.data.data || {}; + this.applyProjectDetail({ + ...detail, + changeType: type === 'change' ? this.resolveChangeType(detail) : detail.changeType, + }); + }); }, closeProjectForm() { if (this.isProjectFormPage) { @@ -1294,34 +1304,16 @@ export default { }); }, openProjectDialog(type, row = {}) { - if (['add', 'edit'].includes(type)) { - this.$router.push({ - path: '/business/project-apply/form', - query: - type === 'edit' - ? { mode: type, id: row.id, name: `编辑${this.config.title}` } - : { mode: type, name: `新增${this.config.title}` }, - }); - return; + const query = { mode: type }; + if (['edit', 'view', 'change'].includes(type)) { + query.id = row.id; } - this.dialogType = type; - this.dialogReadonly = type === 'view'; - this.projectBox = true; - if (type === 'add' || type === 'majorSupplement') { - this.applyProjectDetail({ - ...emptyForm(), - projectType: type === 'majorSupplement' ? '重大项目' : '普通项目', - }); - this.fillDefaultUsers(); - return; - } - this.api.getDetail(row.id).then(res => { - const detail = res.data.data || {}; - this.applyProjectDetail({ - ...detail, - changeType: type === 'change' ? this.resolveChangeType(detail) : detail.changeType, - }); - }); + if (type === 'add') query.name = `新增${this.config.title}`; + else if (type === 'edit') query.name = `编辑${this.config.title}`; + else if (type === 'view') query.name = `查看${this.config.title}`; + else if (type === 'majorSupplement') query.name = '重大项目补录'; + else if (type === 'change') query.name = '项目变更'; + this.$router.push({ path: '/business/project-apply/form', query }); }, resetProjectDialog() { this.$refs.projectForm?.clearValidate(); @@ -2094,28 +2086,11 @@ export default { .project-apply-page-form { min-height: 100%; + margin-bottom: 60px; //padding: 20px 24px 92px; //background: #f5f6fa; } -.project-apply-page__title { - display: flex; - align-items: center; - margin-bottom: 16px; - color: #303133; - font-size: 18px; - font-weight: 600; - - &::before { - //width: 4px; - height: 18px; - margin-right: 8px; - //background: #409eff; - border-radius: 2px; - content: ''; - } -} - .project-apply-dialog__footer { display: flex; justify-content: flex-end; diff --git a/src/views/transportCapacity/components/vehicle-ledger.vue b/src/views/transportCapacity/components/vehicle-ledger.vue index 1e00a3a..b941435 100644 --- a/src/views/transportCapacity/components/vehicle-ledger.vue +++ b/src/views/transportCapacity/components/vehicle-ledger.vue @@ -25,11 +25,11 @@ {{ vehicleDetail.energyType || '-' }} - {{ dimensions }} - {{ + {{ dimensions }} + {{ vehicleDetail.approvedLoadKg ?? '-' }} - {{ + {{ vehicleDetail.tractionMassKg ?? '-' }} {{ diff --git a/src/views/transportCapacity/vehicle.vue b/src/views/transportCapacity/vehicle.vue index 934767d..3ef9eff 100644 --- a/src/views/transportCapacity/vehicle.vue +++ b/src/views/transportCapacity/vehicle.vue @@ -231,7 +231,7 @@ - +
@@ -263,7 +263,7 @@ - + - + - -
+ +
- - + + - - + class="credit-increase-input" + /> - -
+ +
- + - + - + - + @@ -439,17 +439,17 @@ {{ row.creditLevel }} - + - +