From 68b27795ae929f5300fc6fb301b31aada74a2e2f Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期二, 10 三月 2026 15:26:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/yagwly_fa_master' into yagwly_fa_master
---
tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchOrder.java | 3
ui/admin-ui3/src/hooks/usePagePlus.ts | 285 ++--
ui/admin-ui3/src/views/tms/dispatchFeeSummaryViLog/index.vue | 105 +
tms/src/main/resources/mapper/tms/TmsDispatchFeeSummaryViLogMapper.xml | 113 +
admin/src/main/resources/application-custom.yml | 8
tms/src/main/java/com/ruoyi/tms/service/ITmsDispatchFeeSummaryViLogService.java | 102 +
tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchFeeSummaryViLogServiceImpl.java | 181 +++
tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderImportLogServiceImpl.java | 116 +
tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchFeeSummaryVi.java | 2
tms/src/main/java/com/ruoyi/tms/service/impl/TmsFinanceDetailServiceImpl.java | 24
tms/src/main/resources/mapper/tms/TmsDispatchOrderImportLogMapper.xml | 101 +
ui/admin-ui3/src/api/tms/tmsDispatchOrder.ts | 14
ui/admin-ui3/src/views/tms/tmsDispatchFeeSummary/index.vue | 410 +++---
tms/src/main/java/com/ruoyi/tms/mapper/TmsDispatchFeeSummaryViLogMapper.java | 87 +
ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue | 1416 ++++++++++++----------
tms/src/main/java/com/ruoyi/tms/controller/TmsDispatchOrderImportLogController.java | 103 +
tms/src/main/resources/mapper/tms/TmsDispatchOrderMapper.xml | 2
tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderServiceImpl.java | 29
tms/src/main/java/com/ruoyi/tms/controller/TmsDispatchFeeSummaryViController.java | 11
tms/src/main/java/com/ruoyi/tms/service/ITmsFinanceDetailService.java | 4
ui/admin-ui3/src/api/tms/tmsDispatchFeeSummary.ts | 10
tms/src/main/java/com/ruoyi/tms/mapper/TmsDispatchOrderImportLogMapper.java | 62 +
tms/src/main/java/com/ruoyi/tms/controller/TmsDispatchFeeSummaryViLogController.java | 108 +
ui/admin-ui3/src/layout/components/AppMain.vue | 3
ui/admin-ui3/src/store/modules/user.ts | 2
tms/src/main/java/com/ruoyi/tms/controller/TmsFinanceDetailController.java | 9
tms/src/main/java/com/ruoyi/tms/service/ITmsDispatchFeeSummaryViService.java | 1
tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchFeeSummaryViLog.java | 48
ui/admin-ui3/src/api/tms/tmsFinanceDetail.ts | 1
ui/admin-ui3/src/api/tms/dispatchFeeSummaryViLog.ts | 67 +
tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchOrderImportLog.java | 74 +
tms/src/main/java/com/ruoyi/tms/service/ITmsDispatchOrderImportLogService.java | 69 +
tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchFeeSummaryViServiceImpl.java | 28
33 files changed, 2,595 insertions(+), 1,003 deletions(-)
diff --git a/admin/src/main/resources/application-custom.yml b/admin/src/main/resources/application-custom.yml
index 88d6ad6..fc593a6 100644
--- a/admin/src/main/resources/application-custom.yml
+++ b/admin/src/main/resources/application-custom.yml
@@ -32,11 +32,11 @@
#鏁版嵁搴� 鐩稿叧閰嶇疆
datasource:
master: #涓绘暟鎹簱
- ip: localhost # IP
- port: 3306 #绔彛
- database: ygawly_cwgl_test #鏁版嵁搴撳悕
+ ip: 61.143.42.70 # IP
+ port: 7006 #绔彛
+ database: ygawly_cwgl_test2 #鏁版嵁搴撳悕
username: root #鐢ㄦ埛鍚�
- password: 123456 #瀵嗙爜
+ password: ms@123 #瀵嗙爜
slave: #浠庢暟鎹簱
enabled: false #鏄惁寮�鍚粠鏁版嵁搴� 鍏抽棴鏃朵互涓嬩俊鎭彲浠ヤ笉鐢ㄩ厤缃�
ip: # IP
diff --git a/tms/src/main/java/com/ruoyi/tms/controller/TmsDispatchFeeSummaryViController.java b/tms/src/main/java/com/ruoyi/tms/controller/TmsDispatchFeeSummaryViController.java
index 9b2d200..0122aa5 100644
--- a/tms/src/main/java/com/ruoyi/tms/controller/TmsDispatchFeeSummaryViController.java
+++ b/tms/src/main/java/com/ruoyi/tms/controller/TmsDispatchFeeSummaryViController.java
@@ -12,9 +12,7 @@
import com.ruoyi.tms.domain.TmsDispatchOrder;
import com.ruoyi.tms.service.ITmsDispatchFeeSummaryViService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
@RestController
@@ -41,5 +39,12 @@
return AjaxResult.success("瀵煎嚭璇锋眰鎴愬姛锛岃绋嶅悗鐐瑰嚮涓嬭浇...!");
}
+ @PutMapping("/note")
+ public AjaxResult edit(@RequestBody TmsDispatchFeeSummaryVi bo)
+ {
+
+ return toAjax(tmsDispatchFeeSummaryViService.note(bo));
+ }
+
}
diff --git a/tms/src/main/java/com/ruoyi/tms/controller/TmsDispatchFeeSummaryViLogController.java b/tms/src/main/java/com/ruoyi/tms/controller/TmsDispatchFeeSummaryViLogController.java
new file mode 100644
index 0000000..357ab86
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/controller/TmsDispatchFeeSummaryViLogController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.tms.controller;
+
+import java.util.List;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.utils.file.DownloadExportUtil;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.tms.domain.TmsDispatchFeeSummaryViLog;
+import com.ruoyi.tms.service.ITmsDispatchFeeSummaryViLogService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 娲捐溅鍙拌处澶囨敞璁板綍Controller
+ *
+ * @author ruoyi
+ * @date 2026-03-06
+ */
+@RestController
+@RequestMapping("/tms/dispatchFeeSummaryViLog")
+public class TmsDispatchFeeSummaryViLogController extends BaseController
+{
+ @Autowired
+ private ITmsDispatchFeeSummaryViLogService tmsDispatchFeeSummaryViLogService;
+
+
+
+ /**
+ * 鏌ヨ娲捐溅鍙拌处澶囨敞璁板綍鍒楄〃
+ */
+ @PreAuthorize("@ss.hasPermi('tms:dispatchFeeSummaryViLog:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog)
+ {
+ startPage();
+ List<TmsDispatchFeeSummaryViLog> list = tmsDispatchFeeSummaryViLogService.selectTmsDispatchFeeSummaryViLogList(tmsDispatchFeeSummaryViLog);
+ return getDataTable(list);
+ }
+
+ /**
+ * 瀵煎嚭娲捐溅鍙拌处澶囨敞璁板綍鍒楄〃
+ * @param tmsDispatchFeeSummaryViLog 鏌ヨ鏉′欢瀵硅薄
+ */
+ @PreAuthorize("@ss.hasPermi('tms:dispatchFeeSummaryViLog:export')")
+ @Log(title = "娲捐溅鍙拌处澶囨敞璁板綍", businessType = BusinessType.EXPORT)
+ @GetMapping("/export")
+ public AjaxResult export(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog,String exportKey)
+ {
+ tmsDispatchFeeSummaryViLogService.export(tmsDispatchFeeSummaryViLog,exportKey);
+ return AjaxResult.success("瀵煎嚭璇锋眰鎴愬姛锛岃绋嶅悗鐐瑰嚮涓嬭浇...!");
+ }
+
+
+
+ /**
+ * 鑾峰彇娲捐溅鍙拌处澶囨敞璁板綍璇︾粏淇℃伅
+ */
+ @PreAuthorize("@ss.hasPermi('tms:dispatchFeeSummaryViLog:query')")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Integer id)
+ {
+ return AjaxResult.success(tmsDispatchFeeSummaryViLogService.selectTmsDispatchFeeSummaryViLogById(id));
+ }
+
+ /**
+ * 鏂板娲捐溅鍙拌处澶囨敞璁板綍
+ */
+ @PreAuthorize("@ss.hasPermi('tms:dispatchFeeSummaryViLog:add')")
+ @Log(title = "娲捐溅鍙拌处澶囨敞璁板綍", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog)
+ {
+ return toAjax(tmsDispatchFeeSummaryViLogService.insertTmsDispatchFeeSummaryViLog(tmsDispatchFeeSummaryViLog));
+ }
+
+ /**
+ * 淇敼娲捐溅鍙拌处澶囨敞璁板綍
+ */
+ @PreAuthorize("@ss.hasPermi('tms:dispatchFeeSummaryViLog:edit')")
+ @Log(title = "娲捐溅鍙拌处澶囨敞璁板綍", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog)
+ {
+ return toAjax(tmsDispatchFeeSummaryViLogService.updateTmsDispatchFeeSummaryViLog(tmsDispatchFeeSummaryViLog));
+ }
+
+ /**
+ * 鍒犻櫎娲捐溅鍙拌处澶囨敞璁板綍
+ */
+ @PreAuthorize("@ss.hasPermi('tms:dispatchFeeSummaryViLog:remove')")
+ @Log(title = "娲捐溅鍙拌处澶囨敞璁板綍", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Integer[] ids)
+ {
+ return toAjax(tmsDispatchFeeSummaryViLogService.deleteTmsDispatchFeeSummaryViLogByIds(ids));
+ }
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/controller/TmsDispatchOrderImportLogController.java b/tms/src/main/java/com/ruoyi/tms/controller/TmsDispatchOrderImportLogController.java
new file mode 100644
index 0000000..c32ef77
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/controller/TmsDispatchOrderImportLogController.java
@@ -0,0 +1,103 @@
+package com.ruoyi.tms.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.tms.domain.TmsDispatchOrderImportLog;
+import com.ruoyi.tms.service.ITmsDispatchOrderImportLogService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 璋冨害鍗曞鍏ユ棩蹇桟ontroller
+ *
+ * @author ruoyi
+ * @date 2026-03-06
+ */
+@RestController
+@RequestMapping("/tms/tmsDispatchOrderImportLog")
+public class TmsDispatchOrderImportLogController extends BaseController
+{
+ @Autowired
+ private ITmsDispatchOrderImportLogService tmsDispatchOrderImportLogService;
+
+ /**
+ * 鏌ヨ璋冨害鍗曞鍏ユ棩蹇楀垪琛�
+ */
+ @PreAuthorize("@ss.hasPermi('tms:tmsDispatchOrderImportLog:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(TmsDispatchOrderImportLog tmsDispatchOrderImportLog)
+ {
+ startPage();
+ List<TmsDispatchOrderImportLog> list = tmsDispatchOrderImportLogService.selectTmsDispatchOrderImportLogList(tmsDispatchOrderImportLog);
+ return getDataTable(list);
+ }
+
+ /**
+ * 瀵煎嚭璋冨害鍗曞鍏ユ棩蹇楀垪琛�
+ */
+ @PreAuthorize("@ss.hasPermi('tms:tmsDispatchOrderImportLog:export')")
+ @Log(title = "璋冨害鍗曞鍏ユ棩蹇�", businessType = BusinessType.EXPORT)
+ @GetMapping("/export")
+ public AjaxResult export(TmsDispatchOrderImportLog tmsDispatchOrderImportLog, String exportKey)
+ {
+ tmsDispatchOrderImportLogService.export(tmsDispatchOrderImportLog, exportKey);
+ return AjaxResult.success("瀵煎嚭璇锋眰鎴愬姛锛岃绋嶅悗鐐瑰嚮涓嬭浇...!");
+ }
+
+ /**
+ * 鑾峰彇璋冨害鍗曞鍏ユ棩蹇楄缁嗕俊鎭�
+ */
+ @PreAuthorize("@ss.hasPermi('tms:tmsDispatchOrderImportLog:query')")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Integer id)
+ {
+ return success(tmsDispatchOrderImportLogService.selectTmsDispatchOrderImportLogById(id));
+ }
+
+ /**
+ * 鏂板璋冨害鍗曞鍏ユ棩蹇�
+ */
+ @PreAuthorize("@ss.hasPermi('tms:tmsDispatchOrderImportLog:add')")
+ @Log(title = "璋冨害鍗曞鍏ユ棩蹇�", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody TmsDispatchOrderImportLog tmsDispatchOrderImportLog)
+ {
+ return toAjax(tmsDispatchOrderImportLogService.insertTmsDispatchOrderImportLog(tmsDispatchOrderImportLog));
+ }
+
+ /**
+ * 淇敼璋冨害鍗曞鍏ユ棩蹇�
+ */
+ @PreAuthorize("@ss.hasPermi('tms:tmsDispatchOrderImportLog:edit')")
+ @Log(title = "璋冨害鍗曞鍏ユ棩蹇�", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody TmsDispatchOrderImportLog tmsDispatchOrderImportLog)
+ {
+ return toAjax(tmsDispatchOrderImportLogService.updateTmsDispatchOrderImportLog(tmsDispatchOrderImportLog));
+ }
+
+ /**
+ * 鍒犻櫎璋冨害鍗曞鍏ユ棩蹇�
+ */
+ @PreAuthorize("@ss.hasPermi('tms:tmsDispatchOrderImportLog:remove')")
+ @Log(title = "璋冨害鍗曞鍏ユ棩蹇�", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Integer[] ids)
+ {
+ return toAjax(tmsDispatchOrderImportLogService.deleteTmsDispatchOrderImportLogByIds(ids));
+ }
+}
\ No newline at end of file
diff --git a/tms/src/main/java/com/ruoyi/tms/controller/TmsFinanceDetailController.java b/tms/src/main/java/com/ruoyi/tms/controller/TmsFinanceDetailController.java
index 5eba95d..b46726e 100644
--- a/tms/src/main/java/com/ruoyi/tms/controller/TmsFinanceDetailController.java
+++ b/tms/src/main/java/com/ruoyi/tms/controller/TmsFinanceDetailController.java
@@ -110,6 +110,15 @@
}
}
+ @PreAuthorize("@ss.hasPermi('tms:tmsFinanceDetail:add')")
+ @Log(title = "璐圭敤鏄庣粏", businessType = BusinessType.INSERT)
+ @PostMapping("save2")
+ public AjaxResult save2(@RequestBody List<TmsFinanceDetail> tmsFinanceDetails)
+ {
+ return toAjax(tmsFinanceDetailService.saveTmsFinanceDetail2(tmsFinanceDetails));
+
+ }
+
/**
* 淇敼璐圭敤鏄庣粏
*/
diff --git a/tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchFeeSummaryVi.java b/tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchFeeSummaryVi.java
index 31da13f..0ee8666 100644
--- a/tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchFeeSummaryVi.java
+++ b/tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchFeeSummaryVi.java
@@ -200,7 +200,7 @@
@TableField(exist = false)
private BigDecimal grossProfitRadioHkd;
-
+ private String remark;
}
diff --git a/tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchFeeSummaryViLog.java b/tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchFeeSummaryViLog.java
new file mode 100644
index 0000000..698d41f
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchFeeSummaryViLog.java
@@ -0,0 +1,48 @@
+package com.ruoyi.tms.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.util.Date;
+import lombok.Data;
+/**
+ * 娲捐溅鍙拌处澶囨敞璁板綍瀵硅薄 tms_dispatch_fee_summary_vi_log
+ *
+ * @author ruoyi
+ * @date 2026-03-06
+ */
+@Data
+public class TmsDispatchFeeSummaryViLog{
+
+
+ /** */
+ @TableField("id")
+ private Integer id;
+
+
+ /** 澶磇d */
+ @Excel(name = "澶磇d")
+
+ @TableField("head_id")
+ private Integer headId;
+
+
+ /** 鍒涘缓鑰� */
+ @TableField("create_by")
+ private String createBy;
+
+
+ /** 鍒涘缓鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField("create_time")
+ private Date createTime;
+
+
+ /** 澶囨敞 */
+ @Excel(name = "澶囨敞")
+
+ @TableField("notes")
+ private String notes;
+
+
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchOrder.java b/tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchOrder.java
index b30c69e..40145c4 100644
--- a/tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchOrder.java
+++ b/tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchOrder.java
@@ -622,6 +622,7 @@
@TableField("seamless_supplier_name")
private String seamlessSupplierName;
-
+ @TableField("notes")
+ private String notes;
}
\ No newline at end of file
diff --git a/tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchOrderImportLog.java b/tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchOrderImportLog.java
new file mode 100644
index 0000000..9a320f3
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchOrderImportLog.java
@@ -0,0 +1,74 @@
+package com.ruoyi.tms.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+/**
+ * 璋冨害鍗曞鍏ユ棩蹇楀璞� tms_dispatch_order_import_log
+ *
+ * @author ruoyi
+ * @date 2026-03-06
+ */
+@Data
+public class TmsDispatchOrderImportLog {
+
+ /** 涓婚敭 */
+ @TableField("id")
+ private Integer id;
+
+ /** 瀵煎叆鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "瀵煎叆鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @TableField("import_time")
+ private Date importTime;
+
+ /** 瀵煎叆鏂囦欢鍚嶇О */
+ @Excel(name = "瀵煎叆鏂囦欢鍚嶇О")
+ @TableField("file_name")
+ private String fileName;
+
+ /** 鎿嶄綔浜� */
+ @Excel(name = "鎿嶄綔浜�")
+ @TableField("operator")
+ private String operator;
+
+ /** 鎴愬姛琛屾暟 */
+ @Excel(name = "鎴愬姛琛屾暟")
+ @TableField("success_count")
+ private Integer successCount;
+
+ /** 澶辫触琛屾暟 */
+ @Excel(name = "澶辫触琛屾暟")
+ @TableField("failure_count")
+ private Integer failureCount;
+
+ /** 澶辫触璇存槑 */
+ @Excel(name = "澶辫触璇存槑")
+ @TableField("failure_description")
+ private String failureDescription;
+
+ /** 鍒涘缓鑰� */
+ @TableField("create_by")
+ private String createBy;
+
+ /** 鍒涘缓鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField("create_time")
+ private Date createTime;
+
+ /** 鏇存柊鑰� */
+ @TableField("update_by")
+ private String updateBy;
+
+ /** 鏇存柊鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField("update_time")
+ private Date updateTime;
+
+ /** 澶囨敞 */
+ @TableField("remark")
+ private String remark;
+}
\ No newline at end of file
diff --git a/tms/src/main/java/com/ruoyi/tms/mapper/TmsDispatchFeeSummaryViLogMapper.java b/tms/src/main/java/com/ruoyi/tms/mapper/TmsDispatchFeeSummaryViLogMapper.java
new file mode 100644
index 0000000..b20f8ad
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/mapper/TmsDispatchFeeSummaryViLogMapper.java
@@ -0,0 +1,87 @@
+package com.ruoyi.tms.mapper;
+
+import java.util.List;
+import com.ruoyi.tms.domain.TmsDispatchFeeSummaryViLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 娲捐溅鍙拌处澶囨敞璁板綍Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2026-03-06
+ */
+public interface TmsDispatchFeeSummaryViLogMapper extends BaseMapper<TmsDispatchFeeSummaryViLog>
+{
+ /**
+ * 鏌ヨ娲捐溅鍙拌处澶囨敞璁板綍
+ *
+ * @param id 娲捐溅鍙拌处澶囨敞璁板綍ID
+ * @return 娲捐溅鍙拌处澶囨敞璁板綍
+ */
+ public TmsDispatchFeeSummaryViLog selectTmsDispatchFeeSummaryViLogById(Integer id);
+
+ /**
+ * 鏌ヨ娲捐溅鍙拌处澶囨敞璁板綍 璁板綍鏁�
+ *
+ * @param tmsDispatchFeeSummaryViLog 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 娲捐溅鍙拌处澶囨敞璁板綍闆嗗悎
+ */
+ public int selectTmsDispatchFeeSummaryViLogCount(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog);
+
+ /**
+ * 鏌ヨ娲捐溅鍙拌处澶囨敞璁板綍鍒楄〃
+ *
+ * @param tmsDispatchFeeSummaryViLog 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 娲捐溅鍙拌处澶囨敞璁板綍闆嗗悎
+ */
+ public List<TmsDispatchFeeSummaryViLog> selectTmsDispatchFeeSummaryViLogList(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog);
+
+ /**
+ * 鏂板娲捐溅鍙拌处澶囨敞璁板綍
+ *
+ * @param tmsDispatchFeeSummaryViLog 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 缁撴灉
+ */
+ public int insertTmsDispatchFeeSummaryViLog(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog);
+
+ /**
+ * 鏂板娲捐溅鍙拌处澶囨敞璁板綍[鎵归噺]
+ *
+ * @param tmsDispatchFeeSummaryViLogs 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 缁撴灉
+ */
+ public int insertTmsDispatchFeeSummaryViLogBatch(List<TmsDispatchFeeSummaryViLog> tmsDispatchFeeSummaryViLogs);
+
+ /**
+ * 淇敼娲捐溅鍙拌处澶囨敞璁板綍
+ *
+ * @param tmsDispatchFeeSummaryViLog 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 缁撴灉
+ */
+ public int updateTmsDispatchFeeSummaryViLog(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog);
+
+ /**
+ * 淇敼娲捐溅鍙拌处澶囨敞璁板綍[鎵归噺]
+ *
+ * @param tmsDispatchFeeSummaryViLogs 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 缁撴灉
+ */
+ public int updateTmsDispatchFeeSummaryViLogBatch(List<TmsDispatchFeeSummaryViLog> tmsDispatchFeeSummaryViLogs);
+
+ /**
+ * 鍒犻櫎娲捐溅鍙拌处澶囨敞璁板綍
+ *
+ * @param id 娲捐溅鍙拌处澶囨敞璁板綍ID
+ * @return 缁撴灉
+ */
+ public int deleteTmsDispatchFeeSummaryViLogById(Integer id);
+
+ /**
+ * 鎵归噺鍒犻櫎娲捐溅鍙拌处澶囨敞璁板綍
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteTmsDispatchFeeSummaryViLogByIds(Integer[] ids);
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/mapper/TmsDispatchOrderImportLogMapper.java b/tms/src/main/java/com/ruoyi/tms/mapper/TmsDispatchOrderImportLogMapper.java
new file mode 100644
index 0000000..4d538fe
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/mapper/TmsDispatchOrderImportLogMapper.java
@@ -0,0 +1,62 @@
+package com.ruoyi.tms.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.tms.domain.TmsDispatchOrderImportLog;
+
+/**
+ * 璋冨害鍗曞鍏ユ棩蹇桵apper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2026-03-06
+ */
+public interface TmsDispatchOrderImportLogMapper extends BaseMapper<TmsDispatchOrderImportLog> {
+ /**
+ * 鏌ヨ璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param id 璋冨害鍗曞鍏ユ棩蹇桰D
+ * @return 璋冨害鍗曞鍏ユ棩蹇�
+ */
+ public TmsDispatchOrderImportLog selectTmsDispatchOrderImportLogById(Integer id);
+
+ /**
+ * 鏌ヨ璋冨害鍗曞鍏ユ棩蹇楀垪琛�
+ *
+ * @param tmsDispatchOrderImportLog 璋冨害鍗曞鍏ユ棩蹇�
+ * @return 璋冨害鍗曞鍏ユ棩蹇楅泦鍚�
+ */
+ public List<TmsDispatchOrderImportLog> selectTmsDispatchOrderImportLogList(TmsDispatchOrderImportLog tmsDispatchOrderImportLog);
+
+ /**
+ * 鏂板璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param tmsDispatchOrderImportLog 璋冨害鍗曞鍏ユ棩蹇�
+ * @return 缁撴灉
+ */
+ public int insertTmsDispatchOrderImportLog(TmsDispatchOrderImportLog tmsDispatchOrderImportLog);
+
+ /**
+ * 淇敼璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param tmsDispatchOrderImportLog 璋冨害鍗曞鍏ユ棩蹇�
+ * @return 缁撴灉
+ */
+ public int updateTmsDispatchOrderImportLog(TmsDispatchOrderImportLog tmsDispatchOrderImportLog);
+
+ /**
+ * 鍒犻櫎璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param id 璋冨害鍗曞鍏ユ棩蹇桰D
+ * @return 缁撴灉
+ */
+ public int deleteTmsDispatchOrderImportLogById(Integer id);
+
+ /**
+ * 鎵归噺鍒犻櫎璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteTmsDispatchOrderImportLogByIds(Integer[] ids);
+}
\ No newline at end of file
diff --git a/tms/src/main/java/com/ruoyi/tms/service/ITmsDispatchFeeSummaryViLogService.java b/tms/src/main/java/com/ruoyi/tms/service/ITmsDispatchFeeSummaryViLogService.java
new file mode 100644
index 0000000..bd5eba4
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/service/ITmsDispatchFeeSummaryViLogService.java
@@ -0,0 +1,102 @@
+package com.ruoyi.tms.service;
+
+import java.util.List;
+import com.ruoyi.tms.domain.TmsDispatchFeeSummaryViLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+/**
+ * 娲捐溅鍙拌处澶囨敞璁板綍Service鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2026-03-06
+ */
+public interface ITmsDispatchFeeSummaryViLogService extends IService<TmsDispatchFeeSummaryViLog>
+{
+ /**
+ * 鏌ヨ娲捐溅鍙拌处澶囨敞璁板綍
+ *
+ * @param id 娲捐溅鍙拌处澶囨敞璁板綍ID
+ * @return 娲捐溅鍙拌处澶囨敞璁板綍
+ */
+ public TmsDispatchFeeSummaryViLog selectTmsDispatchFeeSummaryViLogById(Integer id);
+
+ /**
+ * 鏌ヨ娲捐溅鍙拌处澶囨敞璁板綍 璁板綍鏁�
+ *
+ * @param tmsDispatchFeeSummaryViLog 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 娲捐溅鍙拌处澶囨敞璁板綍闆嗗悎
+ */
+ public int selectTmsDispatchFeeSummaryViLogCount(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog);
+
+ /**
+ * 鏌ヨ娲捐溅鍙拌处澶囨敞璁板綍鍒楄〃
+ *
+ * @param tmsDispatchFeeSummaryViLog 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 娲捐溅鍙拌处澶囨敞璁板綍闆嗗悎
+ */
+ public List<TmsDispatchFeeSummaryViLog> selectTmsDispatchFeeSummaryViLogList(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog);
+
+ /**
+ * 鏌ヨ娲捐溅鍙拌处澶囨敞璁板綍鍒楄〃 寮傛 瀵煎嚭
+ *
+ * @param tmsDispatchFeeSummaryViLog 娲捐溅鍙拌处澶囨敞璁板綍
+ * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+ * @return 娲捐溅鍙拌处澶囨敞璁板綍闆嗗悎
+ */
+ public void export(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog, String exportKey) ;
+
+
+ /**
+ * 鏂板娲捐溅鍙拌处澶囨敞璁板綍
+ *
+ * @param tmsDispatchFeeSummaryViLog 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 缁撴灉
+ */
+ public int insertTmsDispatchFeeSummaryViLog(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog);
+
+ /**
+ * 鏂板娲捐溅鍙拌处澶囨敞璁板綍[鎵归噺]
+ *
+ * @param tmsDispatchFeeSummaryViLogs 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 缁撴灉
+ */
+ public int insertTmsDispatchFeeSummaryViLogBatch(List<TmsDispatchFeeSummaryViLog> tmsDispatchFeeSummaryViLogs);
+
+ /**
+ * 淇敼娲捐溅鍙拌处澶囨敞璁板綍
+ *
+ * @param tmsDispatchFeeSummaryViLog 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 缁撴灉
+ */
+ public int updateTmsDispatchFeeSummaryViLog(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog);
+
+ /**
+ * 淇敼娲捐溅鍙拌处澶囨敞璁板綍[鎵归噺]
+ *
+ * @param tmsDispatchFeeSummaryViLogs 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 缁撴灉
+ */
+ public int updateTmsDispatchFeeSummaryViLogBatch(List<TmsDispatchFeeSummaryViLog> tmsDispatchFeeSummaryViLogs);
+ /**
+ * 鎵归噺鍒犻櫎娲捐溅鍙拌处澶囨敞璁板綍
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteTmsDispatchFeeSummaryViLogByIds(String ids);
+
+ /**
+ * 鎵归噺鍒犻櫎娲捐溅鍙拌处澶囨敞璁板綍
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteTmsDispatchFeeSummaryViLogByIds(Integer[] ids);
+
+ /**
+ * 鍒犻櫎娲捐溅鍙拌处澶囨敞璁板綍淇℃伅
+ *
+ * @param id 娲捐溅鍙拌处澶囨敞璁板綍ID
+ * @return 缁撴灉
+ */
+ public int deleteTmsDispatchFeeSummaryViLogById(Integer id);
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/service/ITmsDispatchFeeSummaryViService.java b/tms/src/main/java/com/ruoyi/tms/service/ITmsDispatchFeeSummaryViService.java
index 16f49be..909527e 100644
--- a/tms/src/main/java/com/ruoyi/tms/service/ITmsDispatchFeeSummaryViService.java
+++ b/tms/src/main/java/com/ruoyi/tms/service/ITmsDispatchFeeSummaryViService.java
@@ -11,4 +11,5 @@
public void export(TmsDispatchFeeSummaryVi vi, String exportKey) ;
+ int note(TmsDispatchFeeSummaryVi bo);
}
diff --git a/tms/src/main/java/com/ruoyi/tms/service/ITmsDispatchOrderImportLogService.java b/tms/src/main/java/com/ruoyi/tms/service/ITmsDispatchOrderImportLogService.java
new file mode 100644
index 0000000..3bad89b
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/service/ITmsDispatchOrderImportLogService.java
@@ -0,0 +1,69 @@
+package com.ruoyi.tms.service;
+
+import java.util.List;
+import com.ruoyi.tms.domain.TmsDispatchOrderImportLog;
+
+/**
+ * 璋冨害鍗曞鍏ユ棩蹇桽ervice鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2026-03-06
+ */
+public interface ITmsDispatchOrderImportLogService
+{
+ /**
+ * 鏌ヨ璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param id 璋冨害鍗曞鍏ユ棩蹇桰D
+ * @return 璋冨害鍗曞鍏ユ棩蹇�
+ */
+ public TmsDispatchOrderImportLog selectTmsDispatchOrderImportLogById(Integer id);
+
+ /**
+ * 鏌ヨ璋冨害鍗曞鍏ユ棩蹇楀垪琛�
+ *
+ * @param tmsDispatchOrderImportLog 璋冨害鍗曞鍏ユ棩蹇�
+ * @return 璋冨害鍗曞鍏ユ棩蹇楅泦鍚�
+ */
+ public List<TmsDispatchOrderImportLog> selectTmsDispatchOrderImportLogList(TmsDispatchOrderImportLog tmsDispatchOrderImportLog);
+
+ /**
+ * 鏂板璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param tmsDispatchOrderImportLog 璋冨害鍗曞鍏ユ棩蹇�
+ * @return 缁撴灉
+ */
+ public int insertTmsDispatchOrderImportLog(TmsDispatchOrderImportLog tmsDispatchOrderImportLog);
+
+ /**
+ * 淇敼璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param tmsDispatchOrderImportLog 璋冨害鍗曞鍏ユ棩蹇�
+ * @return 缁撴灉
+ */
+ public int updateTmsDispatchOrderImportLog(TmsDispatchOrderImportLog tmsDispatchOrderImportLog);
+
+ /**
+ * 鍒犻櫎璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param id 璋冨害鍗曞鍏ユ棩蹇桰D
+ * @return 缁撴灉
+ */
+ public int deleteTmsDispatchOrderImportLogById(Integer id);
+
+ /**
+ * 鎵归噺鍒犻櫎璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteTmsDispatchOrderImportLogByIds(Integer[] ids);
+
+ /**
+ * 瀵煎嚭璋冨害鍗曞鍏ユ棩蹇楀垪琛�
+ *
+ * @param tmsDispatchOrderImportLog 璋冨害鍗曞鍏ユ棩蹇�
+ * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+ */
+ public void export(TmsDispatchOrderImportLog tmsDispatchOrderImportLog, String exportKey);
+}
\ No newline at end of file
diff --git a/tms/src/main/java/com/ruoyi/tms/service/ITmsFinanceDetailService.java b/tms/src/main/java/com/ruoyi/tms/service/ITmsFinanceDetailService.java
index 5ff6398..9c58bb8 100644
--- a/tms/src/main/java/com/ruoyi/tms/service/ITmsFinanceDetailService.java
+++ b/tms/src/main/java/com/ruoyi/tms/service/ITmsFinanceDetailService.java
@@ -56,7 +56,7 @@
*/
public int insertTmsFinanceDetail(TmsFinanceDetail tmsFinanceDetail);
public int saveTmsFinanceDetail(TmsFinanceDetail tmsFinanceDetail);
-
+ int saveTmsFinanceDetail2(List<TmsFinanceDetail> tmsFinanceDetails);
/**
* 鏂板璐圭敤鏄庣粏[鎵归噺]
*
@@ -104,4 +104,6 @@
* @return 缁撴灉
*/
public int deleteTmsFinanceDetailById(Integer id);
+
+
}
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchFeeSummaryViLogServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchFeeSummaryViLogServiceImpl.java
new file mode 100644
index 0000000..87b2725
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchFeeSummaryViLogServiceImpl.java
@@ -0,0 +1,181 @@
+package com.ruoyi.tms.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import javax.annotation.Resource;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.stereotype.Service;
+import org.springframework.scheduling.annotation.Async;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import com.ruoyi.common.core.service.BaseService;
+
+import com.ruoyi.tms.mapper.TmsDispatchFeeSummaryViLogMapper;
+import com.ruoyi.tms.domain.TmsDispatchFeeSummaryViLog;
+import com.ruoyi.tms.service.ITmsDispatchFeeSummaryViLogService;
+import com.ruoyi.common.core.text.Convert;
+
+/**
+ * 娲捐溅鍙拌处澶囨敞璁板綍Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2026-03-06
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class TmsDispatchFeeSummaryViLogServiceImpl extends BaseService<TmsDispatchFeeSummaryViLogMapper, TmsDispatchFeeSummaryViLog> implements ITmsDispatchFeeSummaryViLogService
+{
+ protected final Logger logger = LoggerFactory.getLogger(getClass());
+ @Resource
+ private TmsDispatchFeeSummaryViLogMapper tmsDispatchFeeSummaryViLogMapper;
+
+
+ /**
+ * 鏌ヨ娲捐溅鍙拌处澶囨敞璁板綍
+ *
+ * @param id 娲捐溅鍙拌处澶囨敞璁板綍ID
+ * @return 娲捐溅鍙拌处澶囨敞璁板綍
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public TmsDispatchFeeSummaryViLog selectTmsDispatchFeeSummaryViLogById(Integer id)
+ {
+ return tmsDispatchFeeSummaryViLogMapper.selectTmsDispatchFeeSummaryViLogById(id);
+ }
+
+ /**
+ * 鏌ヨ娲捐溅鍙拌处澶囨敞璁板綍 璁板綍鏁�
+ *
+ * @param tmsDispatchFeeSummaryViLog 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 娲捐溅鍙拌处澶囨敞璁板綍闆嗗悎
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public int selectTmsDispatchFeeSummaryViLogCount(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog)
+ {
+ return tmsDispatchFeeSummaryViLogMapper.selectTmsDispatchFeeSummaryViLogCount(tmsDispatchFeeSummaryViLog);
+ }
+
+ /**
+ * 鏌ヨ娲捐溅鍙拌处澶囨敞璁板綍鍒楄〃
+ *
+ * @param tmsDispatchFeeSummaryViLog 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 娲捐溅鍙拌处澶囨敞璁板綍
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public List<TmsDispatchFeeSummaryViLog> selectTmsDispatchFeeSummaryViLogList(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog)
+ {
+ return tmsDispatchFeeSummaryViLogMapper.selectTmsDispatchFeeSummaryViLogList(tmsDispatchFeeSummaryViLog);
+ }
+
+ /**
+ * 鏌ヨ娲捐溅鍙拌处澶囨敞璁板綍鍒楄〃 寮傛 瀵煎嚭
+ *
+ * @param tmsDispatchFeeSummaryViLog 娲捐溅鍙拌处澶囨敞璁板綍
+ * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+ * @return 娲捐溅鍙拌处澶囨敞璁板綍闆嗗悎
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Async
+ @Override
+ public void export(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog,String exportKey) {
+
+ super.export(TmsDispatchFeeSummaryViLog.class,exportKey,"tmsDispatchFeeSummaryViLogData",(pageNum)->{
+ PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
+ return selectTmsDispatchFeeSummaryViLogList(tmsDispatchFeeSummaryViLog);
+ });
+ }
+
+
+ /**
+ * 鏂板娲捐溅鍙拌处澶囨敞璁板綍
+ *
+ * @param tmsDispatchFeeSummaryViLog 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertTmsDispatchFeeSummaryViLog(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog)
+ {
+ tmsDispatchFeeSummaryViLog.setCreateTime(DateUtils.getNowDate());
+ return tmsDispatchFeeSummaryViLogMapper.insertTmsDispatchFeeSummaryViLog(tmsDispatchFeeSummaryViLog);
+ }
+
+ /**
+ * 鏂板娲捐溅鍙拌处澶囨敞璁板綍[鎵归噺]
+ *
+ * @param tmsDispatchFeeSummaryViLogs 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertTmsDispatchFeeSummaryViLogBatch(List<TmsDispatchFeeSummaryViLog> tmsDispatchFeeSummaryViLogs)
+ {
+ int rows = tmsDispatchFeeSummaryViLogMapper.insertTmsDispatchFeeSummaryViLogBatch(tmsDispatchFeeSummaryViLogs);
+ return rows;
+ }
+
+ /**
+ * 淇敼娲捐溅鍙拌处澶囨敞璁板綍
+ *
+ * @param tmsDispatchFeeSummaryViLog 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateTmsDispatchFeeSummaryViLog(TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog)
+ {
+ return tmsDispatchFeeSummaryViLogMapper.updateTmsDispatchFeeSummaryViLog(tmsDispatchFeeSummaryViLog);
+ }
+
+ /**
+ * 淇敼娲捐溅鍙拌处澶囨敞璁板綍[鎵归噺]
+ *
+ * @param tmsDispatchFeeSummaryViLogs 娲捐溅鍙拌处澶囨敞璁板綍
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateTmsDispatchFeeSummaryViLogBatch(List<TmsDispatchFeeSummaryViLog> tmsDispatchFeeSummaryViLogs){
+ return tmsDispatchFeeSummaryViLogMapper.updateTmsDispatchFeeSummaryViLogBatch(tmsDispatchFeeSummaryViLogs);
+ }
+
+ /**
+ * 鍒犻櫎娲捐溅鍙拌处澶囨敞璁板綍瀵硅薄
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteTmsDispatchFeeSummaryViLogByIds(String ids)
+ {
+ return deleteTmsDispatchFeeSummaryViLogByIds(Convert.toIntArray(ids));
+ }
+
+ /**
+ * 鍒犻櫎娲捐溅鍙拌处澶囨敞璁板綍瀵硅薄
+ *
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteTmsDispatchFeeSummaryViLogByIds(Integer[] ids)
+ {
+ return tmsDispatchFeeSummaryViLogMapper.deleteTmsDispatchFeeSummaryViLogByIds(ids);
+ }
+
+ /**
+ * 鍒犻櫎娲捐溅鍙拌处澶囨敞璁板綍淇℃伅
+ *
+ * @param id 娲捐溅鍙拌处澶囨敞璁板綍ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteTmsDispatchFeeSummaryViLogById(Integer id)
+ {
+ return tmsDispatchFeeSummaryViLogMapper.deleteTmsDispatchFeeSummaryViLogById(id);
+ }
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchFeeSummaryViServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchFeeSummaryViServiceImpl.java
index 499a9a6..3c1b306 100644
--- a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchFeeSummaryViServiceImpl.java
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchFeeSummaryViServiceImpl.java
@@ -7,17 +7,14 @@
import com.ruoyi.common.core.page.PageDomain;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.core.service.BaseService;
+import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.DownloadExportUtil;
import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.tms.domain.TmsDispatchFeeSummaryVi;
-import com.ruoyi.tms.domain.TmsPayableFeeItem;
-import com.ruoyi.tms.domain.TmsReceivableFeeItem;
-import com.ruoyi.tms.domain.TmsTrip;
-import com.ruoyi.tms.mapper.TmsDispatchFeeSummaryViMapper;
-import com.ruoyi.tms.mapper.TmsPayableFeeItemMapper;
-import com.ruoyi.tms.mapper.TmsReceivableFeeItemMapper;
+import com.ruoyi.tms.domain.*;
+import com.ruoyi.tms.mapper.*;
import com.ruoyi.tms.service.ITmsDispatchFeeSummaryViService;
+import com.ruoyi.tms.service.ITmsDispatchOrderService;
import com.ruoyi.tms.service.ITmsReceivableFeeService;
import com.ruoyi.tms.service.ITmsTripService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +25,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -43,6 +41,10 @@
private TmsReceivableFeeItemMapper tmsReceivableFeeItemMapper;
@Resource
private TmsPayableFeeItemMapper tmsPayableFeeItemMapper;
+ @Resource
+ private TmsDispatchOrderMapper tmsDispatchOrderMapper;
+ @Resource
+ private TmsDispatchFeeSummaryViLogMapper logMapper;
@Override
public Page<TmsDispatchFeeSummaryVi> list(PageDomain pageDomain,TmsDispatchFeeSummaryVi bo) {
Page<TmsDispatchFeeSummaryVi> pageParam = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
@@ -178,5 +180,15 @@
}
}
-
+ @Override
+ public int note(TmsDispatchFeeSummaryVi bo) {
+ tmsDispatchOrderMapper.updateTmsDispatchOrder(new TmsDispatchOrder(){{setId(bo.getDispatchId().intValue());
+ setNotes(bo.getRemark());}});
+ TmsDispatchFeeSummaryViLog tmsDispatchFeeSummaryViLog = new TmsDispatchFeeSummaryViLog();
+ tmsDispatchFeeSummaryViLog.setNotes(bo.getRemark());
+ tmsDispatchFeeSummaryViLog.setHeadId(bo.getDispatchId().intValue());
+ tmsDispatchFeeSummaryViLog.setCreateBy(SecurityUtils.getUsername());
+ tmsDispatchFeeSummaryViLog.setCreateTime(new Date());
+ return logMapper.insertTmsDispatchFeeSummaryViLog(tmsDispatchFeeSummaryViLog);
+ }
}
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderImportLogServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderImportLogServiceImpl.java
new file mode 100644
index 0000000..85f12eb
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderImportLogServiceImpl.java
@@ -0,0 +1,116 @@
+package com.ruoyi.tms.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+import com.ruoyi.tms.mapper.TmsDispatchOrderImportLogMapper;
+import com.ruoyi.tms.domain.TmsDispatchOrderImportLog;
+import com.ruoyi.tms.service.ITmsDispatchOrderImportLogService;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import com.ruoyi.common.core.service.BaseService;
+
+/**
+ * 璋冨害鍗曞鍏ユ棩蹇桽ervice涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2026-03-06
+ */
+@Service
+public class TmsDispatchOrderImportLogServiceImpl extends BaseService<TmsDispatchOrderImportLogMapper, TmsDispatchOrderImportLog> implements ITmsDispatchOrderImportLogService
+{
+ @Autowired
+ private TmsDispatchOrderImportLogMapper tmsDispatchOrderImportLogMapper;
+
+ /**
+ * 鏌ヨ璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param id 璋冨害鍗曞鍏ユ棩蹇桰D
+ * @return 璋冨害鍗曞鍏ユ棩蹇�
+ */
+ @Override
+ public TmsDispatchOrderImportLog selectTmsDispatchOrderImportLogById(Integer id)
+ {
+ return tmsDispatchOrderImportLogMapper.selectTmsDispatchOrderImportLogById(id);
+ }
+
+ /**
+ * 鏌ヨ璋冨害鍗曞鍏ユ棩蹇楀垪琛�
+ *
+ * @param tmsDispatchOrderImportLog 璋冨害鍗曞鍏ユ棩蹇�
+ * @return 璋冨害鍗曞鍏ユ棩蹇楅泦鍚�
+ */
+ @Override
+ public List<TmsDispatchOrderImportLog> selectTmsDispatchOrderImportLogList(TmsDispatchOrderImportLog tmsDispatchOrderImportLog)
+ {
+ return tmsDispatchOrderImportLogMapper.selectTmsDispatchOrderImportLogList(tmsDispatchOrderImportLog);
+ }
+
+ /**
+ * 鏂板璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param tmsDispatchOrderImportLog 璋冨害鍗曞鍏ユ棩蹇�
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertTmsDispatchOrderImportLog(TmsDispatchOrderImportLog tmsDispatchOrderImportLog)
+ {
+ return tmsDispatchOrderImportLogMapper.insertTmsDispatchOrderImportLog(tmsDispatchOrderImportLog);
+ }
+
+ /**
+ * 淇敼璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param tmsDispatchOrderImportLog 璋冨害鍗曞鍏ユ棩蹇�
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateTmsDispatchOrderImportLog(TmsDispatchOrderImportLog tmsDispatchOrderImportLog)
+ {
+ return tmsDispatchOrderImportLogMapper.updateTmsDispatchOrderImportLog(tmsDispatchOrderImportLog);
+ }
+
+ /**
+ * 鍒犻櫎璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param id 璋冨害鍗曞鍏ユ棩蹇桰D
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteTmsDispatchOrderImportLogById(Integer id)
+ {
+ return tmsDispatchOrderImportLogMapper.deleteTmsDispatchOrderImportLogById(id);
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎璋冨害鍗曞鍏ユ棩蹇�
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteTmsDispatchOrderImportLogByIds(Integer[] ids)
+ {
+ return tmsDispatchOrderImportLogMapper.deleteTmsDispatchOrderImportLogByIds(ids);
+ }
+
+ /**
+ * 瀵煎嚭璋冨害鍗曞鍏ユ棩蹇楀垪琛�
+ *
+ * @param tmsDispatchOrderImportLog 璋冨害鍗曞鍏ユ棩蹇�
+ * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Async
+ @Override
+ public void export(TmsDispatchOrderImportLog tmsDispatchOrderImportLog, String exportKey)
+ {
+ super.export(TmsDispatchOrderImportLog.class, exportKey, "tmsDispatchOrderImportLogData", (pageNum) -> {
+ PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
+ return selectTmsDispatchOrderImportLogList(tmsDispatchOrderImportLog);
+ });
+ }
+}
\ No newline at end of file
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderServiceImpl.java
index a226297..19fa9ae 100644
--- a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderServiceImpl.java
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsDispatchOrderServiceImpl.java
@@ -118,6 +118,9 @@
@Resource
private TmsShelfMapper tmsShelfMapper;
+ @Autowired
+ private ITmsDispatchOrderImportLogService tmsDispatchOrderImportLogService;
+
/**
* 鏌ヨ璋冨害鍗曠鐞�
@@ -548,7 +551,17 @@
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
+ StringBuilder failureDescription = new StringBuilder();
int line = 1;
+
+ // 鍒涘缓瀵煎叆鏃ュ織瀵硅薄
+ TmsDispatchOrderImportLog importLog = new TmsDispatchOrderImportLog();
+ importLog.setImportTime(DateUtils.getNowDate());
+ importLog.setFileName("璋冨害鍗曞鍏ユ枃浠�"); // 杩欓噷闇�瑕佹牴鎹疄闄呮儏鍐佃幏鍙栨枃浠跺悕
+ importLog.setOperator(SecurityUtils.getUsername());
+ importLog.setCreateBy(SecurityUtils.getUsername());
+ importLog.setCreateTime(DateUtils.getNowDate());
+
for (TmsDispatchOrderImport tmsDispatchOrderImport : list){
try
{
@@ -722,12 +735,28 @@
failureNum++;
String msg = "<br/>" + "璋冨害鍗曠"+line+"琛屽鍏ュけ璐ワ細";
failureMsg.append(msg + e.getMessage());
+
+ // 璁板綍澶辫触璇存槑锛屽寘鍚鍙峰拰澶辫触鍘熷洜
+ failureDescription.append("绗�" + line + "琛岋細" + e.getMessage()).append("\n");
+
log.error(msg, e);
}finally {
line++;
}
}
+ // 璁剧疆瀵煎叆鏃ュ織鐨勭粺璁′俊鎭�
+ importLog.setSuccessCount(list.size() - failureNum);
+ importLog.setFailureCount(failureNum);
+ importLog.setFailureDescription(failureDescription.toString());
+
+ // 淇濆瓨瀵煎叆鏃ュ織
+ try {
+ tmsDispatchOrderImportLogService.insertTmsDispatchOrderImportLog(importLog);
+ } catch (Exception e) {
+ log.error("淇濆瓨瀵煎叆鏃ュ織澶辫触锛�", e);
+ }
+
if (failureNum > 0)
{
failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細");
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsFinanceDetailServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsFinanceDetailServiceImpl.java
index ce326d6..cf963b6 100644
--- a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsFinanceDetailServiceImpl.java
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsFinanceDetailServiceImpl.java
@@ -2,6 +2,7 @@
import java.math.BigDecimal;
import java.util.Collections;
+import java.util.Date;
import java.util.List;
import cn.hutool.core.bean.BeanUtil;
@@ -9,6 +10,7 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.SystemDataNoEnum;
+import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import javax.annotation.Resource;
@@ -208,6 +210,28 @@
}
+ @Override
+ public int saveTmsFinanceDetail2(List<TmsFinanceDetail> tmsFinanceDetails) {
+ String username = SecurityUtils.getUsername();
+ Long userId = SecurityUtils.getUserId();
+ Date nowDate = DateUtils.getNowDate();
+ for (TmsFinanceDetail tmsFinanceDetail : tmsFinanceDetails) {
+ if (StringUtils.isNotEmpty(tmsFinanceDetail.getFeeType() ) &&
+ tmsFinanceDetail.getActualFeeAmount() != null) {
+ tmsFinanceDetail.setCreateBy(username);
+ tmsFinanceDetail.setInitialFeeAmount(tmsFinanceDetail.getActualFeeAmount());
+ tmsFinanceDetail.setCreateId(userId);
+ tmsFinanceDetail.setFeeCreateTime(nowDate);
+ tmsFinanceDetail.setCreateTime(nowDate);
+ }else {
+ throw new ServiceException("閲戦鎴栬�呰垂鐢ㄧ被鍨嬩笉鑳戒负绌�");
+ }
+ }
+
+ return tmsFinanceDetailMapper.insertTmsFinanceDetailBatch(tmsFinanceDetails);
+
+ }
+
public void addItem (TmsFinanceDetail tmsFinanceDetail){
// if (tmsFinance == null){
//
diff --git a/tms/src/main/resources/mapper/tms/TmsDispatchFeeSummaryViLogMapper.xml b/tms/src/main/resources/mapper/tms/TmsDispatchFeeSummaryViLogMapper.xml
new file mode 100644
index 0000000..43e73d1
--- /dev/null
+++ b/tms/src/main/resources/mapper/tms/TmsDispatchFeeSummaryViLogMapper.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.tms.mapper.TmsDispatchFeeSummaryViLogMapper">
+
+ <resultMap type="com.ruoyi.tms.domain.TmsDispatchFeeSummaryViLog" id="TmsDispatchFeeSummaryViLogResult">
+ <result property="id" column="id" />
+ <result property="headId" column="head_id" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="notes" column="notes" />
+ </resultMap>
+
+ <sql id="selectTmsDispatchFeeSummaryViLogVo">
+ select thisTab.id, thisTab.head_id, thisTab.create_by, thisTab.create_time, thisTab.notes from tms_dispatch_fee_summary_vi_log AS thisTab
+ </sql>
+ <sql id="selectTmsDispatchFeeSummaryViLogVoCount">
+ select count(0) from tms_dispatch_fee_summary_vi_log as thisTab
+ </sql>
+
+ <sql id="whereCondition">
+ <if test="headId != null "> and thisTab.head_id = #{headId}</if>
+ <if test="notes != null and notes != ''"> and thisTab.notes = #{notes}</if>
+ </sql>
+
+ <!--鏌ヨ-->
+ <select id="selectTmsDispatchFeeSummaryViLogById" parameterType="Integer" resultMap="TmsDispatchFeeSummaryViLogResult">
+ <include refid="selectTmsDispatchFeeSummaryViLogVo"/>
+ where id = #{id}
+ </select>
+
+ <select id="selectTmsDispatchFeeSummaryViLogCount" parameterType="com.ruoyi.tms.domain.TmsDispatchFeeSummaryViLog" resultType="int">
+ <include refid="selectTmsDispatchFeeSummaryViLogVoCount"/>
+ <where>
+ <include refid="whereCondition"/>
+ </where>
+ </select>
+
+ <select id="selectTmsDispatchFeeSummaryViLogList" parameterType="com.ruoyi.tms.domain.TmsDispatchFeeSummaryViLog" resultMap="TmsDispatchFeeSummaryViLogResult">
+ <include refid="selectTmsDispatchFeeSummaryViLogVo"/>
+ <where>
+ <include refid="whereCondition"/>
+ </where>
+ order by thisTab.id desc
+ </select>
+
+ <!-- 鏂板 -->
+ <insert id="insertTmsDispatchFeeSummaryViLog" parameterType="com.ruoyi.tms.domain.TmsDispatchFeeSummaryViLog" useGeneratedKeys="true" keyProperty="id">
+ insert into tms_dispatch_fee_summary_vi_log
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="headId != null">head_id,</if>
+ <if test="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="notes != null">notes,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="headId != null">#{headId},</if>
+ <if test="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="notes != null">#{notes},</if>
+ </trim>
+ </insert>
+
+ <insert id="insertTmsDispatchFeeSummaryViLogBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+ insert into tms_dispatch_fee_summary_vi_log
+ <trim prefix="(" suffix=") values" suffixOverrides=",">
+ id,head_id,create_by,create_time,notes,
+ </trim>
+ <foreach item="item" index="index" collection="list" separator=",">
+ <trim prefix="(" suffix=") " suffixOverrides=",">
+ #{item.id},#{item.headId},#{item.createBy},#{item.createTime},#{item.notes},
+ </trim>
+ </foreach>
+ </insert>
+
+ <!-- 淇敼 -->
+ <update id="updateTmsDispatchFeeSummaryViLog" parameterType="com.ruoyi.tms.domain.TmsDispatchFeeSummaryViLog">
+ update tms_dispatch_fee_summary_vi_log
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="headId != null">head_id = #{headId},</if>
+ <if test="createBy != null">create_by = #{createBy},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ <if test="notes != null">notes = #{notes},</if>
+ </trim>
+ where id = #{id}
+ </update>
+ <!-- 淇敼 -->
+ <update id="updateTmsDispatchFeeSummaryViLogBatch" parameterType="java.util.List">
+ <foreach collection="list" item="item" index="index" separator=";">
+ update tms_dispatch_fee_summary_vi_log
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="item.headId != null">head_id = #{item.headId},</if>
+ <if test="item.createBy != null">create_by = #{item.createBy},</if>
+ <if test="item.createTime != null">create_time = #{item.createTime},</if>
+ <if test="item.notes != null">notes = #{item.notes},</if>
+ </trim>
+ where id = #{item.id}
+ </foreach>
+ </update>
+
+ <!--鍒犻櫎-->
+ <delete id="deleteTmsDispatchFeeSummaryViLogById" parameterType="Integer">
+ delete from tms_dispatch_fee_summary_vi_log where id = #{id}
+ </delete>
+ <delete id="deleteTmsDispatchFeeSummaryViLogByIds" parameterType="Integer">
+ delete from tms_dispatch_fee_summary_vi_log where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/tms/src/main/resources/mapper/tms/TmsDispatchOrderImportLogMapper.xml b/tms/src/main/resources/mapper/tms/TmsDispatchOrderImportLogMapper.xml
new file mode 100644
index 0000000..9e04af9
--- /dev/null
+++ b/tms/src/main/resources/mapper/tms/TmsDispatchOrderImportLogMapper.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.tms.mapper.TmsDispatchOrderImportLogMapper">
+
+ <resultMap type="com.ruoyi.tms.domain.TmsDispatchOrderImportLog" id="TmsDispatchOrderImportLogResult">
+ <result property="id" column="id" />
+ <result property="importTime" column="import_time" />
+ <result property="fileName" column="file_name" />
+ <result property="operator" column="operator" />
+ <result property="successCount" column="success_count" />
+ <result property="failureCount" column="failure_count" />
+ <result property="failureDescription" column="failure_description" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="remark" column="remark" />
+ </resultMap>
+
+ <sql id="selectTmsDispatchOrderImportLogVo">
+ select id, import_time, file_name, operator, success_count, failure_count, failure_description, create_by, create_time, update_by, update_time, remark from tms_dispatch_order_import_log
+ </sql>
+
+ <select id="selectTmsDispatchOrderImportLogList" parameterType="com.ruoyi.tms.domain.TmsDispatchOrderImportLog" resultMap="TmsDispatchOrderImportLogResult">
+ <include refid="selectTmsDispatchOrderImportLogVo"/>
+ <where>
+ <if test="fileName != null and fileName != ''"> and file_name like concat('%', #{fileName}, '%')</if>
+ <if test="operator != null and operator != ''"> and operator like concat('%', #{operator}, '%')</if>
+ <if test="successCount != null "> and success_count = #{successCount}</if>
+ <if test="failureCount != null "> and failure_count = #{failureCount}</if>
+ <if test="failureDescription != null and failureDescription != ''"> and failure_description like concat('%', #{failureDescription}, '%')</if>
+ <if test="importTime != null"> and import_time = #{importTime}</if>
+
+ </where>
+ order by import_time desc
+ </select>
+
+ <select id="selectTmsDispatchOrderImportLogById" parameterType="Integer" resultMap="TmsDispatchOrderImportLogResult">
+ <include refid="selectTmsDispatchOrderImportLogVo"/>
+ where id = #{id}
+ </select>
+
+ <insert id="insertTmsDispatchOrderImportLog" parameterType="com.ruoyi.tms.domain.TmsDispatchOrderImportLog" useGeneratedKeys="true" keyProperty="id">
+ insert into tms_dispatch_order_import_log
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="importTime != null">import_time,</if>
+ <if test="fileName != null and fileName != ''">file_name,</if>
+ <if test="operator != null and operator != ''">operator,</if>
+ <if test="successCount != null">success_count,</if>
+ <if test="failureCount != null">failure_count,</if>
+ <if test="failureDescription != null">failure_description,</if>
+ <if test="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateBy != null">update_by,</if>
+ <if test="updateTime != null">update_time,</if>
+ <if test="remark != null">remark,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="importTime != null">#{importTime},</if>
+ <if test="fileName != null and fileName != ''">#{fileName},</if>
+ <if test="operator != null and operator != ''">#{operator},</if>
+ <if test="successCount != null">#{successCount},</if>
+ <if test="failureCount != null">#{failureCount},</if>
+ <if test="failureDescription != null">#{failureDescription},</if>
+ <if test="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateBy != null">#{updateBy},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ <if test="remark != null">#{remark},</if>
+ </trim>
+ </insert>
+
+ <update id="updateTmsDispatchOrderImportLog" parameterType="com.ruoyi.tms.domain.TmsDispatchOrderImportLog">
+ update tms_dispatch_order_import_log
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="importTime != null">import_time = #{importTime},</if>
+ <if test="fileName != null and fileName != ''">file_name = #{fileName},</if>
+ <if test="operator != null and operator != ''">operator = #{operator},</if>
+ <if test="successCount != null">success_count = #{successCount},</if>
+ <if test="failureCount != null">failure_count = #{failureCount},</if>
+ <if test="failureDescription != null">failure_description = #{failureDescription},</if>
+ <if test="updateBy != null">update_by = #{updateBy},</if>
+ <if test="updateTime != null">update_time = #{updateTime},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ </trim>
+ where id = #{id}
+ </update>
+
+ <delete id="deleteTmsDispatchOrderImportLogById" parameterType="Integer">
+ delete from tms_dispatch_order_import_log where id = #{id}
+ </delete>
+
+ <delete id="deleteTmsDispatchOrderImportLogByIds" parameterType="String">
+ delete from tms_dispatch_order_import_log where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+</mapper>
\ No newline at end of file
diff --git a/tms/src/main/resources/mapper/tms/TmsDispatchOrderMapper.xml b/tms/src/main/resources/mapper/tms/TmsDispatchOrderMapper.xml
index 6941f33..948cadd 100644
--- a/tms/src/main/resources/mapper/tms/TmsDispatchOrderMapper.xml
+++ b/tms/src/main/resources/mapper/tms/TmsDispatchOrderMapper.xml
@@ -115,6 +115,7 @@
<result property="seamlessNumber" column="seamless_number" />
<result property="seamlessSupplierId" column="seamless_supplier_id" />
<result property="seamlessSupplierName" column="seamless_supplier_name" />
+ <result property="notes" column="notes" />
</resultMap>
@@ -594,6 +595,7 @@
<if test="seamlessNumber != null">seamless_number = #{seamlessNumber},</if>
<if test="seamlessSupplierId != null">seamless_supplier_id = #{seamlessSupplierId},</if>
<if test="seamlessSupplierName != null">seamless_supplier_name = #{seamlessSupplierName},</if>
+ <if test="notes != null">notes = #{notes},</if>
</trim>
where id = #{id}
</update>
diff --git a/ui/admin-ui3/src/api/tms/dispatchFeeSummaryViLog.ts b/ui/admin-ui3/src/api/tms/dispatchFeeSummaryViLog.ts
new file mode 100644
index 0000000..c8b8c61
--- /dev/null
+++ b/ui/admin-ui3/src/api/tms/dispatchFeeSummaryViLog.ts
@@ -0,0 +1,67 @@
+import request,{download,requestType} from "@/utils/request";
+import {BaseEntityInterface} from "@/utils/globalInterface";
+export interface DispatchFeeSummaryViLogI extends BaseEntityInterface{
+ id ?: number , headId ?: number , createBy ?: string , createTime ?: string , notes ?: string }
+
+
+/**
+ * 鏌ヨ娲捐溅鍙拌处澶囨敞璁板綍鍒楄〃
+ */
+export const listDispatchFeeSummaryViLog:requestType = (query) => {
+ return request({
+ url: '/tms/dispatchFeeSummaryViLog/list',
+ method:'get',
+ params:query
+ })
+}
+/**
+ * 鏌ヨ娲捐溅鍙拌处澶囨敞璁板綍璇︾粏
+ */
+export const getDispatchFeeSummaryViLog:requestType = (id) => {
+ return request({
+ url: '/tms/dispatchFeeSummaryViLog/' + id,
+ method:'get'
+ })
+}
+
+/**
+ * 鏂板娲捐溅鍙拌处澶囨敞璁板綍
+ */
+export const addDispatchFeeSummaryViLog:requestType = (data) => {
+ return request({
+ url: '/tms/dispatchFeeSummaryViLog',
+ method: 'post',
+ data
+ })
+}
+
+/**
+ * 淇敼娲捐溅鍙拌处澶囨敞璁板綍
+ */
+export const updateDispatchFeeSummaryViLog:requestType = (data) => {
+ return request({
+ url: '/tms/dispatchFeeSummaryViLog',
+ method: 'put',
+ data
+ })
+}
+
+/**
+ * 鍒犻櫎娲捐溅鍙拌处澶囨敞璁板綍
+ */
+export const delDispatchFeeSummaryViLog:requestType = (id) => {
+ return request({
+ url: '/tms/dispatchFeeSummaryViLog/' + id,
+ method: 'delete'
+ })
+}
+
+
+/**
+ * 瀵煎嚭娲捐溅鍙拌处澶囨敞璁板綍
+ */
+export const exportDispatchFeeSummaryViLog:requestType = (query) => {
+ return new Promise<any>(()=>{
+ download('/tms/dispatchFeeSummaryViLog/export',query);
+ })
+}
diff --git a/ui/admin-ui3/src/api/tms/tmsDispatchFeeSummary.ts b/ui/admin-ui3/src/api/tms/tmsDispatchFeeSummary.ts
index 382b39c..b5e5606 100644
--- a/ui/admin-ui3/src/api/tms/tmsDispatchFeeSummary.ts
+++ b/ui/admin-ui3/src/api/tms/tmsDispatchFeeSummary.ts
@@ -20,3 +20,13 @@
download('/tms/tmsDispatchFeeSummaryVi/export',query);
})
}
+/**
+ * 澶囨敞
+ */
+export const tmsDispatchFeeSummaryViNote:requestType = (data) => {
+ return request({
+ url: '/tms/tmsDispatchFeeSummaryVi/note',
+ method: 'put',
+ data
+ })
+}
diff --git a/ui/admin-ui3/src/api/tms/tmsDispatchOrder.ts b/ui/admin-ui3/src/api/tms/tmsDispatchOrder.ts
index 1831725..e8df9f9 100644
--- a/ui/admin-ui3/src/api/tms/tmsDispatchOrder.ts
+++ b/ui/admin-ui3/src/api/tms/tmsDispatchOrder.ts
@@ -274,4 +274,18 @@
return new Promise<any>(() => {
download('/tms/tmsDispatchOrder/importTemplate', query);
})
+}
+/* 瀵煎叆鍘嗗彶璁板綍 */
+export const tmsTmsDispatchOrderImportLog: requestType = (id) => {
+ return request({
+ url: '/tms/tmsDispatchOrderImportLog/list' ,
+ method: 'get'
+ })
+}
+export const saveTmsFinanceDetail2:requestType = (data) => {
+ return request({
+ url: '/tms/tmsFinanceDetail/save2',
+ method: 'post',
+ data
+ })
}
\ No newline at end of file
diff --git a/ui/admin-ui3/src/api/tms/tmsFinanceDetail.ts b/ui/admin-ui3/src/api/tms/tmsFinanceDetail.ts
index 9fc78ca..9fa1241 100644
--- a/ui/admin-ui3/src/api/tms/tmsFinanceDetail.ts
+++ b/ui/admin-ui3/src/api/tms/tmsFinanceDetail.ts
@@ -42,6 +42,7 @@
})
}
+
/**
* 淇敼璐圭敤鏄庣粏
*/
diff --git a/ui/admin-ui3/src/hooks/usePagePlus.ts b/ui/admin-ui3/src/hooks/usePagePlus.ts
index e1d54d9..76501e6 100644
--- a/ui/admin-ui3/src/hooks/usePagePlus.ts
+++ b/ui/admin-ui3/src/hooks/usePagePlus.ts
@@ -1,217 +1,169 @@
-import {reactive, ref, Ref, UnwrapRef} from "vue";
-import {PageF, PageInterface, PagesInterface} from "@/utils/globalInterface";
-
-import {ElMessage, ElMessageBox} from "element-plus";
-import {requestType} from "@/utils/request";
-
-
+import { reactive, ref, onMounted, onUnmounted } from "vue"; // 1. 寮曞叆鐢熷懡鍛ㄦ湡閽╁瓙
+import { PageF, PagesInterface } from "@/utils/globalInterface";
+import { ElMessage, ElMessageBox } from "element-plus";
+import { requestType } from "@/utils/request";
/**
- * @description usePage 鎺ユ敹涓�涓猳pts 鍙傛暟锛岃繑鍥為�氱敤椤甸潰鎵�闇�鏁版嵁
- * @param {Object} opts.form 琛ㄥ崟瀵硅薄
- * @param {string} opts.title 椤甸潰鏍囬
- * @param {Object} opts.queryParams 鏌ヨ鍙傛暟
- * @param {Function} opts.getListApi 鑾峰彇鍒楄〃鏁版嵁鐨勬帴鍙�
- * @param {Function} opts.getDetailApi 鑾峰彇璇︽儏鏁版嵁鐨勬帴鍙�
- * @param {Function} opts.deleteApi 鍒犻櫎鏁版嵁鐨勬帴鍙�
- * @param {Function} opts.exportApi 瀵煎嚭鏁版嵁鐨勬帴鍙�
- * @param {Function} opts.getBeginListFunc 鑾峰彇鍓峠etList鏁版嵁鐨勬帴鍙�
- * @param {Function} opts.getListFunc 鎵ц瀹実etList鎴愬姛鍚庢墽琛岀殑閫昏緫
- * @param {Function} opts.resetFunc 鎵ц瀹宺eset鎴愬姛鍚庢墽琛岀殑閫昏緫
- * @param {Function} opts.resetQueryFunc 鎵ц瀹宺esetQuery鎴愬姛鍚庢墽琛岀殑閫昏緫
- * @param {Function} opts.handleSelectionChangeFunc 鎵ц瀹宧andleSelectionChange鎴愬姛鍚庢墽琛岀殑閫昏緫
+ * @description usePagePlus 澧炲姞鍏ㄥ眬鍥炶溅鎼滅储閫昏緫
*/
export const usePagePlus = (opts: {
- form?:any,
- option?:any,
- idKey?:any,
- page:any,
- queryParams?:any,
- getListApi?:requestType,
- addApi?:requestType,
- updateApi?:requestType,
- getDetailApi?:requestType,
- deleteApi?:requestType,
- exportApi?:requestType,
- getBeginListFunc?:Function,
- getListFunc?:Function,
- resetFunc?:Function,
- handleQueryFunc?:Function,
- resetQueryFunc?:Function,
- handleSelectionChangeFunc?:Function,
- handleAddFunc?:Function,
- handleUpdateFunc?:Function,
- handleBeforeOpenFunc?:Function,
- handleEndOpenFunc?:Function,
- rowSaveBegin?:Function,
- rowUpdateBegin?:Function,
-})=>{
- const pageF = reactive({...PageF});
+ form?: any,
+ option?: any,
+ idKey?: any,
+ page: any,
+ queryParams?: any, // 纭繚澶栭儴浼犲叆鐨勬槸 ref 瀵硅薄
+ getListApi?: requestType,
+ addApi?: requestType,
+ updateApi?: requestType,
+ getDetailApi?: requestType,
+ deleteApi?: requestType,
+ exportApi?: requestType,
+ getBeginListFunc?: Function,
+ getListFunc?: Function,
+ resetFunc?: Function,
+ handleQueryFunc?: Function,
+ resetQueryFunc?: Function,
+ handleSelectionChangeFunc?: Function,
+ handleAddFunc?: Function,
+ handleUpdateFunc?: Function,
+ handleBeforeOpenFunc?: Function,
+ handleEndOpenFunc?: Function,
+ rowSaveBegin?: Function,
+ rowUpdateBegin?: Function,
+}) => {
+ const pageF = reactive({ ...PageF });
const tableData = ref([]);
- opts.idKey = opts.idKey?opts.idKey: 'id';
+ opts.idKey = opts.idKey ? opts.idKey : 'id';
+
/**
* 鑾峰彇鍒楄〃鏁版嵁
*/
- const onLoad = (page:PagesInterface, params?:Object) =>{
- if(opts.getBeginListFunc){
+ const onLoad = (page: PagesInterface, params?: Object) => {
+ if (opts.getBeginListFunc) {
params = opts.getBeginListFunc!(params)
}
pageF.loading = true;
- opts.getListApi!({pageNum:page.currentPage,pageSize:page.pageSize,...Object.assign(params?params:{},opts.queryParams.value)}).then((res:any)=>{
- tableData.value = res.rows|| [];
+ opts.getListApi!({
+ pageNum: page.currentPage,
+ pageSize: page.pageSize,
+ ...Object.assign(params ? params : {}, opts.queryParams.value)
+ }).then((res: any) => {
+ tableData.value = res.rows || [];
pageF.loading = false;
opts.page.total = res.total || 0;
- if(opts.getListFunc){
+ if (opts.getListFunc) {
opts.getListFunc!(res)
}
})
}
/**
- * 娓呯┖鎼滅储鍥炶皟鏂规硶
+ * 2. 鏂板锛氭墜鍔ㄨЕ鍙戞悳绱㈤�昏緫 (鐢ㄤ簬鍥炶溅鎼滅储)
*/
- const searchReset = () =>{
- opts.queryParams = {};
- if (opts.handleQueryFunc){
+ const manualSearch = () => {
+ opts.page.currentPage = 1; // 鍥炶溅鎼滅储榛樿鍒囧洖绗竴椤�
+ if (opts.handleQueryFunc) {
+ opts.handleQueryFunc();
+ }
+ onLoad(opts.page, opts.queryParams.value);
+ }
+
+ /**
+ * 3. 鏂板锛氬叏灞�鎸夐敭鐩戝惉澶勭悊鍑芥暟
+ */
+ const handleKeyDown = (e: KeyboardEvent) => {
+ // 鍒ゆ柇鏄惁鎸変笅 Enter 閿�
+ if (e.key === 'Enter') {
+ // 鍏抽敭鍒ゆ柇锛氫负浜嗛槻姝㈠湪鏂板/缂栬緫寮圭獥杈撳叆鏃惰Е鍙戣儗鏅垪琛ㄥ埛鏂�
+ // 鍙湁褰撶劍鐐瑰湪 Input 妗嗕腑涓斾笉鍦ㄥ脊绐楀唴锛堥�氬父鏍规嵁涓氬姟鐘舵�佸垽鏂級鎵嶈Е鍙�
+ const target = e.target as HTMLElement;
+ if (target.tagName === 'INPUT') {
+ // 濡傛灉椤甸潰涓婃湁 open 鐘舵�佹帶鍒跺脊绐楋紝鍙互鍦ㄦ澧炲姞鍒ゆ柇鏉′欢
+ manualSearch();
+ }
+ }
+ };
+
+ // 4. 鎸傝浇鏃剁洃鍚紝鍗歌浇鏃剁Щ闄わ紝纭繚涓嶅奖鍝嶅叾浠栭潪 Avue 椤甸潰
+ onMounted(() => {
+ window.addEventListener("keydown", handleKeyDown);
+ });
+
+ onUnmounted(() => {
+ window.removeEventListener("keydown", handleKeyDown);
+ });
+
+ /** 娓呯┖鎼滅储鍥炶皟鏂规硶 */
+ const searchReset = () => {
+ opts.queryParams.value = {}; // 淇敼涓烘搷浣� .value
+ if (opts.handleQueryFunc) {
opts.handleQueryFunc();
}
onLoad(opts.page);
}
/** 鎼滅储鎸夐挳鎿嶄綔 */
- const searchChange = (params:any, done:any) => {
- // opts.queryParams = params;
+ const searchChange = (params: any, done: any) => {
opts.page.currentPage = 1;
- if (opts.handleQueryFunc){
+ if (opts.handleQueryFunc) {
opts.handleQueryFunc();
}
- console.log(params);
-
- onLoad(opts.page,params);
+ onLoad(opts.page, params);
done();
-
}
- // 澶氶�夋閫変腑鏁版嵁
+
+ // --- 浠ヤ笅淇濇寔鍘熸湁閫昏緫涓嶅彉 ---
const selectionChange = (selection?: any[]) => {
pageF.ids = selection!.map(item => item[opts.idKey]);
pageF.single = selection!.length != 1;
pageF.multiple = !selection!.length;
- if (opts.handleSelectionChangeFunc){
+ if (opts.handleSelectionChangeFunc) {
opts.handleSelectionChangeFunc!(selection);
}
}
- /** 鏂板鎿嶄綔 */
- const rowSave = (row:any, done:any, loading:any) => {
- if (opts.rowSaveBegin){
- opts.rowSaveBegin!(row,loading);
+
+ const rowSave = (row: any, done: any, loading: any) => {
+ if (opts.rowSaveBegin) {
+ opts.rowSaveBegin!(row, loading);
}
- opts.addApi!(row).then(()=>{
- ElMessage({
- message: "鏂板鎴愬姛锛�",
- type: 'success'
- })
+ opts.addApi!(row).then(() => {
+ ElMessage({ message: "鏂板鎴愬姛锛�", type: 'success' });
onLoad(opts.page);
- done()
- }).catch(()=>{
- loading()
- })
+ done();
+ }).catch(() => { loading() })
}
- /** 淇敼鎿嶄綔 */
- const rowUpdate = (row:any, index:any, done:any, loading:any) => {
- if (opts.rowUpdateBegin){
- opts.rowUpdateBegin!(row,loading);
+ const rowUpdate = (row: any, index: any, done: any, loading: any) => {
+ if (opts.rowUpdateBegin) {
+ opts.rowUpdateBegin!(row, loading);
}
- opts.updateApi!(row).then((response:any) => {
- ElMessage({
- message: "淇敼鎴愬姛锛�",
- type: 'success'
- })
+ opts.updateApi!(row).then((response: any) => {
+ ElMessage({ message: "淇敼鎴愬姛锛�", type: 'success' });
onLoad(opts.page);
- done()
- }).catch(()=>{
- loading()
- })
+ done();
+ }).catch(() => { loading() })
}
- const handleUpdate = ()=>{
- if ( !(pageF?.ids)|| pageF?.ids?.length === 0) {
- ElMessage({
- message: "璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹紒",
- type: 'warning'
- })
- return;
- }
- if(opts.handleUpdateFunc){
- opts.handleUpdateFunc!()
- }
-
- }
-
-
- const rowDel = (row:any) =>{
- ElMessageBox.confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎锛�", '绯荤粺鎻愮ず', {confirmButtonText: '纭畾', cancelButtonText: '鍙栨秷', type: 'warning'}).then(() => {
+ const rowDel = (row: any) => {
+ ElMessageBox.confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎锛�", '绯荤粺鎻愮ず', { confirmButtonText: '纭畾', cancelButtonText: '鍙栨秷', type: 'warning' }).then(() => {
return opts.deleteApi!(row[opts.idKey]);
}).then(() => {
onLoad(opts.page);
- ElMessage({
- message: "鍒犻櫎鎴愬姛锛�",
- type: 'success'
- })
- });
- }
- const handleDelete = () =>{
- if ( !(pageF?.ids)|| pageF?.ids?.length === 0) {
- ElMessage({
- message: "璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹紒",
- type: 'warning'
- })
- return;
- }
- ElMessageBox.confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎锛�", '绯荤粺鎻愮ず', {confirmButtonText: '纭畾', cancelButtonText: '鍙栨秷', type: 'warning'}).then(() => {
- return opts.deleteApi!(pageF?.ids);
- }).then(() => {
- onLoad(opts.page);
- ElMessage({
- message: "鍒犻櫎鎴愬姛锛�",
- type: 'success'
- })
+ ElMessage({ message: "鍒犻櫎鎴愬姛锛�", type: 'success' });
});
}
-
- /**
- * 瀵煎嚭
- */
- const handleExport =()=>{
- console.log(opts.queryParams.value)
- opts.exportApi!(opts.queryParams.value);
+ const refreshChange = () => {
+ onLoad(opts.page, opts.queryParams.value);
}
- const beforeOpen = (done:any, type:string) => {
- if(opts.handleBeforeOpenFunc){
- opts.handleBeforeOpenFunc!(type)
- }
- if (["edit", "view"].includes(type)) {
-
- opts.getDetailApi!(opts.form.value[opts.idKey]).then(res => {
- opts.form.value = res.data;
- if(opts.handleEndOpenFunc){
- opts.handleEndOpenFunc!(type,res)
- }
- });
- }
- done();
- }
- const currentChange = (currentPage:number) => {
+ const currentChange = (currentPage: number) => {
opts.page.currentPage = currentPage;
}
- const sizeChange = (pageSize:number) => {
+ const sizeChange = (pageSize: number) => {
opts.page.pageSize = pageSize;
}
- const refreshChange = () => {
- onLoad(opts.page,opts.queryParams.value);
- }
+
return {
pageF,
tableData,
@@ -222,13 +174,20 @@
rowSave,
rowUpdate,
rowDel,
- handleDelete,
- handleExport,
- beforeOpen,
+ refreshChange,
currentChange,
sizeChange,
- handleUpdate,
- refreshChange
+ manualSearch, // 瀵煎嚭姝ゆ柟娉曞鐢�
+ // ...鍏朵粬鍘熸湁杩斿洖椤�
+ beforeOpen: (done: any, type: string) => {
+ if (opts.handleBeforeOpenFunc) opts.handleBeforeOpenFunc!(type);
+ if (["edit", "view"].includes(type)) {
+ opts.getDetailApi!(opts.form.value[opts.idKey]).then(res => {
+ opts.form.value = res.data;
+ if (opts.handleEndOpenFunc) opts.handleEndOpenFunc!(type, res);
+ });
+ }
+ done();
+ }
}
-
-}
+}
\ No newline at end of file
diff --git a/ui/admin-ui3/src/layout/components/AppMain.vue b/ui/admin-ui3/src/layout/components/AppMain.vue
index 881ef26..e62169e 100644
--- a/ui/admin-ui3/src/layout/components/AppMain.vue
+++ b/ui/admin-ui3/src/layout/components/AppMain.vue
@@ -2,7 +2,8 @@
<section class="app-main">
<router-view v-slot="{ Component, route }">
<!-- <transition>-->
- <keep-alive :include="cachedViews">
+ <!-- :include="cachedViews" -->
+ <keep-alive >
<component :is="Component" :key="route.fullPath" />
</keep-alive>
<!-- </transition>-->
diff --git a/ui/admin-ui3/src/store/modules/user.ts b/ui/admin-ui3/src/store/modules/user.ts
index 063b05e..b2c7657 100644
--- a/ui/admin-ui3/src/store/modules/user.ts
+++ b/ui/admin-ui3/src/store/modules/user.ts
@@ -6,6 +6,8 @@
import {removeToken, setToken} from "@/utils/auth";
import {sm4} from 'sm-crypto'
import {encryptSm4} from "@/utils/Sm4Utils";
+import { sm3 } from "sm-crypto";
+
export interface UserState {
token: string | undefined,
name: string | undefined,
diff --git a/ui/admin-ui3/src/views/tms/dispatchFeeSummaryViLog/index.vue b/ui/admin-ui3/src/views/tms/dispatchFeeSummaryViLog/index.vue
new file mode 100644
index 0000000..fbcd341
--- /dev/null
+++ b/ui/admin-ui3/src/views/tms/dispatchFeeSummaryViLog/index.vue
@@ -0,0 +1,105 @@
+<template>
+ <basicContainer>
+ <avue-crud :option="option" :table-loading="pageF.loading" :data="tableData" :page="page"
+ :permission="permissionList" :before-open="beforeOpen" v-model="form" ref="crudRef" @row-update="rowUpdate"
+ @row-save="rowSave" @refresh-change="refreshChange" @row-del="rowDel" @search-change="searchChange"
+ @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+ @size-change="sizeChange" @on-load="onLoad">
+ <template #menu-left>
+ <el-button type="success" icon="Edit" :disabled="pageF.single" v-hasPermi="['tms:dispatchFeeSummaryViLog:edit']"
+ @click="handleUpdate">淇敼
+ </el-button>
+ <el-button type="danger" icon="Delete" :disabled="pageF.multiple" @click="handleDelete"
+ v-hasPermi="['tms:dispatchFeeSummaryViLog:remove']">鍒犻櫎
+ </el-button>
+ <el-button type="warning" plain icon="Download" @click="handleExport"
+ v-hasPermi="['tms:dispatchFeeSummaryViLog:export']">瀵煎嚭
+ </el-button>
+ </template>
+ </avue-crud>
+ </basicContainer>
+</template>
+
+<script setup name="dispatchFeeSummaryViLog" lang="ts">
+import { DispatchFeeSummaryViLogI, addDispatchFeeSummaryViLog, delDispatchFeeSummaryViLog, exportDispatchFeeSummaryViLog, getDispatchFeeSummaryViLog, listDispatchFeeSummaryViLog, updateDispatchFeeSummaryViLog } from "@/api/tms/dispatchFeeSummaryViLog";
+import useCurrentInstance from "@/utils/useCurrentInstance";
+import { computed, reactive, ref, toRefs } from "vue";
+import { PagesInterface, PageQueryInterface } from "@/utils/globalInterface";
+import { usePagePlus } from "@/hooks/usePagePlus";
+import { hasPermission } from "@/utils/permissionUtils";
+
+const { proxy } = useCurrentInstance();
+const crudRef = ref();
+
+const permissionList = computed(() => {
+ return {
+ addBtn: hasPermission(["tms:dispatchFeeSummaryViLog:add"]),
+ delBtn: hasPermission(["tms:dispatchFeeSummaryViLog:remove"]),
+ editBtn: hasPermission(["tms:dispatchFeeSummaryViLog:edit"]),
+ viewBtn: hasPermission(["tms:dispatchFeeSummaryViLog:query"]),
+ }
+})
+
+const data = reactive({
+ form: <DispatchFeeSummaryViLogI>{},
+ queryParams: <DispatchFeeSummaryViLogI & PageQueryInterface>{},
+ page: <PagesInterface>{
+ pageSize: 10,
+ total: 0,
+ currentPage: 1,
+ },
+ selectionList: [],
+})
+const { queryParams, form, page, selectionList } = toRefs(data);
+const option = ref({
+ pageKey: 'DispatchFeeSummaryViLog',
+ rowKey: 'id',
+ column: {
+ id: {
+ label: '',
+ },
+ headId: {
+ label: '澶磇d',
+ rules: [
+ {
+ required: true,
+ message: "澶磇d涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
+ },
+ createBy: {
+ label: '鍒涘缓鑰�',
+ },
+ createTime: {
+ label: '鍒涘缓鏃堕棿',
+ },
+ notes: {
+ label: '澶囨敞',
+ type: 'textarea', minRows: 3, maxRows: 5,
+ },
+ }
+})
+
+const { tableData, pageF, rowSave, rowUpdate, rowDel, beforeOpen, searchChange,
+ searchReset, selectionChange, onLoad, currentChange, sizeChange, handleDelete, handleExport, handleUpdate, refreshChange } = usePagePlus({
+ form: form,
+ option: option,
+ queryParams: queryParams,
+ idKey: 'id',
+ page: page.value,
+ getListApi: listDispatchFeeSummaryViLog,
+ getDetailApi: getDispatchFeeSummaryViLog,
+ exportApi: exportDispatchFeeSummaryViLog,
+ deleteApi: delDispatchFeeSummaryViLog,
+ addApi: addDispatchFeeSummaryViLog,
+ updateApi: updateDispatchFeeSummaryViLog,
+ handleUpdateFunc: () => {
+ crudRef.value.rowEdit(selectionList.value[0]);
+ },
+ handleSelectionChangeFunc: (selection: any) => {
+ selectionList.value = selection;
+ }
+ })
+
+
+</script>
diff --git a/ui/admin-ui3/src/views/tms/tmsDispatchFeeSummary/index.vue b/ui/admin-ui3/src/views/tms/tmsDispatchFeeSummary/index.vue
index 52983c7..9091197 100644
--- a/ui/admin-ui3/src/views/tms/tmsDispatchFeeSummary/index.vue
+++ b/ui/admin-ui3/src/views/tms/tmsDispatchFeeSummary/index.vue
@@ -1,95 +1,80 @@
<template>
<basicContainer>
- <avue-crud
- :option="option"
- :table-loading="pageF.loading"
- :data="tableData"
- :page="page"
- :permission="permissionList"
- :before-open="beforeOpen"
- v-model="form" v-model:search="queryParams"
- ref="crudRef"
- @refresh-change="refreshChange"
- @search-change="searchChange"
- @search-reset="searchReset"
- @selection-change="selectionChange"
- @current-change="currentChange"
- @size-change="sizeChange"
- @on-load="onLoad"
- >
+ <avue-crud :option="option" :table-loading="pageF.loading" :data="tableData" :page="page"
+ :permission="permissionList" :before-open="beforeOpen" v-model="form" v-model:search="queryParams" ref="crudRef"
+ @refresh-change="refreshChange" @search-change="searchChange" @search-reset="searchReset"
+ @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange" @on-load="onLoad">
+ <template #remark="{ row }">
+ <el-input v-model="row.remark" readonly placeholder="鏆傛棤澶囨敞" @click="handleRemarkClick(row)"
+ style="cursor: pointer;" />
+ </template>
<template #menu-left>
- <el-button
- type="warning"
- plain
- icon="Download"
- @click="handleExport"
- v-hasPermi="['tms:tmsDriver:export']"
- >瀵煎嚭
+ <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['tms:tmsDriver:export']">瀵煎嚭
</el-button>
</template>
- <template #address="{row}">
- <div class="hot" @click="handleLogItinerary(row)">
- <div>璧凤細{{row.shipperRegionLabel?.split('/').pop()}}({{row.shipperAddress}})</div>
- <div>鎶碉細{{row.receiverRegionLabel?.split('/').pop()}}({{row.receiverAddress}})</div>
- </div>
+ <template #address="{ row }">
+ <div class="hot" @click="handleLogItinerary(row)">
+ <div>璧凤細{{ row.shipperRegionLabel?.split('/').pop() }}({{ row.shipperAddress }})</div>
+ <div>鎶碉細{{ row.receiverRegionLabel?.split('/').pop() }}({{ row.receiverAddress }})</div>
+ </div>
</template>
- <template #license="{row}">
- <div>{{row.licensePlate}}</div>
- <div>{{row.licenseHk}}</div>
- <div>{{row.licenseMo}}</div>
+ <template #license="{ row }">
+ <div>{{ row.licensePlate }}</div>
+ <div>{{ row.licenseHk }}</div>
+ <div>{{ row.licenseMo }}</div>
</template>
- <template #shelfCodeAndContainerNo="{row}">
- <div>{{row.shelfCode}}</div>
- <div>{{row.containerNo}}</div>
+ <template #shelfCodeAndContainerNo="{ row }">
+ <div>{{ row.shelfCode }}</div>
+ <div>{{ row.containerNo }}</div>
</template>
- <template #pShippingFee="{row}">
- <div v-if="row.rshippingFeeRmb">{{row.rshippingFeeRmb}}RMB</div>
- <div v-if="row.rshippingFeeHkd">{{row.rshippingFeeHkd}}HKD</div>
+ <template #pShippingFee="{ row }">
+ <div v-if="row.rshippingFeeRmb">{{ row.rshippingFeeRmb }}RMB</div>
+ <div v-if="row.rshippingFeeHkd">{{ row.rshippingFeeHkd }}HKD</div>
</template>
- <template #pServerFee="{row}">
- <div v-if="row.pserverFeeRmb">{{row.pserverFeeRmb}}RMB</div>
- <div v-if="row.pserverFeeHkd">{{row.pserverFeeHkd}}HKD</div>
+ <template #pServerFee="{ row }">
+ <div v-if="row.pserverFeeRmb">{{ row.pserverFeeRmb }}RMB</div>
+ <div v-if="row.pserverFeeHkd">{{ row.pserverFeeHkd }}HKD</div>
</template>
- <template #pActualFee="{row}">
- <div v-if="row.pactualFeeRmb">{{row.pactualFeeRmb}}RMB</div>
- <div v-if="row.pactualFeeHkd">{{row.pactualFeeHkd}}HKD</div>
+ <template #pActualFee="{ row }">
+ <div v-if="row.pactualFeeRmb">{{ row.pactualFeeRmb }}RMB</div>
+ <div v-if="row.pactualFeeHkd">{{ row.pactualFeeHkd }}HKD</div>
</template>
- <template #pTotal="{row}">
+ <template #pTotal="{ row }">
<div class="hot" @click="handlePayableFeeView(row)">
- <div v-if="row.ptotalRmb">{{row.ptotalRmb}}RMB</div>
- <div v-if="row.ptotalHkd">{{row.ptotalHkd}}HKD</div>
+ <div v-if="row.ptotalRmb">{{ row.ptotalRmb }}RMB</div>
+ <div v-if="row.ptotalHkd">{{ row.ptotalHkd }}HKD</div>
</div>
</template>
- <template #rShippingFee="{row}">
- <div v-if="row.rshippingFeeRmb">{{row.rshippingFeeRmb}}RMB</div>
- <div v-if="row.rshippingFeeHkd">{{row.rshippingFeeRmb}}HKD</div>
+ <template #rShippingFee="{ row }">
+ <div v-if="row.rshippingFeeRmb">{{ row.rshippingFeeRmb }}RMB</div>
+ <div v-if="row.rshippingFeeHkd">{{ row.rshippingFeeRmb }}HKD</div>
</template>
- <template #rServerFee="{row}">
- <div v-if="row.rserverFeeRmb">{{row.rserverFeeRmb}}RMB</div>
- <div v-if="row.rserverFeeHkd ">{{row.rserverFeeHkd}}HKD</div>
+ <template #rServerFee="{ row }">
+ <div v-if="row.rserverFeeRmb">{{ row.rserverFeeRmb }}RMB</div>
+ <div v-if="row.rserverFeeHkd">{{ row.rserverFeeHkd }}HKD</div>
</template>
- <template #rActualFee="{row}">
- <div v-if="row.ractualFeeRmb">{{row.ractualFeeRmb}}RMB</div>
- <div v-if="row.ractualFeeHkd">{{row.ractualFeeHkd}}HKD</div>
+ <template #rActualFee="{ row }">
+ <div v-if="row.ractualFeeRmb">{{ row.ractualFeeRmb }}RMB</div>
+ <div v-if="row.ractualFeeHkd">{{ row.ractualFeeHkd }}HKD</div>
</template>
- <template #rTotal="{row}">
+ <template #rTotal="{ row }">
<div class="hot" @click="handleReceivableFeeView(row)">
- <div v-if="row.rtotalRmb">{{row.rtotalRmb}}RMB</div>
- <div v-if="row.rtotalHkd">{{row.rtotalHkd}}HKD</div>
+ <div v-if="row.rtotalRmb">{{ row.rtotalRmb }}RMB</div>
+ <div v-if="row.rtotalHkd">{{ row.rtotalHkd }}HKD</div>
</div>
</template>
- <template #grossProfit="{row}">
- <div v-if="row.grossProfitRmb">{{row.grossProfitRmb}}RMB</div>
- <div v-if="row.grossProfitHkd">{{row.grossProfitHkd}}HKD</div>
+ <template #grossProfit="{ row }">
+ <div v-if="row.grossProfitRmb">{{ row.grossProfitRmb }}RMB</div>
+ <div v-if="row.grossProfitHkd">{{ row.grossProfitHkd }}HKD</div>
</template>
- <template #grossProfitRadio="{row}">
- <div v-if="row.grossProfitRadioRmb">RMB:{{row.grossProfitRadioRmb}}%</div>
- <div v-if="row.grossProfitRadioHkd">HKD:{{row.grossProfitRadioHkd}}%</div>
+ <template #grossProfitRadio="{ row }">
+ <div v-if="row.grossProfitRadioRmb">RMB:{{ row.grossProfitRadioRmb }}%</div>
+ <div v-if="row.grossProfitRadioHkd">HKD:{{ row.grossProfitRadioHkd }}%</div>
</template>
@@ -100,38 +85,32 @@
<el-dialog :title="pageF.title" v-model="pageF.open" class="avue-dialog avue-dialog--top" width="80%">
<div v-if="optionType == 'receivableFee'">
<el-descriptions :column="3" border>
- <el-descriptions-item label="搴旀敹璐圭敤缂栧彿">{{form.systemNo}}</el-descriptions-item>
- <el-descriptions-item label="璋冨害鍗曞彿">{{form.dispatchNo}}</el-descriptions-item>
- <el-descriptions-item label="瀹㈡埛鍚嶇О">{{form.customerName}}</el-descriptions-item>
- <el-descriptions-item label="椤圭洰鍚嶇О">{{form.projectName}}</el-descriptions-item>
- <el-descriptions-item label="璋冨害鍗曠‘瀹氭椂闂�">{{form.dispatchConfirmTime}}</el-descriptions-item>
- <el-descriptions-item label="璐圭敤鐢熸垚鏃堕棿">{{form.costGenerateTime}}</el-descriptions-item>
- <el-descriptions-item label="鍏宠仈璐﹀崟缂栧彿">{{form.billRelationNo}}</el-descriptions-item>
- <el-descriptions-item label="搴旀敹閲戦浜烘皯甯�">{{form.receivableRMBAmount}}</el-descriptions-item>
- <el-descriptions-item label="搴旀敹閲戦娓竵">{{form.receivableHKBAmount}}</el-descriptions-item>
+ <el-descriptions-item label="搴旀敹璐圭敤缂栧彿">{{ form.systemNo }}</el-descriptions-item>
+ <el-descriptions-item label="璋冨害鍗曞彿">{{ form.dispatchNo }}</el-descriptions-item>
+ <el-descriptions-item label="瀹㈡埛鍚嶇О">{{ form.customerName }}</el-descriptions-item>
+ <el-descriptions-item label="椤圭洰鍚嶇О">{{ form.projectName }}</el-descriptions-item>
+ <el-descriptions-item label="璋冨害鍗曠‘瀹氭椂闂�">{{ form.dispatchConfirmTime }}</el-descriptions-item>
+ <el-descriptions-item label="璐圭敤鐢熸垚鏃堕棿">{{ form.costGenerateTime }}</el-descriptions-item>
+ <el-descriptions-item label="鍏宠仈璐﹀崟缂栧彿">{{ form.billRelationNo }}</el-descriptions-item>
+ <el-descriptions-item label="搴旀敹閲戦浜烘皯甯�">{{ form.receivableRMBAmount }}</el-descriptions-item>
+ <el-descriptions-item label="搴旀敹閲戦娓竵">{{ form.receivableHKBAmount }}</el-descriptions-item>
</el-descriptions>
<h3>璐圭敤鏄庣粏</h3>
</div>
- <avue-crud
- :option="boxTableOption" ref="itemsTableRef"
- :data="boxTableData"
- >
- <template #expand="{row}">
- <avue-crud
- :option="boxItemTableOption" ref="itemsTableRef2"
- :data="row.payableFeeItems"
- >
+ <avue-crud :option="boxTableOption" ref="itemsTableRef" :data="boxTableData">
+ <template #expand="{ row }">
+ <avue-crud :option="boxItemTableOption" ref="itemsTableRef2" :data="row.payableFeeItems">
</avue-crud>
</template>
- <template #receivableAmount="{row}">
- <div v-if="row.receivableAmountRMB > 0">{{row.receivableAmountRMB}}浜烘皯甯�</div>
- <div v-if="row.receivableAmountHKD > 0">{{row.receivableAmountHKD}}娓竵</div>
+ <template #receivableAmount="{ row }">
+ <div v-if="row.receivableAmountRMB > 0">{{ row.receivableAmountRMB }}浜烘皯甯�</div>
+ <div v-if="row.receivableAmountHKD > 0">{{ row.receivableAmountHKD }}娓竵</div>
</template>
- <template #payableAmount="{row}">
- <div v-if="row.payableRmbAmount > 0">{{row.payableRmbAmount}}浜烘皯甯�</div>
- <div v-if="row.payableHkbAmount > 0">{{row.payableHkbAmount}}娓竵</div>
+ <template #payableAmount="{ row }">
+ <div v-if="row.payableRmbAmount > 0">{{ row.payableRmbAmount }}浜烘皯甯�</div>
+ <div v-if="row.payableHkbAmount > 0">{{ row.payableHkbAmount }}娓竵</div>
</template>
</avue-crud>
@@ -143,23 +122,38 @@
</template>
</el-dialog>
+ <el-dialog :title="remarkBox.title" v-model="remarkBox.open" width="500px">
+ <div style="margin-bottom: 20px;">
+ <el-input v-model="remarkBox.content" type="textarea" :rows="4" placeholder="璇疯緭鍏ュ娉ㄥ唴瀹�" />
+ <div style="margin-top: 15px; text-align: right;">
+ <el-button @click="remarkBox.open = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitRemark">纭� 瀹�</el-button>
+ </div>
+ </div>
+
+ <el-table :data="remarkBox.list" border stripe size="small">
+ <el-table-column prop="createTime" label="鎿嶄綔鏃堕棿" width="160" />
+ <el-table-column prop="createBy" label="鎿嶄綔浜�" width="100" />
+ <el-table-column prop="notes" label="澶囨敞鍐呭" />
+ </el-table>
+ </el-dialog>
</template>
<script setup name="tmsDriver" lang="ts">
import {
- listTmsDispatchFeeSummaryVi,exportTmsDispatchFeeSummaryVi
+ listTmsDispatchFeeSummaryVi, exportTmsDispatchFeeSummaryVi, tmsDispatchFeeSummaryViNote
} from "@/api/tms/tmsDispatchFeeSummary";
import useCurrentInstance from "@/utils/useCurrentInstance";
-import {computed, onMounted, reactive, ref, toRefs, watch} from "vue";
-import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
-import {usePagePlus} from "@/hooks/usePagePlus";
-import {hasPermission} from "@/utils/permissionUtils";
-import {getTmsServiceProvider, listTmsServiceProvider} from "@/api/tms/tmsServiceProvider";
-import {listTmsTrip} from "@/api/tms/tmsTrip";
-import {getTmsReceivableFeeByDispatchNo} from "@/api/tms/tmsReceivableFee";
-import {getTmsPayableFeeByDispatchNo} from "@/api/tms/tmsPayableFee";
-
-const {proxy} = useCurrentInstance();
+import { computed, onMounted, reactive, ref, toRefs, watch } from "vue";
+import { PagesInterface, PageQueryInterface } from "@/utils/globalInterface";
+import { usePagePlus } from "@/hooks/usePagePlus";
+import { hasPermission } from "@/utils/permissionUtils";
+import { getTmsServiceProvider, listTmsServiceProvider } from "@/api/tms/tmsServiceProvider";
+import { listTmsTrip } from "@/api/tms/tmsTrip";
+import { getTmsReceivableFeeByDispatchNo } from "@/api/tms/tmsReceivableFee";
+import { getTmsPayableFeeByDispatchNo } from "@/api/tms/tmsPayableFee";
+import { listDispatchFeeSummaryViLog } from "@/api/tms/dispatchFeeSummaryViLog";
+const { proxy } = useCurrentInstance();
const crudRef = ref();
const permissionList = computed(() => {
@@ -180,12 +174,12 @@
currentPage: 1,
},
selectionList: [],
- boxTableOption:<any>{},
- boxTableData:<any>[],
- optionType:<any>{},
- boxItemTableOption:{},
+ boxTableOption: <any>{},
+ boxTableData: <any>[],
+ optionType: <any>{},
+ boxItemTableOption: {},
})
-const {queryParams, form, page, selectionList,boxTableOption,boxTableData,optionType,boxItemTableOption} = toRefs(data);
+const { queryParams, form, page, selectionList, boxTableOption, boxTableData, optionType, boxItemTableOption } = toRefs(data);
const option = ref({
pageKey: 'TmsDriver',
rowKey: 'id',
@@ -197,65 +191,72 @@
column: [
{
label: '涓嬪崟淇℃伅',
- children:[
- {label: '涓嬪崟鏃堕棿',prop: 'orderTime',width: 120},
- {label: '涓嬪崟鏃堕棿',prop: 'orderTimeRange',width: 120,search: true, searchRange: true, type: 'date', format: 'YYYY-MM-DD', hide: true, searchSpan: 5, valueFormat: 'YYYY-MM-DD',},
- {label: '瀹㈡埛',prop: 'customerName',width: 180,search: true,},
- {label: '椤圭洰鍚嶇О',prop: 'projectName',width: 180,search: true},
- {label: '杩愯緭璺嚎',prop: 'address',width: 300,search: true},
- {label: '涓嬪崟杞﹀瀷',prop: 'requiredVehicleTypes',width: 120,type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string',search: true},
+ children: [
+ { label: '涓嬪崟鏃堕棿', prop: 'orderTime', width: 120 },
+ { label: '涓嬪崟鏃堕棿', prop: 'orderTimeRange', width: 120, search: true, searchRange: true, type: 'date', format: 'YYYY-MM-DD', hide: true, searchSpan: 5, valueFormat: 'YYYY-MM-DD', },
+ { label: '瀹㈡埛', prop: 'customerName', width: 180, search: true, },
+ { label: '椤圭洰鍚嶇О', prop: 'projectName', width: 180, search: true },
+ { label: '杩愯緭璺嚎', prop: 'address', width: 300, search: true },
+ { label: '涓嬪崟杞﹀瀷', prop: 'requiredVehicleTypes', width: 120, type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string', search: true },
]
},
{
+ label: '澶囨敞',
+ prop: 'remark',
+ width: 120,
+ slot: true, // 寮�鍚嚜瀹氫箟鎻掓Ы
+ },
+ {
label: '娲捐溅淇℃伅',
- children:[
- {label: '璋冨害鍗曞彿',prop: 'dispatchNo',width: 180,search: true,},
- {label: '鐘舵��',prop: 'status',width: 120, type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/tms_dispatch_order_status',search: true
+ children: [
+ { label: '璋冨害鍗曞彿', prop: 'dispatchNo', width: 180, search: true, },
+ {
+ label: '鐘舵��', prop: 'status', width: 120, type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/tms_dispatch_order_status', search: true
},
- {label: '鎵胯繍鍟�',prop: 'providerName',width: 180,search: true},
- {label: '杞︾墝',prop: 'license',width: 120},
- {label: '鍙告満',prop: 'mainDriverName',width: 120},
- {label: '鎵胯繍杞﹀瀷',prop: 'actualVehicleType',width: 120,type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string',search: true},
+ { label: '鎵胯繍鍟�', prop: 'providerName', width: 180, search: true },
+ { label: '杞︾墝', prop: 'license', width: 120 },
+ { label: '鍙告満', prop: 'mainDriverName', width: 120 },
+ { label: '鎵胯繍杞﹀瀷', prop: 'actualVehicleType', width: 120, type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string', search: true },
]
},
{
label: '鎵胯繍淇℃伅',
- children:[
- {label: '鎵樻灦/鏌滃彿',prop: 'shelfCodeAndContainerNo',width: 120},
- {label: '鍙e哺',prop: 'port',width: 120},
- {label: '鏃犵紳渚涘簲鍟�',prop: 'seamlessSupplierName',width: 120},
- {label: '鏃犵紳鍙�',prop: 'seamlessNumber',width: 120},
- {label: '鏌ラ獙',prop: 'iscc',width: 120,type: 'select', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',},
- {label: '鎶ュ叧鏈嶅姟鍟�',prop: 'customsServiceProviderName',width: 120,search: true},
- {label: '瑁呭嵏鏈嶅姟鍟�',prop: 'loadingServiceProviderName',width: 120,search: true},
+ children: [
+ { label: '鎵樻灦/鏌滃彿', prop: 'shelfCodeAndContainerNo', width: 120 },
+ { label: '鍙e哺', prop: 'port', width: 120 },
+ { label: '鏃犵紳渚涘簲鍟�', prop: 'seamlessSupplierName', width: 120 },
+ { label: '鏃犵紳鍙�', prop: 'seamlessNumber', width: 120 },
+ { label: '鏌ラ獙', prop: 'iscc', width: 120, type: 'select', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string', },
+ { label: '鎶ュ叧鏈嶅姟鍟�', prop: 'customsServiceProviderName', width: 120, search: true },
+ { label: '瑁呭嵏鏈嶅姟鍟�', prop: 'loadingServiceProviderName', width: 120, search: true },
]
- },{
+ }, {
label: '搴斾粯',
- children:[
- {label: '杩愯垂',prop: 'pShippingFee',width: 120},
- {label: '澧炲�兼湇鍔�',prop: 'pServerFee',width: 120},
- {label: '瀹炴姤瀹為攢',prop: 'pActualFee',width: 120},
- {label: '搴斾粯灏忚',prop: 'pTotal',width: 120},
+ children: [
+ { label: '杩愯垂', prop: 'pShippingFee', width: 120 },
+ { label: '澧炲�兼湇鍔�', prop: 'pServerFee', width: 120 },
+ { label: '瀹炴姤瀹為攢', prop: 'pActualFee', width: 120 },
+ { label: '搴斾粯灏忚', prop: 'pTotal', width: 120 },
]
- },{
+ }, {
label: '搴旀敹',
- children:[
- {label: '杩愯垂',prop: 'rShippingFee',width: 120},
- {label: '澧炲�兼湇鍔�',prop: 'rServerFee',width: 120},
- {label: '瀹炴姤瀹為攢',prop: 'rActualFee',width: 120},
- {label: '搴旀敹灏忚',prop: 'rTotal',width: 120},
+ children: [
+ { label: '杩愯垂', prop: 'rShippingFee', width: 120 },
+ { label: '澧炲�兼湇鍔�', prop: 'rServerFee', width: 120 },
+ { label: '瀹炴姤瀹為攢', prop: 'rActualFee', width: 120 },
+ { label: '搴旀敹灏忚', prop: 'rTotal', width: 120 },
]
- },{
+ }, {
label: '鍒╂鼎',
- children:[
- {label: '姣涘埄',prop: 'grossProfit',width: 120},
- {label: '姣涘埄鐜�',prop: 'grossProfitRadio',width: 120},
+ children: [
+ { label: '姣涘埄', prop: 'grossProfit', width: 120 },
+ { label: '姣涘埄鐜�', prop: 'grossProfitRadio', width: 120 },
]
- },{
+ }, {
label: '澶囨敞',
- children:[
- {label: '',prop: 'remark',width: 120},
+ children: [
+ { label: '', prop: 'remark', width: 120 },
]
}
@@ -315,26 +316,26 @@
const YSGenerateItemTableOption = ref({
menu: false,
add: false,
- header:false,
+ header: false,
selection: false,
- rowKey:'rowKey',
+ rowKey: 'rowKey',
- column:{
- feeType:{
+ column: {
+ feeType: {
label: '璐圭敤绫诲瀷',
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/receivable_fee_type',
},
- feeName:{
+ feeName: {
label: '璐圭敤鍚嶇О',
},
- registerTime:{
+ registerTime: {
label: '鐧昏鏃堕棿',
},
- registerAmount:{
+ registerAmount: {
label: '鐧昏閲戦',
},
- currency:{
+ currency: {
label: '甯佸埗',
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
@@ -344,23 +345,23 @@
const YFGenerateTableOption = ref({
menu: false,
add: false,
- header:false,
+ header: false,
selection: false,
- expand:true,
- defaultExpandAll:true,
- rowKey:'id',
- column:{
- dispatchNo:{
+ expand: true,
+ defaultExpandAll: true,
+ rowKey: 'id',
+ column: {
+ dispatchNo: {
label: '璋冨害鍗曞彿',
},
- serviceProviderType:{
+ serviceProviderType: {
label: '鏈嶅姟鍟嗙被鍨�',
type: 'radio', dicUrl: '/system/dict/data/type/provider_type', dataType: 'string',
},
- serviceProviderName:{
+ serviceProviderName: {
label: '鏈嶅姟鍟嗗悕绋�',
},
- payableAmount:{
+ payableAmount: {
label: '搴斾粯璐圭敤',
}
}
@@ -368,26 +369,26 @@
const YFGenerateItemTableOption = ref({
menu: false,
add: false,
- header:false,
+ header: false,
selection: false,
- rowKey:'rowKey',
+ rowKey: 'rowKey',
- column:{
- feeType:{
+ column: {
+ feeType: {
label: '璐圭敤绫诲瀷',
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/receivable_fee_type',
},
- feeName:{
+ feeName: {
label: '璐圭敤鍚嶇О',
},
- registerTime:{
+ registerTime: {
label: '鐧昏鏃堕棿',
},
- registerAmount:{
+ registerAmount: {
label: '鐧昏閲戦',
},
- currency:{
+ currency: {
label: '甯佸埗',
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
@@ -425,7 +426,7 @@
handleSelectionChangeFunc: (selection: any) => {
selectionList.value = selection;
},
- getBeginListFunc:(params = {})=>{
+ getBeginListFunc: (params = {}) => {
queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.orderTimeRange, 'orderTime') || {};
return params;
}
@@ -433,9 +434,9 @@
const handleLogItinerary = (row: any) => {
optionType.value = 'view';
boxTableOption.value = itineraryTableOption.value;
- listTmsTrip({dispatchOrderId: row.dispatchId, pageNum: 1, pageSize: 999}).then(res => {
+ listTmsTrip({ dispatchOrderId: row.dispatchId, pageNum: 1, pageSize: 999 }).then(res => {
boxTableData.value = res.rows || [];
- pageF.open = true;
+ pageF.open = true;
pageF.title = '鏌ョ湅琛岀▼';
})
}
@@ -443,7 +444,7 @@
const handleReceivableFeeView = (row: any) => {
optionType.value = 'receivableFee';
boxTableOption.value = YSGenerateItemTableOption.value;
- getTmsReceivableFeeByDispatchNo(row.dispatchNo).then(res=>{
+ getTmsReceivableFeeByDispatchNo(row.dispatchNo).then(res => {
form.value = res.data || {};
boxTableData.value = form.value.items || [];
pageF.open = true;
@@ -455,7 +456,7 @@
optionType.value = 'payableFee';
boxTableOption.value = YFGenerateTableOption.value;
boxItemTableOption.value = YFGenerateItemTableOption.value;
- getTmsPayableFeeByDispatchNo(row.dispatchNo).then(res=>{
+ getTmsPayableFeeByDispatchNo(row.dispatchNo).then(res => {
boxTableData.value = res.data || [];
pageF.open = true;
pageF.title = '搴斾粯璐圭敤鏄庣粏';
@@ -464,16 +465,65 @@
})
}
+// 鎺у埗澶囨敞寮圭獥鏄剧ず
+const remarkBox = reactive({
+ open: false,
+ title: '澶囨敞璁板綍',
+ content: '', // 鏂板澶囨敞鐨勫唴瀹�
+ list: [] // 澶囨敞鍘嗗彶鍒楄〃
+});
+const activeRow = ref({}); // 褰撳墠鎿嶄綔鐨勮
+
+// 鐐瑰嚮澶囨敞鍒楄Е鍙�
+const handleRemarkClick = (row) => {
+ activeRow.value = row;
+ remarkBox.content = ''; // 娓呯┖杈撳叆妗�
+ remarkBox.open = true;
+ remarkBox.list = [
+ ];
+ listDispatchFeeSummaryViLog({ headId: row.dispatchId }).then(res => remarkBox.list = res.rows || []);
+ // getRemarkHistory(row.id).then(res => remarkBox.list = res.data);
+
+};
+
+// 寮圭獥鐐瑰嚮纭畾鐨勯�昏緫
+const submitRemark = () => {
+ if (!remarkBox.content) {
+ // return ElMessage.warning('璇疯緭鍏ュ娉ㄥ唴瀹�');
+ return proxy.$modal.msgWarning("璇疯緭鍏ュ娉ㄥ唴瀹�");
+
+ }
+ // 鏇存柊鍓嶇琛ㄦ牸鏄剧ず锛堝疄闄呭簲璋冪敤淇濆瓨鎺ュ彛鍚庡埛鏂帮級
+
+ // 璋冪敤鍚庣鎺ュ彛绀轰緥锛�
+ // saveRemark({ id: activeRow.value.id, remark: remarkBox.content }).then(...)
+ tmsDispatchFeeSummaryViNote({ dispatchId: activeRow.value.dispatchId, remark: remarkBox.content }).then((res) => {
+ if (res.code == 200) {
+ // remarkBox.open = false;
+ listDispatchFeeSummaryViLog({ headId: activeRow.value.dispatchId }).then((res1) => {
+ if (res1.code == 200) {
+ remarkBox.list = res1.rows || [];
+ remarkBox.content = ''; // 娓呯┖杈撳叆妗�
+ proxy.$modal.msgSuccess(res.msg);
+
+ }
+ });
+ // activeRow.value.remark = remarkBox.content; // 鏇存柊琛ㄦ牸鏄剧ず
+ }
+ // ElMessage.success('澶囨敞宸叉洿鏂�');
+ });
+};
</script>
<style scoped lang="scss">
-.hot{
+.hot {
cursor: pointer;
text-align: left;
color: #409eff;
- &:hover{
- color: #f0ad4e;
+
+ &:hover {
+ color: #f0ad4e;
}
}
</style>
diff --git a/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue b/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
index 051f5ba..a90207d 100644
--- a/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
+++ b/ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
@@ -1,25 +1,10 @@
<template>
<basicContainer>
- <avue-crud
- :option="option"
- :table-loading="pageF.loading"
- :data="tableData"
- :page="page"
- :permission="permissionList"
- :before-open="beforeOpen"
- v-model="form" v-model:search="queryParams"
- ref="crudRef"
- @row-update="rowUpdate"
- @row-save="rowSave"
- @refresh-change="refreshChange"
- @row-del="rowDel"
- @search-change="searchChange"
- @search-reset="searchReset"
- @selection-change="selectionChange"
- @current-change="currentChange"
- @size-change="sizeChange"
- @on-load="onLoad"
- >
+ <avue-crud :option="option" :table-loading="pageF.loading" :data="tableData" :page="page"
+ :permission="permissionList" :before-open="beforeOpen" v-model="form" v-model:search="queryParams" ref="crudRef"
+ @row-update="rowUpdate" @row-save="rowSave" @refresh-change="refreshChange" @row-del="rowDel"
+ @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+ @current-change="currentChange" @size-change="sizeChange" @on-load="onLoad">
<template #menu-left>
<!-- <el-button-->
<!-- type="success"-->
@@ -36,184 +21,161 @@
<!-- v-hasPermi="['tms:tmsDispatchOrder:remove']"-->
<!-- >鍒犻櫎-->
<!-- </el-button>-->
- <el-button
- type="warning"
- plain
- icon="Download"
- @click="handleExport"
- v-hasPermi="['tms:tmsDispatchOrder:export']"
- >瀵煎嚭
+ <el-button type="warning" plain icon="Download" @click="handleExport"
+ v-hasPermi="['tms:tmsDispatchOrder:export']">瀵煎嚭
</el-button>
- <el-button
- type="info"
- icon="Upload"
- @click="handleImport"
- v-hasPermi="['tms:tmsDispatchOrder:import']">瀵煎叆</el-button>
-<!-- <el-button-->
-<!-- type="success"-->
-<!-- icon="Promotion"-->
-<!-- :disabled="pageF.multiple"-->
-<!-- @click="handleGenerate"-->
-<!-- v-hasPermi="['tms:tmsDispatchOrder:generate']"-->
-<!-- >鐢熸垚搴旀敹搴斾粯璐圭敤-->
-<!-- </el-button>-->
- <el-button
- type="warning"
- icon="Female"
- :disabled="pageF.single"
- @click="handleDropHook"
- v-hasPermi="['tms:tmsDispatchOrder:dropHook']"
- >鐢╂寕
+ <el-button type="info" icon="Upload" @click="handleImport"
+ v-hasPermi="['tms:tmsDispatchOrder:import']">瀵煎叆</el-button>
+ <el-button type="info" plain icon="Document" @click="handleImportLog">瀵煎叆鏃ュ織</el-button>
+ <!-- <el-button-->
+ <!-- type="success"-->
+ <!-- icon="Promotion"-->
+ <!-- :disabled="pageF.multiple"-->
+ <!-- @click="handleGenerate"-->
+ <!-- v-hasPermi="['tms:tmsDispatchOrder:generate']"-->
+ <!-- >鐢熸垚搴旀敹搴斾粯璐圭敤-->
+ <!-- </el-button>-->
+ <el-button type="warning" icon="Female" :disabled="pageF.single" @click="handleDropHook"
+ v-hasPermi="['tms:tmsDispatchOrder:dropHook']">鐢╂寕
</el-button>
- <el-button
- type="primary"
- icon="Male"
- :disabled="pageF.single"
- @click="handleConnectHang"
- v-hasPermi="['tms:tmsDispatchOrder:connectHang']"
- >鎺ユ寕
+ <el-button type="primary" icon="Male" :disabled="pageF.single" @click="handleConnectHang"
+ v-hasPermi="['tms:tmsDispatchOrder:connectHang']">鎺ユ寕
</el-button>
- <el-button
- type="warning"
- icon="Avatar"
- :disabled="!( isCustoms == 0)"
- @click="handleCustoms"
- v-hasPermi="['tms:tmsDispatchOrder:customs']"
- >濮旀墭鎶ュ叧淇℃伅
+ <el-button type="warning" icon="Avatar" :disabled="!(isCustoms == 0)" @click="handleCustoms"
+ v-hasPermi="['tms:tmsDispatchOrder:customs']">濮旀墭鎶ュ叧淇℃伅
</el-button>
- <el-button
- type="primary"
- icon="UserFilled"
- :disabled="!( isLoad == 0)"
- @click="handleLoading"
- v-hasPermi="['tms:tmsDispatchOrder:loading']"
- >濮旀墭鍗歌揣淇℃伅
+ <el-button type="primary" icon="UserFilled" :disabled="!(isLoad == 0)" @click="handleLoading"
+ v-hasPermi="['tms:tmsDispatchOrder:loading']">濮旀墭鍗歌揣淇℃伅
</el-button>
- <el-button
- type="primary"
- icon="UserFilled"
- :disabled="pageF.single"
- @click="handleZZ"
- v-hasPermi="['tms:tmsDispatchOrder:zzdj']"
- >澧炲�间綔涓氱櫥璁�
+ <el-button type="primary" icon="UserFilled" :disabled="pageF.single" @click="handleZZ"
+ v-hasPermi="['tms:tmsDispatchOrder:zzdj']">澧炲�间綔涓氱櫥璁�
</el-button>
- <el-button
- type="primary"
- icon="Printer"
- :disabled="pageF.single"
- @click="handlePrint"
- v-hasPermi="['tms:tmsDispatchOrder:print']"
- >鎵胯繍鍗曟墦鍗�
+ <el-button type="primary" icon="Printer" :disabled="pageF.single" @click="handlePrint"
+ v-hasPermi="['tms:tmsDispatchOrder:print']">鎵胯繍鍗曟墦鍗�
</el-button>
- <el-button
- type="primary"
- icon="UserFilled"
- :disabled="!zxhdjSingle"
- @click="handleZXHDJ"
- v-hasPermi="['tms:tmsDispatchOrder:zzdj']"
- >瑁呭嵏璐х偣鐧昏
+ <el-button type="primary" icon="UserFilled" :disabled="!zxhdjSingle" @click="handleZXHDJ"
+ v-hasPermi="['tms:tmsDispatchOrder:zzdj']">瑁呭嵏璐х偣鐧昏
</el-button>
- </template>
- <template #menu-before="{row}">
- <el-link size="small" type="primary" @click="handleAddGoods(row)" class="link-btn"
- v-hasPermi="['tms:tmsGoodsDetail:add']" v-if="[0,1,2].includes(row.status)"
- :underline="false" icon="el-icon-document-add">杩愯緭璐у搧鐧昏
- </el-link>
- <el-link size="small" type="primary" @click="handleActual(row)" class="link-btn"
- v-hasPermi="['tms:tmsDispatchOrder:update']" v-if="[0,1,2].includes(row.status)"
- :underline="false" icon="el-icon-set-up">瀹為檯杩愯緭璁板綍
- </el-link>
- <el-link size="small" type="primary" v-if="row.status == 0" @click="handleConfirm(row)" class="link-btn"
- v-hasPermi="['tms:tmsDispatchOrder:confirmOrder']"
- :underline="false" icon="el-icon-pointer">纭畾
- </el-link>
- <el-link size="small" type="primary" v-if="[0,1,2].includes(row.status)" @click="handleClose(row)" class="link-btn"
- v-hasPermi="['tms:tmsDispatchOrder:closeOrder']"
- :underline="false" icon="el-icon-close">浣滃簾
- </el-link>
- <el-link size="small" type="primary" @click="handleCopy(row)" class="link-btn" :underline="false"
- v-hasPermi="['tms:tmsDispatchOrder:copyOrder']"
- icon="el-icon-connection">澶嶅埗
- </el-link>
- <el-link size="small" type="primary" v-if="[1,2].includes(row.status)" @click="handleUploadItinerary(row)"
- v-hasPermi="['tms:tmsTrip:add']"
- class="link-btn" :underline="false" icon="el-icon-upload">涓婁紶琛岀▼
- </el-link>
- <el-link size="small" type="primary" v-if="![0,1].includes(row.status)" @click="handleLogItinerary(row)"
- v-hasPermi="['tms:tmsTrip:list']"
- class="link-btn" :underline="false" icon="el-icon-view">鏌ョ湅琛岀▼
- </el-link>
- <el-link size="small" type="primary" v-if="[2].includes(row.status)" @click="handleOk(row)" class="link-btn"
- v-hasPermi="['tms:tmsDispatchOrder:okOrder']"
- :underline="false" icon="el-icon-circle-check">瀹屾垚琛岀▼
- </el-link>
-<!-- <el-link size="small" type="primary" v-if="[2,3].includes(row.status)" @click="handleAddFinance(row)"-->
-<!-- class="link-btn" v-hasPermi="['tms:tmsFinanceDetail:add']"-->
-<!-- :underline="false" icon="el-icon-edit-pen">璐圭敤鐧昏-->
-<!-- </el-link>-->
- </template>
- <template #menu="{row}">
- <el-link size="small" type="primary" @click="handleLog(row)" class="link-btn" :underline="false"
- icon="el-icon-tickets">鏃ュ織
- </el-link>
</template>
- <template #shipperId-form="{disabled}">
+ <template #loadingServiceProviderName="{ row }">
+ <template v-if="String(row.isCustoms).trim() === '0' && !row.loadingServiceProviderName">
+ <el-link type="primary" underline="never" @click="handleCustomsAdd(row)"
+ style="font-weight: bold; cursor: pointer; color: #409eff;">
+ 寰呮坊鍔�
+ </el-link>
+ </template>
+
+ <template v-else>
+ <span>{{ row.loadingServiceProviderName }}</span>
+ </template>
+ </template>
+
+ <!-- 鍗歌揣鏈嶅姟 -->
+ <template #customsServiceProviderName="{ row }">
+ <template v-if="String(row.isLoad).trim() === '0' && !row.customsServiceProviderName">
+ <el-link type="primary" underline="never" @click="handleLoadingAdd(row)"
+ style="font-weight: bold; cursor: pointer; color: #409eff;">
+ 寰呮坊鍔�
+ </el-link>
+ </template>
+
+ <template v-else>
+ <span>{{ row.customsServiceProviderName }}</span>
+ </template>
+ </template>
+
+
+
+ <template #menu="{ row, index, size }">
+ <el-tooltip content="鏌ョ湅" placement="top" :enterable="false">
+ <el-link type="primary" icon="el-icon-view" :underline="false" class="link-btn"
+ @click="$refs.crudRef.rowView(row, index)">
+ </el-link>
+ </el-tooltip>
+
+ <el-tooltip content="缂栬緫" placement="top" :enterable="false">
+ <el-link type="primary" icon="el-icon-edit" :underline="false" class="link-btn"
+ @click="$refs.crudRef.rowEdit(row, index)">
+ </el-link>
+ </el-tooltip>
+
+ </template>
+ <template #menu-before="{ row }">
+ <el-tooltip content="杩愯緭璐у搧鐧昏" placement="top">
+ <el-link size="small" type="primary" @click="handleAddGoods(row)" class="link-btn"
+ v-hasPermi="['tms:tmsGoodsDetail:add']" v-if="[0, 1, 2].includes(row.status)" :underline="false"
+ icon="el-icon-document-add">
+ </el-link>
+ </el-tooltip>
+
+ <el-tooltip content="瀹為檯杩愯緭璁板綍" placement="top">
+ <el-link size="small" type="primary" @click="handleActual(row)" class="link-btn"
+ v-hasPermi="['tms:tmsDispatchOrder:update']" v-if="[0, 1, 2].includes(row.status)" :underline="false"
+ icon="el-icon-set-up">
+ </el-link>
+ </el-tooltip>
+
+ <el-tooltip content="澶嶅埗" placement="top">
+ <el-link size="small" type="primary" @click="handleCopy(row)" class="link-btn" :underline="false"
+ v-hasPermi="['tms:tmsDispatchOrder:copyOrder']" icon="el-icon-connection">
+ </el-link>
+ </el-tooltip>
+ <el-tooltip content="鏃ュ織" placement="top">
+ <el-link size="small" type="primary" @click="handleLog(row)" class="link-btn" :underline="false"
+ icon="el-icon-tickets">
+ </el-link>
+ </el-tooltip>
+ </template>
+
+ <!-- <template #menu="{row}">
+
+</template> -->
+
+ <template #shipperId-form="{ disabled }">
<div style="display:flex; align-items: center;justify-content: space-between">
- <avue-input-table :props="consignorProps" dataType="string"
- :children="consignorOption" :disabled="disabled"
- :on-load="onShipperLoad" suffixIcon="search"
- v-model="form.shipperId" style="width: 80%"
- @change="changeShipper"
- placeholder="璇烽�夋嫨瑁呰揣鐐�"></avue-input-table>
- <el-button icon="plus" :disabled="disabled" @click="handleAddShipper"></el-button>
+ <avue-input-table :props="consignorProps" dataType="string" :children="consignorOption" :disabled="disabled"
+ :on-load="onShipperLoad" suffixIcon="search" v-model="form.shipperId" style="width: 80%"
+ @change="changeShipper" placeholder="璇烽�夋嫨瑁呰揣鐐�"></avue-input-table>
+ <el-button icon="plus" :disabled="disabled" @click="handleAddShipper"></el-button>
</div>
</template>
- <template #receiverId-form="{disabled}">
+ <template #receiverId-form="{ disabled }">
<div style="display:flex; align-items: center;justify-content: space-between">
- <avue-input-table :props="consignorProps"
- :children="consignorOption" dataType="string"
- :on-load="onConsignorLoad" suffixIcon="search"
- v-model="form.receiverId" :disabled="disabled"
- @change="changeReceiver" style="width: 80%"
- placeholder="璇烽�夋嫨鍗歌揣鐐�"></avue-input-table>
- <el-button icon="plus" :disabled="disabled" @click="handleAddReceiver"></el-button>
+ <avue-input-table :props="consignorProps" :children="consignorOption" dataType="string"
+ :on-load="onConsignorLoad" suffixIcon="search" v-model="form.receiverId" :disabled="disabled"
+ @change="changeReceiver" style="width: 80%" placeholder="璇烽�夋嫨鍗歌揣鐐�"></avue-input-table>
+ <el-button icon="plus" :disabled="disabled" @click="handleAddReceiver"></el-button>
</div>
</template>
</avue-crud>
<el-dialog :title="pageF.title" v-model="pageF.open" class="avue-dialog avue-dialog--top" width="80%">
<h2 v-if="optionType == 'addFinance'">鎶ヤ环璐圭敤</h2>
- <avue-crud v-if="optionType == 'addFinance'"
- :option="itemsTableOption"
- :data="itemsTableData"
- @selection-change="selectionChange2"
- >
- <template #count="{row}">
+ <avue-crud v-if="optionType == 'addFinance'" :option="itemsTableOption" :data="itemsTableData"
+ @selection-change="selectionChange2">
+ <template #count="{ row }">
<el-input-number v-model="row.count" @change="countChange(row)" placeholder="璇疯緭鍏ヨ璐规暟閲�"
- min="0"></el-input-number>
+ min="0"></el-input-number>
</template>
</avue-crud>
- <h2 v-if="optionType == 'addFinance'">瀹炴姤瀹為攢璐圭敤</h2>
+ <h2 v-if="optionType == 'addFinance'">瀹炴姤瀹為攢璐圭敤1</h2>
<avue-form v-if="optionType == 'addItinerary' || optionType == 'addFinance'" v-model="boxForm" ref="boxFormRef"
- :option="boxFormOption">
+ :option="boxFormOption">
</avue-form>
- <avue-crud
- :option="boxTableOption"
- :data="boxTableData"
- >
+ <avue-crud :option="boxTableOption" :data="boxTableData">
</avue-crud>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" v-if="optionType == 'addItinerary' || optionType == 'addFinance'"
- :loading="pageF.isUploading" @click="submitForm">
+ :loading="pageF.isUploading" @click="submitForm">
{{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�' }}
</el-button>
- <el-button type="primary" v-if="optionType == 'generate' " :loading="pageF.isUploading"
- @click="submitGenerate">
+ <el-button type="primary" v-if="optionType == 'generate'" :loading="pageF.isUploading"
+ @click="submitGenerate">
{{ pageF.isUploading ? '鐢熸垚涓�' : '鐢熸垚璐圭敤' }}
</el-button>
<el-button @click="cancelBox">鍙� 娑�</el-button>
@@ -223,10 +185,7 @@
<el-dialog :title="title" v-model="open" class="avue-dialog avue-dialog--top" width="40%">
<div v-if="optionType === 'dropHook'">
- <el-descriptions
- :column="2"
- border
- >
+ <el-descriptions :column="2" border>
<el-descriptions-item label="璋冨害鍗曞彿">{{ form.dispatchNo }}</el-descriptions-item>
<el-descriptions-item label="瀹㈡埛">{{ form.customerName }}</el-descriptions-item>
<el-descriptions-item label="娲惧嚭杞﹀瀷">{{ form.$actualVehicleType }}</el-descriptions-item>
@@ -237,10 +196,7 @@
</el-descriptions>
</div>
<div v-if="optionType == 'connectHang'">
- <el-descriptions style="margin-bottom: 20px"
- :column="2"
- border
- >
+ <el-descriptions style="margin-bottom: 20px" :column="2" border>
<el-descriptions-item label="璋冨害鍗曞彿">{{ form.dispatchNo }}</el-descriptions-item>
<el-descriptions-item label="瀹㈡埛">{{ form.customerName }}</el-descriptions-item>
<el-descriptions-item label="娲惧嚭杞﹀瀷">{{ form.$actualVehicleType }}</el-descriptions-item>
@@ -252,10 +208,7 @@
</div>
<div v-if="optionType == 'customs'">
- <el-descriptions style="margin-bottom: 20px"
- :column="2"
- border
- >
+ <el-descriptions style="margin-bottom: 20px" :column="2" border>
<el-descriptions-item label="璋冨害鍗曞彿">{{ form.dispatchNo }}</el-descriptions-item>
<el-descriptions-item label="瀹㈡埛">{{ form.customerName }}</el-descriptions-item>
<el-descriptions-item label="椤圭洰鍚嶇О">{{ form.projectName }}</el-descriptions-item>
@@ -267,10 +220,7 @@
</div>
<div v-if="optionType == 'loading'">
- <el-descriptions style="margin-bottom: 20px"
- :column="2"
- border
- >
+ <el-descriptions style="margin-bottom: 20px" :column="2" border>
<el-descriptions-item label="璋冨害鍗曞彿">{{ form.dispatchNo }}</el-descriptions-item>
<el-descriptions-item label="瀹㈡埛">{{ form.customerName }}</el-descriptions-item>
<el-descriptions-item label="椤圭洰鍚嶇О">{{ form.projectName }}</el-descriptions-item>
@@ -292,14 +242,8 @@
<el-dialog title="璐у搧淇℃伅鐧昏" v-model="open2" class="avue-dialog avue-dialog--top" width="80%">
- <avue-crud
- :option="goodsTableOption"
- v-model="goodsForm"
- @row-update="rowGoodsUpdate"
- @row-save="rowGoodsSave"
- @row-del="rowGoodsDel"
- :data="goodsTableData" ref="goodsCrudRef"
- >
+ <avue-crud :option="goodsTableOption" v-model="goodsForm" @row-update="rowGoodsUpdate" @row-save="rowGoodsSave"
+ @row-del="rowGoodsDel" :data="goodsTableData" ref="goodsCrudRef">
</avue-crud>
<!-- <template #footer>-->
<!-- <div class="dialog-footer">-->
@@ -312,9 +256,7 @@
</el-dialog>
<el-dialog title="瀹為檯杩愯緭淇℃伅" v-model="open3" class="avue-dialog avue-dialog--top" width="80%">
- <avue-form v-model="actualForm"
- ref="actualFormRef"
- :option="actualFormOption">
+ <avue-form v-model="actualForm" ref="actualFormRef" :option="actualFormOption">
</avue-form>
<template #footer>
@@ -331,47 +273,59 @@
<el-dialog title="澧炲�间綔涓氱櫥璁�" v-model="open4" class="avue-dialog avue-dialog--top" width="80%">
<el-descriptions :column="3" border>
- <el-descriptions-item label="璋冨害鍗曞彿">{{form.dispatchNo}}</el-descriptions-item>
- <el-descriptions-item label="瀹㈡埛鍚嶇О">{{form.customerName}}</el-descriptions-item>
- <el-descriptions-item label="椤圭洰鍚嶇О">{{form.projectName}}</el-descriptions-item>
- <el-descriptions-item label="杩愯緭璺嚎">{{form.transportLine}}</el-descriptions-item>
- <el-descriptions-item label="杞﹀瀷">{{form.$actualVehicleType}}</el-descriptions-item>
- <el-descriptions-item label="杞︾墝">{{form.licensePlate}}</el-descriptions-item>
+ <el-descriptions-item label="璋冨害鍗曞彿">{{ form.dispatchNo }}</el-descriptions-item>
+ <el-descriptions-item label="瀹㈡埛鍚嶇О">{{ form.customerName }}</el-descriptions-item>
+ <el-descriptions-item label="椤圭洰鍚嶇О">{{ form.projectName }}</el-descriptions-item>
+ <el-descriptions-item label="杩愯緭璺嚎">{{ form.transportLine }}</el-descriptions-item>
+ <el-descriptions-item label="杞﹀瀷">{{ form.$actualVehicleType }}</el-descriptions-item>
+ <el-descriptions-item label="杞︾墝">{{ form.licensePlate }}</el-descriptions-item>
</el-descriptions>
- <avue-tabs :option="tabsOption" ref="tabsOptionRef"
- @change="handleChange"></avue-tabs>
+ <avue-tabs :option="tabsOption" ref="tabsOptionRef" @change="handleChange"></avue-tabs>
- <avue-crud v-if="active !== 'tab4'"
- :option="zzItemsTableOption" ref="itemsTableRef"
- :data="zzItemsTableData"
- >
- <template #count="{row}">
- <el-input-number v-model="row.count" placeholder="璁¤垂鏁伴噺"
- :min="0"></el-input-number>
- </template>
- <template #remark="{row}">
- <el-input v-model="row.remark" placeholder="澶囨敞" ></el-input>
- </template>
+ <avue-crud v-if="active !== 'tab4'" :option="zzItemsTableOption" ref="itemsTableRef" :data="zzItemsTableData">
+ <template #count="{ row }">
+ <el-input-number v-model="row.count" placeholder="璁¤垂鏁伴噺" :min="0"></el-input-number>
+ </template>
+ <template #remark="{ row }">
+ <el-input v-model="row.remark" placeholder="澶囨敞"></el-input>
+ </template>
- </avue-crud>
+ </avue-crud>
<div v-if="active === 'tab4'">
<h2>瀹炴姤瀹為攢璐圭敤</h2>
- <avue-form v-model="boxForm" ref="boxFormRef"
- :option="boxFormOption">
+ <!-- <avue-form v-model="boxForm" ref="boxFormRef" :option="boxFormOption">
- </avue-form>
- <avue-crud
- :option="boxTableOption"
- :data="boxTableData"
- >
+ </avue-form> -->
+ <avue-crud :option="expenditureTableOption" :data="tmsFinanceDetails">
+ <template #actualFeeAmount="{ row }">
+ <el-input-number v-model="row.actualFeeAmount" :precision="2" :min="0" controls-position="right"
+ placeholder="杈撳叆閲戦" style="width: 100%" />
+ </template>
+
+ <template #currency="{ row }">
+ <el-radio-group v-model="row.currency">
+ <el-radio v-for="item in sys_currency" :key="item.value" :label="item.value">
+ {{ item.label }}
+ </el-radio>
+ </el-radio-group>
+ </template>
+ <template #voucherUrl="{ row }">
+ <avue-upload v-model="row.voucherUrl" :action="'/common/upload2'" type="upload" accept="image/*"
+ @upload-after="(res, done, loading, column) => handleUploadAfter(res, done, loading, column, row)"></avue-upload>
+ </template>
+ <template #remark="{ row }">
+ <el-input v-model="row.remark" placeholder="濉啓澶囨敞" clearable />
+ </template>
+ </avue-crud>
+ <avue-crud :option="boxTableOption" :data="boxTableData">
+
</avue-crud>
</div>
<template #footer>
<div class="dialog-footer">
- <el-button type="primary"
- :loading="pageF.isUploading" @click="submitTabForm">
+ <el-button type="primary" :loading="pageF.isUploading" @click="submitTabForm">
{{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�' }}
</el-button>
@@ -382,22 +336,20 @@
<el-dialog title="璋冨害鍗曚綔搴�" v-model="open5" class="avue-dialog avue-dialog--top" width="80%">
<el-descriptions :column="3" border>
- <el-descriptions-item label="璋冨害鍗曞彿">{{form.dispatchNo}}</el-descriptions-item>
- <el-descriptions-item label="瀹㈡埛鍚嶇О">{{form.customerName}}</el-descriptions-item>
- <el-descriptions-item label="椤圭洰鍚嶇О">{{form.projectName}}</el-descriptions-item>
- <el-descriptions-item label="杩愯緭璺嚎">{{form.transportLine}}</el-descriptions-item>
- <el-descriptions-item label="杞﹀瀷">{{form.$actualVehicleType}}</el-descriptions-item>
- <el-descriptions-item label="杞︾墝">{{form.licensePlate}}</el-descriptions-item>
+ <el-descriptions-item label="璋冨害鍗曞彿">{{ form.dispatchNo }}</el-descriptions-item>
+ <el-descriptions-item label="瀹㈡埛鍚嶇О">{{ form.customerName }}</el-descriptions-item>
+ <el-descriptions-item label="椤圭洰鍚嶇О">{{ form.projectName }}</el-descriptions-item>
+ <el-descriptions-item label="杩愯緭璺嚎">{{ form.transportLine }}</el-descriptions-item>
+ <el-descriptions-item label="杞﹀瀷">{{ form.$actualVehicleType }}</el-descriptions-item>
+ <el-descriptions-item label="杞︾墝">{{ form.licensePlate }}</el-descriptions-item>
</el-descriptions>
- <avue-form v-model="boxForm" ref="boxFormRef"
- :option="boxFormOption">
+ <avue-form v-model="boxForm" ref="boxFormRef" :option="boxFormOption">
</avue-form>
<template #footer>
<div class="dialog-footer">
- <el-button type="primary"
- :loading="pageF.isUploading" @click="submitForm5">
+ <el-button type="primary" :loading="pageF.isUploading" @click="submitForm5">
{{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�' }}
</el-button>
@@ -409,32 +361,31 @@
<el-dialog title="鎵胯繍鍗曟墦鍗�" v-model="open6" class="avue-dialog avue-dialog--top cydprint" width="80%">
<div v-if="print == 0">
<el-descriptions :column="3" border>
- <el-descriptions-item label="璁㈠崟鍙�">{{form.dispatchNo}}</el-descriptions-item>
- <el-descriptions-item label="鎵胯繍鏃ユ湡">{{form.orderTime}}</el-descriptions-item>
- <el-descriptions-item label="杞︾墝">{{form.licensePlate}}</el-descriptions-item>
- <el-descriptions-item label="璁㈣溅绫诲瀷">{{form.$actualVehicleType}}</el-descriptions-item>
+ <el-descriptions-item label="璁㈠崟鍙�">{{ form.dispatchNo }}</el-descriptions-item>
+ <el-descriptions-item label="鎵胯繍鏃ユ湡">{{ form.orderTime }}</el-descriptions-item>
+ <el-descriptions-item label="杞︾墝">{{ form.licensePlate }}</el-descriptions-item>
+ <el-descriptions-item label="璁㈣溅绫诲瀷">{{ form.$actualVehicleType }}</el-descriptions-item>
- <el-descriptions-item label="鍙告満濮撳悕">{{form.mainDriverName}}</el-descriptions-item>
- <el-descriptions-item label="鐢佃瘽">{{form.mainDriverMobile}}</el-descriptions-item>
- <el-descriptions-item label="鎵樻灦鍙�/鏌滃彿">{{form.shelfCode}}/ {{form.containerNo}}</el-descriptions-item>
- <el-descriptions-item label="瀹㈡埛鍚嶇О">{{form.customerName}}</el-descriptions-item>
- <el-descriptions-item label="璧锋璺嚎">{{form.transportLine}}</el-descriptions-item>
- <el-descriptions-item label="璋冨害鍛�">{{form.createBy}}</el-descriptions-item>
- <el-descriptions-item label="鏄惁鎵撳嵃">{{form.$isPrint}}</el-descriptions-item>
- <el-descriptions-item label="鍘嗗彶鎵撳嵃娆℃暟">{{form.printCount}}</el-descriptions-item>
+ <el-descriptions-item label="鍙告満濮撳悕">{{ form.mainDriverName }}</el-descriptions-item>
+ <el-descriptions-item label="鐢佃瘽">{{ form.mainDriverMobile }}</el-descriptions-item>
+ <el-descriptions-item label="鎵樻灦鍙�/鏌滃彿">{{ form.shelfCode }}/ {{ form.containerNo }}</el-descriptions-item>
+ <el-descriptions-item label="瀹㈡埛鍚嶇О">{{ form.customerName }}</el-descriptions-item>
+ <el-descriptions-item label="璧锋璺嚎">{{ form.transportLine }}</el-descriptions-item>
+ <el-descriptions-item label="璋冨害鍛�">{{ form.createBy }}</el-descriptions-item>
+ <el-descriptions-item label="鏄惁鎵撳嵃">{{ form.$isPrint }}</el-descriptions-item>
+ <el-descriptions-item label="鍘嗗彶鎵撳嵃娆℃暟">{{ form.printCount }}</el-descriptions-item>
</el-descriptions>
<h3 class="title" style="color: #333;font-weight: bold;">鍗曟嵁淇℃伅</h3>
- <avue-form v-model="boxForm" ref="boxFormRef"
- :option="boxFormOption">
+ <avue-form v-model="boxForm" ref="boxFormRef" :option="boxFormOption">
</avue-form>
</div>
<div v-else>
<div id="print">
<img src="@/assets/img.png" alt="" style="width: 168px;height: 68px">
- <h3 class="title" >鐝犳捣甯傛眹鐣呬氦閫氭姇璧勬湁闄愬叕鍙�</h3>
+ <h3 class="title">鐝犳捣甯傛眹鐣呬氦閫氭姇璧勬湁闄愬叕鍙�</h3>
<div class="header">
- <div class="order">璁㈠崟鍙凤細{{boxForm.dispatchNo}}</div>
+ <div class="order">璁㈠崟鍙凤細{{ boxForm.dispatchNo }}</div>
<div class="sub-title">璐х墿鎵胯繍鍗曡瘉</div>
</div>
<table>
@@ -444,7 +395,7 @@
</tr>
<tr>
<td>杞︾墝锛歿{ boxForm.licensePlate }}</td>
- <td>璁㈣溅杞﹀瀷: {{boxForm.$actualVehicleType}}</td>
+ <td>璁㈣溅杞﹀瀷: {{ boxForm.$actualVehicleType }}</td>
</tr>
<tr>
<td>鍙告満濮撳悕锛歿{ boxForm.mainDriverName }}</td>
@@ -452,7 +403,7 @@
</tr>
<tr>
- <td>鎵樻灦鍙�/鏌滃彿锛歿{boxForm.shelfCode}}/ {{boxForm.containerNo}}</td>
+ <td>鎵樻灦鍙�/鏌滃彿锛歿{ boxForm.shelfCode }}/ {{ boxForm.containerNo }}</td>
<td>琛岄┒鍙e哺锛歿{ boxForm.portName }}</td>
</tr>
<tr>
@@ -462,7 +413,7 @@
<tr>
<td>瀹㈡埛锛歿{ boxForm.customerName }}</td>
- <td>鑱旂粶浜猴細{{ boxForm.contactName }} {{ boxForm.contactPhone }} </td>
+ <td>鑱旂粶浜猴細{{ boxForm.contactName }} {{ boxForm.contactPhone }} </td>
</tr>
<tr>
<td colspan="2">
@@ -476,8 +427,8 @@
</tr>
<tr>
<td>
- <div style="line-height: 24px">璋冨害鍛橈細{{boxForm.createBy}}</div>
- <div style="line-height: 42px">鎵胯繍鍙告満锛歿{boxForm.mainDriverName}}</div>
+ <div style="line-height: 24px">璋冨害鍛橈細{{ boxForm.createBy }}</div>
+ <div style="line-height: 42px">鎵胯繍鍙告満锛歿{ boxForm.mainDriverName }}</div>
</td>
<td>鏀惰揣浜虹瀛�/鐩栫珷锛�</td>
</tr>
@@ -489,7 +440,7 @@
<div>3.涓�鍒囦氦鏄撳潎鎸夋湰鍏徃涔嬫爣鍑嗙粡钀ユ潯娆句负鍑嗭紝鏈叕鍙镐箣璐d换鍦ㄦ煇浜涙儏鍐典笅浼氳璞佸厤鎴栭檺 (鍒跺鏈夐』瑕侊紝娆㈣繋绱㈠彇)锛�</div>
</div>
-
+
</div>
@@ -497,9 +448,8 @@
<template #footer>
<div class="dialog-footer">
<el-button @click="print = 0" v-if="print == 1">閲嶆柊濉啓</el-button>
- <el-button type="primary"
- :loading="pageF.isUploading" @click="submitForm6">
- {{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�' }}
+ <el-button type="primary" :loading="pageF.isUploading" @click="submitForm6">
+ {{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�2' }}
</el-button>
<el-button @click="open6 = false">鍙� 娑�</el-button>
@@ -509,24 +459,16 @@
<!-- 鐢ㄦ埛瀵煎叆瀵硅瘽妗� -->
<el-dialog title="璋冨害鍗曞鍏�" v-model="upload.open" width="400px" append-to-body>
- <el-upload
- ref="uploadRef"
- :limit="1"
- accept=".xlsx, .xls"
- :headers="upload.headers"
- :action="upload.url + '?updateSupport=' + upload.updateSupport"
- :disabled="upload.isUploading"
- :on-progress="handleFileUploadProgress"
- :on-success="handleFileSuccess"
- :auto-upload="false"
- drag
- >
+ <el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+ :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+ :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
<div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
<template #tip>
<div class="el-upload__tip text-center">
<span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span>
- <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">涓嬭浇妯℃澘</el-link>
+ <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;"
+ @click="importTemplate">涓嬭浇妯℃澘</el-link>
</div>
</template>
</el-upload>
@@ -540,49 +482,36 @@
<el-dialog title="棰勯厤璁㈠崟瑁呭嵏璐х偣鐧昏" v-model="open7" class="avue-dialog avue-dialog--top" width="80%">
- <avue-form v-model="shipperReceiverForm"
- ref="shipperReceiverFormRef"
- :option="shipperReceiverFormOption">
- <template #dispatchNos="{disabled}">
- <div class="dispatchNos">
- <el-tag
- v-for="tag in shipperReceiverForm.dispatchNos"
- :key="tag"
- closable
- @close="handleCloseDispatchNo(tag)"
- >
- {{ tag }}
- </el-tag>
- </div>
+ <avue-form v-model="shipperReceiverForm" ref="shipperReceiverFormRef" :option="shipperReceiverFormOption">
+ <template #dispatchNos="{ disabled }">
+ <div class="dispatchNos">
+ <el-tag v-for="tag in shipperReceiverForm.dispatchNos" :key="tag" closable
+ @close="handleCloseDispatchNo(tag)">
+ {{ tag }}
+ </el-tag>
+ </div>
</template>
- <template #shipperId="{disabled}">
+ <template #shipperId="{ disabled }">
<div style="display:flex; align-items: center;justify-content: space-between">
- <avue-input-table :props="consignorProps" dataType="string"
- :children="consignorOption" :disabled="disabled"
- :on-load="onShipperLoad" suffixIcon="search"
- v-model="shipperReceiverForm.shipperId" style="width: 80%"
- @change="changeShipper2"
- placeholder="璇烽�夋嫨瑁呰揣鐐�"></avue-input-table>
- <el-button icon="plus" :disabled="disabled" @click="handleAddShipper2"></el-button>
+ <avue-input-table :props="consignorProps" dataType="string" :children="consignorOption" :disabled="disabled"
+ :on-load="onShipperLoad" suffixIcon="search" v-model="shipperReceiverForm.shipperId" style="width: 80%"
+ @change="changeShipper2" placeholder="璇烽�夋嫨瑁呰揣鐐�"></avue-input-table>
+ <el-button icon="plus" :disabled="disabled" @click="handleAddShipper2"></el-button>
</div>
</template>
- <template #receiverId="{disabled}">
+ <template #receiverId="{ disabled }">
<div style="display:flex; align-items: center;justify-content: space-between">
- <avue-input-table :props="consignorProps"
- :children="consignorOption" dataType="string"
- :on-load="onConsignorLoad" suffixIcon="search"
- v-model="shipperReceiverForm.receiverId" :disabled="disabled"
- @change="changeReceiver2" style="width: 80%"
- placeholder="璇烽�夋嫨鍗歌揣鐐�"></avue-input-table>
- <el-button icon="plus" :disabled="disabled" @click="handleAddReceiver2"></el-button>
+ <avue-input-table :props="consignorProps" :children="consignorOption" dataType="string"
+ :on-load="onConsignorLoad" suffixIcon="search" v-model="shipperReceiverForm.receiverId"
+ :disabled="disabled" @change="changeReceiver2" style="width: 80%" placeholder="璇烽�夋嫨鍗歌揣鐐�"></avue-input-table>
+ <el-button icon="plus" :disabled="disabled" @click="handleAddReceiver2"></el-button>
</div>
</template>
</avue-form>
<template #footer>
<div class="dialog-footer">
- <el-button type="primary"
- :loading="pageF.isUploading" @click="submitZxForm">
+ <el-button type="primary" :loading="pageF.isUploading" @click="submitZxForm">
{{ pageF.isUploading ? '鎻愪氦涓�' : '纭� 瀹�' }}
</el-button>
@@ -591,6 +520,10 @@
</template>
</el-dialog>
+ <el-dialog title="瀵煎叆鏃ュ織" v-model="importLogVisible" width="80%">
+ <avue-crud :data="importLogData" :option="importLogOption" :table-loading="importLogLoading"
+ @on-load="getImportLogList"></avue-crud>
+ </el-dialog>
</basicContainer>
</template>
@@ -615,46 +548,50 @@
checkCloseOrder,
closeOrder,
printDispatchOrder,
- importTemplateTmsDispatchOrder,ypdddjSumbit
+ importTemplateTmsDispatchOrder, ypdddjSumbit,
+ tmsTmsDispatchOrderImportLog,
+ saveTmsFinanceDetail2
} from "@/api/tms/tmsDispatchOrder";
import useCurrentInstance from "@/utils/useCurrentInstance";
-import {computed, onMounted, reactive, ref, toRefs, watch, getCurrentInstance, nextTick} from "vue";
-import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
-import {usePagePlus} from "@/hooks/usePagePlus";
-import {hasPermission} from "@/utils/permissionUtils";
-import {getTmsProject, listTmsProject} from "@/api/tms/tmsProject";
-import {getTmsServiceProvider, listTmsServiceProvider} from "@/api/tms/tmsServiceProvider";
-import {getTmsLoadingServiceProvider, listTmsLoadingServiceProvider} from "@/api/tms/tmsLoadingServiceProvider";
-import {getTmsCustomsServiceProvider, listTmsCustomsServiceProvider} from "@/api/tms/tmsCustomsServiceProvider";
-import {getTmsDriver, listTmsDriver} from "@/api/tms/tmsDriver";
-import {getTmsVehicle, listTmsVehicle} from "@/api/tms/tmsVehicle";
-import {getTmsContainer, listTmsContainer} from "@/api/tms/tmsContainer";
-import {getTmsShelf, listTmsShelf} from "@/api/tms/tmsShelf";
-import {addTmsConsignor, getTmsConsignor, listTmsConsignor} from "@/api/tms/tmsConsignor";
-import {ElMessage, ElMessageBox, type ElUpload} from "element-plus";
-import {addTmsTrip, listTmsTrip} from "@/api/tms/tmsTrip";
+import { computed, onMounted, reactive, ref, toRefs, watch, getCurrentInstance, nextTick } from "vue";
+import { PagesInterface, PageQueryInterface } from "@/utils/globalInterface";
+import { usePagePlus } from "@/hooks/usePagePlus";
+import { hasPermission } from "@/utils/permissionUtils";
+import { getTmsProject, listTmsProject } from "@/api/tms/tmsProject";
+import { getTmsServiceProvider, listTmsServiceProvider } from "@/api/tms/tmsServiceProvider";
+import { getTmsLoadingServiceProvider, listTmsLoadingServiceProvider } from "@/api/tms/tmsLoadingServiceProvider";
+import { getTmsCustomsServiceProvider, listTmsCustomsServiceProvider } from "@/api/tms/tmsCustomsServiceProvider";
+import { getTmsDriver, listTmsDriver } from "@/api/tms/tmsDriver";
+import { getTmsVehicle, listTmsVehicle } from "@/api/tms/tmsVehicle";
+import { getTmsContainer, listTmsContainer } from "@/api/tms/tmsContainer";
+import { getTmsShelf, listTmsShelf } from "@/api/tms/tmsShelf";
+import { addTmsConsignor, getTmsConsignor, listTmsConsignor } from "@/api/tms/tmsConsignor";
+import { ElMessage, ElMessageBox, type ElUpload } from "element-plus";
+import { addTmsTrip, listTmsTrip } from "@/api/tms/tmsTrip";
import {
addTmsFinanceDetail,
listTmsFinanceDetail,
saveTmsFinanceDetail,
updateTmsFinanceDetail
} from "@/api/tms/tmsFinanceDetail";
-import {getTmsProductInfo, listTmsProductInfo} from "@/api/tms/tmsProductInfo";
-import {addTmsGoodsDetail, delTmsGoodsDetail, listTmsGoodsDetail, updateTmsGoodsDetail} from "@/api/tms/tmsGoodsDetail";
-import {getTransportRouteVi, listTransportRouteVi} from "@/api/tms/tmsTransportRouteVi";
-import {listTmsQuoteItem} from "@/api/tms/tmsQuotePlanItem";
-import {$DialogForm, randomId} from '@smallwei/avue'
-import {getTmsCustomerInfo, listTmsCustomerInfo} from "@/api/tms/tmsCustomerInfo";
-import {getAddressCode} from "@/api/tms/tmsRegion";
-import {mapRegeo} from "@/api/common";
-import {getDicts} from "@/api/system/dict/data";
-import {pushTmsQuoteFee} from "@/api/tms/tmsQuoteFee";
+import { getTmsProductInfo, listTmsProductInfo } from "@/api/tms/tmsProductInfo";
+import { addTmsGoodsDetail, delTmsGoodsDetail, listTmsGoodsDetail, updateTmsGoodsDetail } from "@/api/tms/tmsGoodsDetail";
+import { getTransportRouteVi, listTransportRouteVi } from "@/api/tms/tmsTransportRouteVi";
+import { listTmsQuoteItem } from "@/api/tms/tmsQuotePlanItem";
+import { $DialogForm, randomId } from '@smallwei/avue'
+import { getTmsCustomerInfo, listTmsCustomerInfo } from "@/api/tms/tmsCustomerInfo";
+import { getAddressCode } from "@/api/tms/tmsRegion";
+import { mapRegeo } from "@/api/common";
+import { getDicts } from "@/api/system/dict/data";
+import { pushTmsQuoteFee } from "@/api/tms/tmsQuoteFee";
import { $Print } from '@smallwei/avue'
-import {getToken} from "@/utils/auth";
+import { getToken } from "@/utils/auth";
-const {appContext} = getCurrentInstance();
+const { appContext } = getCurrentInstance();
-const {proxy} = useCurrentInstance();
+const { proxy } = useCurrentInstance(
+);
+const { fee_type, sys_currency } = proxy.useDict('fee_type', 'sys_currency')
const crudRef = ref();
const boxFormRef = ref();
const goodsCrudRef = ref();
@@ -696,20 +633,28 @@
goodsForm: <any>{},
open3: false,
actualForm: <any>{},
- isCustoms:<any> -1,
+ isCustoms: <any>-1,
isLoad: -1,
- open5:false,
- open6:false,
- open7:false,
- zxhdjSingle:false,
+ open5: false,
+ open6: false,
+ open7: false,
+ zxhdjSingle: false,
})
const {
queryParams, form, page, selectionList, open3,
boxTableData, optionType,
boxFormOption, boxForm, boxTableOption, title, open, open2,
- goodsTableData, goodsForm, actualForm, selectionList2,isCustoms,isLoad,open5,open6,open7,zxhdjSingle
+ goodsTableData, goodsForm, actualForm, selectionList2, isCustoms, isLoad, open5, open6, open7, zxhdjSingle
} = toRefs(data);
const option = ref({
+ menuType: 'icon',
+ viewBtn: false, // 鍏抽棴鍘熺敓鏌ョ湅
+ editBtn: false, // 鍏抽棴鍘熺敓缂栬緫
+
+ searchIndex: 7, // 鍏抽敭锛氭姌鍙犳椂鏄剧ず鐨勪釜鏁帮紙鏍规嵁浣犵殑瀛楁鏁伴噺璋冩暣锛�
+ searchIcon: true, // 鍏抽敭锛氭樉绀烘姌鍙�/灞曞紑鎸夐挳
+ searchMenuSpan: 6, // 鎼滅储鎸夐挳鏍忓崰浣嶏紙鍙�夛級
+
pageKey: 'TmsDispatchOrder',
rowKey: 'id',
labelWidth: 130,
@@ -732,7 +677,7 @@
message: "璇烽�夋嫨杩愯緭璺嚎", trigger: "change"
}
],
- type: 'table', suffixIcon: 'search',dataType: 'string',
+ type: 'table', suffixIcon: 'search', dataType: 'string',
change: (val: any) => {
const table = crudRef.value?.getPropRef?.('quoteDetailId')?.$refs?.temp;
if (!table) return;
@@ -799,7 +744,7 @@
label: 'transportRoute',
value: 'quoteDetailId'
},
- onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
+ onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
if (value) {
let id = value;
if (Array.isArray(value)) {
@@ -809,7 +754,7 @@
return callback(res.data || {})
})
} else {
- listTransportRouteVi({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
+ listTransportRouteVi({ pageSize: page.pageSize, pageNum: page.currentPage, ...data }).then(res => {
return callback({
total: res.total,
data: res.rows || [],
@@ -856,7 +801,7 @@
message: "璁㈠崟绫诲瀷涓嶈兘涓虹┖", trigger: "change"
}
],
- change: ({value}: any) => {
+ change: ({ value }: any) => {
option.value.group.forEach((item: any) => {
if (item.prop == 'pcxx') {
item.column.shipperId.rules.forEach((cItem: any) => {
@@ -1046,7 +991,7 @@
],
},
isUrgent: {
- label: '鏄惁绱ф��',value: '1',
+ label: '鏄惁绱ф��', value: '1',
display: true,
type: 'radio', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
rules: [
@@ -1121,7 +1066,7 @@
message: "鏄惁鏄嚜钀ヨ溅闃熶笉鑳戒负绌�", trigger: "change"
}
],
- change: ({value}: any) => {
+ change: ({ value }: any) => {
console.log(value)
option.value.group.forEach((item: any) => {
if (item.prop == 'pcxx') {
@@ -1139,7 +1084,7 @@
},
},
- commissionModel:{
+ commissionModel: {
label: '鎻愭垚妯″紡',
display: true, type: 'radio', dicUrl: '/system/dict/data/type/commission_model', dataType: 'string',
rules: [
@@ -1170,7 +1115,7 @@
});
}
},
- type: 'table', suffixIcon: 'search',dataType: 'string',
+ type: 'table', suffixIcon: 'search', dataType: 'string',
children: {
border: true,
searchLabelWidth: 100,
@@ -1214,7 +1159,7 @@
label: 'serviceShortName',
value: 'id'
},
- onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
+ onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
if (value) {
let id = value;
if (Array.isArray(value)) {
@@ -1224,7 +1169,7 @@
return callback(res.data || {})
})
} else {
- listTmsServiceProvider({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
+ listTmsServiceProvider({ pageSize: page.pageSize, pageNum: page.currentPage, ...data }).then(res => {
return callback({
total: res.total,
data: res.rows || [],
@@ -1281,7 +1226,7 @@
label: 'driverName',
value: 'id'
},
- onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
+ onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
if (value) {
let id = value;
if (Array.isArray(value)) {
@@ -1294,7 +1239,7 @@
listTmsDriver({
pageSize: page.pageSize,
pageNum: page.currentPage, ...data,
- carrierType: form.value.operationMode,vehicleProviderId:form.value.vehicleProviderId
+ carrierType: form.value.operationMode, vehicleProviderId: form.value.vehicleProviderId
}).then(res => {
return callback({
total: res.total,
@@ -1347,7 +1292,7 @@
label: 'driverName',
value: 'id'
},
- onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
+ onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
if (value) {
let id = value;
if (Array.isArray(value)) {
@@ -1359,7 +1304,7 @@
} else {
listTmsDriver({
pageSize: page.pageSize,
- pageNum: page.currentPage, ...data,vehicleProviderId:form.value.vehicleProviderId,
+ pageNum: page.currentPage, ...data, vehicleProviderId: form.value.vehicleProviderId,
carrierType: form.value.operationMode
}).then(res => {
return callback({
@@ -1433,7 +1378,7 @@
label: 'licensePlate',
value: 'id'
},
- onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
+ onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
if (value) {
let id = value;
if (Array.isArray(value)) {
@@ -1446,7 +1391,7 @@
listTmsVehicle({
pageSize: page.pageSize,
pageNum: page.currentPage, ...data,
- carrierType: form.value.operationMode,serviceProviderId:form.value.vehicleProviderId
+ carrierType: form.value.operationMode, serviceProviderId: form.value.vehicleProviderId
}).then(res => {
return callback({
total: res.total,
@@ -1528,7 +1473,7 @@
});
}
},
- type: 'table', suffixIcon: 'search',dataType: 'string',
+ type: 'table', suffixIcon: 'search', dataType: 'string',
children: {
border: true,
searchLabelWidth: 100,
@@ -1562,7 +1507,7 @@
label: 'containerCode',
value: 'id'
},
- onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
+ onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
if (value) {
let id = value;
if (Array.isArray(value)) {
@@ -1572,7 +1517,7 @@
return callback(res.data || {})
})
} else {
- listTmsContainer({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
+ listTmsContainer({ pageSize: page.pageSize, pageNum: page.currentPage, ...data }).then(res => {
return callback({
total: res.total,
data: res.rows || [],
@@ -1602,7 +1547,7 @@
});
}
},
- type: 'table', suffixIcon: 'search',dataType: 'string',
+ type: 'table', suffixIcon: 'search', dataType: 'string',
children: {
border: true,
searchLabelWidth: 100,
@@ -1634,7 +1579,7 @@
label: 'shelfCode',
value: 'id'
},
- onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
+ onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
if (value) {
let id = value;
if (Array.isArray(value)) {
@@ -1644,7 +1589,7 @@
return callback(res.data || {})
})
} else {
- listTmsShelf({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
+ listTmsShelf({ pageSize: page.pageSize, pageNum: page.currentPage, ...data }).then(res => {
return callback({
total: res.total,
data: res.rows || [],
@@ -1740,17 +1685,54 @@
display: false,
search: true,
},
+ licensePlate: {
+ label: '杞︾墝鍙�', minWidth: 120,
+ display: false,
+ search: true,
+ },
customerName: {
label: '瀹㈡埛',
display: false, minWidth: 120,
search: true,
},
+ mainDriverName: {
+ label: '涓婚┚椹跺憳',
+ display: false, minWidth: 120,
+ search: true,
+ },
+ requiredVehicleTypes: {
+ label: '涓嬪崟杞﹀瀷', minWidth: 130,
+ display: false, type: 'select', search: true,
+ dicUrl: '/system/dict/data/type/vehicle_type',
+ dataType: 'string',
+ },
+ createTimeRange: {
+ label: '鍒涘缓鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
+ format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
+ valueFormat: 'YYYY-MM-DD',
+ },
+ updateTimeRange: {
+ label: '鏇存柊鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
+ format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
+ valueFormat: 'YYYY-MM-DD',
+ },
+ loadingServiceProviderName: {
+ label: '瑁呰揣鏈嶅姟鍟嗗悕绉�', minWidth: 150,
+ display: false,
+ search: true,
+ },
+ customsServiceProviderName: {
+ label: '鎶ュ叧鏈嶅姟鍟嗗悕绉�', minWidth: 150,
+ display: false,
+ search: true,
+ },
projectName: {
label: '椤圭洰鍚嶇О',
display: false, minWidth: 120,
search: true,
},
+
contractName: {
label: '鍏宠仈鍚堝悓鍚嶇О', minWidth: 120,
display: false,
@@ -1784,16 +1766,7 @@
search: true,
},
- loadingServiceProviderName: {
- label: '瑁呰揣鏈嶅姟鍟嗗悕绉�', minWidth: 150,
- display: false,
- search: true,
- },
- customsServiceProviderName: {
- label: '鎶ュ叧鏈嶅姟鍟嗗悕绉�', minWidth: 150,
- display: false,
- search: true,
- },
+
isUrgent: {
label: '鏄惁绱ф��',
display: false, minWidth: 100,
@@ -1822,24 +1795,13 @@
type: 'select', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
},
- mainDriverName: {
- label: '涓婚┚椹跺憳',
- display: false, minWidth: 120,
- search: true,
- },
// requiredVehicleTypes: {
// label: '瑕佹眰杩愯緭宸ュ叿绫诲瀷',
// display: false,
// search: true,
// },
- requiredVehicleTypes: {
- label: '涓嬪崟杞﹀瀷',minWidth: 130,
- display: false, type: 'select', search: true,
- dicUrl: '/system/dict/data/type/vehicle_type',
- dataType: 'string',
- },
actualVehicleType: {
label: '娲惧嚭杞﹀瀷', minWidth: 130,
display: false,
@@ -1848,11 +1810,7 @@
},
- licensePlate: {
- label: '杞︾墝鍙�', minWidth: 120,
- display: false,
- search: true,
- },
+
shipperName: {
label: '瑁呰揣鐐瑰悕绉�',
@@ -1897,7 +1855,7 @@
inStatusList: {
label: '鐘舵��', minWidth: 150,
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/tms_dispatch_order_status',
- display: false,multiple:true,
+ display: false, multiple: true,
hide: true,
search: true,
@@ -1930,11 +1888,7 @@
hide: false,
search: false,
},
- createTimeRange: {
- label: '鍒涘缓鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
- format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
- valueFormat: 'YYYY-MM-DD',
- },
+
updateBy: {
label: '鏇存柊浜�', minWidth: 150,
addDisplay: false,
@@ -1951,11 +1905,7 @@
hide: false,
search: false,
},
- updateTimeRange: {
- label: '鏇存柊鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
- format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
- valueFormat: 'YYYY-MM-DD',
- },
+
confirmTimeRange: {
label: '纭鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
format: 'YYYY-MM-DD', hide: true, searchSpan: 5,
@@ -1992,8 +1942,8 @@
tripType: {
label: '琛岀▼绫诲瀷',
display: true,
- change: function ({value}: any) {
- if (value == '5'){
+ change: function ({ value }: any) {
+ if (value == '5') {
itineraryOption.value.column.iscc.display = true
}
},
@@ -2140,7 +2090,7 @@
}
],
},
- currency:{
+ currency: {
label: '甯佺',
display: true,
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
@@ -2160,7 +2110,7 @@
action: '/common/upload2',
},
- remark:{
+ remark: {
label: '澶囨敞',
type: 'textarea', minRows: 3, maxRows: 5, span: 24
},
@@ -2203,7 +2153,7 @@
label: '閲戦',
display: true,
},
- currency:{
+ currency: {
label: '甯佺',
display: true,
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
@@ -2216,7 +2166,7 @@
type: 'upload',
action: '/common/upload2',
},
- remark:{
+ remark: {
label: '澶囨敞',
},
@@ -2330,7 +2280,7 @@
label: 'licensePlate',
value: 'id'
},
- onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
+ onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
if (value) {
let id = value;
if (Array.isArray(value)) {
@@ -2340,7 +2290,7 @@
return callback(res.data || {})
})
} else {
- listTmsVehicle({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
+ listTmsVehicle({ pageSize: page.pageSize, pageNum: page.currentPage, ...data }).then(res => {
return callback({
total: res.total,
data: res.rows || [],
@@ -2384,7 +2334,7 @@
label: 'driverName',
value: 'id'
},
- onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
+ onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
if (value) {
let id = value;
if (Array.isArray(value)) {
@@ -2394,7 +2344,7 @@
return callback(res.data || {})
})
} else {
- listTmsDriver({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
+ listTmsDriver({ pageSize: page.pageSize, pageNum: page.currentPage, ...data }).then(res => {
return callback({
total: res.total,
data: res.rows || [],
@@ -2414,7 +2364,7 @@
labelWidth: 120,
column: {
customsServiceProviderId: {
- label: '鎶ュ叧鏈嶅姟鍟�', span:24,
+ label: '鎶ュ叧鏈嶅姟鍟�', span: 24,
display: true,
rules: [
{
@@ -2439,22 +2389,22 @@
border: true,
searchLabelWidth: 100,
searchMenuSpan: 5,
- column:{
+ column: {
serviceCode: {
label: '鏈嶅姟鍟嗙紪鐮�',
search: true,
},
serviceShortName: {
- label: '鏈嶅姟鍟嗙畝绉�',minWidth:150,
+ label: '鏈嶅姟鍟嗙畝绉�', minWidth: 150,
search: true,
},
serviceName: {
- label: '鏈嶅姟鍟嗗叏绉�',search: true,
+ label: '鏈嶅姟鍟嗗叏绉�', search: true,
},
serviceType: {
- label: '鏈嶅姟绫诲瀷',minWidth:150,
+ label: '鏈嶅姟绫诲瀷', minWidth: 150,
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/service_type',
- multiple:true,
+ multiple: true,
search: true,
},
}
@@ -2463,7 +2413,7 @@
label: 'serviceShortName',
value: 'id'
},
- onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
+ onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
if (value) {
let id = value;
if (Array.isArray(value)) {
@@ -2473,7 +2423,7 @@
return callback(res.data || {})
})
} else {
- listTmsCustomsServiceProvider({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
+ listTmsCustomsServiceProvider({ pageSize: page.pageSize, pageNum: page.currentPage, ...data }).then(res => {
return callback({
total: res.total,
data: res.rows || [],
@@ -2492,7 +2442,7 @@
labelWidth: 120,
column: {
loadingServiceProviderId: {
- label: '瑁呭嵏鏈嶅姟鍟�',span:24,
+ label: '瑁呭嵏鏈嶅姟鍟�', span: 24,
display: true,
rules: [
{
@@ -2517,22 +2467,22 @@
border: true,
searchLabelWidth: 100,
searchMenuSpan: 5,
- column:{
+ column: {
serviceCode: {
label: '鏈嶅姟鍟嗙紪鐮�',
search: true,
},
serviceShortName: {
- label: '鏈嶅姟鍟嗙畝绉�',minWidth:150,
+ label: '鏈嶅姟鍟嗙畝绉�', minWidth: 150,
search: true,
},
serviceName: {
- label: '鏈嶅姟鍟嗗叏绉�',search: true,
+ label: '鏈嶅姟鍟嗗叏绉�', search: true,
},
serviceType: {
- label: '鏈嶅姟绫诲瀷',minWidth:150,
+ label: '鏈嶅姟绫诲瀷', minWidth: 150,
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/service_type',
- multiple:true,
+ multiple: true,
search: true,
},
}
@@ -2541,7 +2491,7 @@
label: 'serviceShortName',
value: 'id'
},
- onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
+ onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
if (value) {
let id = value;
if (Array.isArray(value)) {
@@ -2551,7 +2501,7 @@
return callback(res.data || {})
})
} else {
- listTmsLoadingServiceProvider({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
+ listTmsLoadingServiceProvider({ pageSize: page.pageSize, pageNum: page.currentPage, ...data }).then(res => {
return callback({
total: res.total,
data: res.rows || [],
@@ -2569,8 +2519,8 @@
menuBtn: false,
labelWidth: 120,
column: {
- closeWhy:{
- label: '浣滃簾鍘熷洜',span:24,
+ closeWhy: {
+ label: '浣滃簾鍘熷洜', span: 24,
type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/close_why',
rules: [
{
@@ -2579,10 +2529,10 @@
}
],
},
- closeWhyRemark:{
+ closeWhyRemark: {
label: '浣滃簾鍘熷洜璇存槑',
type: 'textarea',
- span:24,
+ span: 24,
},
}
})
@@ -2634,7 +2584,7 @@
label: 'productName',
value: 'id'
},
- onLoad: ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
+ onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
if (value) {
let id = value;
if (Array.isArray(value)) {
@@ -2908,7 +2858,7 @@
name: 'tab4',
value: '3',
}
- ]
+ ]
})
const tabsOptionRef = ref();
const active = ref('tab1');
@@ -2920,16 +2870,16 @@
menu: false,
selection: false,
column: {
- freeName:{
+ freeName: {
label: '璐圭敤鍚嶇О',
},
- unit:{
+ unit: {
label: '璁¢噺鍗曚綅',
},
- count:{
- label : '璁¤垂鏁伴噺'
+ count: {
+ label: '璁¤垂鏁伴噺'
},
- remark:{
+ remark: {
label: '澶囨敞'
}
}
@@ -2973,20 +2923,20 @@
},
handleSelectionChangeFunc: (selection: any) => {
selectionList.value = selection;
- if (selection.length > 0){
+ if (selection.length > 0) {
isCustoms.value = selection[0].isCustoms;
- isLoad.value = selection[0].isLoad ;
- }else{
+ isLoad.value = selection[0].isLoad;
+ } else {
isCustoms.value = -1;
isLoad.value = -1;
}
isCustoms.value = isCustoms.value == 0 && !pageF.single ? 0 : -1;
isLoad.value = isLoad.value == 0 && !pageF.single ? 0 : -1;
- zxhdjSingle.value = pageF.multiple|| true;
- let yp = selection.filter((item:any) =>{
+ zxhdjSingle.value = pageF.multiple || true;
+ let yp = selection.filter((item: any) => {
return item.orderType == 0
});
- if(yp.length > 0){
+ if (yp.length > 0) {
zxhdjSingle.value = false;
}
},
@@ -2998,8 +2948,8 @@
queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.orderTimeRange, 'orderTime') || {};
return params;
},
- handleBeforeOpenFunc:(type:string)=>{
- if(type == 'add'){
+ handleBeforeOpenFunc: (type: string) => {
+ if (type == 'add') {
form.value = {};
}
}
@@ -3057,8 +3007,10 @@
const handleUploadItinerary = (row: any) => {
optionType.value = 'addItinerary';
boxFormOption.value = itineraryOption.value;
+ console.log(itineraryOption.value);
+
boxTableOption.value = itineraryTableOption.value;
- listTmsTrip({dispatchOrderId: row.id, pageNum: 1, pageSize: 999}).then(res => {
+ listTmsTrip({ dispatchOrderId: row.id, pageNum: 1, pageSize: 999 }).then(res => {
boxTableData.value = res.rows || [];
pageF.open = true;
pageF.title = '涓婁紶琛岀▼';
@@ -3071,6 +3023,8 @@
vehicleNumber: row.licensePlate,
vehicleId: row.vehicleId,
}
+ console.log(boxForm.value);
+
})
}
const cancelBox = () => {
@@ -3126,7 +3080,7 @@
const handleLogItinerary = (row: any) => {
optionType.value = 'view';
boxTableOption.value = itineraryTableOption.value;
- listTmsTrip({dispatchOrderId: row.id, pageNum: 1, pageSize: 999}).then(res => {
+ listTmsTrip({ dispatchOrderId: row.id, pageNum: 1, pageSize: 999 }).then(res => {
boxTableData.value = res.rows || [];
pageF.open = true;
pageF.title = '鏌ョ湅琛岀▼';
@@ -3138,7 +3092,7 @@
optionType.value = 'addFinance';
boxFormOption.value = financeOption.value;
boxTableOption.value = financeTableOption.value;
- const quotePlanItemRes = await listTmsQuoteItem({quotePlanId: row.quotePlanId, pageNum: 1, pageSize: 999});
+ const quotePlanItemRes = await listTmsQuoteItem({ quotePlanId: row.quotePlanId, pageNum: 1, pageSize: 999 });
let items = quotePlanItemRes.rows || [];
itemsTableData.value = items.map((item: any) => {
return {
@@ -3229,8 +3183,9 @@
}).finally(() => {
pageF.isUploading = false;
})
- }else if (optionType.value === 'customs') {
- customsOrder({id:form.value.id,
+ } else if (optionType.value === 'customs') {
+ customsOrder({
+ id: form.value.id,
customsServiceProviderId: form.value.customsServiceProviderId,
customsServiceProviderName: form.value.customsServiceProviderName,
}).then(res => {
@@ -3243,8 +3198,9 @@
}).finally(() => {
pageF.isUploading = false;
})
- }else if (optionType.value === 'loading') {
- loadingOrder({id:form.value.id,
+ } else if (optionType.value === 'loading') {
+ loadingOrder({
+ id: form.value.id,
loadingServiceProviderId: form.value.loadingServiceProviderId,
loadingServiceProviderName: form.value.loadingServiceProviderName,
}).then(res => {
@@ -3257,7 +3213,7 @@
}).finally(() => {
pageF.isUploading = false;
})
- }else {
+ } else {
connectHang({
dispatchId: form.value.id,
vehicleId: form.value.vehicleId,
@@ -3281,7 +3237,7 @@
}
const handleAddGoods = (row: any) => {
- listTmsGoodsDetail({dispatchId: row.id, pageSize: 999, pageNum: 1}).then(res => {
+ listTmsGoodsDetail({ dispatchId: row.id, pageSize: 999, pageNum: 1 }).then(res => {
goodsTableData.value = res.rows || [];
form.value = row;
open2.value = true;
@@ -3355,7 +3311,7 @@
selectionList2.value = selection;
}
-const onShipperLoad = ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
+const onShipperLoad = ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
if (value) {
let id = value;
if (Array.isArray(value)) {
@@ -3374,10 +3330,10 @@
if (districtId) data.districtId = districtId;
if (streetId) data.streetId = streetId;
}
- if (shipperReceiverForm.value.customerId ){
+ if (shipperReceiverForm.value.customerId) {
form.value.customerId = shipperReceiverForm.value.customerId;
}
- listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data,customerId: form.value.customerId}).then(res => {
+ listTmsConsignor({ pageSize: page.pageSize, pageNum: page.currentPage, ...data, customerId: form.value.customerId }).then(res => {
return callback({
total: res.total,
data: res.rows || [],
@@ -3385,7 +3341,7 @@
})
}
}
-const onConsignorLoad = ({page, value, data}: { page: any, value: any, data: any }, callback: any) => {
+const onConsignorLoad = ({ page, value, data }: { page: any, value: any, data: any }, callback: any) => {
if (value) {
let id = value;
if (Array.isArray(value)) {
@@ -3404,10 +3360,10 @@
if (districtId) data.districtId = districtId;
if (streetId) data.streetId = streetId;
}
- if (shipperReceiverForm.value.customerId ){
+ if (shipperReceiverForm.value.customerId) {
form.value.customerId = shipperReceiverForm.value.customerId;
}
- listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data,customerId: form.value.customerId}).then(res => {
+ listTmsConsignor({ pageSize: page.pageSize, pageNum: page.currentPage, ...data, customerId: form.value.customerId }).then(res => {
return callback({
total: res.total,
data: res.rows || [],
@@ -3415,7 +3371,7 @@
})
}
}
-const changeShipper = ({value}: any) => {
+const changeShipper = ({ value }: any) => {
if (value) {
let id = value;
@@ -3450,7 +3406,7 @@
})
}
}
-const changeReceiver = ({value}: any) => {
+const changeReceiver = ({ value }: any) => {
if (value) {
let id = value;
@@ -3486,13 +3442,13 @@
})
}
}
-const consignorAddOption =ref({
+const consignorAddOption = ref({
labelWidth: 120,
group: [
{
label: '鍩虹淇℃伅',
prop: 'jcxx',
- column:{
+ column: {
// consignorCode: {
// label: '瑁呭嵏璐х偣缂栫爜',minWidth: 150,
// addDisplay: false, disabled: true,
@@ -3508,7 +3464,7 @@
// ],
// },
consignorName: {
- label: '瑁呭嵏璐х偣鍚嶇О',minWidth: 150,
+ label: '瑁呭嵏璐х偣鍚嶇О', minWidth: 150,
addDisplay: true,
editDisplay: true,
viewDisplay: true,
@@ -3521,8 +3477,8 @@
}
],
},
- customerName:{
- label: '鎵�灞炲鎴�',minWidth: 150,disabled: true,
+ customerName: {
+ label: '鎵�灞炲鎴�', minWidth: 150, disabled: true,
},
// customerId: {
// label: '鎵�灞炲鎴�',minWidth: 150,
@@ -3617,7 +3573,7 @@
// ],
// },
consignorType: {
- label: '瑁呭嵏璐х偣绫诲瀷',minWidth: 150,
+ label: '瑁呭嵏璐х偣绫诲瀷', minWidth: 150,
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/consignor_type',
addDisplay: true,
editDisplay: true,
@@ -3636,9 +3592,9 @@
{
label: '鑱旂郴浜轰俊鎭�',
prop: 'lxrxx',
- column:{
+ column: {
contactName: {
- label: '鑱旂郴浜哄鍚�',minWidth: 150,
+ label: '鑱旂郴浜哄鍚�', minWidth: 150,
addDisplay: true,
editDisplay: true,
viewDisplay: true,
@@ -3652,7 +3608,7 @@
],
},
contactPhone: {
- label: '鑱旂郴浜虹數璇�',minWidth: 150,
+ label: '鑱旂郴浜虹數璇�', minWidth: 150,
addDisplay: true,
editDisplay: true,
viewDisplay: true,
@@ -3660,7 +3616,7 @@
search: false,
},
contactEmail: {
- label: '鑱旂郴浜洪偖绠�',minWidth: 150,
+ label: '鑱旂郴浜洪偖绠�', minWidth: 150,
addDisplay: true,
editDisplay: true,
viewDisplay: true,
@@ -3672,12 +3628,12 @@
{
label: '鍦板潃淇℃伅',
prop: 'dzxx',
- column:{
+ column: {
mapLocationDetail: {
- label: '鍦板浘浣嶇疆',minWidth: 150,
+ label: '鍦板浘浣嶇疆', minWidth: 150,
addDisplay: true,
- editDisplay: true,span:24,
+ editDisplay: true, span: 24,
viewDisplay: true,
hide: true,
search: false,
@@ -3697,23 +3653,23 @@
// console.log(form2.value,"form2")
// }
// },
- change: async ({value}:any)=>{
- if (Array.isArray(value) && value.length === 3){
- mapRegeo(value[1], value[0]).then(async res => {
- let params = res.data || {};
- if (params.info === "OK") {
- let {province, city, district, township} = params.regeocode.addressComponent || {};
- const res = await getAddressCode({province, city, district, township});
- const {provinceCode, cityCode, districtCode, townshipCode} = res.data || {};
- form2.value.regionLabel = province + " / " + city + " / " + district + " / " + township;
- form2.value.provinceId = provinceCode;
- form2.value.cityId = cityCode;
- form2.value.districtId = districtCode;
- form2.value.streetId = townshipCode;
- form2.value.dispatchTransportArea = params.regeocode.formatted_address || params.regeocode.formattedAddress;
- console.log(form2.value, "form2")
- }
- });
+ change: async ({ value }: any) => {
+ if (Array.isArray(value) && value.length === 3) {
+ mapRegeo(value[1], value[0]).then(async res => {
+ let params = res.data || {};
+ if (params.info === "OK") {
+ let { province, city, district, township } = params.regeocode.addressComponent || {};
+ const res = await getAddressCode({ province, city, district, township });
+ const { provinceCode, cityCode, districtCode, townshipCode } = res.data || {};
+ form2.value.regionLabel = province + " / " + city + " / " + district + " / " + township;
+ form2.value.provinceId = provinceCode;
+ form2.value.cityId = cityCode;
+ form2.value.districtId = districtCode;
+ form2.value.streetId = townshipCode;
+ form2.value.dispatchTransportArea = params.regeocode.formatted_address || params.regeocode.formattedAddress;
+ console.log(form2.value, "form2")
+ }
+ });
}
},
},
@@ -3733,9 +3689,9 @@
// },
electronicFenceRange: {
label: '鐢靛瓙鍥存爮鑼冨洿',
- addDisplay: true,minWidth: 150,
+ addDisplay: true, minWidth: 150,
editDisplay: true,
- viewDisplay: true,append:'绫�',
+ viewDisplay: true, append: '绫�',
hide: false,
search: true,
rules: [
@@ -3750,12 +3706,12 @@
{
label: '鍏朵粬淇℃伅',
prop: 'qtyxx',
- column:{
+ column: {
remark: {
- label: '澶囨敞',minWidth: 150,
+ label: '澶囨敞', minWidth: 150,
type: 'textarea', minRows: 3, maxRows: 5,
addDisplay: true,
- editDisplay: true,span:24,
+ editDisplay: true, span: 24,
viewDisplay: true,
hide: true,
search: false,
@@ -3768,7 +3724,7 @@
const dialForm = ref();
const handleAddShipper = () => {
- if (!form.value.customerId){
+ if (!form.value.customerId) {
return ElMessage.error('璇峰厛閫夋嫨杩愯緭璺嚎');
}
form2.value = {
@@ -3778,33 +3734,33 @@
};
dialForm.value = $DialogForm(appContext)({
title: '鏂板瑁呰揣鍦�',
- data:form2.value,
+ data: form2.value,
width: '80%',
option: consignorAddOption.value,
menuPosition: 'right',
- callback: (res:any,) => {
+ callback: (res: any,) => {
let data1 = res.data;
- if (data1.mapLocationDetail){
- data1.mapLocation = data1.mapLocationDetail[0]+','+data1.mapLocationDetail[1];
+ if (data1.mapLocationDetail) {
+ data1.mapLocation = data1.mapLocationDetail[0] + ',' + data1.mapLocationDetail[1];
data1.addressDetail = data1.mapLocationDetail[2]
}
- addTmsConsignor({...form2.value,...data1}).then(res2=>{
+ addTmsConsignor({ ...form2.value, ...data1 }).then(res2 => {
let active = res2.data || {};
if (active) {
let shipperRegionCode = '';
- if (active.provinceId){
+ if (active.provinceId) {
shipperRegionCode = active.provinceId;
}
- if (active.cityId){
- shipperRegionCode =shipperRegionCode+ ","+active.cityId;
+ if (active.cityId) {
+ shipperRegionCode = shipperRegionCode + "," + active.cityId;
}
- if (active.districtId){
- shipperRegionCode =shipperRegionCode+ ","+active.districtId;
+ if (active.districtId) {
+ shipperRegionCode = shipperRegionCode + "," + active.districtId;
}
- if (active.streetId){
- shipperRegionCode =shipperRegionCode+ ","+active.streetId;
+ if (active.streetId) {
+ shipperRegionCode = shipperRegionCode + "," + active.streetId;
}
Object.assign(form.value, {
shipperId: active.id,
@@ -3812,12 +3768,12 @@
shipperRegionLabel: active.regionLabel,
shipperAddress: active.addressDetail,
shipperMobile: active.contactPhone,
- shipperRegionCode:shipperRegionCode
+ shipperRegionCode: shipperRegionCode
});
}
dialForm.value.close();
res.done();
- }).catch(err=>{
+ }).catch(err => {
res.done();
})
},
@@ -3825,7 +3781,7 @@
}
const handleAddReceiver = () => {
- if (!form.value.customerId){
+ if (!form.value.customerId) {
return ElMessage.error('璇峰厛閫夋嫨杩愯緭璺嚎');
}
form2.value = {
@@ -3835,33 +3791,33 @@
};
dialForm.value = $DialogForm(appContext)({
title: '鏂板鍗歌揣鍦�',
- data:form2.value,
+ data: form2.value,
width: '80%',
option: consignorAddOption.value,
menuPosition: 'right',
- callback: (res:any,) => {
+ callback: (res: any,) => {
let data1 = res.data;
- if (data1.mapLocationDetail){
- data1.mapLocation = data1.mapLocationDetail[0]+','+data1.mapLocationDetail[1];
+ if (data1.mapLocationDetail) {
+ data1.mapLocation = data1.mapLocationDetail[0] + ',' + data1.mapLocationDetail[1];
data1.addressDetail = data1.mapLocationDetail[2]
}
- addTmsConsignor({...form2.value,...data1}).then(res2=>{
+ addTmsConsignor({ ...form2.value, ...data1 }).then(res2 => {
let active = res2.data || {};
if (active) {
let receiverRegionCode = '';
- if (active.provinceId){
+ if (active.provinceId) {
receiverRegionCode = active.provinceId;
}
- if (active.cityId){
- receiverRegionCode =receiverRegionCode+ ","+active.cityId;
+ if (active.cityId) {
+ receiverRegionCode = receiverRegionCode + "," + active.cityId;
}
- if (active.districtId){
- receiverRegionCode =receiverRegionCode+ ","+active.districtId;
+ if (active.districtId) {
+ receiverRegionCode = receiverRegionCode + "," + active.districtId;
}
- if (active.streetId){
- receiverRegionCode =receiverRegionCode+ ","+active.streetId;
+ if (active.streetId) {
+ receiverRegionCode = receiverRegionCode + "," + active.streetId;
}
Object.assign(form.value, {
@@ -3870,12 +3826,12 @@
receiverRegionLabel: active.regionLabel,
receiverAddress: active.addressDetail,
receiverMobile: active.contactPhone,
- receiverRegionCode:receiverRegionCode,
+ receiverRegionCode: receiverRegionCode,
});
}
dialForm.value.close();
res.done();
- }).catch(err=>{
+ }).catch(err => {
res.done();
})
},
@@ -3888,6 +3844,15 @@
form.value = selectionList.value[0];
optionType.value = 'customs';
boxFormOption.value = customsOption.value;
+
+}
+
+const handleCustomsAdd = (selectionList) => {
+ title.value = '琛ュ厖濮旀墭瑁呭嵏淇℃伅';
+ open.value = true;
+ form.value = selectionList;
+ optionType.value = 'loading';
+ boxFormOption.value = loadingOption.value;
}
const handleLoading = () => {
title.value = '琛ュ厖濮旀墭瑁呭嵏淇℃伅';
@@ -3896,32 +3861,40 @@
optionType.value = 'loading';
boxFormOption.value = loadingOption.value;
}
+const handleLoadingAdd = (selectionList) => {
+ title.value = '琛ュ厖濮旀墭瑁呭嵏淇℃伅';
+ open.value = true;
+ form.value = selectionList;
+ optionType.value = 'loading';
+ boxFormOption.value = loadingOption.value;
+}
const quotationItems = ref();
const getQuotationItems = async () => {
- let res = await getDicts("sys_quotation_items");
+ let res = await getDicts("sys_quotation_items");
quotationItems.value = res.data || [];
}
getQuotationItems();
-const getTabData = (val:string)=>{
+const getTabData = (val: string) => {
console.log(val)
- let filter = quotationItems.value.filter((item:any)=>{
+ let filter = quotationItems.value.filter((item: any) => {
return item.remark == val;
});
- if (filter.length > 0){
- zzItemsTableData.value = filter.map((item:any)=>{
- return { rowKey: randomId() ,freeName: item.dictLabel,free: item.dictValue,unit: '娆�'}
+ if (filter.length > 0) {
+ zzItemsTableData.value = filter.map((item: any) => {
+ return { rowKey: randomId(), freeName: item.dictLabel, free: item.dictValue, unit: '娆�' }
})
- }else{
+ } else {
zzItemsTableData.value = []
}
}
-const getTab4Data = ()=>{
+const getTab4Data = () => {
listTmsFinanceDetail({
dispatchOrderId: form.value.id, financeType: 2,
pageNum: 1, pageSize: 999
}).then(async res => {
+
boxTableData.value = res.rows || [];
boxForm.value = {
@@ -3934,39 +3907,76 @@
-const submitTabForm = ()=>{
- if (['tab1','tab2','tab3'].includes(active.value)){
- let quoteFeeItems = zzItemsTableData.value.filter((item:any)=>{
+const submitTabForm = () => {
+ if (['tab1', 'tab2', 'tab3'].includes(active.value)) {
+ let quoteFeeItems = zzItemsTableData.value.filter((item: any) => {
return item.count && item.count > 0;
})
- console.log(quoteFeeItems)
- pushTmsQuoteFee({...form.value,quoteFeeItems:quoteFeeItems}).then(res=>{
+ pushTmsQuoteFee({ ...form.value, quoteFeeItems: quoteFeeItems }).then(res => {
ElMessage.success('淇濆瓨鎴愬姛');
open4.value = false;
})
- }else if (active.value === 'tab4'){
- if (Array.isArray(boxForm.value.feeVoucherUrl)) {
- boxForm.value.feeVoucherUrl = boxForm.value.feeVoucherUrl.toString();
- }
+ } else if (active.value === 'tab4') {
+ // if (Array.isArray(boxForm.value.feeVoucherUrl)) {
+ // boxForm.value.feeVoucherUrl = boxForm.value.feeVoucherUrl.toString();
+ // }
//boxForm.value.rowItems = boxTableData.value;
- saveTmsFinanceDetail(boxForm.value).then(res => {
+ // console.log(tmsFinanceDetails.value);
+ // console.log(boxForm.value);
+// 1. 鎻愬彇濉啓浜嗛噾棰濈殑鏁版嵁锛堥噾棰濆ぇ浜�0锛�
+ const validDetails = tmsFinanceDetails.value.filter(item => item.actualFeeAmount && item.actualFeeAmount > 0);
+
+ if (validDetails.length === 0) {
+ ElMessage.warning('璇疯嚦灏戝~鍐欎竴椤硅垂鐢ㄩ噾棰�');
+ return;
+ }
+
+ // 2. 鏍¢獙锛氬~鍐欎簡閲戦鐨勬槸鍚﹂兘閫変簡甯佸埗
+ const incomplete = validDetails.find(item => !item.currency);
+ if (incomplete) {
+ ElMessage.error(`璐圭敤绫诲瀷銆�${incomplete.feeTypeName}銆戝凡濉啓閲戦锛岃閫夋嫨甯佸埗锛乣);
+ return; // 鎷︽埅鎻愪氦
+ }
+
+ // 3. 澶勭悊鍑瘉 URL (濡傛灉鏈夊崟寮犳垨澶氬紶涓婁紶鐨勯�昏緫)
+ // 鍋囪鍚庣闇�瑕佺殑鏄�楀彿鍒嗛殧鐨勫瓧绗︿覆
+ const submitData = validDetails.map(item => {
+ let url = item.voucherUrl;
+ if (Array.isArray(url)) {
+ url = url.join(',');
+ }
+ return { ...item, voucherUrl: url };
+ });
+
+
+ saveTmsFinanceDetail2(submitData).then(res => {
ElMessage({
message: "鎿嶄綔鎴愬姛锛�",
type: 'success'
})
+ open4.value = false;
+ onLoad(page.value)
boxFormRef.value?.resetFields();
getTab4Data();
})
+ // saveTmsFinanceDetail(boxForm.value).then(res => {
+ // ElMessage({
+ // message: "鎿嶄綔鎴愬姛锛�",
+ // type: 'success'
+ // })
+ // boxFormRef.value?.resetFields();
+ // getTab4Data();
+ // })
}
}
-const handleChange = (column:any)=>{
+const handleChange = (column: any) => {
active.value = column.prop;
- if (['tab1','tab2','tab3'].includes(column.prop)){
+ if (['tab1', 'tab2', 'tab3'].includes(column.prop)) {
getTabData(column.value)
- }else if (column.prop === 'tab4'){
+ } else if (column.prop === 'tab4') {
getTab4Data()
}
}
@@ -3978,38 +3988,38 @@
boxFormOption.value = financeOption.value;
boxTableOption.value = financeTableOption.value;
- nextTick(()=>{
+ nextTick(() => {
tabsOptionRef.value.active = "0";
})
}
-const handleClose = (row:any) => {
+const handleClose = (row: any) => {
- if (row.status == 2){
- checkCloseOrder(row.id).then(res=>{
+ if (row.status == 2) {
+ checkCloseOrder(row.id).then(res => {
open5.value = true;
form.value = row;
boxFormOption.value = closeOption.value;
});
- }else{
+ } else {
open5.value = true;
form.value = row;
boxFormOption.value = closeOption.value;
}
}
-const submitForm5 = () =>{
- boxFormRef.value.validate((valid: boolean,done:any) => {
+const submitForm5 = () => {
+ boxFormRef.value.validate((valid: boolean, done: any) => {
console.log(valid)
- if(valid){
+ if (valid) {
boxForm.value.id = form.value.id;
- closeOrder(boxForm.value).then(res=>{
+ closeOrder(boxForm.value).then(res => {
ElMessage.success('鎿嶄綔鎴愬姛');
open5.value = false;
done();
onLoad(page.value)
- }).catch(err=>{
+ }).catch(err => {
done();
})
}
@@ -4019,54 +4029,54 @@
menuBtn: false,
labelWidth: 120,
column: {
- sixLinkNo:{
+ sixLinkNo: {
label: '鍏仈鍗曞彿',
},
- portName:{
+ portName: {
label: '琛岄┒鍙e哺',
type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_port',
},
- billNo:{
+ billNo: {
label: '鎻愬崟鍙稴/O',
},
- terminalName:{
+ terminalName: {
label: '鐮佸ご鍚�',
},
- cargoName:{
+ cargoName: {
label: '璐х墿鍚�',
},
- pieceCount:{
+ pieceCount: {
label: '浠舵暟',
},
- weight:{
+ weight: {
label: '閲嶉噺',
},
- contactName:{
+ contactName: {
label: '瀹㈡埛鑱旂粶浜�',
},
- contactPhone:{
+ contactPhone: {
label: '鑱旂粶浜烘墜鏈哄彿',
}
}
})
-const print =ref(0)
+const print = ref(0)
const handlePrint = () => {
- form.value = selectionList.value[0];
+ form.value = selectionList.value[0];
boxFormOption.value = printOption.value;
boxForm.value = form.value
- getTmsDriver(boxForm.value.mainDriverId).then(res=>{
+ getTmsDriver(boxForm.value.mainDriverId).then(res => {
open6.value = true;
- const driver = res.data || {};
+ const driver = res.data || {};
boxForm.value.mainDriverMobile = driver.mobile;
print.value = 0
})
}
-const submitForm6 = ()=>{
+const submitForm6 = () => {
print.value = 1;
- printDispatchOrder(boxForm.value).then(res=>{
+ printDispatchOrder(boxForm.value).then(res => {
$Print('#print');
onLoad(page.value)
})
@@ -4099,11 +4109,11 @@
importTemplateTmsDispatchOrder();
}
-const handleFileUploadProgress = (event:any, file:any) => {
+const handleFileUploadProgress = (event: any, file: any) => {
upload.isUploading = true;
};
/** 鏂囦欢涓婁紶鎴愬姛澶勭悊 */
-const handleFileSuccess = (response:any, file:any) => {
+const handleFileSuccess = (response: any, file: any) => {
upload.open = false;
upload.isUploading = false;
uploadRef.value!.clearFiles();
@@ -4119,8 +4129,8 @@
const shipperReceiverFormOption = ref({
menuBtn: false, labelWidth: 140,
column: {
- dispatchNos:{
- label: '璋冨害鍗曞彿',span:24,
+ dispatchNos: {
+ label: '璋冨害鍗曞彿', span: 24,
rules: [
{
required: true,
@@ -4129,7 +4139,7 @@
],
},
shipperId: {
- label: '瑁呰揣鐐�', dataType: 'string',disabled:false,
+ label: '瑁呰揣鐐�', dataType: 'string', disabled: false,
display: true,
rules: [
{
@@ -4154,7 +4164,7 @@
},
receiverId: {
label: '鍗歌揣鐐�',
- display: true, dataType: 'string',disabled:false,
+ display: true, dataType: 'string', disabled: false,
rules: [
{
required: true,
@@ -4177,7 +4187,7 @@
}
});
-const changeShipper2 = ({value}: any) => {
+const changeShipper2 = ({ value }: any) => {
if (value) {
let id = value;
@@ -4212,7 +4222,7 @@
})
}
}
-const changeReceiver2 = ({value}: any) => {
+const changeReceiver2 = ({ value }: any) => {
if (value) {
let id = value;
@@ -4251,43 +4261,43 @@
const hasDifferentCustomer = (() => {
const customerSet = new Set(
- selectionList.value.map((item:any) => item.customerId)
+ selectionList.value.map((item: any) => item.customerId)
);
return customerSet.size > 1;
})();
-const handleZXHDJ = ()=>{
- if(hasDifferentCustomer){
+const handleZXHDJ = () => {
+ if (hasDifferentCustomer) {
ElMessage.error('鍗曟鎿嶄綔鍙兘鎿嶄綔涓�涓鎴风殑鏁版嵁');
return;
}
- let filter = selectionList.value.filter((item:any)=> !item.shipperId);
- let filter2 = selectionList.value.filter((item:any)=> !item.receiverId);
+ let filter = selectionList.value.filter((item: any) => !item.shipperId);
+ let filter2 = selectionList.value.filter((item: any) => !item.receiverId);
let zLen = filter.length || 0;
let xLen = filter2.length || 0;
- if (zLen == 0 && xLen == 0){
+ if (zLen == 0 && xLen == 0) {
ElMessage.error('閫夋嫨鐨勬暟鎹凡瀹屾垚瀵硅鍗歌揣鐐圭櫥璁�');
return;
}
- if(zLen >0 && xLen >0){
- if (zLen > xLen){
+ if (zLen > 0 && xLen > 0) {
+ if (zLen > xLen) {
ElMessage.error('閫夋嫨鐨勬暟鎹凡濉啓鍗歌揣鐐规暟鎹紝璇峰崟鐙紪杈�');
return;
}
- if (zLen < xLen){
+ if (zLen < xLen) {
ElMessage.error('閫夋嫨鐨勬暟鎹凡濉啓瑁呰揣鐐规暟鎹紝璇峰崟鐙紪杈�');
return;
}
}
- let item:any = selectionList.value[0];
+ let item: any = selectionList.value[0];
shipperReceiverForm.value.customerId = item?.customerId
shipperReceiverForm.value.customerCode = item?.customerCode
shipperReceiverForm.value.customerName = item?.customerName;
- shipperReceiverForm.value.dispatchNos = selectionList.value.map((item:any)=> item.dispatchNo) || [];
+ shipperReceiverForm.value.dispatchNos = selectionList.value.map((item: any) => item.dispatchNo) || [];
- shipperReceiverFormOption.value.column.shipperId.disabled = zLen ==0;
- shipperReceiverFormOption.value.column.shipperId.rules[0].required = zLen !=0;
- shipperReceiverFormOption.value.column.receiverId.disabled = xLen ==0;
- shipperReceiverFormOption.value.column.receiverId.rules[0].required = xLen !=0;
+ shipperReceiverFormOption.value.column.shipperId.disabled = zLen == 0;
+ shipperReceiverFormOption.value.column.shipperId.rules[0].required = zLen != 0;
+ shipperReceiverFormOption.value.column.receiverId.disabled = xLen == 0;
+ shipperReceiverFormOption.value.column.receiverId.rules[0].required = xLen != 0;
open7.value = true;
@@ -4302,33 +4312,33 @@
};
dialForm.value = $DialogForm(appContext)({
title: '鏂板瑁呰揣鍦�',
- data:form2.value,
+ data: form2.value,
width: '80%',
option: consignorAddOption.value,
menuPosition: 'right',
- callback: (res:any,) => {
+ callback: (res: any,) => {
let data1 = res.data;
- if (data1.mapLocationDetail){
- data1.mapLocation = data1.mapLocationDetail[0]+','+data1.mapLocationDetail[1];
+ if (data1.mapLocationDetail) {
+ data1.mapLocation = data1.mapLocationDetail[0] + ',' + data1.mapLocationDetail[1];
data1.addressDetail = data1.mapLocationDetail[2]
}
- addTmsConsignor({...form2.value,...data1}).then(res2=>{
+ addTmsConsignor({ ...form2.value, ...data1 }).then(res2 => {
let active = res2.data || {};
if (active) {
let shipperRegionCode = '';
- if (active.provinceId){
+ if (active.provinceId) {
shipperRegionCode = active.provinceId;
}
- if (active.cityId){
- shipperRegionCode =shipperRegionCode+ ","+active.cityId;
+ if (active.cityId) {
+ shipperRegionCode = shipperRegionCode + "," + active.cityId;
}
- if (active.districtId){
- shipperRegionCode =shipperRegionCode+ ","+active.districtId;
+ if (active.districtId) {
+ shipperRegionCode = shipperRegionCode + "," + active.districtId;
}
- if (active.streetId){
- shipperRegionCode =shipperRegionCode+ ","+active.streetId;
+ if (active.streetId) {
+ shipperRegionCode = shipperRegionCode + "," + active.streetId;
}
Object.assign(shipperReceiverForm.value, {
shipperId: active.id,
@@ -4336,12 +4346,12 @@
shipperRegionLabel: active.regionLabel,
shipperAddress: active.addressDetail,
shipperMobile: active.contactPhone,
- shipperRegionCode:shipperRegionCode
+ shipperRegionCode: shipperRegionCode
});
}
dialForm.value.close();
res.done();
- }).catch(err=>{
+ }).catch(err => {
res.done();
})
},
@@ -4349,7 +4359,7 @@
}
const handleAddReceiver2 = () => {
- if (!form.value.customerId){
+ if (!form.value.customerId) {
return ElMessage.error('璇峰厛閫夋嫨杩愯緭璺嚎');
}
form2.value = {
@@ -4359,33 +4369,33 @@
};
dialForm.value = $DialogForm(appContext)({
title: '鏂板鍗歌揣鍦�',
- data:form2.value,
+ data: form2.value,
width: '80%',
option: consignorAddOption.value,
menuPosition: 'right',
- callback: (res:any,) => {
+ callback: (res: any,) => {
let data1 = res.data;
- if (data1.mapLocationDetail){
- data1.mapLocation = data1.mapLocationDetail[0]+','+data1.mapLocationDetail[1];
+ if (data1.mapLocationDetail) {
+ data1.mapLocation = data1.mapLocationDetail[0] + ',' + data1.mapLocationDetail[1];
data1.addressDetail = data1.mapLocationDetail[2]
}
- addTmsConsignor({...form2.value,...data1}).then(res2=>{
+ addTmsConsignor({ ...form2.value, ...data1 }).then(res2 => {
let active = res2.data || {};
if (active) {
let receiverRegionCode = '';
- if (active.provinceId){
+ if (active.provinceId) {
receiverRegionCode = active.provinceId;
}
- if (active.cityId){
- receiverRegionCode =receiverRegionCode+ ","+active.cityId;
+ if (active.cityId) {
+ receiverRegionCode = receiverRegionCode + "," + active.cityId;
}
- if (active.districtId){
- receiverRegionCode =receiverRegionCode+ ","+active.districtId;
+ if (active.districtId) {
+ receiverRegionCode = receiverRegionCode + "," + active.districtId;
}
- if (active.streetId){
- receiverRegionCode =receiverRegionCode+ ","+active.streetId;
+ if (active.streetId) {
+ receiverRegionCode = receiverRegionCode + "," + active.streetId;
}
Object.assign(shipperReceiverForm.value, {
@@ -4394,64 +4404,181 @@
receiverRegionLabel: active.regionLabel,
receiverAddress: active.addressDetail,
receiverMobile: active.contactPhone,
- receiverRegionCode:receiverRegionCode,
+ receiverRegionCode: receiverRegionCode,
});
}
dialForm.value.close();
res.done();
- }).catch(err=>{
+ }).catch(err => {
res.done();
})
},
})
}
-const handleCloseDispatchNo = (tag:string)=>{
+const handleCloseDispatchNo = (tag: string) => {
let indexOf = shipperReceiverForm.value.dispatchNos.indexOf(tag);
- shipperReceiverForm.value.dispatchNos.splice(indexOf,1);
+ shipperReceiverForm.value.dispatchNos.splice(indexOf, 1);
}
-const submitZxForm = ()=>{
- shipperReceiverFormRef.value.validate((valid: boolean,done:any) => {
- if(valid){
- ypdddjSumbit(shipperReceiverForm.value).then(res=>{
+const submitZxForm = () => {
+ shipperReceiverFormRef.value.validate((valid: boolean, done: any) => {
+ if (valid) {
+ ypdddjSumbit(shipperReceiverForm.value).then(res => {
ElMessage.success('鐧昏鎴愬姛');
open7.value = false;
onLoad(page.value);
done();
- }).catch(err=>{
+ }).catch(err => {
done();
})
}
})
}
+const importLogVisible = ref(false);
+const importLogLoading = ref(false);
+const importLogData = ref([]);
+// 寮圭獥琛ㄦ牸閰嶇疆
+const importLogOption = {
+ header: false,
+ addBtn: false,
+ menu: false, // 浠呭睍绀猴紝涓嶉渶瑕佹搷浣滃垪
+ column: [
+ { label: '瀵煎叆鏃堕棿', prop: 'importTime', type: 'datetime', format: 'YYYY-MM-DD HH:mm:ss' },
+ { label: '瀵煎叆鏂囦欢鍚嶇О', prop: 'fileName' },
+ { label: '鎿嶄綔浜�', prop: 'operator' },
+ { label: '鎴愬姛琛屾暟', prop: 'successCount' },
+ { label: '澶辫触琛屾暟', prop: 'failureCount' },
+ { label: '澶辫触璇存槑', prop: 'failureDescription', overHidden: true }
+ ]
+};
+
+// 鎵撳紑鏃ュ織寮圭獥
+const handleImportLog = () => {
+ importLogVisible.value = true;
+};
+
+// 鑾峰彇鏃ュ織鍒楄〃鏁版嵁锛堥渶鏍规嵁瀹為檯 API 璋冩暣锛�
+const getImportLogList = () => {
+ importLogData.value = []
+ // 鍋囪鏈変竴涓� getLogApi 鐨勬帴鍙�
+ tmsTmsDispatchOrderImportLog().then(res => {
+ if (res.code == 200) {
+ importLogLoading.value = true;
+ importLogData.value = res.data;
+ importLogLoading.value = false;
+ }
+ });
+
+};
+// 1. 瀹氫箟鍞竴鐨勫彉閲忓悕
+const tmsFinanceDetails = ref([]); // 鏁版嵁婧�
+const expenditureTableOption = ref({
+ addBtn: false,
+ menu: false,
+ header: false,
+ border: true,
+ index: false,
+ selection: false,
+ column: [
+ {
+ label: '璐圭敤绫诲瀷',
+ prop: 'feeTypeName',
+ width: 150
+ },
+ {
+ label: '璐圭敤閲戦',
+ prop: 'actualFeeAmount',
+ slot: true,
+ width: 150
+ },
+ {
+ label: '甯佸埗',
+ prop: 'currency',
+ slot: true,
+ width: 200
+ },
+ {
+
+ label: '璐圭敤鍑瘉',
+ display: true,
+ span: 24,
+ accept: 'string', dataType: 'object',
+ type: 'upload',
+ // action: '/common/upload2',
+
+ prop: 'voucherUrl', // 杩欓噷鏀规垚 prop 灞炴��
+ slot: true, // 寮�鍚彃妲�
+ width: 200
+ },
+ {
+ label: '澶囨敞',
+ prop: 'remark',
+ slot: true
+ }
+ ]
+});
+// 3. 鍥炴樉鍒濆鍖�
+const initExpenditureData = () => {
+ if (fee_type.value && fee_type.value.length > 0 && tmsFinanceDetails.value.length === 0) {
+ tmsFinanceDetails.value = fee_type.value.map(item => ({
+ feeType: item.value,
+ feeTypeName: item.label,
+ feeAmount: undefined,
+ currency: '',
+ voucherUrl: '',
+ remark: ''
+ }));
+ }
+};
+// 4. 鐩戝惉鍒囨崲
+watch(() => active.value, (val) => {
+ if (val === 'tab4') {
+ initExpenditureData();
+ }
+});
+const handleUploadAfter = (res, done, loading, column, row) => {
+ // res 鏄帴鍙h繑鍥炵殑瀹屾暣鏁版嵁
+ if (res && res.url) {
+ // 鎵嬪姩缁欒繖涓�琛岀殑鏁版嵁璧嬪��
+ row.voucherUrl = res.url;
+ console.log('涓婁紶鎴愬姛锛屽綋鍓嶈鏁版嵁锛�', row);
+ } else if (res.data && res.data.url) {
+ // 濡傛灉杩斿洖鐨勬暟鎹寘瑁瑰湪 data 閲�
+ row.voucherUrl = res.data.url;
+ }
+ done(); // 蹇呴』璋冪敤 done 缁撴潫涓婁紶鐘舵��
+};
</script>
<style lang="scss" scoped>
-
-::v-deep .cydprint .el-dialog__body{
- overflow: hidden;
+::v-deep .cydprint .el-dialog__body {
+ overflow: hidden;
//padding: 0;
margin: 0;
}
-#print{
- .title{
+
+#print {
+ .title {
text-align: center;
font-size: 14pt;
color: #000;
- line-height:23pt;
+ line-height: 23pt;
font-weight: bold;
margin: 0;
}
- .header{
- position: relative;
- .order{
+
+ .header {
+ position: relative;
+
+ .order {
font-size: 12pt;
color: #000;
line-height: 23pt;
}
- .sub-title{
+
+ .sub-title {
position: absolute;
left: 50%;
transform: translateX(-50%);
@@ -4466,22 +4593,29 @@
table {
width: 100%;
- border-collapse: collapse; /* 鍚堝苟杈规 */
+ border-collapse: collapse;
+ /* 鍚堝苟杈规 */
font-size: 12px;
- table-layout: fixed; /* 鍏抽敭鐐� */
+ table-layout: fixed;
+ /* 鍏抽敭鐐� */
}
- table, td {
+
+ table,
+ td {
border: 1px solid #000;
}
+
td {
padding: 4px;
vertical-align: middle;
- width: 50%; /* 寮哄埗绛夊 */
+ width: 50%;
+ /* 寮哄埗绛夊 */
word-break: break-all;
}
}
-.dispatchNos{
+
+.dispatchNos {
//border: 1px solid #ebeef5;
border-radius: 4px;
min-height: 73px;
--
Gitblit v1.8.0