diff --git a/ant-design-vue-jeecg/.env.development b/ant-design-vue-jeecg/.env.development
index fcf031c..6ca733e 100644
--- a/ant-design-vue-jeecg/.env.development
+++ b/ant-design-vue-jeecg/.env.development
@@ -1,5 +1,6 @@
NODE_ENV=development
-VUE_APP_API_BASE_URL=http://localhost:9001/jeecg-boot
+VUE_APP_API_BASE_URL=http://localhost:9001/tms
+# VUE_APP_API_BASE_URL=http://114.215.188.164:9001/jeecg-boot
VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
diff --git a/ant-design-vue-jeecg/.env.production b/ant-design-vue-jeecg/.env.production
index c03cf42..73be34f 100644
--- a/ant-design-vue-jeecg/.env.production
+++ b/ant-design-vue-jeecg/.env.production
@@ -1,4 +1,4 @@
NODE_ENV=production
-VUE_APP_API_BASE_URL=http://114.215.188.164:9001/jeecg-boot
+VUE_APP_API_BASE_URL=http://123.57.206.181:9001/tms
VUE_APP_CAS_BASE_URL=http://localhost:8888/cas
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
\ No newline at end of file
diff --git a/ant-design-vue-jeecg/src/config/router.config.js b/ant-design-vue-jeecg/src/config/router.config.js
index 0df4a6b..e31e1c9 100644
--- a/ant-design-vue-jeecg/src/config/router.config.js
+++ b/ant-design-vue-jeecg/src/config/router.config.js
@@ -382,5 +382,10 @@ export const constantRouterMap = [
path: '/takePhoneForm',
component: ()=>import('@/views/tms/outbound/vehicledemandcount/modules/TakePhoneForm'),
meta: {title: '提货移动版'}
+ },
+ {
+ path: '/takeDeliverPhoneForm',
+ component: ()=>import('@/views/tms/carinout/deliveryplan/modules/TakeDeliverPhoneForm'),
+ meta: {title: '送货移动版'}
}
]
diff --git a/ant-design-vue-jeecg/src/mixins/JeecgListMixin.js b/ant-design-vue-jeecg/src/mixins/JeecgListMixin.js
index 2a09ddf..7c829dc 100644
--- a/ant-design-vue-jeecg/src/mixins/JeecgListMixin.js
+++ b/ant-design-vue-jeecg/src/mixins/JeecgListMixin.js
@@ -8,10 +8,15 @@ import { deleteAction, getAction,downFile,getFileAccessHttpUrl } from '@/api/man
import Vue from 'vue'
import { ACCESS_TOKEN, TENANT_ID } from "@/store/mutation-types"
import store from '@/store'
+import QRCode from 'qrcode';
export const JeecgListMixin = {
data(){
return {
+ qrCodeUrl: 'http://123.57.206.181:9000/',
+ qrCodeForm: 'takePhoneForm',
+ qrCodeValue: 'http://192.168.158.19:3000/takePhoneForm', // 这里填写你想要生成二维码的内容
+ qrCodeImage: null, // 用于存储二维码图像数据
/* 查询条件-请不要在queryParam中声明非字符串值的属性 */
queryParam: {},
/* 数据源 */
@@ -52,12 +57,17 @@ export const JeecgListMixin = {
}
},
created() {
- if(!this.disableMixinCreated){
- console.log(' -- mixin created -- ')
- this.loadData();
- //初始化字典配置 在自己页面定义
- this.initDictConfig();
- }
+ if(!this.disableMixinCreated){
+ console.log(' -- mixin created -- ')
+ this.loadData();
+ //初始化字典配置 在自己页面定义
+ this.initDictConfig();
+ }
+ if (process.env.NODE_ENV == 'development') {
+ this.qrCodeValue = 'http://localhost:3000/'+ this.qrCodeForm
+ } else {
+ this.qrCodeValue = this.qrCodeUrl + this.qrCodeForm
+ }
},
computed: {
//token header
@@ -369,6 +379,41 @@ export const JeecgListMixin = {
let url = getFileAccessHttpUrl(text)
window.open(url);
},
+ // 生成二维码并准备下载
+ generateQRCodeToDataUrl(id) {
+ // 使用 qrcode 库的 toDataURL 方法生成二维码图像数据
+ let qrCodeValueId = this.qrCodeValue + '?id=' + id
+ QRCode.toDataURL(qrCodeValueId, (err, url) => {
+ if (err) console.error('生成二维码失败', err);
+ this.qrCodeImage = url;
+ });
+ },
+ // 下载二维码
+ handleDownloadQRCode(id,fileName) {
+ if (!this.qrCodeImage) {
+ // 如果二维码还未生成,则先生成
+ this.generateQRCodeToDataUrl(id);
+ // 等待二维码生成完成后进行下载
+ setTimeout(() => {
+ this.downloadQRCode(fileName);
+ }, 100); // 延迟100毫秒确保二维码已生成
+ } else {
+ // 如果二维码已经存在,则直接下载
+ this.downloadQRCode(fileName);
+ }
+ },
+ downloadQRCode(fileName){
+ const link = document.createElement('a');
+ link.href = this.qrCodeImage;
+ link.download = fileName; // 设置下载文件名,"提货.png"
+
+ // 触发点击事件以开始下载
+ document.body.appendChild(link);
+ link.click();
+
+ // 移除创建的元素
+ document.body.removeChild(link);
+ },
}
}
\ No newline at end of file
diff --git a/ant-design-vue-jeecg/src/permission.js b/ant-design-vue-jeecg/src/permission.js
index b638d58..18c2b29 100644
--- a/ant-design-vue-jeecg/src/permission.js
+++ b/ant-design-vue-jeecg/src/permission.js
@@ -9,7 +9,7 @@ import { generateIndexRouter, isOAuth2AppEnv } from '@/utils/util'
NProgress.configure({ showSpinner: false }) // NProgress Configuration
-const whiteList = ['/user/login', '/user/register', '/user/register-result','/user/alteration','/takePhoneForm'] // no redirect whitelist
+const whiteList = ['/user/login', '/user/register', '/user/register-result','/user/alteration','/takePhoneForm','/takeDeliverPhoneForm'] // no redirect whitelist
whiteList.push(OAUTH2_LOGIN_PAGE_PATH)
router.beforeEach((to, from, next) => {
diff --git a/ant-design-vue-jeecg/src/utils/validators.js b/ant-design-vue-jeecg/src/utils/validators.js
new file mode 100644
index 0000000..dc02086
--- /dev/null
+++ b/ant-design-vue-jeecg/src/utils/validators.js
@@ -0,0 +1,22 @@
+// 车牌验证
+export const validateCarNumber = (rule, value, callback) => {
+ const normalPattern = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼使领][A-Z][A-Z0-9]{5}$/;
+ const newEnergyPattern = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼使领][A-Z][DF][A-Z0-9]{5}$/;
+
+ if (!normalPattern.test(value) && !newEnergyPattern.test(value)) {
+ callback(new Error('请输入正确的车牌号'));
+ } else {
+ callback();
+ }
+};
+// 电话号码验证
+export const validateTel = (rule, value, callback) => {
+ const regMobile = /^1[3-9]\d{9}$/;
+ const regPhone = /^($\d{3,4}$|\d{3,4}-|\s)?\d{7,8}(-\d{3,5})?$/;
+
+ if (!regMobile.test(value) && !regPhone.test(value)) {
+ callback(new Error('请输入正确的手机号码或固定电话'));
+ } else {
+ callback();
+ }
+};
\ No newline at end of file
diff --git a/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/DeliveryPlanList.vue b/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/DeliveryPlanList.vue
index d9bc359..0d54a86 100644
--- a/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/DeliveryPlanList.vue
+++ b/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/DeliveryPlanList.vue
@@ -114,6 +114,12 @@
删除
+
+ 送货
+
+
+ 下载二维码
+
@@ -122,6 +128,7 @@
+
@@ -131,16 +138,19 @@
import { mixinDevice } from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import DeliveryPlanModal from './modules/DeliveryPlanModal'
+ import TakeModal from './modules/TakeModal.vue'
export default {
name: 'DeliveryPlanList',
mixins:[JeecgListMixin, mixinDevice],
components: {
- DeliveryPlanModal
+ DeliveryPlanModal,
+ TakeModal
},
data () {
return {
description: '送货计划管理页面',
+ qrCodeForm: 'takeDeliverPhoneForm',
// 表头
columns: [
{
@@ -253,6 +263,15 @@
},
},
methods: {
+ takeModalOk(){
+ this.$message.success("操作成功,请到车辆出入厂流程管理中查询数据");
+ },
+ // 送货
+ handleTake(record){
+ this.$refs.takeModal.edit(record);
+ this.$refs.takeModal.title = "送货";
+ this.$refs.takeModal.disableSubmit = false;
+ },
initDictConfig(){
},
getSuperFieldList(){
diff --git a/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/modules/DeliveryPlanForm.vue b/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/modules/DeliveryPlanForm.vue
index f4000f4..fd1398d 100644
--- a/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/modules/DeliveryPlanForm.vue
+++ b/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/modules/DeliveryPlanForm.vue
@@ -23,22 +23,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -55,11 +39,27 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -100,7 +118,8 @@
data () {
return {
model:{
- },
+ },
+ poList: [],
labelCol: {
xs: { span: 24 },
sm: { span: 7 },
@@ -115,7 +134,8 @@
url: {
add: "/deliveryplan/deliveryPlan/add",
edit: "/deliveryplan/deliveryPlan/edit",
- queryById: "/deliveryplan/deliveryPlan/queryById"
+ queryById: "/deliveryplan/deliveryPlan/queryById",
+ getByPo: "/deliveryplan/deliveryPlan/getByPo"
}
}
},
@@ -127,6 +147,10 @@
created () {
//备份model原始值
this.modelDefault = JSON.parse(JSON.stringify(this.model));
+ const userInfo = JSON.parse(localStorage.getItem('pro__Login_Userinfo')).value
+ this.modelDefault.artName = userInfo.realname
+ this.modelDefault.artTel = userInfo.phone
+ this.modelDefault.artEmail = userInfo.email
},
methods: {
add () {
@@ -135,6 +159,7 @@
edit (record) {
this.model = Object.assign({}, record);
this.visible = true;
+ this.getByPo();
},
submitForm () {
const that = this;
@@ -151,6 +176,7 @@
httpurl+=this.url.edit;
method = 'put';
}
+ this.model.deliveryPlanDetailList = this.poList;
httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
@@ -165,6 +191,13 @@
})
},
+ getByPo(){
+ getAction(this.url.getByPo,{po: this.model.ffectivePo}).then(res => {
+ if(res.success){
+ this.poList = res.result;
+ }
+ })
+ }
}
}
\ No newline at end of file
diff --git a/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/modules/TakeDeliverPhoneForm.vue b/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/modules/TakeDeliverPhoneForm.vue
new file mode 100644
index 0000000..5c8d150
--- /dev/null
+++ b/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/modules/TakeDeliverPhoneForm.vue
@@ -0,0 +1,156 @@
+
+
+
送货
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确定
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/modules/TakeForm.vue b/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/modules/TakeForm.vue
new file mode 100644
index 0000000..0c1b873
--- /dev/null
+++ b/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/modules/TakeForm.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/modules/TakeModal.vue b/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/modules/TakeModal.vue
new file mode 100644
index 0000000..fb5543b
--- /dev/null
+++ b/ant-design-vue-jeecg/src/views/tms/carinout/deliveryplan/modules/TakeModal.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ant-design-vue-jeecg/src/views/tms/carinout/vehicleinout/VehicleInOutList.vue b/ant-design-vue-jeecg/src/views/tms/carinout/vehicleinout/VehicleInOutList.vue
index 62bea6c..0a72f42 100644
--- a/ant-design-vue-jeecg/src/views/tms/carinout/vehicleinout/VehicleInOutList.vue
+++ b/ant-design-vue-jeecg/src/views/tms/carinout/vehicleinout/VehicleInOutList.vue
@@ -135,24 +135,24 @@
删除
-
+
handleConfirm(record.id, '2')">
对接人确认
- handleConfirm(record.id, '3')">
- 审核入库
+ handleConfirm(record.id, '3')">
+ 入厂审核
- handleConfirm(record.id, '4')">
- 审核出厂
+ handleConfirm(record.id, '4')">
+ 出厂审核
diff --git a/ant-design-vue-jeecg/src/views/tms/outbound/deliverydemand/modules/DeliveryDemandForm.vue b/ant-design-vue-jeecg/src/views/tms/outbound/deliverydemand/modules/DeliveryDemandForm.vue
index c34f1b7..5a526f5 100644
--- a/ant-design-vue-jeecg/src/views/tms/outbound/deliverydemand/modules/DeliveryDemandForm.vue
+++ b/ant-design-vue-jeecg/src/views/tms/outbound/deliverydemand/modules/DeliveryDemandForm.vue
@@ -54,7 +54,12 @@
-
+
+
+
+ {{item}}
+
@@ -103,6 +108,7 @@ import { min } from 'xe-utils/methods'
pickUpHubList:[],
pnSpecList:[],
pnList:[],
+ invoiceList:[],
model:{
},
labelCol: {
@@ -130,7 +136,8 @@ import { min } from 'xe-utils/methods'
queryById: "/deliverydemand/deliveryDemand/queryById",
getPalletsNum: "/deliverydemand/deliveryDemand/getPalletsNum",
getCity: "/logisticsroute/logisticsRoute/getCity",
- getPnSpecList: "/vehicleproduct/tmsVehicleProduct/getPnSpecList"
+ getPnSpecList: "/vehicleproduct/tmsVehicleProduct/getPnSpecList",
+ getShip: "/deliverydemand/deliveryDemand/getShip"
}
}
},
@@ -144,6 +151,7 @@ import { min } from 'xe-utils/methods'
this.modelDefault = JSON.parse(JSON.stringify(this.model));
this.getCity();
this.getPnSpecList();
+ this.getShip();
},
methods: {
changeGetpalletsNum() {
@@ -229,6 +237,13 @@ import { min } from 'xe-utils/methods'
pnChange(val){
this.pnList = this.pnSpecList.filter(x => x.includes(val));
},
+ getShip(){
+ getAction(this.url.getShip).then(res => {
+ if (res.success) {
+ this.invoiceList = res.result
+ }
+ })
+ }
}
}
\ No newline at end of file
diff --git a/ant-design-vue-jeecg/src/views/tms/outbound/vehicledemandcount/VehicleDemandCountList.vue b/ant-design-vue-jeecg/src/views/tms/outbound/vehicledemandcount/VehicleDemandCountList.vue
index e60b29e..4f1e331 100644
--- a/ant-design-vue-jeecg/src/views/tms/outbound/vehicledemandcount/VehicleDemandCountList.vue
+++ b/ant-design-vue-jeecg/src/views/tms/outbound/vehicledemandcount/VehicleDemandCountList.vue
@@ -133,7 +133,7 @@
提货
- 下载二维码
+ 下载二维码
@@ -153,7 +153,6 @@
import { mixinDevice } from '@/utils/mixin'
import { getAction,deleteAction } from '@/api/manage'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
- import QRCode from 'qrcode';
import VehicleDemandCountModal from './modules/VehicleDemandCountModal'
import TakeModal from './modules/TakeModal.vue'
@@ -168,8 +167,6 @@
return {
description: '用车需求计算管理页面',
totalPallets: 0, // 总费用
- qrCodeValue: 'http://192.168.158.19:3000/takePhoneForm', // 这里填写你想要生成二维码的内容
- qrCodeImage: null, // 用于存储二维码图像数据
// 表头
columns: [
{
@@ -265,11 +262,6 @@
}
},
created() {
- if (process.env.NODE_ENV == 'development') {
- this.qrCodeValue = 'http://localhost:3000/takePhoneForm'
- } else {
- this.qrCodeValue = 'http://114.215.188.164:9000/takePhoneForm'
- }
this.getSuperFieldList();
},
computed: {
@@ -339,41 +331,6 @@
loadData(){},
initDictConfig(){
},
- // 生成二维码并准备下载
- generateQRCodeToDataUrl(id) {
- // 使用 qrcode 库的 toDataURL 方法生成二维码图像数据
- let qrCodeValueId = this.qrCodeValue + '?id=' + id
- QRCode.toDataURL(qrCodeValueId, (err, url) => {
- if (err) console.error('生成二维码失败', err);
- this.qrCodeImage = url;
- });
- },
- // 下载二维码
- handleDownloadQRCode(id) {
- if (!this.qrCodeImage) {
- // 如果二维码还未生成,则先生成
- this.generateQRCodeToDataUrl(id);
- // 等待二维码生成完成后进行下载
- setTimeout(() => {
- this.downloadQRCode();
- }, 100); // 延迟100毫秒确保二维码已生成
- } else {
- // 如果二维码已经存在,则直接下载
- this.downloadQRCode();
- }
- },
- downloadQRCode(){
- const link = document.createElement('a');
- link.href = this.qrCodeImage;
- link.download = '提货.png'; // 设置下载文件名
-
- // 触发点击事件以开始下载
- document.body.appendChild(link);
- link.click();
-
- // 移除创建的元素
- document.body.removeChild(link);
- },
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'string',value:'vdNo',text:'用车需求编号'})
diff --git a/ant-design-vue-jeecg/src/views/tms/outbound/vehicledemandcount/modules/TakeForm.vue b/ant-design-vue-jeecg/src/views/tms/outbound/vehicledemandcount/modules/TakeForm.vue
index 999a31b..76ae4a7 100644
--- a/ant-design-vue-jeecg/src/views/tms/outbound/vehicledemandcount/modules/TakeForm.vue
+++ b/ant-design-vue-jeecg/src/views/tms/outbound/vehicledemandcount/modules/TakeForm.vue
@@ -132,7 +132,6 @@
carNum :[{required: true, message: '请输入车牌号!'}],
logistics :[{required: true, message: '请输入物流公司!'}],
driverName :[{required: true, message: '请输入司机姓名!'}],
- driverIdCard :[{required: true, message: '请输入身份证!'}],
driverTel :[{required: true, message: '请输入电话!'}],
etaTime :[{required: true, message: '请选择时间!'}],