Переглянути джерело

Merge branch 'master' of http://git.dgtis.com/hanchaolong/jd_logistics

yinxiangke 9 годин тому
батько
коміт
2b0b0a37f4

+ 1 - 1
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/front/controller/WaybillOrderController.java

@@ -31,7 +31,7 @@ public class WaybillOrderController extends BaseController {
      * 查询运单管理列表
      */
     @GetMapping("/list")
-
+    @RequiresPermissions("system:order:list")
     public TableDataInfo list(BizWaybillOrder bizWaybillOrder)
     {
         startPage();

+ 1 - 1
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/front/controller/WxMiniController.java

@@ -65,7 +65,7 @@ public class WxMiniController {
             }
             currentUser.setOpenId(sysUser.getOpenId());
             // 更新用户openid
-            sysUserService.updateUser(currentUser);
+            sysUserService.updateUserProfile(currentUser);
         }
         // 角色集合
         Set<String> roles = permissionService.getRolePermission(currentUser);

+ 15 - 0
jd-logistics-ui-v3/src/api/logistics/monthSummary.js

@@ -49,4 +49,19 @@ export function costDetailsList(query) {
     method: 'get',
     params: query
   })
+}
+//
+export function getAccountAdjustment(query) {
+  return request({
+    url: '/system/costDetails/getAccountAdjustment',
+    method: 'get',
+    params: query
+  })
+}
+export function putAccountAdjustment(query) {
+  return request({
+    url: '/system/costDetails/accountAdjustment',
+    method: 'put',
+    data: query
+  })
 }

+ 269 - 0
jd-logistics-ui-v3/src/views/logistics/monthSummary/costList.vue

