xuwenqiang1992 2 سال پیش
والد
کامیت
c08e6b66d4
4فایلهای تغییر یافته به همراه188 افزوده شده و 129 حذف شده
  1. 24 0
      src/api/order/index.ts
  2. 11 0
      src/components/OrderDetail/index.vue
  3. 88 84
      src/views/order/orderList/compt/childDialog.vue
  4. 65 45
      src/views/order/orderList/index.vue

+ 24 - 0
src/api/order/index.ts

@@ -1,5 +1,29 @@
 // @ts-nocheck
 import request from "@/utils/request";
+//获取token
+export function expressFormToken(data) {
+  return request({
+    url: '/eout/expressFormToken',
+    method: 'post',
+    params: data
+  })
+}
+//预下单报价
+export function callExpress(data) {
+    return request({
+        url: '/eout/callExpress',
+        method: 'post',
+        data: data
+    })
+}
+//获取到配送平台的数据
+export function getPlatformList(data) {
+  return request({
+    url: '/platform/getPlatformList',
+    method: 'post',
+    params: data
+  })
+}
 //订单列表
 export function queryOrderList(data) {
   return request({

+ 11 - 0
src/components/OrderDetail/index.vue

@@ -0,0 +1,11 @@
+<script setup lang="ts">
+
+</script>
+
+<template>
+
+</template>
+
+<style scoped lang="scss">
+
+</style>

+ 88 - 84
src/views/order/orderList/compt/childDialog.vue

@@ -3,115 +3,119 @@
     <el-dialog
         v-model="dialogVisible"
         :title="dialogTitle"
-        width="480"
+        width="500px"
         @close="closeDialog()"
     >
-      <el-form
-          ref="formRef"
-          :model="formData"
-          :rules="rules"
-          label-width="120px"
-      >
-        <el-row>
-          <el-col :span="24">
-            <el-form-item prop="clientName" label="客户名称">
-              <el-input v-model="formData.clientName"/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-      </el-form>
-
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button v-throttle type="primary" @click="handleSubmit">确 定</el-button>
-          <el-button @click="closeDialog()">取 消</el-button>
+      <div>
+        <div
+          v-for="(order, index) in offerList"
+          :key="index"
+          class="order-item flex items-center justify-between"
+        >
+          <div>
+            {{order.platformName}}
+          </div>
+          <div>
+            <div style="color: #E6A23C" v-if="order.errCode!=0">
+              {{order.errMsg}}
+            </div>
+            <div v-else>
+              <div>
+                <span style="font-weight: bold;margin: 5px;color: #F56C6C">{{order.totalPrice*0.001}}</span>元
+              </div>
+              <div>
+                <span style="font-weight: bold;margin: 5px;color: #409EFF">{{(order.distanceMeter*0.001).toFixed(2)}}</span>公里
+              </div>
+              <div>
+                <el-button @click="handleSubmit(order)" v-throttle type="primary">
+                  确定发单
+                </el-button>
+              </div>
+            </div>
+          </div>
         </div>
-      </template>
+      </div>
     </el-dialog>
   </div>
 </template>
 <script setup lang="ts">
-import {getRoleInfo, getRoleMenuTreeData,updateRole} from "@/api/system";
-import type {FormInstance} from 'element-plus'
-
+import {callExpress,expressFormToken} from "@/api/order";
 let dialogVisible = ref(false)
 let dialogTitle = ref("")
-const formRef = ref<FormInstance>()
+let offerList = ref(new Array<any>())
+let formToken = ref('')
 const emit = defineEmits(['dialogChange'])
-const formData = reactive({
-  clientName:'',
-  id: ""
-})
-const rules = reactive({
-  clientName: [{required: true, message: "请输入客户名称", trigger: "blur"}],
-});
-function handleSubmit() {
-  formRef.value.validate((valid: any) => {
-    if (valid) {
-      const itemId = formData.id;
-      if (itemId) {
-        //修改
-        const postData = JSON.stringify(formData)
-        const params = {
-          "clientInfo": postData
-        }
-        updateClientInfo(params).then((response) => {
-          dialogVisible.value = false
-          if (response.httpCode == 200) {
-            emit('dialogChange');
-            ElMessage.success("操作成功");
-          }
-        })
-      } else {
-        //增加
-        const postData = JSON.stringify(formData)
-        const params = {
-          "clientInfo": postData
-        }
-        addClientInfo(params).then((response) => {
-          dialogVisible.value = false
-          if (response.httpCode == 200) {
-            emit('dialogChange');
-            ElMessage.success("操作成功");
-          }
-        })
-      }
+//确定发单
+function handleSubmit(order) {
+  const params = {
+    "businessMethod": "Express_CreateOrder_" + order.platformCode,
+    "token": formToken.value,
+    "params": JSON.stringify({
+      idOrder: order.id
+    })
+  }
+  callExpress(params).then((response) => {
+    dialogVisible.value = false
+    if (response.httpCode == 200) {
+      ElMessage.success("发单成功");
     }
-  });
+  })
 }
-
-function getItemData(item) {
-  const data = {
-    id: item
+async function getPreOrder(item,optionsList) {
+  var offerArray = []
+  for (let i = 0; i < optionsList.length; i++) {
+    const datas = optionsList[i]
+    const params = {
+      "businessMethod": "Express_PreCreateOrder_" + datas.platformCode,
+      "params": JSON.stringify({
+        idOrder: item.id
+      })
+    }
+    await callExpress(params).then((response) => {
+      if (response.httpCode == 200) {
+        var offerParams = {
+          platformName:"",
+          id:item.id,
+          platformCode:"",
+          errCode:"",
+          errMsg:"",
+          totalPrice:"",
+          distanceMeter:"",
+        }
+        const data =JSON.parse(response.data)
+        offerParams.platformName = datas.platformName
+        offerParams.platformCode = datas.platformCode
+        offerParams.errCode = data.errCode
+        offerParams.errMsg = data.errMsg
+        offerParams.totalPrice = data.totalPrice
+        offerParams.distanceMeter = data.distanceMeter
+        offerArray.push(offerParams)
+      }
+    })
   }
-  getClientInfo(data).then(response => {
+  console.log(offerArray);
+  offerList.value = offerArray
+  const tokenParams = {}
+  expressFormToken(tokenParams).then((response) => {
     if (response.httpCode == 200) {
-      const data = response.data
-      Object.assign(formData, {...data});
+      formToken.value = response.data
     }
   })
 }
-
-/**  重置表单 */
-function resetForm() {
-  formRef.value.resetFields();
-  formData.id = ''
-}
-
 /**关闭弹窗 */
 function closeDialog() {
   dialogVisible.value = false
-  formRef.value.resetFields();
-  formData.id = undefined;
+  emit('dialogChange');
 }
 defineExpose({
   dialogVisible,
   dialogTitle,
-  getItemData,
-  resetForm
+  getPreOrder
 })
 </script>
 <style scoped lang="scss">
-
+.order-item{
+  padding: 10px 0;
+  border-bottom: 1px solid #ddd;
+}
 </style>

+ 65 - 45
src/views/order/orderList/index.vue

@@ -32,8 +32,10 @@
               <i-ep-edit/>
               编辑
             </el-button>
-            <el-button v-if="row.voidFlag==0" link @click="handleDisable(row.id,1)" type="warning">禁用</el-button>
-            <el-button v-if="row.voidFlag==1" type="success" link @click="handleDisable(row.id,0)">启用</el-button>
+            <el-button link @click="openDialog(row)" type="primary">
+              <i-ep-Position/>
+              发单
+            </el-button>
           </template>
         </el-table-column>
         <el-table-column
@@ -47,25 +49,25 @@
         <el-table-column prop="orderName" width="200" label="订单名称"/>
         <el-table-column prop="storeName" width="150" label="门店名称"/>
         <el-table-column prop="deliverAddressAll" show-overflow-tooltip width="350" label="配送地址"/>
-        <el-table-column
-          prop="status"
-          label="状态">
-          <template #default="{row}">
-            <el-tag v-if="row.voidFlag==0" type="success">
-              正常
-            </el-tag>
-            <el-tag v-else="row.voidFlag==1" type="danger">
-              停用
-            </el-tag>
-          </template>
-        </el-table-column>
+        <!--        <el-table-column-->
+        <!--          prop="status"-->
+        <!--          label="状态">-->
+        <!--          <template #default="{row}">-->
+        <!--            <el-tag v-if="row.voidFlag==0" type="success">-->
+        <!--              正常-->
+        <!--            </el-tag>-->
+        <!--            <el-tag v-else="row.voidFlag==1" type="danger">-->
+        <!--              停用-->
+        <!--            </el-tag>-->
+        <!--          </template>-->
+        <!--        </el-table-column>-->
         <el-table-column
           prop="createTime"
           label="创建时间"
           width="155">
           <template #default="{row}">
           <span v-if="row.createTime">
-           {{ $filters.getTime(row.createTime)}}
+           {{ $filters.getTime(row.createTime) }}
           </span>
           </template>
         </el-table-column>
@@ -82,58 +84,64 @@
   </div>
 </template>
 <script setup lang="ts">
-import {queryOrderList} from "@/api/order";
+import {queryOrderList, getPlatformList, callExpress} from "@/api/order";
 import ChildDialog from './compt/childDialog.vue'
 import {useTable} from '@/hooks/useTable'
 
+let optionsList = ref(new Array<any>())
 let disableLock = ref('')
 const childDialog = ref<any>()
 
 //增加编辑
 function openDialog(item?: any) {
   childDialog.value.dialogVisible = true;
-  if (item) {
-    childDialog.value.dialogTitle = "编辑";
-    nextTick(() => {
-      childDialog.value.getItemData(item)
-    });
-  } else {
-    nextTick(() => {
-      childDialog.value.dialogTitle = "增加";
-      childDialog.value.resetForm()
+  childDialog.value.dialogTitle = "发单-"+item.orderName;
+  nextTick(() => {
+    childDialog.value.getPreOrder(item,optionsList.value)
+  })
+}
+const handleCommand = (command: string | number | object, row) => {
+  console.log(command)
+  console.log(row)
+  const params = {
+    "businessMethod": "Express_PreCreateOrder_" + command,
+    "params": JSON.stringify({
+      idOrder: row.id
     })
   }
+  callExpress(params).then((response) => {
+    if (response.httpCode == 200) {
+      const {data} = response
+      optionsList.value = data
+    }
+  })
 }
 
-//禁用删除
-function handleDisable(id, status) {
-  ElMessageBox.confirm("确认操作?", "警告", {
-    confirmButtonText: "确定",
-    cancelButtonText: "取消",
-    type: "warning",
-  }).then(() => {
-    const postData = {
-      id: id,
-      enable: status
-    }
-    const params = {
-      "industryInfo": JSON.stringify(postData)
+function getOptionsList() {
+  const params = {
+    platformType: 1
+  }
+  getPlatformList(params).then((response) => {
+    if (response.httpCode == 200) {
+      const {data} = response
+      optionsList.value = data
     }
-    enableClientIndustryInfo(params).then((response) => {
-      if (response.httpCode == 200) {
-        ElMessage.success("操作成功");
-        getTableData();
-      }
-
-    })
   })
 }
 
+
 //修改成功后传递事件
 function dialogChange() {
+  getOptionsList()
   getTableData()
 }
 
+onMounted(() => {
+  if(optionsList.value.length<=0){
+    getOptionsList()
+  }
+
+})
 const queryForm = reactive({
   keyWord: '',
   voidFlag: 0
@@ -161,4 +169,16 @@ const {
   refreshTableInfo,//刷新
 } = useTable(queryOrderList, queryForm);
 </script>
+<style scoped lang="scss">
+.el-dropdown-link {
+  cursor: pointer;
+  color: #409EFF;
+  margin-left: 5px;
+  margin-top: 4px;
+}
+
+:deep(.el-tooltip__trigger:focus-visible) {
+  outline: unset;
+}
+</style>