c7cdec27e0
commita514bf4009Author: 浅念 <email@sample.com> Date: Thu Sep 18 09:55:10 2025 +0800 Squashed commit of the following: commit9e260ddcd8Author: 浅念 <email@sample.com> Date: Thu Sep 18 09:49:33 2025 +0800 修改 kpi commit6feb3ace75Author: 浅念 <email@sample.com> Date: Thu Sep 18 09:42:44 2025 +0800 kpi 统计 commitec257a246dAuthor: 浅念 <email@sample.com> Date: Wed Sep 17 17:04:35 2025 +0800 修改 弹框表格 commitfa764852abAuthor: 浅念 <email@sample.com> Date: Wed Sep 17 15:54:35 2025 +0800 添加 账户简称 commit65f7f4a123Author: 浅念 <email@sample.com> Date: Wed Sep 17 15:10:28 2025 +0800 品牌加热门 修改 仪表盘接口 commit922cfec81dAuthor: 浅念 <email@sample.com> Date: Tue Sep 16 15:57:17 2025 +0800 调整备货单 crm 端页面 commit5c8df36f12Author: 浅念 <email@sample.com> Date: Mon Sep 15 17:14:38 2025 +0800 调整备货单 及各页面名称 commit5503a14408Author: 浅念 <email@sample.com> Date: Fri Sep 12 18:10:03 2025 +0800 账户添加公司 commit3439b45d9aAuthor: 浅念 <email@sample.com> Date: Fri Sep 12 17:53:26 2025 +0800 修改终版备货单 commit045d13eb7bAuthor: 浅念 <email@sample.com> Date: Fri Sep 12 17:49:07 2025 +0800 修改备货单 等页面 commitda690dfa06Author: 浅念 <email@sample.com> Date: Thu Sep 11 17:44:37 2025 +0800 修改 备货单 详情 commit853e9591b3Author: 浅念 <email@sample.com> Date: Wed Sep 10 18:11:39 2025 +0800 修改 备货单页面 commit9052bd1027Author: 浅念 <email@sample.com> Date: Tue Sep 9 20:53:30 2025 +0800 备货单 审核功能 commit079d9babb8Merge:ebd747991d810bAuthor: 浅念 <email@sample.com> Date: Tue Sep 9 14:51:43 2025 +0800 Merge branch 'feature/crm_pc' of http://219.157.255.213:25311/xinyouhe/art-design into feature/crm_vehicle commitebd7479573Merge:64e53b6459d306Author: 浅念 <email@sample.com> Date: Tue Sep 9 13:57:28 2025 +0800 Merge branch 'feature/crm_pc' of http://219.157.255.213:25311/xinyouhe/art-design into feature/crm_vehicle commit64e53b6ee9Author: 浅念 <email@sample.com> Date: Mon Sep 8 19:09:55 2025 +0800 备货单 加 审批流程 commit9bd7c89cb4Author: 浅念 <email@sample.com> Date: Thu Sep 4 15:09:17 2025 +0800 车辆信息,备货单 等页面 commit91d810b33aAuthor: 浅念 <email@sample.com> Date: Tue Sep 9 14:51:23 2025 +0800 添加公司搜索 commit459d306504Author: 浅念 <email@sample.com> Date: Tue Sep 9 13:56:43 2025 +0800 用户添加 公司搜索 commit8a0d4fc516Author: 浅念 <email@sample.com> Date: Thu Sep 4 14:38:09 2025 +0800 自定义跟进时间 处理 commit58f7d56f40Author: 浅念 <email@sample.com> Date: Wed Sep 3 15:13:10 2025 +0800 工单去掉 移动端不显示限制 commita91e1d7820Author: 浅念 <email@sample.com> Date: Tue Sep 2 14:13:15 2025 +0800 将编号 后移 commita9f8c5c4dcAuthor: 浅念 <email@sample.com> Date: Wed Aug 27 09:20:56 2025 +0800 客户重复通知 commitaefd43f79dAuthor: 浅念 <email@sample.com> Date: Tue Aug 26 09:55:42 2025 +0800 修改 通知详情样式 和 即时通讯 commit1bd9d163ecAuthor: 浅念 <email@sample.com> Date: Mon Aug 25 15:31:14 2025 +0800 通知 列表富文本内容显示 commitbe6093e57dAuthor: 浅念 <email@sample.com> Date: Mon Aug 25 13:34:13 2025 +0800 crm 客户添加自定义列 跟进添加图片粘贴上传 commitd83246ba8cAuthor: 浅念 <email@sample.com> Date: Fri Aug 22 18:33:58 2025 +0800 显示编号 commit329acaf68dAuthor: 浅念 <email@sample.com> Date: Fri Aug 22 18:27:26 2025 +0800 通知板块 及 功能调整 commitb319944007Author: 浅念 <email@sample.com> Date: Thu Aug 21 11:12:12 2025 +0800 调整联系方式字段为电话 列表中多个联系方式纵向排列显示 会增加公司信息的自定义输入框 排序搜索 等功能 commit70d26f0829Author: 浅念 <email@sample.com> Date: Tue Aug 19 16:18:15 2025 +0800 1.0.3 的相关功能 commit0e84bedb67Author: 浅念 <email@sample.com> Date: Fri Aug 15 16:31:55 2025 +0800 v1.0.2 更新内容 commitf5deb7b8f7Author: 浅念 <email@sample.com> Date: Wed Aug 13 19:27:49 2025 +0800 添加菜单 权限 等页面 commite797cb24deAuthor: 浅念 <email@sample.com> Date: Mon Aug 11 19:24:24 2025 +0800 添加工单附件 及样式 commit619311dfbeAuthor: chenlan <suya123456> Date: Fri Aug 8 22:13:25 2025 +0800 添加crm 归属客户 commitb402e522bfAuthor: 浅念 <email@sample.com> Date: Thu Aug 7 10:51:17 2025 +0800 询单权限校验 commitf950f665a9Author: 浅念 <email@sample.com> Date: Thu Aug 7 10:10:45 2025 +0800 添加 询单图片预览 commit8deecc8197Author: 浅念 <email@sample.com> Date: Wed Aug 6 18:36:42 2025 +0800 修改用户页面 询单 commit3e24d1905fAuthor: 浅念 <email@sample.com> Date: Tue Aug 5 18:25:32 2025 +0800 添加用户页面 客户页面接口 等 commit7542d80e38Author: 浅念 <email@sample.com> Date: Mon Aug 4 18:05:07 2025 +0800 修改 仪表盘页面样式 commite5548f95e4Author: 浅念 <email@sample.com> Date: Mon Aug 4 14:50:55 2025 +0800 修改询单字段 仪表盘页面 及添加管理端客户页面 commitd30ea5b7bfAuthor: 浅念 <email@sample.com> Date: Mon Aug 4 14:48:58 2025 +0800 添加echarts 插件 commit0e4160c5caAuthor: 浅念 <email@sample.com> Date: Fri Aug 1 18:27:22 2025 +0800 仪表盘接口 commitbd23288acdAuthor: 浅念 <email@sample.com> Date: Fri Aug 1 18:26:46 2025 +0800 修改 仪表盘 commit6bfb940881Author: 浅念 <email@sample.com> Date: Fri Aug 1 10:01:35 2025 +0800 客户列表 添加公海详情展示 commitb50f650565Author: 浅念 <email@sample.com> Date: Thu Jul 31 17:26:36 2025 +0800 修改 客户标签样式 个人信息添加邮箱 修复关闭全部页面404 commitea1dbb7af4Author: 浅念 <email@sample.com> Date: Wed Jul 30 18:50:31 2025 +0800 修改公海和询单页面 commit1bfbb95bd9Author: 浅念 <email@sample.com> Date: Wed Jul 30 17:23:09 2025 +0800 修改样式和添加用户数据显示 commita9f5f76b35Author: 浅念 <email@sample.com> Date: Wed Jul 30 15:06:03 2025 +0800 设置默认页面 commit3ea9d3d5dfAuthor: 浅念 <email@sample.com> Date: Wed Jul 30 11:46:31 2025 +0800 修改飞书登录 公司id 系统id 获取不到问题 客户及公海添加用户信息显示 commit0cef82279fAuthor: 浅念 <email@sample.com> Date: Tue Jul 29 16:42:36 2025 +0800 修改工单 客户等页面 commit695ebbcc71Author: 浅念 <email@sample.com> Date: Fri Jul 25 17:50:04 2025 +0800 修改默认值 commitffc194a1c1Author: 浅念 <email@sample.com> Date: Fri Jul 25 17:05:33 2025 +0800 飞书授权添加系统码 及登录进入页面路由 commit48b95e252fAuthor: 浅念 <email@sample.com> Date: Fri Jul 25 15:48:49 2025 +0800 回收站添加占位 commit382011d592Author: 浅念 <email@sample.com> Date: Fri Jul 25 15:11:50 2025 +0800 修改登录页样式公海数据 个人信息默认图 commit0f790269dbAuthor: 浅念 <email@sample.com> Date: Fri Jul 25 09:16:55 2025 +0800 修改字段名称 commitf18cfdb69eAuthor: 浅念 <email@sample.com> Date: Thu Jul 24 17:28:51 2025 +0800 调整代码格式 commit858147fbbdAuthor: 浅念 <email@sample.com> Date: Thu Jul 24 10:17:22 2025 +0800 修改token刷新 及修改询单详情展示 commitc333b907e6Author: 浅念 <email@sample.com> Date: Wed Jul 23 18:22:56 2025 +0800 对接询单接口 commit7979a31e36Author: 浅念 <email@sample.com> Date: Wed Jul 23 14:40:02 2025 +0800 修改代码格式 commit4a39387865Author: 浅念 <email@sample.com> Date: Wed Jul 23 14:07:13 2025 +0800 设置客户列表权限 commitfc4de02582Author: 浅念 <email@sample.com> Date: Tue Jul 22 17:08:13 2025 +0800 feat(router): 调整菜单 commit2ffe0c9753Author: 浅念 <email@sample.com> Date: Tue Jul 22 17:04:16 2025 +0800 feat(crmApi.ts): 调整结构 commitc3fb2c48d3Author: 浅念 <email@sample.com> Date: Tue Jul 22 17:00:25 2025 +0800 feat(router): 路由调整 commitc5b0a8265aAuthor: 浅念 <email@sample.com> Date: Tue Jul 22 16:54:06 2025 +0800 chore: 添加询单页面及调整菜单 commitca06c9bc46Author: 浅念 <email@sample.com> Date: Tue Jul 22 16:35:43 2025 +0800 询单页面及菜单 commit3b6de4c7faMerge:d3bb4ec85e8b9bAuthor: 浅念 <email@sample.com> Date: Tue Jul 22 09:22:20 2025 +0800 Merge branch 'master' into feature/crm_pc commitd3bb4ec6e5Merge:c7d8908d7ab6f1Author: 浅念 <email@sample.com> Date: Mon Jul 21 18:22:55 2025 +0800 Merge branch 'master' into feature/crm_pc # Conflicts: # .gitignore # src/api/crmApi.ts # src/api/usersApi.ts # src/store/modules/user.ts # src/utils/http/index.ts # src/views/auth/login/index.vue # src/views/crmpc/customer/Show.vue # src/views/crmpc/customer/index.vue commitc7d890809cAuthor: 浅念 <email@sample.com> Date: Mon Jul 21 18:12:16 2025 +0800 添加系统码 commit31cd18fadeAuthor: 浅念 <email@sample.com> Date: Mon Jul 21 18:02:48 2025 +0800 Merge branch 'master' into feature/crm_pc # Conflicts: # .gitignore commit59c9c97c08Author: 浅念 <email@sample.com> Date: Mon Jul 21 17:56:52 2025 +0800 Merge branch 'master' into feature/crm_pc # Conflicts: # .gitignore commitd4b577c42eAuthor: 浅念 <email@sample.com> Date: Mon Jul 21 13:03:56 2025 +0800 feat(crm): 添加相关图片 commite4967760b7Merge:0c6766685102fcAuthor: 浅念 <email@sample.com> Date: Mon Jul 21 11:25:49 2025 +0800 Finish crm_pc commit85102fcf32Author: 浅念 <email@sample.com> Date: Mon Jul 21 11:24:06 2025 +0800 crm 接口对接 commit0c67666793Author: 浅念 <email@sample.com> Date: Wed Jul 16 17:18:14 2025 +0800 添加上传头部信息 commita41c75f703Author: 浅念 <email@sample.com> Date: Tue Jul 15 09:40:53 2025 +0800 修改页面 commit22ae0e86c8Author: 浅念 <email@sample.com> Date: Mon Jul 14 17:59:02 2025 +0800 修改页面 commit812e3c4b0cAuthor: 浅念 <email@sample.com> Date: Mon Jul 14 10:09:10 2025 +0800 修改菜单问题 commit2ad479b006Author: 浅念 <email@sample.com> Date: Fri Jul 11 19:45:57 2025 +0800 修改样式 commit5802e157bfAuthor: 浅念 <email@sample.com> Date: Fri Jul 11 19:43:34 2025 +0800 修改工单 commit713d43f7b4Author: 浅念 <email@sample.com> Date: Fri Jul 11 18:37:16 2025 +0800 添加登录 commit719911918fAuthor: 浅念 <email@sample.com> Date: Fri Jul 4 17:16:38 2025 +0800 项目创建 commitce47b39fa5Author: 浅念 <email@sample.com> Date: Wed Jul 2 09:37:51 2025 +0800 删除 # Conflicts: # src/App.vue # src/api/adminApi.ts # src/api/crmApi.ts # src/api/menuApi.ts # src/api/systemApi.ts # src/api/usersApi.ts # src/components/core/layouts/art-header-bar/index.vue # src/components/core/layouts/art-page-content/index.vue # src/router/routes/asyncRoutes.ts # src/router/routesAlias.ts # src/views/admin/customer/customeraudit.vue # src/views/admin/customer/highseas.vue # src/views/admin/customer/index.vue # src/views/admin/inquiry_system/index.vue # src/views/admin/system/company.vue # src/views/admin/system/feishu_app.vue # src/views/admin/system/menu/index.vue # src/views/admin/system/role/index.vue # src/views/admin/system/systems.vue # src/views/admin/user/index.vue # src/views/admin/user/user_info.vue # src/views/auth/login/index.vue # src/views/crmpc/customer/Add.vue # src/views/crmpc/customer/Edit.vue # src/views/crmpc/customer/Followadd.vue # src/views/crmpc/customer/Show.vue # src/views/crmpc/customer/index.vue # src/views/crmpc/highseas/index.vue # src/views/crmpc/recycle/index.vue # src/views/crmpc/team/team_customer.vue # src/views/crmpc/team/user_customer.vue # src/views/dashboard/console/index.vue # src/views/system/user-center/index.vue # src/views/work/myOrder/index.vue # src/views/work/order/index.vue
1109 lines
41 KiB
Vue
1109 lines
41 KiB
Vue
<template>
|
||
<div class="stocking-add-page">
|
||
<div class="header boxshadow">
|
||
<div class="title">合塑实业·汽车事业部-备货单(客户下定)</div>
|
||
<div class="subtitle">业务员:{{ getUserInfo.user.name }}</div>
|
||
</div>
|
||
<div class="boxshadow">
|
||
<div class="form-title">
|
||
<span class="border"></span>
|
||
<span class="title">基础信息</span>
|
||
</div>
|
||
<ElForm :model="baseForm" class="base-form" label-position="right">
|
||
<ElRow :gutter="12">
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="阿里订单号/PI号" label-width="114px">
|
||
<ElInput v-model="baseForm.pi_no" placeholder="请输入阿里订单号/PI号" disabled />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="日期" label-width="114px">
|
||
<ElDatePicker
|
||
v-model="baseForm.biz_date"
|
||
type="date"
|
||
value-format="YYYY-MM-DD"
|
||
format="YYYY-MM-DD"
|
||
placeholder="请选择日期"
|
||
style="width: 100%"
|
||
/>
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="清关目的国" label-width="114px">
|
||
<el-select
|
||
v-model="baseForm.clearance_country_id"
|
||
filterable
|
||
placeholder="请选择国家"
|
||
@change="
|
||
(val) =>
|
||
(baseForm.clearance_country_snapshot =
|
||
(countryOptions || []).find((x: any) => x.id === val)?.cn_addrs || '')
|
||
"
|
||
>
|
||
<el-option
|
||
v-for="item in countryOptions"
|
||
:key="item.id"
|
||
:label="item.cn_addrs"
|
||
:value="item.id"
|
||
/>
|
||
</el-select>
|
||
<ElInput v-model="baseForm.clearance_country_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="客户名称" label-width="114px">
|
||
<ElInput
|
||
v-model="baseForm.customer_snapshot"
|
||
placeholder="请选择客户"
|
||
readonly
|
||
@click="openCustomerDialog"
|
||
>
|
||
<template #suffix>
|
||
<i class="iconfont-sys" @click.stop="openCustomerDialog"></i>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="baseForm.customer_id" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="客户来源" label-width="114px">
|
||
<el-tooltip class="box-item" content="如需修改客户来源,请先编辑修改客户资料">
|
||
<el-select
|
||
v-model="baseForm.customer_source_id"
|
||
filterable
|
||
disabled
|
||
placeholder="请选择客户渠道"
|
||
@change="
|
||
(val) =>
|
||
(baseForm.customer_source_snapshot =
|
||
(channelOptions || []).find((x: any) => x.id === val)?.name || '')
|
||
"
|
||
>
|
||
<el-option
|
||
v-for="item in channelOptions"
|
||
:key="item.id"
|
||
:label="item.name"
|
||
:value="item.id"
|
||
/>
|
||
</el-select>
|
||
</el-tooltip>
|
||
<ElInput v-model="baseForm.customer_source_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="客户所在国" label-width="114px">
|
||
<el-tooltip class="box-item" content="如需修改客户所在国,请先编辑修改客户资料">
|
||
<el-select
|
||
v-model="baseForm.customer_country_id"
|
||
filterable
|
||
disabled
|
||
placeholder="请选择国家"
|
||
@change="
|
||
(val) =>
|
||
(baseForm.customer_country_snapshot =
|
||
(countryOptions || []).find((x: any) => x.id === val)?.cn_addrs || '')
|
||
"
|
||
>
|
||
<el-option
|
||
v-for="item in countryOptions"
|
||
:key="item.id"
|
||
:label="item.cn_addrs"
|
||
:value="item.id"
|
||
/>
|
||
</el-select>
|
||
</el-tooltip>
|
||
<ElInput v-model="baseForm.customer_country_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
</ElRow>
|
||
</ElForm>
|
||
</div>
|
||
<!-- 明细行 -->
|
||
<div class="boxshadow">
|
||
<div class="form-title">
|
||
<span class="border"></span>
|
||
<span class="title">订单详情</span>
|
||
</div>
|
||
<ElForm class="items-wrap" label-position="right">
|
||
<div class="item-row form-box" v-for="(item, idx) in items" :key="idx">
|
||
<ElRow :gutter="12" class="item-row-wrap">
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="车型" label-width="85px">
|
||
<ElInput
|
||
v-model="item.model_snapshot"
|
||
placeholder="请选择车型"
|
||
readonly
|
||
disabled
|
||
@click="openVehicleDialog(idx)"
|
||
>
|
||
<template #suffix>
|
||
<i class="iconfont-sys" @click.stop="openVehicleDialog(idx)"></i>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="item.sku_id" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="颜色/外饰" label-width="85px">
|
||
<el-select
|
||
v-model="item.color_exterior_snapshot"
|
||
filterable
|
||
placeholder="请选择内容"
|
||
@change="
|
||
(val) =>
|
||
(item.color_exterior_code =
|
||
(wcolorOptions || []).find((x: any) => x.color_text === val)?.color_code ||
|
||
'')
|
||
"
|
||
>
|
||
<ElOption
|
||
v-for="item in wcolorOptions"
|
||
:key="item.color_code"
|
||
:label="item.color_text"
|
||
:value="item.color_text"
|
||
/>
|
||
</el-select>
|
||
<ElInput v-model="item.color_exterior_code" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="颜色/内饰" label-width="85px">
|
||
<el-select
|
||
v-model="item.color_interior_snapshot"
|
||
filterable
|
||
placeholder="请选择内容"
|
||
@change="
|
||
(val) =>
|
||
(item.color_interior_code =
|
||
(ncolorOptions || []).find((x: any) => x.color_text === val)?.color_code ||
|
||
'')
|
||
"
|
||
>
|
||
<ElOption
|
||
v-for="item in ncolorOptions"
|
||
:key="item.color_code"
|
||
:label="item.color_text"
|
||
:value="item.color_text"
|
||
/>
|
||
</el-select>
|
||
<ElInput v-model="item.color_interior_code" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="改装" label-width="85px">
|
||
<el-select
|
||
v-model="item.modify_ids"
|
||
filterable
|
||
multiple
|
||
placeholder="请选择内容"
|
||
@change="
|
||
(vals) =>
|
||
(item.modify_list = (modificationOptions || [])
|
||
.filter((x: any) => (vals || []).includes(x.id))
|
||
.map((x: any) => ({ option_id: x.id, option_name_snapshot: x.name })))
|
||
"
|
||
>
|
||
<el-option
|
||
v-for="item in modificationOptions"
|
||
:key="item.id"
|
||
:label="item.name"
|
||
:value="item.id"
|
||
/>
|
||
</el-select>
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="里程" label-width="85px">
|
||
<ElInput v-model="item.mileage" placeholder="请输入里程" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
</ElRow>
|
||
<ElRow :gutter="12" class="item-row-wrap">
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4" v-if="(item.mileage ?? 0) <= 0">
|
||
<ElFormItem label="官方指导价" label-width="85px">
|
||
<ElInput v-model="item.official_price" placeholder="请输入官方指导价">
|
||
<template #suffix>
|
||
<ElSelect v-model="item.guide_price_currency" style="width: 64px;border: none;">
|
||
<ElOption
|
||
v-for="c in currencyOptions"
|
||
:key="c.currency_code"
|
||
:label="c.currency_name"
|
||
:value="c.currency_code"
|
||
/>
|
||
</ElSelect>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="item.guide_price_currency_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4" v-else>
|
||
<ElFormItem label="二手挂牌价" label-width="85px">
|
||
<ElInput v-model="item.listing_price" placeholder="请输入二手挂牌价">
|
||
<template #suffix>
|
||
<ElSelect v-model="item.listing_price_currency" style="width: 64px">
|
||
<ElOption
|
||
v-for="c in currencyOptions"
|
||
:key="c.currency_code"
|
||
:label="c.currency_name"
|
||
:value="c.currency_code"
|
||
/>
|
||
</ElSelect>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="item.listing_price_currency_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4" v-if="(item.mileage ?? 0) <= 0">
|
||
<ElFormItem label="优惠" label-width="85px">
|
||
<ElInput v-model="item.discount_price" placeholder="请输入优惠额">
|
||
<template #suffix>
|
||
<ElSelect v-model="item.discount_currency" style="width: 64px">
|
||
<ElOption
|
||
v-for="c in currencyOptions"
|
||
:key="c.currency_code"
|
||
:label="c.currency_name"
|
||
:value="c.currency_code"
|
||
/>
|
||
</ElSelect>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="item.discount_currency_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4" v-else>
|
||
<ElFormItem label="优惠" label-width="85px">
|
||
<ElInput v-model="item.reduction_price" placeholder="请输入优惠">
|
||
<template #suffix>
|
||
<ElSelect v-model="item.reduction_price_currency" style="width: 64px">
|
||
<ElOption
|
||
v-for="c in currencyOptions"
|
||
:key="c.currency_code"
|
||
:label="c.currency_name"
|
||
:value="c.currency_code"
|
||
/>
|
||
</ElSelect>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="item.reduction_price_currency_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
</ElRow>
|
||
<ElRow :gutter="12" class="item-row-wrap">
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="手续费" label-width="85px">
|
||
<ElInput v-model="item.handling_fee" placeholder="请输入手续费">
|
||
<template #suffix>
|
||
<ElSelect v-model="item.helper_fee_currency" style="width: 64px">
|
||
<ElOption
|
||
v-for="c in currencyOptions"
|
||
:key="c.currency_code"
|
||
:label="c.currency_name"
|
||
:value="c.currency_code"
|
||
/>
|
||
</ElSelect>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="item.helper_fee_currency_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="改装费" label-width="85px">
|
||
<ElInput v-model="item.retrofit_fee" placeholder="请输入改装费">
|
||
<template #suffix>
|
||
<ElSelect v-model="item.modify_fee_currency" style="width: 64px">
|
||
<ElOption
|
||
v-for="c in currencyOptions"
|
||
:key="c.currency_code"
|
||
:label="c.currency_name"
|
||
:value="c.currency_code"
|
||
/>
|
||
</ElSelect>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="item.modify_fee_currency_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="FOB段运费" label-width="85px">
|
||
<ElInput v-model="item.fob_transport_fee" placeholder="请输入FOB段运费">
|
||
<template #suffix>
|
||
<ElSelect v-model="item.fob_fee_currency" style="width: 64px">
|
||
<ElOption
|
||
v-for="c in currencyOptions"
|
||
:key="c.currency_code"
|
||
:label="c.currency_name"
|
||
:value="c.currency_code"
|
||
/>
|
||
</ElSelect>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="item.fob_fee_currency_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="港杂费" label-width="85px">
|
||
<ElInput v-model="item.port_misc_fee" placeholder="请输入港杂费">
|
||
<template #suffix>
|
||
<ElSelect v-model="item.port_fee_currency" style="width: 64px">
|
||
<ElOption
|
||
v-for="c in currencyOptions"
|
||
:key="c.currency_code"
|
||
:label="c.currency_name"
|
||
:value="c.currency_code"
|
||
/>
|
||
</ElSelect>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="item.port_fee_currency_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="海运费" label-width="85px">
|
||
<ElInput v-model="item.ocean_freight" placeholder="请输入海运费">
|
||
<template #suffix>
|
||
<ElSelect v-model="item.ocean_freight_currency" style="width: 64px">
|
||
<ElOption
|
||
v-for="c in currencyOptions"
|
||
:key="c.currency_code"
|
||
:label="c.currency_name"
|
||
:value="c.currency_code"
|
||
/>
|
||
</ElSelect>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="item.ocean_freight_currency_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
</ElRow>
|
||
<ElRow :gutter="12" class="item-row-wrap">
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="成交价" label-width="85px">
|
||
<ElInput v-model="item.unit_price" placeholder="请输入成交价">
|
||
<template #suffix>
|
||
<ElSelect v-model="item.unit_price_currency" style="width: 64px">
|
||
<ElOption
|
||
v-for="c in currencyOptions"
|
||
:key="c.currency_code"
|
||
:label="c.currency_name"
|
||
:value="c.currency_code"
|
||
/>
|
||
</ElSelect>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="item.unit_price_currency_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<!-- <ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="总价" label-width="85px">
|
||
<ElInput v-model="item.total_price" placeholder="请输入总价">
|
||
<template #suffix>
|
||
<ElSelect v-model="item.total_price_currency" style="width: 64px">
|
||
<ElOption
|
||
v-for="c in currencyOptions"
|
||
:key="c.currency_code"
|
||
:label="c.currency_name"
|
||
:value="c.currency_code"
|
||
/>
|
||
</ElSelect>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="item.total_price_currency_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol> -->
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="利润" label-width="85px">
|
||
<ElInput
|
||
v-model="item.profit"
|
||
placeholder="正在计算利润"
|
||
:class="Number(item.profit) < 0 ? 'profit-negative' : ''"
|
||
disabled
|
||
>
|
||
<template #suffix>
|
||
<span style="font-size: 11px">
|
||
{{
|
||
((currencyOptions || []).find((c: any) => c.currency_code === baseForm.settlement_currency)?.currency_name) ||
|
||
baseForm.settlement_currency
|
||
}}
|
||
</span>
|
||
</template>
|
||
</ElInput>
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="车架号" label-width="85px">
|
||
<ElInput v-model="item.vin" placeholder="请输入车架号"></ElInput>
|
||
</ElFormItem>
|
||
</ElCol>
|
||
</ElRow>
|
||
</div>
|
||
<ElRow :gutter="12">
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="6">
|
||
<ElFormItem label="合计到岸价" label-width="105px">
|
||
<ElInput v-model.number="baseForm.total_cif" placeholder="请输入合计到岸价">
|
||
<template #suffix>
|
||
<ElSelect v-model="baseForm.total_cif_currency" style="width: 64px">
|
||
<ElOption
|
||
v-for="c in currencyOptions"
|
||
:key="c.currency_code"
|
||
:label="c.currency_name"
|
||
:value="c.currency_code"
|
||
@change="(val) =>(baseForm.contract_exchange_rate =(currencyOptions || []).find((x: any) => x.currency_code === val)?.exchange_rate || '') "
|
||
/>
|
||
</ElSelect>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="baseForm.total_cif_currency_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="6">
|
||
<ElFormItem label="合同汇率" label-width="105px">
|
||
<ElInput v-model="baseForm.contract_exchange_rate" placeholder="请输入">
|
||
<template #suffix>
|
||
<ElSelect v-model="baseForm.settlement_currency" style="width: 64px">
|
||
<ElOption
|
||
v-for="c in currencyOptions"
|
||
:key="c.currency_code"
|
||
:label="c.currency_name"
|
||
:value="c.currency_code"
|
||
/>
|
||
</ElSelect>
|
||
</template>
|
||
</ElInput>
|
||
</ElFormItem>
|
||
</ElCol>
|
||
</ElRow>
|
||
</ElForm>
|
||
</div>
|
||
<div class="boxshadow">
|
||
<div class="form-title">
|
||
<span class="border"></span>
|
||
<span class="title">运输详情</span>
|
||
</div>
|
||
<ElForm :model="baseForm" class="foot-form">
|
||
<ElRow :gutter="12">
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="清关人" label-width="98px">
|
||
<ElInput v-model="baseForm.declarant_name" placeholder="请输入清关人" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="全款收齐日" label-width="98px">
|
||
<ElDatePicker
|
||
v-model="baseForm.collect_all_date"
|
||
value-format="YYYY-MM-DD"
|
||
format="YYYY-MM-DD"
|
||
type="date"
|
||
placeholder="请选择日期"
|
||
style="width: 100%"
|
||
/>
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="国内收货港" label-width="98px">
|
||
<ElSelect
|
||
v-model="baseForm.domestic_port_id"
|
||
placeholder="请选择国内收货商"
|
||
@change="
|
||
(val) =>
|
||
(baseForm.domestic_port_snapshot =
|
||
(portOptions || []).find((x: any) => x.id === val)?.port_name || '')
|
||
"
|
||
>
|
||
<ElOption v-for="p in portOptions" :key="p.id" :label="p.port_name" :value="p.id" />
|
||
</ElSelect>
|
||
<ElInput v-model="baseForm.domestic_port_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="运输方式" label-width="98px">
|
||
<ElSelect
|
||
v-model="baseForm.shipping_method_id"
|
||
placeholder="请选择运输方式"
|
||
@change="
|
||
(val) =>
|
||
(baseForm.shipping_method_snapshot =
|
||
(transportOptions || []).find((x: any) => x.item_value === val)?.item_label ||
|
||
'')
|
||
"
|
||
>
|
||
<ElOption
|
||
v-for="t in transportOptions"
|
||
:key="t.item_value"
|
||
:label="t.item_label"
|
||
:value="t.item_value"
|
||
/>
|
||
</ElSelect>
|
||
<ElInput v-model="baseForm.shipping_method_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="贸易条款" label-width="98px">
|
||
<ElSelect
|
||
v-model="baseForm.trade_term_id"
|
||
placeholder="请选择"
|
||
@change="
|
||
(val) =>
|
||
(baseForm.trade_term_snapshot =
|
||
(trade_termsOptions || []).find((x: any) => x.id === val)?.item_label || '')
|
||
"
|
||
>
|
||
<ElOption
|
||
v-for="t in trade_termsOptions"
|
||
:key="t.id"
|
||
:label="t.item_label"
|
||
:value="t.id"
|
||
/>
|
||
</ElSelect>
|
||
<ElInput v-model="baseForm.trade_term_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="清关目的港" label-width="98px">
|
||
<ElSelect
|
||
v-model="baseForm.clearance_port_id"
|
||
placeholder="请选择"
|
||
@change="
|
||
(val) =>
|
||
(baseForm.clearance_port_snapshot =
|
||
(portOptionsall || []).find((x: any) => x.id === val)?.port_name || '')
|
||
"
|
||
>
|
||
<ElOption
|
||
v-for="p in portOptionsall"
|
||
:key="p.id"
|
||
:label="p.port_name"
|
||
:value="p.id"
|
||
/>
|
||
</ElSelect>
|
||
<ElInput v-model="baseForm.clearance_port_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||
<ElFormItem label="提车日期" label-width="98px">
|
||
<ElDatePicker
|
||
v-model="baseForm.pick_up_date"
|
||
type="date"
|
||
value-format="YYYY-MM-DD"
|
||
format="YYYY-MM-DD"
|
||
placeholder="请选择日期"
|
||
style="width: 100%"
|
||
/>
|
||
</ElFormItem>
|
||
</ElCol>
|
||
</ElRow>
|
||
</ElForm>
|
||
</div>
|
||
<div class="boxshadow">
|
||
<div class="form-title">
|
||
<span class="border"></span>
|
||
<span class="title">计划收款信息</span>
|
||
</div>
|
||
<div class="payment-section">
|
||
<div class="payment-items">
|
||
<div v-for="(payment, idx) in paymentItems" :key="idx" class="payment-item">
|
||
<ElForm :model="payment" label-width="55px" class="payment-form">
|
||
<ElRow :gutter="12">
|
||
<ElCol :sm="12" :md="12" :lg="6" :xl="6">
|
||
<ElFormItem label="汇款人" label-width="55px">
|
||
<ElInput v-model="payment.remitter_name" placeholder="请选择汇款人" disabled />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="4" :xl="4">
|
||
<ElFormItem label="汇款国" label-width="55px">
|
||
<el-select
|
||
disabled
|
||
v-model="payment.remit_country_id"
|
||
filterable
|
||
placeholder="请选择汇款国"
|
||
@change="
|
||
(val) =>
|
||
(payment.remit_country_name_snapshot =
|
||
(countryOptions || []).find((x: any) => x.id === val)?.cn_addrs || '')
|
||
"
|
||
>
|
||
<el-option
|
||
v-for="item in countryOptions"
|
||
:key="item.id"
|
||
:label="item.cn_addrs"
|
||
:value="item.id"
|
||
/>
|
||
</el-select>
|
||
<ElInput v-model="payment.remit_country_name_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="4" :xl="4">
|
||
<ElFormItem label="日期" label-width="55px">
|
||
<ElDatePicker
|
||
disabled
|
||
v-model="payment.remit_date"
|
||
type="date"
|
||
format="YYYY-MM-DD"
|
||
value-format="YYYY-MM-DD"
|
||
placeholder="请选择日期"
|
||
style="width: 100%"
|
||
/>
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="5" :xl="5">
|
||
<ElFormItem label="账户" label-width="55px">
|
||
<ElSelect
|
||
disabled
|
||
v-model="payment.account_name_snapshot"
|
||
placeholder="请选择账户"
|
||
@change="
|
||
(val) =>
|
||
(payment.account_id =
|
||
(accountOptions || []).find((x: any) => x.short_desc === val)?.id || '')
|
||
"
|
||
>
|
||
<ElOption
|
||
v-for="item in accountOptions"
|
||
:key="item.id"
|
||
:label="item.short_desc"
|
||
:value="item.id"
|
||
/>
|
||
</ElSelect>
|
||
<ElInput v-model="payment.account_id" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
<ElCol :sm="12" :md="12" :lg="5" :xl="5">
|
||
<ElFormItem label="金额" label-width="55px">
|
||
<ElInput disabled v-model="payment.amount" placeholder="请输入金额">
|
||
<template #suffix>
|
||
<ElSelect
|
||
disabled
|
||
v-model="payment.currency_code"
|
||
style="width: 64px"
|
||
@change="
|
||
(val) => {
|
||
const found = (currencyOptions || []).find((x: any) => x.currency_code === val)
|
||
payment.currency_name_snapshot = found?.currency_name || ''
|
||
}
|
||
"
|
||
>
|
||
<ElOption
|
||
v-for="c in currencyOptions"
|
||
:key="c.currency_code"
|
||
:label="c.currency_name"
|
||
:value="c.currency_code"
|
||
/>
|
||
</ElSelect>
|
||
</template>
|
||
</ElInput>
|
||
<ElInput v-model="payment.currency_name_snapshot" type="hidden" />
|
||
</ElFormItem>
|
||
</ElCol>
|
||
</ElRow>
|
||
<!-- <ElRow :gutter="12">
|
||
<ElCol :span="24" style="text-align: right;">
|
||
<ElButton type="danger" size="small" @click="removePaymentItem(idx)" :disabled="paymentItems.length === 1">删除</ElButton>
|
||
<ElButton type="primary" size="small" @click="addPaymentItem" v-if="idx === paymentItems.length - 1">添加收款信息</ElButton>
|
||
</ElCol>
|
||
</ElRow> -->
|
||
</ElForm>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- 上传合同 -->
|
||
<div class="boxshadow">
|
||
<div class="form-title">
|
||
<span class="border"></span>
|
||
<span class="title">上传合同</span>
|
||
</div>
|
||
<el-upload
|
||
class="upload-box"
|
||
:action="actionImageUplode"
|
||
:headers="uploadHeaders"
|
||
:show-file-list="false"
|
||
:on-success="handleContractUpload"
|
||
:before-upload="beforeContractUpload"
|
||
accept=".jpg,.jpeg,.png,.gif,.pdf,.doc,.docx,.xls,.xlsx,.txt"
|
||
>
|
||
<div class="qrcode-upload-box">
|
||
<input type="hidden" v-model="baseForm.contract" />
|
||
<img v-if="!contractFile" class="avatar" src="@/assets/img/crm/contract.png" />
|
||
<div v-else class="file-preview">
|
||
<img v-if="isImageFile(contractFile)" :src="contractFile.url" class="preview-image" />
|
||
<div v-else class="file-icon">
|
||
<i class="iconfont-sys"></i>
|
||
<span class="file-name">{{ contractFile.name }}</span>
|
||
</div>
|
||
<div class="file-actions">
|
||
<el-button type="text" size="small" @click.stop="removeContractFile">删除</el-button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-upload>
|
||
</div>
|
||
<div class="form-card">
|
||
<!-- 底部信息 -->
|
||
<div class="submit-wrap">
|
||
<ElButton
|
||
type="primary"
|
||
plain
|
||
size="large"
|
||
class="submit-btn"
|
||
@click="handleSubmit(0, undefined, '1')"
|
||
>保存</ElButton
|
||
>
|
||
<ElButton
|
||
type="primary"
|
||
size="large"
|
||
class="submit-btn"
|
||
@click="handleSubmit(1, undefined, '1')"
|
||
>提交</ElButton
|
||
>
|
||
</div>
|
||
</div>
|
||
<!-- 选择车型 弹框 -->
|
||
<ElDialog
|
||
v-model="vehicleDialog.visible"
|
||
title="选择车辆"
|
||
width="900px"
|
||
:close-on-click-modal="false"
|
||
top="40px"
|
||
>
|
||
<div
|
||
class="search-toolbar"
|
||
style="margin-bottom: 12px; display: flex; justify-content: flex-end; gap: 8px"
|
||
>
|
||
<el-input
|
||
v-model="vehicleDialog.search.keyword"
|
||
placeholder="请输入关键字"
|
||
clearable
|
||
style="width: 300px"
|
||
@keyup.enter="getVehicleList"
|
||
>
|
||
<template #suffix>
|
||
<el-icon class="clickable" @click="getVehicleList"><Search /></el-icon>
|
||
</template>
|
||
</el-input>
|
||
</div>
|
||
<ArtTable
|
||
:loading="vehicleDialog.loading"
|
||
:data="vehicleDialog.tableData"
|
||
:currentPage="vehicleDialog.pagination.currentPage"
|
||
:pageSize="vehicleDialog.pagination.pageSize"
|
||
:total="vehicleDialog.pagination.total"
|
||
@size-change="handleVehicleSizeChange"
|
||
@current-change="handleVehicleCurrentChange"
|
||
>
|
||
<template #default>
|
||
<ElTableColumn label="品牌" prop="brand_name" align="center" />
|
||
<ElTableColumn label="车系" prop="series_name" align="center" />
|
||
<ElTableColumn label="车型/配置" prop="model_name" min-width="160">
|
||
<template #default="scope">
|
||
<span class="primary">{{ scope.row.model_name }}</span>
|
||
</template>
|
||
</ElTableColumn>
|
||
<ElTableColumn label="年款" prop="model_year" width="80" align="center" />
|
||
<ElTableColumn label="指导价" prop="msrp" width="100" align="center" />
|
||
<ElTableColumn label="操作" width="100" align="center" fixed="right">
|
||
<template #default="scope">
|
||
<ElButton link type="primary" @click="chooseVehicle(scope.row)">选择</ElButton>
|
||
</template>
|
||
</ElTableColumn>
|
||
</template>
|
||
</ArtTable>
|
||
</ElDialog>
|
||
<!-- 选择客户 弹框 -->
|
||
<ElDialog
|
||
v-model="customerDialog.visible"
|
||
title="选择客户"
|
||
width="900px"
|
||
:close-on-click-modal="false"
|
||
top="40px"
|
||
>
|
||
<div
|
||
class="search-toolbar"
|
||
style="margin-bottom: 12px; display: flex; justify-content: flex-end; gap: 8px"
|
||
>
|
||
<el-input
|
||
v-model="customerDialog.search.keyword"
|
||
placeholder="请输入客户名称/电话"
|
||
clearable
|
||
style="width: 300px"
|
||
@keyup.enter="getCustomerList"
|
||
>
|
||
<template #suffix>
|
||
<el-icon class="clickable" @click="getCustomerList"><Search /></el-icon>
|
||
</template>
|
||
</el-input>
|
||
</div>
|
||
<ArtTable
|
||
:loading="customerDialog.loading"
|
||
:data="customerDialog.tableData"
|
||
:currentPage="customerDialog.pagination.currentPage"
|
||
:pageSize="customerDialog.pagination.pageSize"
|
||
:total="customerDialog.pagination.total"
|
||
@size-change="handleCustomerSizeChange"
|
||
@current-change="handleCustomerCurrentChange"
|
||
>
|
||
<template #default>
|
||
<ElTableColumn label="客户名称" prop="contacts" />
|
||
<ElTableColumn label="客户编码" prop="code" />
|
||
<ElTableColumn label="电话" prop="phone" />
|
||
<ElTableColumn label="公司" prop="company">
|
||
<template #default="scope">
|
||
<div>{{
|
||
scope.row.company == '' || scope.row.company == '0' ? ' --' : scope.row.company
|
||
}}</div>
|
||
</template>
|
||
</ElTableColumn>
|
||
<ElTableColumn label="操作" width="80" align="center" fixed="right">
|
||
<template #default="scope">
|
||
<ElButton link type="primary" @click="chooseCustomer(scope.row)">选择</ElButton>
|
||
</template>
|
||
</ElTableColumn>
|
||
</template>
|
||
</ArtTable>
|
||
</ElDialog>
|
||
</div>
|
||
</template>
|
||
|
||
<script setup lang="ts">
|
||
import { Search } from '@element-plus/icons-vue'
|
||
import { CrmService } from '@/api/crmApi'
|
||
import { useUserStore } from '@/store/modules/user'
|
||
import { useStockingForm } from '@/composables/useStockingForm'
|
||
import { onMounted } from 'vue'
|
||
|
||
defineOptions({ name: 'CrmStockingFinalAdd' }) // 定义组件名称,用于 KeepAlive 缓存控制
|
||
|
||
const route = useRoute()
|
||
const stocking_id = route.query.id
|
||
const { getUserInfo } = useUserStore()
|
||
// 使用公共的备货单表单逻辑
|
||
const {
|
||
// 数据
|
||
baseForm,
|
||
items,
|
||
paymentItems,
|
||
contractFile,
|
||
customerDialog,
|
||
vehicleDialog,
|
||
// 选项数据
|
||
channelOptions,
|
||
countryOptions,
|
||
modificationOptions,
|
||
currencyOptions,
|
||
accountOptions,
|
||
portOptions,
|
||
portOptionsall,
|
||
wcolorOptions,
|
||
ncolorOptions,
|
||
transportOptions,
|
||
trade_termsOptions,
|
||
// 上传相关
|
||
actionImageUplode,
|
||
uploadHeaders,
|
||
// 方法
|
||
initializeForm,
|
||
populateFromDetail,
|
||
handleSubmit,
|
||
// 合同文件方法
|
||
isImageFile,
|
||
beforeContractUpload,
|
||
handleContractUpload,
|
||
removeContractFile,
|
||
// // 订单项方法
|
||
// copyRow,
|
||
// addRowAfter,
|
||
// removeRow,
|
||
// // 收款项方法
|
||
// addPaymentItem,
|
||
// removePaymentItem,
|
||
// 客户选择方法
|
||
openCustomerDialog,
|
||
getCustomerList,
|
||
handleCustomerSizeChange,
|
||
handleCustomerCurrentChange,
|
||
chooseCustomer,
|
||
// 车辆选择方法
|
||
openVehicleDialog,
|
||
getVehicleList,
|
||
handleVehicleSizeChange,
|
||
handleVehicleCurrentChange,
|
||
chooseVehicle
|
||
} = useStockingForm(true, stocking_id as string) // isFinal = true, stocking_id
|
||
|
||
// 获取详情数据
|
||
const getdetilfn = async () => {
|
||
const res = await CrmService.getStockDetail({ id: stocking_id })
|
||
populateFromDetail(res)
|
||
}
|
||
|
||
// 初始化表单
|
||
onMounted(async () => {
|
||
await initializeForm()
|
||
// 如果有ID,加载详情数据
|
||
if (stocking_id) {
|
||
await getdetilfn()
|
||
}
|
||
})
|
||
</script>
|
||
|
||
<style scoped lang="scss">
|
||
:deep(.el-input-group--append .el-input-group__append .el-select .el-select__wrapper) {
|
||
padding: 4px;
|
||
}
|
||
:deep(.el-select__selected-item span) {
|
||
font-size: 12px;
|
||
}
|
||
.form-title {
|
||
font-weight: bold;
|
||
color: #222;
|
||
margin-bottom: 15px;
|
||
}
|
||
.form-title .title {
|
||
margin-left: 6px;
|
||
}
|
||
.stocking-add-page {
|
||
// background: var(--art-main-bg-color);
|
||
min-height: 100vh;
|
||
}
|
||
|
||
.header {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
padding: 16px 20px;
|
||
margin-bottom: 12px;
|
||
|
||
.title {
|
||
font-size: 18px;
|
||
font-weight: 600;
|
||
margin-bottom: 15px;
|
||
}
|
||
|
||
.subtitle {
|
||
color: var(--el-text-color-secondary);
|
||
}
|
||
}
|
||
|
||
.items-wrap {
|
||
margin-top: 6px;
|
||
}
|
||
|
||
.item-row {
|
||
padding: 8px 0;
|
||
}
|
||
|
||
.row-actions {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
justify-content: flex-end;
|
||
}
|
||
/* 利润为负数时,输入文字变红(兼容 Element Plus disabled 样式) */
|
||
:deep(.profit-negative .el-input__wrapper) {
|
||
color: #ff4d4f !important;
|
||
}
|
||
:deep(.profit-negative .el-input__inner) {
|
||
color: #ff4d4f !important;
|
||
-webkit-text-fill-color: #ff4d4f !important; /* 修复 WebKit 在 disabled 下的文本颜色 */
|
||
}
|
||
:deep(.profit-negative.is-disabled .el-input__wrapper) {
|
||
background-color: var(--el-fill-color-blank) !important;
|
||
box-shadow: 0 0 0 1px var(--el-input-border-color, #dcdfe6) inset !important;
|
||
}
|
||
.row-actions span {
|
||
font-size: 12px;
|
||
cursor: pointer;
|
||
}
|
||
.row-actions .primary {
|
||
color: var(--el-color-primary);
|
||
cursor: pointer;
|
||
}
|
||
.row-actions .danger {
|
||
color: var(--el-color-danger);
|
||
cursor: pointer;
|
||
}
|
||
|
||
.submit-wrap {
|
||
display: flex;
|
||
justify-content: space-around;
|
||
padding: 24px 0 8px;
|
||
width: 500px;
|
||
margin: auto;
|
||
}
|
||
|
||
.submit-btn {
|
||
width: 220px;
|
||
height: 44px;
|
||
font-size: 16px;
|
||
}
|
||
.payment-item {
|
||
margin-bottom: 12px;
|
||
}
|
||
.upload-box { width: 200px; }
|
||
.file-preview {
|
||
width: 100%;
|
||
height: 100%;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
|
||
.preview-image {
|
||
width: 100%;
|
||
height: 100%;
|
||
object-fit: cover;
|
||
border-radius: 4px;
|
||
}
|
||
|
||
.file-icon {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
width: 100%;
|
||
height: 100%;
|
||
background: #f5f7fa;
|
||
border-radius: 4px;
|
||
border: 1px dashed #d9d9d9;
|
||
}
|
||
|
||
.file-icon i {
|
||
font-size: 32px;
|
||
color: #409eff;
|
||
margin-bottom: 8px;
|
||
}
|
||
|
||
.file-name {
|
||
font-size: 12px;
|
||
color: #606266;
|
||
text-align: center;
|
||
word-break: break-all;
|
||
padding: 0 8px;
|
||
}
|
||
|
||
.file-actions {
|
||
position: absolute;
|
||
top: 4px;
|
||
right: 4px;
|
||
opacity: 0;
|
||
transition: opacity 0.3s;
|
||
}
|
||
|
||
.file-preview:hover .file-actions {
|
||
opacity: 1;
|
||
}
|
||
|
||
.file-preview {
|
||
position: relative;
|
||
}
|
||
:deep(.el-input__suffix .el-select .el-select__wrapper) {
|
||
box-shadow: none;
|
||
padding: 0px;
|
||
text-align: right;
|
||
}
|
||
.form-box {
|
||
border-bottom: 1px solid #F2F4F6;
|
||
margin-bottom: 25px;
|
||
padding: 8px 0px 25px;
|
||
}
|
||
</style>
|