@@ -0,0 +1,269 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParamsCost" ref="queryCostRef" :inline="true" v-show="showSearch" label-width="100px">
+      <el-form-item label="运单号" prop="externalWaybillNo">
+        <el-input
+            v-model="queryParamsCost.externalWaybillNo"
+            placeholder="请输入运单号"
+            clearable
+            @keyup.enter="handleQueryCost"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQueryCost">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQueryCost">重置</el-button>
+      </el-form-item>
+    </el-form>
+    <el-table v-loading="loadingCost" :data="monthSummaryListCost">
+      <el-table-column label="序号" align="center" type="index"></el-table-column>
+      <el-table-column label="日期" align="center" prop="signTime" show-overflow-tooltip />
+      <el-table-column label="运单号码" align="center" prop="externalWaybillNo" show-overflow-tooltip />
+      <el-table-column label="寄件地区" align="center" prop="senderCity" />
+      <el-table-column label="到件地区" align="center" prop="receiverCity" />
+      <el-table-column label="计费重量" align="center" prop="goodsWeight" />
+      <el-table-column label="产品类型" align="center"  >
+        <template #default="scope">
+          <span v-if="scope.row.orderType == 1">{{formatterOptions(jd_logistics_product_code,scope.row.productCode)}}</span>
+          <span v-if="scope.row.orderType == 2">{{formatterOptions(sf_logistics_product_code,scope.row.productCode)}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="付款方式" align="center"  >
+        <template #default="scope">
+          <span>月结</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="费用(元)" align="center" prop="rateAmount" />
+      <el-table-column label="经手人" align="center" prop="userName" />
+      <el-table-column label="增值费用" align="center" prop="feeItemName" />
+      <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip/>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="100" v-if="routeQuery.status == 1">
+        <template #default="scope">
+          <el-button type="text" @click="handleUpdate(scope.row)" v-hasPermi="['system:costDetails:edit']" >调账</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+        v-show="totalCost>0"
+        :total="totalCost"
+        v-model:page="queryParamsCost.pageNum"
+        v-model:limit="queryParamsCost.pageSize"
+        @pagination="getCostDetailsList"
+    />
+    <!-- 添加或修改财务月度汇总对话框 -->
+    <el-dialog title="调账" v-model="open" width="70%" append-to-body>
+      <el-form ref="costListRef" :model="form" :rules="rules" label-width="160px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="日期" prop="signTime">
+              <el-input v-model="form.signTime" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="运单号码" prop="externalWaybillNo">
+              <el-input v-model="form.externalWaybillNo" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="寄件地区" prop="senderCity">
+              <el-input v-model="form.senderCity" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="到件地区" prop="receiverCity">
+              <el-input v-model="form.receiverCity" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="计费重量" prop="goodsWeight">
+              <el-input v-model="form.goodsWeight" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="产品类型" prop="goodsType">
+              <el-input v-model="form.goodsType" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="付款方式" prop="payType">
+              <el-input v-model="form.payType" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="费用(元)" prop="rateAmount">
+              <el-input v-model="form.rateAmount" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="经手人" prop="userName">
+              <el-input v-model="form.userName" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="增值费用" prop="feeItemName">
+              <el-input v-model="form.feeItemName" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="备注" prop="remark">
+              <el-input v-model="form.remark" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="调账金额" prop="adjustAmount">
+              <el-input v-model="form.adjustAmount" placeholder="请输入调账金额" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="调账类型" prop="adjustmentType">
+              <el-select v-model="form.adjustmentType" placeholder="请选择">
+                <el-option
+                    v-for="item in adjustment_type"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="调账原因" prop="adjustmentReason">
+              <el-input v-model="form.adjustmentReason" placeholder="请输入调账原因" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">确 定</el-button>
+          <el-button @click="cancel">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="CostList">
+import { ref } from 'vue'
+import { costDetailsList,getAccountAdjustment,putAccountAdjustment } from "@/api/logistics/monthSummary"
+
+const { proxy } = getCurrentInstance()
+
+const route = useRoute()
+const routeQuery = route.query;
+
+const { jd_logistics_product_code } = proxy.useDict("jd_logistics_product_code")
+const { sf_logistics_product_code } = proxy.useDict("sf_logistics_product_code")
+const { adjustment_type } = proxy.useDict("adjustment_type")
+
+const loadingCost = ref(false);
+const monthSummaryListCost = ref([]);
+const totalCost = ref(0);
+const queryParamsCost = ref({
+  pageNum: 1,
+  pageSize: 10,
+})
+const open = ref(false);
+const form = ref({});
+const rules = {
+  adjustAmount: [
+    {
+      required: true, message: '请输入应付金额', trigger: 'blur'
+    },
+    {
+      pattern: /^\d+(\.\d{1,2})?$/,
+      message: "应付金额必须为数字,且最多保留两位小数",
+      trigger: "blur"
+    }
+  ],
+  adjustmentType: [
+    {
+      required: true, message: '请选择调账类型', trigger: 'change'
+    },
+  ]
+}
+const costListRef = ref(null)
+function formatterOptions(options,value){
+  const option = options.find(item => item.value === value)
+  return option ? option.label : value
+}
+
+function getCostDetailsList(row){
+  loadingCost.value = true
+
+  costDetailsList(queryParamsCost.value).then(response => {
+    monthSummaryListCost.value = response.rows
+    totalCost.value = response.total
+    loadingCost.value = false
+  })
+}
+function handleQueryCost(){
+  queryParamsCost.value.pageNum = 1
+  getCostDetailsList()
+}
+function resetQueryCost() {
+  proxy.resetForm("queryCostRef")
+  handleQueryCost()
+}
+function getAccountAdjustmentFn(row){
+  let obj = {
+    summaryMonth:row.summaryMonth,
+    deptId:row.deptId,
+    waybillDetailId:row.waybillDetailId
+  }
+  getAccountAdjustment(obj).then(response => {
+    form.value = response.data;
+    if(row.orderType == 1){
+      form.value.goodsType = formatterOptions(jd_logistics_product_code.value,row.productCode)
+    }else if(row.orderType == 2){
+      form.value.goodsType = formatterOptions(sf_logistics_product_code.value,row.productCode)
+    }
+    form.value.payType = '月结';
+    open.value = true;
+  })
+}
+function handleUpdate(row){
+  getAccountAdjustmentFn(row)
+}
+// 取消按钮
+function cancel() {
+  open.value = false
+  form.value = {};
+  proxy.resetForm("costListRef")
+  if (costListRef.value) {
+    costListRef.value.resetFields();
+  }
+}
+async function submitForm () {
+  if (!costListRef.value) {
+    console.error('Form reference is not available');
+    return;
+  }
+
+  try {
+    // 使用 validate 方法进行表单验证
+    const valid = await costListRef.value.validate();
+
+    if (valid) {
+      // 表单验证通过,提交数据
+      console.log('表单验证通过,准备提交数据:', form.value);
+      putAccountAdjustment(form.value).then(response => {
+        proxy.$modal.msgSuccess("调账成功");
+        open.value = false;
+
+        // 重新加载数据
+        getCostDetailsList();
+      })
+    }
+  } catch (error) {
+    console.error('表单验证失败:', error);
+    // 验证失败,ElForm 会自动显示错误信息
+  }
+}
+getCostDetailsList()
+</script>
+<style scoped>
+.fontBlue{
+  color: #2D71FF;
+}
+</style>

+ 19 - 89
jd-logistics-ui-v3/src/views/logistics/monthSummary/index.vue

@@ -83,14 +83,20 @@
       <el-table-column label="月度汇总id" align="center" prop="summaryId" width="90" />
       <el-table-column label="汇总月份" align="center" >
         <template #default="scope">
-          <div class="fontBlue" @click="detailClick(scope.row)">{{scope.row.summaryMonth}}</div>
+          <el-button
+              type="text"
+              @click="detailClick(scope.row)"
+              v-if="auth.hasPermi('system:costDetails:list')"
+              v-hasPermi="['system:costDetails:list']"
+          >{{scope.row.summaryMonth}}</el-button>
+          <span v-else>{{scope.row.summaryMonth}}</span>
         </template>
       </el-table-column>
       <el-table-column label="应付金额" align="center" prop="payableAmount" />
       <el-table-column label="交易笔数" align="center" prop="transactionCount" />
       <el-table-column label="账单状态" align="center" prop="status" >
         <template #default="scope">
-          <span>{{formatterOptions(monthly_report_status,scope.row.status)}}</span>
+          <dict-tag :options="monthly_report_status" :value="scope.row.status" />
         </template>
       </el-table-column>
       <el-table-column label="供应商" align="center" prop="deptName" />
@@ -174,65 +180,12 @@
       </template>
     </el-dialog>
 
-<!--    查看-->
-    <el-dialog title="查看" v-model="openDetail" width="80%" append-to-body>
-      <el-form :model="queryParamsCost" ref="queryCostRef" :inline="true" v-show="showSearch" label-width="100px">
-        <el-form-item label="运单号" prop="externalWaybillNo">
-          <el-input
-              v-model="queryParamsCost.externalWaybillNo"
-              placeholder="请输入运单号"
-              clearable
-              @keyup.enter="handleQueryCost"
-          />
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary" icon="Search" @click="handleQueryCost">搜索</el-button>
-          <el-button icon="Refresh" @click="resetQueryCost">重置</el-button>
-        </el-form-item>
-      </el-form>
-      <el-table v-loading="loadingCost" :data="monthSummaryListCost">
-        <el-table-column label="序号" align="center" type="index"></el-table-column>
-        <el-table-column label="日期" align="center" prop="signTime" show-overflow-tooltip />
-        <el-table-column label="运单号码" align="center" prop="externalWaybillNo" show-overflow-tooltip />
-        <el-table-column label="寄件地区" align="center" prop="senderCity" />
-        <el-table-column label="到件地区" align="center" prop="receiverCity" />
-        <el-table-column label="计费重量" align="center" prop="goodsWeight" />
-        <el-table-column label="产品类型" align="center"  >
-          <template #default="scope">
-            <span v-if="scope.row.orderType == 1">{{formatterOptions(jd_logistics_product_code,scope.row.productCode)}}</span>
-            <span v-if="scope.row.orderType == 2">{{formatterOptions(sf_logistics_product_code,scope.row.productCode)}}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="付款方式" align="center"  >
-          <template #default="scope">
-            <span>月结</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="费用(元)" align="center" prop="rateAmount" />
-        <el-table-column label="经手人" align="center" prop="userName" />
-        <el-table-column label="增值费用" align="center" prop="feeItemName" />
-        <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip/>
-      </el-table>
-
-      <pagination
-          v-show="totalCost>0"
-          :total="totalCost"
-          v-model:page="queryParamsCost.pageNum"
-          v-model:limit="queryParamsCost.pageSize"
-          @pagination="getCostDetailsList"
-      />
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button type="primary" @click="openDetail = false">返 回</el-button>
-        </div>
-      </template>
-    </el-dialog>
   </div>
 </template>
 
 <script setup name="MonthSummary">
 import { listMonthSummary, getMonthSummary, delMonthSummary, addMonthSummary, updateMonthSummary,costDetailsList } from "@/api/logistics/monthSummary"
-
+import auth from '@/plugins/auth'
 const { proxy } = getCurrentInstance()
 const { monthly_report_status } = proxy.useDict("monthly_report_status")
 const { jd_logistics_product_code } = proxy.useDict("jd_logistics_product_code")
@@ -248,6 +201,8 @@ const multiple = ref(true)
 const total = ref(0)
 const title = ref("")
 
+const router = useRouter()
+
 const data = reactive({
   form: {},
   queryParams: {
@@ -282,14 +237,6 @@ const data = reactive({
     ]
   }
 })
-const openDetail = ref(false);
-const loadingCost = ref(false);
-const monthSummaryListCost = ref([]);
-const totalCost = ref(0);
-const queryParamsCost = ref({
-  pageNum: 1,
-  pageSize: 10,
-})
 
 const { queryParams, form, rules } = toRefs(data)
 
@@ -408,35 +355,18 @@ function handleExport() {
     ...queryParams.value
   }, `monthSummary_${new Date().getTime()}.xlsx`)
 }
