ソースを参照

订单管理:送达

liqianyi 3 年 前
コミット
faee388c35

+ 122 - 0
src/views/modules/order/dispatch-arrived.vue

@@ -0,0 +1,122 @@
+<template>
+  <div>
+    <el-dialog
+      title="订单送达"
+      width="50%"
+      :close-on-click-modal="false"
+      :visible.sync="visible">
+      <!-- 表单 -->
+      <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
+        <el-row class="my-row">
+          <el-col :span="12">
+            <el-form-item label="订单编码" prop="orderCode">
+              <el-input v-model="dataForm.orderCode" :disabled="true"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="送达时间" prop="arrivedTime">
+              <el-date-picker
+                v-model="dataForm.arrivedTime"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                type="datetime">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row class="my-row">
+          <el-form-item label="客户反馈" prop="customerFeedback">
+            <el-input type="textarea" v-model="dataForm.customerFeedback" placeholder="客户反馈"></el-input>
+          </el-form-item>
+        </el-row>
+        <el-row class="my-row">
+          <upload-component :display="false" :title="'证明附件'" :accept="'*'" :file-obj-list="fileList" @uploadSuccess="uploadSuccess"/>
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+          <el-button @click="visible = false">取消</el-button>
+          <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
+        </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import UploadComponent from '../common/upload-component'
+
+  export default {
+    name: 'dispatch-arrived',
+    components: { UploadComponent },
+    data () {
+      return {
+        visible: false,
+        fileList: [],
+        dataForm: {},
+        dataRule: {
+          customerFeedback: [{ required: true, message: '客户反馈不能为空', trigger: 'blur' }],
+          arrivedTime: [{ required: true, message: '送达时间不能为空', trigger: 'change' }]
+        }
+      }
+    },
+    methods: {
+      async init (orderId, orderCode) {
+        if (!orderId) return
+        this.fileList = []
+        this.dataForm = {
+          orderId: orderId,
+          orderCode: orderCode
+        }
+        this.visible = true
+      },
+      uploadSuccess (fileList) {
+        this.fileList = fileList
+      },
+      validateField (type) {
+        this.$refs.dataForm.validateField(type)
+      },
+      // 表单提交
+      dataFormSubmit () {
+        this.$refs['dataForm'].validate((valid) => {
+          if (valid) {
+            // 附件检查
+            let fList = this.fileList
+            if (fList.length > 0) {
+              this.dataForm.attachList = []
+              for (let i = 0; i < fList.length; i++) {
+                this.dataForm.attachList.push({
+                  fileName: fList[i].name,
+                  url: fList[i].url
+                })
+              }
+            } else {
+              this.$message.error('请上传文件')
+              return
+            }
+            this.$http({
+              url: this.$http.adornUrl(`/biz-service/order/arrived`),
+              method: 'post',
+              data: this.$http.adornData({...this.dataForm})
+            }).then(({data}) => {
+              if (data && data.code === '200') {
+                this.$message({
+                  message: '操作成功',
+                  type: 'success',
+                  duration: 1500,
+                  onClose: () => {
+                    this.visible = false
+                    this.$emit('refreshDataList')
+                  }
+                })
+              } else {
+                this.$message.error(data.msg)
+              }
+            })
+          }
+        })
+      }
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 10 - 3
src/views/modules/order/order.vue

@@ -117,7 +117,7 @@
           <el-button v-if="isAuth('order:ctl:info')" type="text" size="small" @click="detailHandle(scope.row.orderId)">查看</el-button>
           <el-button v-if="isAuth('order:ctl:editor') && Number(scope.row.orderState) < 2" type="text" size="small" @click="addOrUpdateHandle(scope.row.orderId,false)">编辑</el-button>
           <el-button v-if="isAuth('order:ctl:deliver') && Number(scope.row.orderState) === 3" type="text" size="small" @click="deliverHandle(scope.row.orderId)">发货</el-button>
-          <el-button v-if="isAuth('order:ctl:arrived') && Number(scope.row.orderState) === 4 " type="text" size="small" @click="arrivedHandle(scope.row.orderId)">送达</el-button>
+          <el-button v-if="isAuth('order:ctl:arrived') && Number(scope.row.orderState) === 4 " type="text" size="small" @click="arrivedHandle(scope.row)">送达</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -133,6 +133,7 @@
     <!-- 弹窗, 新增 / 修改 -->
     <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
     <detail v-if="detailVisible" ref="detail"/>
+    <dispatch-arrived v-if="arrivedVisible" ref="arrived" @refreshDataList="getDataList"></dispatch-arrived>
   </div>
 </template>
 
@@ -141,9 +142,11 @@
   import Detail from './order-detail'
   import { getOrderList, deliverOrder } from '@/api/sale'
   import CusComponent from '../common/cus-component'
+  import DispatchArrived from './dispatch-arrived'
   export default {
     name: 'order',
     components: {
+      DispatchArrived,
       CusComponent,
       AddOrUpdate,
       Detail
@@ -156,6 +159,7 @@
       return {
         addOrUpdateVisible: false,
         detailVisible: false,
+        arrivedVisible: false,
         dataForm: {},
         dataList: [],
         pageIndex: 1,
@@ -278,8 +282,11 @@
         }).catch(() => {})
       },
       // 送达
-      arrivedHandle (orderId) {
-        // todo
+      arrivedHandle (row) {
+        this.arrivedVisible = true
+        this.$nextTick(() => {
+          this.$refs.arrived.init(row.orderId, row.orderCode)
+        })
       }
     }
   }