-function formatterOptions(options,value){
-  console.log(options,value)
-  const option = options.find(item => item.value === value)
-  return option ? option.label : value
-}
 // 点击月份查看
 function detailClick(row){
-  openDetail.value = true;
-  queryParamsCost.value.summaryMonth = row.summaryMonth;
-  queryParamsCost.value.deptId = row.deptId;
-  getCostDetailsList();
-}
-function getCostDetailsList(row){
-  loadingCost.value = true
-
-  costDetailsList(queryParamsCost.value).then(response => {
-    monthSummaryListCost.value = response.rows
-    totalCost.value = response.total
-    loadingCost.value = false
+  router.push({
+    path:'/money/costList',
+    query:{
+      summaryMonth:row.summaryMonth,
+      deptId:row.deptId,
+      status:row.status
+    }
   })
 }
-function handleQueryCost(){
-  queryParamsCost.value.pageNum = 1
-  getCostDetailsList()
-}
-function resetQueryCost() {
-  proxy.resetForm("queryCostRef")
-  handleQueryCost()
-}
+console.log(window['hasPermi'])
 getList()
 </script>
 <style scoped>

+ 2 - 2
jd-logistics-ui-v3/src/views/logistics/order/components/PickupTimeCascader.vue

@@ -77,12 +77,12 @@ const props = defineProps({
   // 开始时间
   startTime: {
     type: Number,
-    default: 9
+    default: 8
   },
   // 结束时间
   endTime: {
     type: Number,
-    default: 21
+    default: 20
   },
   // 当前时间(用于测试)
   currentTime: {

+ 31 - 31
jd-logistics-ui-v3/src/views/logistics/order/index.vue

@@ -462,36 +462,36 @@
             </div>
           </el-tab-pane>
 
-<!--          &lt;!&ndash; 新增物流轨迹标签页 &ndash;&gt;-->
-<!--          <el-tab-pane label="物流轨迹" name="logistics">-->
-<!--            <div class="logistics-trace-container">-->
-<!--              <div v-if="deliverTraceLoading" class="loading-container">-->
-<!--                <el-icon class="loading-icon"><Loading /></el-icon>-->
-<!--                <span>正在查询物流信息...</span>-->
-<!--              </div>-->
-<!--              <div v-else-if="deliverTraceData.length === 0" class="empty-container">-->
-<!--                <el-icon><Box /></el-icon>-->
-<!--                <span>暂无物流信息</span>-->
-<!--              </div>-->
-<!--              <div v-else class="trace-timeline">-->
-<!--                <el-timeline>-->
-<!--                  <el-timeline-item-->
-<!--                      v-for="(item, index) in deliverTraceData"-->
-<!--                      :key="index"-->
-<!--                      :timestamp="item.time"-->
-<!--                      placement="top"-->
-<!--                      :type="getTimelineType(index)"-->
-<!--                      size="large"-->
-<!--                  >-->
-<!--                    <div class="trace-item">-->
-<!--                      <div class="trace-content">{{ item.context }}</div>-->
-<!--                      <div class="trace-time">{{ item.ftime }}</div>-->
-<!--                    </div>-->
-<!--                  </el-timeline-item>-->
-<!--                </el-timeline>-->
-<!--              </div>-->
-<!--            </div>-->
-<!--          </el-tab-pane>-->
+          <!-- 新增物流轨迹标签页 -->
+          <el-tab-pane label="物流轨迹" name="logistics">
+            <div class="logistics-trace-container">
+              <div v-if="deliverTraceLoading" class="loading-container">
+                <el-icon class="loading-icon"><Loading /></el-icon>
+                <span>正在查询物流信息...</span>
+              </div>
+              <div v-else-if="deliverTraceData.length === 0" class="empty-container">
+                <el-icon><Box /></el-icon>
+                <span>暂无物流信息</span>
+              </div>
+              <div v-else class="trace-timeline">
+                <el-timeline>
+                  <el-timeline-item
+                      v-for="(item, index) in deliverTraceData"
+                      :key="index"
+                      :timestamp="item.time"
+                      placement="top"
+                      :type="getTimelineType(index)"
+                      size="large"
+                  >
+                    <div class="trace-item">
+                      <div class="trace-content">{{ item.context }}</div>
+                      <div class="trace-time">{{ item.ftime }}</div>
+                    </div>
+                  </el-timeline-item>
+                </el-timeline>
+              </div>
+            </div>
+          </el-tab-pane>
 
           <!-- 新增费用信息标签页 -->
           <el-tab-pane label="费用信息" name="fee">
@@ -1110,7 +1110,7 @@ const getDeliverTrace = (externalWaybillNo) => {
   deliverTraceLoading.value = true
   const params = {
     number: externalWaybillNo,
-    company: form.value.orderType == '1' ? 'jd' : 'sf'
+    company: ''
   }
 
   deliverTrace(params).then(response => {