瀏覽代碼

no message

linwenxin 1 年之前
父節點
當前提交
00de929ba1

+ 17 - 0
src/api/orderManagement.js

@@ -0,0 +1,17 @@
+import request, { postBlob, getBlob, handleImport } from '@/utils/request'
+
+export function esOrderList(params) {
+  return request({
+    url: '/esOrder/list',
+    method: 'post',
+    params
+  })
+}
+
+export function esOrderAdd(data) {
+  return request({
+    url: '/esOrder/add',
+    method: 'post',
+    data
+  })
+}

+ 282 - 0
src/views/secondHandMall/orderManagement/add.vue

@@ -0,0 +1,282 @@
+<template>
+  <zj-form-container ref="formRef" :form-data="formData" :form-attributes="{ size: 'mini' }">
+    <zj-form-module title="客户信息" label-width="100px" :form-data="formData" :form-items="formItems" />
+    <zj-form-module title="商品信息" label-width="100px" :form-data="formData" :form-items="formItems2" />
+  </zj-form-container>
+</template>
+
+<script>
+import getLbsAmapRegion from "./getLbsAmapRegion.js"
+import ImageUpload from '@/components/file-upload'
+import editTable from '@/components/template/editTable.js'
+export default {
+  components: {ImageUpload},
+  mixins: [getLbsAmapRegion, editTable],
+  data(){
+    return {
+      formData: {
+        imgSrc: [],
+        promotionQuestionnaireQrcodes: []
+      }
+    }
+  },
+  computed: {
+    formItems(){
+      return [{
+        name: 'el-input',
+        md: 6,
+        attributes: { disabled: false },
+        formItemAttributes: { label: '商品分类', prop: 'categoryName' }
+      },{
+        name: 'el-input',
+        md: 6,
+        attributes: { disabled: false },
+        formItemAttributes: { label: '商品分类', prop: 'categoryName' }
+      },{
+        name: 'el-radio',
+        options: [
+          { label: '一级能效', value: "一级能效" },
+          { label: '二级能效', value: "二级能效" },
+        ],
+        md: 6,
+        attributes: { disabled: this.disabled },
+        formItemAttributes: { label: '能效标识', prop: 'mark' }
+      },{
+        name: 'el-radio',
+        options: [
+          { label: '一级能效', value: "一级能效" },
+          { label: '五级能效', value: "五级能效" },
+        ],
+        md: 6,
+        attributes: { disabled: this.disabled },
+        formItemAttributes: { label: '能效标识', prop: 'mark' }
+      },...this.amapRegion,{
+        name: 'el-input',
+        md: 24,
+        attributes: { disabled: false, type:"textarea" },
+        formItemAttributes: { label: '备注', prop: 'categoryName' }
+      },{
+        md: 24,
+        name: 'slot-component',
+        formItemAttributes: {
+          label: '附件',
+          prop: 'imgSrc',
+          rules: []
+        },
+        render: (h, { props, onInput }) => {
+          return (
+            <ImageUpload fileList={this.formData.imgSrc} limit={100}/>
+          )
+        }
+      }]
+    },
+    formItems2(){
+      return [{
+          name: 'slot-component',
+          md: 24,
+          formItemAttributes: {
+            label: '',
+            'label-width': '0px',
+            prop: 'promotionQuestionnaireQrcodes',
+            rules: []
+          },
+          render: (h, { props, onInput }) => {
+            var { value } = props
+            return this.convertTableJson(
+              value,
+              [
+                {
+                  columnAttributes: {
+                    label: '商品分类',
+                    prop: 'websitName'
+                  },
+                  editRender: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`promotionQuestionnaireQrcodes.${index}.${column.columnAttributes.prop}`}
+                          rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
+                        >
+                          <el-input
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                          ></el-input>
+                        </el-form-item>
+                      </div>
+                    )
+                  },
+                  viewRender: (h, { row, column, index }) => {
+                    return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '商品名称',
+                    prop: 'websitName'
+                  },
+                  editRender: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`promotionQuestionnaireQrcodes.${index}.${column.columnAttributes.prop}`}
+                          rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
+                        >
+                          <el-input
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                          ></el-input>
+                        </el-form-item>
+                      </div>
+                    )
+                  },
+                  viewRender: (h, { row, column, index }) => {
+                    return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '单位',
+                    prop: 'websitName'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '上架数量',
+                    prop: 'websitName'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '订单数量',
+                    prop: 'websitName'
+                  },
+                  editRender: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`promotionQuestionnaireQrcodes.${index}.${column.columnAttributes.prop}`}
+                          rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
+                        >
+                          <el-input
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                          ></el-input>
+                        </el-form-item>
+                      </div>
+                    )
+                  },
+                  viewRender: (h, { row, column, index }) => {
+                    return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '商品价格',
+                    prop: 'websitName'
+                  },
+                  editRender: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`promotionQuestionnaireQrcodes.${index}.${column.columnAttributes.prop}`}
+                          rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
+                        >
+                          <el-input
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                          ></el-input>
+                        </el-form-item>
+                      </div>
+                    )
+                  },
+                  viewRender: (h, { row, column, index }) => {
+                    return <div style="padding-left:10px">{row[column.columnAttributes.prop]}</div>
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '金额',
+                    prop: 'websitName'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '商品品牌',
+                    prop: 'websitName'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '功率(W)',
+                    prop: 'websitName'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '制造日期',
+                    prop: 'websitName'
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '能效标识',
+                    prop: 'websitName'
+                  }
+                },
+              ],
+              {
+                isEdit: true,
+                isAdd: true,
+                isDel: true
+              },
+              {
+                add: () => {
+                  this.formData.promotionQuestionnaireQrcodes.push({
+                    websitName: '',
+                    qrcode: ''
+                  })
+                  this.isEditTableIndex = this.formData.promotionQuestionnaireQrcodes.length - 1
+                },
+                // verify: ({ row, column, index }, isEditTableIndex) => {
+                //   return new Promise(r => {
+                //     if (isEditTableIndex > -1) {
+                //       r(true)
+                //     } else {
+                //       r(true)
+                //     }
+                //   })
+                // },
+              }
+            )
+          }
+        }]
+    }
+  },
+  methods: {
+    
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 242 - 0
src/views/secondHandMall/orderManagement/getLbsAmapRegion.js

@@ -0,0 +1,242 @@
+import { lbsAmapRegion } from '@/api/common.js'
+import geographicalPosi from '@/components/geographicalPosi/index.vue'
+export default {
+  data() {
+    return {
+      provinceList: [],
+      cityList: [],
+      areaList: [],
+      streetList: [],
+    }
+  },
+  computed: {
+    amapRegion() {
+      return [
+        {
+          name: 'el-select',
+          md: 6,
+          formItemAttributes: {
+            label: '客户地址', //省
+            prop: 'provinceId',
+            rules: [],
+            errLabel: '省'
+          },
+          options: this.provinceList.map((v, i) => ({ value: v.id, label: v.name })),
+          attributes: { disabled: true, clearable: true, filterable: true, placeholder: '请选择' },
+          events: {
+            change: (val) => {
+              // 获取省名称
+              this.formData.province = this.provinceList.find(item => item.id === val)?.name || ''
+              // 清除市区街道以及详细地址数据
+              this.delDataK(1)
+              lbsAmapRegion({ pid: val }).then(res => {
+                this.cityList = res.data
+              })
+            }
+          }
+        },
+        {
+          name: 'el-select',
+          md: 5,
+          formItemAttributes: {
+            'label-width': '0px',
+            label: '', //市
+            prop: 'cityId',
+            rules: [],
+            errLabel: '市'
+          },
+          options: this.cityList.map((v, i) => ({ value: v.id, label: v.name })),
+          attributes: { disabled: true, clearable: true, filterable: true, placeholder: '请选择' },
+          events: {
+            change: (val) => {
+              // 获取市名称
+              this.formData.city = this.cityList.find(item => item.id === val).name
+              // 清除区街道以及详细地址数据
+              this.delDataK(2)
+              lbsAmapRegion({ pid: val }).then(res => {
+                this.areaList = res.data
+              })
+            }
+          }
+        },
+        {
+          name: 'el-select',
+          md: 5,
+          formItemAttributes: {
+            'label-width': '0px',
+            label: '', //区
+            prop: 'areaId',
+            rules: [],
+            errLabel: '区'
+          },
+          options: this.areaList.map((v, i) => ({ value: v.id, label: v.name })),
+          attributes: { disabled: true, clearable: true, filterable: true, placeholder: '请选择' },
+          events: {
+            change: (val) => {
+              // 获取区名称
+              this.formData.area = this.areaList.find(item => item.id === val).name
+              // 清除街道以及详细地址数据
+              this.delDataK(3)
+              lbsAmapRegion({ pid: val }).then(res => {
+                this.streetList = res.data
+              })
+            }
+          }
+        },
+        {
+          name: 'el-select',
+          md: 6,
+          formItemAttributes: {
+            'label-width': '0px',
+            label: '', //街道
+            prop: 'streetId',
+            rules: [],
+            errLabel: '街道'
+          },
+          options: this.streetList.map((v, i) => ({ value: v.id, label: v.name })),
+          attributes: { disabled: true, clearable: true, filterable: true, placeholder: '请选择' },
+          events: {
+            change: (val) => {
+              // 获取街道名称
+              this.formData.street = this.streetList.find(item => item.id === val).name
+              // 清除详细地址数据
+              this.delDataK(4)
+            }
+          }
+        },
+        {
+          name: 'slot-component',
+          md: 2,
+          formItemAttributes: {
+            'label-width': '0px',
+            prop: '',
+          },
+          render: (h, { props }) => {
+            return (
+              <geographicalPosi
+                disabled={false}
+                formData={this.formData}
+                onSelectPosi={data => {
+                  // 获取经纬度
+                  this.formData.lng = data.center[0]
+                  this.formData.lat = data.center[1]
+                  // 获取定位的省市区街道
+                  var { province, city, district, township } = data.data.addressComponent
+                  // 获取选中省名称id
+                  var { id, name } = this.provinceList.find(item => item.name === province)
+                  this.formData.provinceId = id
+                  this.formData.province = name
+                  // 请求市选项
+                  lbsAmapRegion({ pid: this.formData.provinceId }).then(res => {
+                    // 赋值市选项
+                    this.cityList = res.data
+                    // 获取选中市名称id
+                    var { id, name } = res.data.find(item => item.name === city)
+                    this.formData.cityId = id
+                    this.formData.city = name
+                    // 请求区选项
+                    lbsAmapRegion({ pid: this.formData.cityId }).then(res => {
+                      // 赋值区选项
+                      this.areaList = res.data
+                      // 获取选中区名称id
+                      var { id, name } = res.data.find(item => item.name === district)
+                      this.formData.areaId = id
+                      this.formData.area = name
+                      // 请求街道选项
+                      lbsAmapRegion({ pid: this.formData.areaId }).then(res => {
+                        // 赋值街道选项
+                        this.streetList = res.data
+                        // 获取选中街道名称id
+                        var { id, name } = res.data.find(item => item.name === township)
+                        this.formData.streetId = id
+                        this.formData.street = name
+                        // 赋值GPS详细地址
+                        this.formData.gpsAddress = data.name
+                        if (!this.formData.address) {
+                          this.formData.address = data.name
+                        }
+                      })
+                    })
+                  })
+                }}
+              />
+            )
+          }
+        },
+        {
+          name: 'el-input',
+          md: 24,
+          formItemAttributes: { label: '', prop: 'address', rules: [] },
+          attributes: { disabled: false, placeholder: '详细地址' }
+        },
+      ]
+    }
+  },
+  created(){
+    this.getinitlbslist()
+  },
+  methods: {
+    getinitlbslist() {
+      // 初始化请求省市区街道下拉选项数据
+      lbsAmapRegion({ pid: 0 }).then(res => {
+        this.provinceList = res.data
+        // 创建工单时获取ip地址定位赋值
+        if (!this.id && !!~[1, 2, 3].indexOf(this?.workOrderType) && this.$IpAdd.province) {
+          var item = this.provinceList.find(item => item.name === this.$IpAdd.province)
+          if (item) {
+            this.formData.provinceId = item.id
+            this.formData.province = item.name
+          }
+        }
+        if (this.formData.provinceId) {
+          lbsAmapRegion({ pid: this.formData.provinceId }).then(res => {
+            this.cityList = res.data
+            // 创建工单时获取ip地址定位赋值
+            if (!this.id && this.$IpAdd.city) {
+              var item2 = this.cityList.find(item => item.name === this.$IpAdd.city)
+              if (item2) {
+                this.formData.cityId = item2.id
+                this.formData.city = item2.name
+              }
+            }
+            if (this.formData.cityId) {
+              lbsAmapRegion({ pid: this.formData.cityId }).then(res => {
+                this.areaList = res.data
+              })
+            }
+            if (this.formData.areaId) {
+              lbsAmapRegion({ pid: this.formData.areaId }).then(res => {
+                this.streetList = res.data
+              })
+            }
+          })
+        }
+      })
+    },
+    delDataK(num) {
+      if (num <= 1) {
+        // 删除市
+        this.formData.cityId = ''
+        this.formData.city = ''
+        // 删除市选项
+        this.cityList = []
+      }
+      if (num <= 2) {
+        // 删除区
+        this.formData.areaId = ''
+        this.formData.area = ''
+        // 删除区选项
+        this.areaList = []
+      }
+      if (num <= 3) {
+        // 删除街道
+        this.formData.streetId = ''
+        this.formData.street = ''
+        // 删除街道选项
+        this.streetList = []
+      }
+      // 删除gps地址
+      this.formData.gpsAddress = ''
+    }
+  }
+}

+ 49 - 35
src/views/secondHandMall/orderManagement/index.vue

@@ -15,18 +15,18 @@
                         </el-form-item>
                       </el-col>
                       <el-col :xs="24" :sm="12" :lg="6">
-                        <el-form-item label="商品名称" prop="goodsName">
-                          <el-input v-model="screenForm.goodsName" placeholder="请输入商品名称"></el-input>
+                        <el-form-item label="商品名称" prop="esGoodsName">
+                          <el-input v-model="screenForm.esGoodsName" placeholder="请输入商品名称"></el-input>
                         </el-form-item>
                       </el-col>
                       <el-col :xs="24" :sm="12" :lg="6">
-                        <el-form-item label="会员昵称" prop="memberName">
-                          <el-input v-model="screenForm.memberName" placeholder="请输入会员昵称"></el-input>
+                        <el-form-item label="会员昵称" prop="userName">
+                          <el-input v-model="screenForm.userName" placeholder="请输入会员昵称"></el-input>
                         </el-form-item>
                       </el-col>
                       <el-col :xs="24" :sm="12" :lg="6">
-                        <el-form-item label="手机号" prop="phone">
-                          <el-input v-model="screenForm.phone" placeholder="请输入手机号"></el-input>
+                        <el-form-item label="手机号" prop="userMobile">
+                          <el-input v-model="screenForm.userMobile" placeholder="请输入手机号"></el-input>
                         </el-form-item>
                       </el-col>
                       <el-col :xs="24" :sm="12" :lg="6">
@@ -76,7 +76,7 @@
                       <el-tab-pane label="退款/取消" name="CLOSE"></el-tab-pane>
                       <el-tab-pane label="已超时" name="TIMEOUT"></el-tab-pane>
                     </el-tabs>
-                    <el-button class="fl" type="primary" size="small">新增</el-button>
+                    <el-button class="fl" type="primary" size="small" @click="add">新增</el-button>
                   </div>
                   <div class="fr">
                     <el-button size="small" type="primary">导出</el-button>
@@ -117,7 +117,7 @@
                                   </div>
                                   <div class="main">
                                     <span><el-tag type="danger" effect="plain" size="mini" style="margin-right: 4px"
-                                        v-if="orderItem.promotionFullPieceId">满件打折</el-tag>{{ orderItem.goodsName }}</span>
+                                        v-if="orderItem.promotionFullPieceId">满件打折</el-tag>{{ orderItem.esGoodsName }}</span>
                                     <span class="spec"
                                       v-if="orderItem.goodsSpecName === '默认' && orderItem.goodsSpecValue === '默认'">默认</span>
                                     <span class="spec" v-else>{{ orderItem.goodsSpecName }}-{{ orderItem.goodsSpecValue
@@ -134,7 +134,7 @@
                           <el-col :span="4" style="height: 100%;">
                             <div class="col-item">
                               <div>{{ order.userName }}</div>
-                              <div>{{ order.phone }}</div>
+                              <div>{{ order.userMobile }}</div>
                             </div>
                           </el-col>
                           <el-col :span="4" style="height: 100%;">
@@ -155,18 +155,18 @@
                             <div class="col-item">
                               <div style="display: flex; align-items: center;">
                                 <img src="@/assets/order/CLOSE.png" style="width: 16px; flex-shrink: 0;"
-                                  v-if="order.orderStatus == 'CLOSE'">
+                                  v-if="order.status == 'CLOSE'">
                                 <img src="@/assets/order/DFH.png" style="width: 16px; flex-shrink: 0;"
-                                  v-if="order.orderStatus == 'DFH'">
+                                  v-if="order.status == 'DFH'">
                                 <img src="@/assets/order/NOPAY.png" style="width: 16px; flex-shrink: 0;"
-                                  v-if="order.orderStatus == 'NOPAY'">
+                                  v-if="order.status == 'NOPAY'">
                                 <img src="@/assets/order/OVER.png" style="width: 16px; flex-shrink: 0;"
-                                  v-if="order.orderStatus == 'OVER'">
+                                  v-if="order.status == 'OVER'">
                                 <img src="@/assets/order/TIMEOUT.png" style="width: 16px; flex-shrink: 0;"
-                                  v-if="order.orderStatus == 'TIMEOUT'">
+                                  v-if="order.status == 'TIMEOUT'">
                                 <img src="@/assets/order/YFH.png" style="width: 16px; flex-shrink: 0;"
-                                  v-if="order.orderStatus == 'YFH'">
-                                <span style="margin-left: 4px">{{ order.orderStatus | ORDER_CURRENT_STATUS_FILTER }}</span>
+                                  v-if="order.status == 'YFH'">
+                                <span style="margin-left: 4px">{{ order.status | ORDER_CURRENT_STATUS_FILTER }}</span>
                               </div>
                               <div>({{ order.toWorkOrder ? '已派单' : '未派单' }})</div>
                             </div>
@@ -198,11 +198,11 @@
             </div>
           </div>
           <!-- 新增 -->
-          <div v-if="activeKey == 'remark'" style="width:100%;height:100%;">
+          <div v-if="activeKey == 'add'" style="width:100%;height:100%;">
             <zj-page-container>
               <zj-page-fill>
                 <div style="box-sizing: border-box; padding:10px;">
-                
+                  <add/>
                 </div>
               </zj-page-fill>
             </zj-page-container>
@@ -275,20 +275,21 @@
 </template>
 
 <script>
-import { getList } from "@/api/order";
+import { esOrderList } from "@/api/orderManagement";
+import add from "./add.vue"
 import '@/styles/order-list.scss'
 export default {
-  components: {},
+  components: {add},
 
   data() {
     return {
       screenForm: { // 筛选表单数据
         orderId: '', // 订单号
-        goodsName: '', // 商品名称
-        memberName: '', // 会员昵称
-        phone: '', // 手机号
+        esGoodsName: '', // 商品名称
+        userName: '', // 会员昵称
+        userMobile: '', // 手机号
         websitId: '', // 网点名称
-        orderStatus: '', // 状态
+        status: '', // 状态
         createDate: '', // 创建时间
         payDate: '', // 支付时间
         exchangeCode: '', // 兑换码
@@ -317,8 +318,26 @@ export default {
     this.getList();
   },
   methods: {
+    add(){
+      this.$refs.tabPage.addTab({
+        // 对应显示的模块
+        activeKey: "add",
+        // 唯一标识
+        key: "add",
+        // 页签名称
+        label: "新增订单",
+        // 打开时事件
+        triggerEvent: () => {
+        
+        },
+        // 关闭时事件
+        closeEvent: () => {
+          
+        }
+      })
+    },
     changeTabs(tab, event) {
-      this.screenForm.orderStatus = this.tabCurrent === 'ALL' ? '' : tab.$options.propsData.name
+      this.screenForm.status = this.tabCurrent === 'ALL' ? '' : tab.$options.propsData.name
       this.currentPage = 1;
       this.getList();
     },
@@ -326,23 +345,18 @@ export default {
     getList() {
       let params = {
         orderId: this.screenForm.orderId, // 订单号
-        productName: this.screenForm.goodsName, // 商品名称
-        userName: this.screenForm.memberName, // 会员昵称
-        phone: this.screenForm.phone, // 手机号
-        websitId: this.screenForm.websitId,
-        exchangeCode: this.screenForm.exchangeCode,
-        orderStatus: this.screenForm.orderStatus, // 状态
+        esGoodsName: this.screenForm.esGoodsName, // 商品名称
+        userName: this.screenForm.userName, // 会员昵称
+        userMobile: this.screenForm.userMobile, // 手机号
+        status: this.screenForm.status, // 状态
         startCreateTime: this.screenForm.createDate[0] ? this.screenForm.createDate[0] : null, // 创建时间
         endCreateTime: this.screenForm.createDate[1] ? this.screenForm.createDate[1] : null, // 创建时间
         startPayTime: this.screenForm.payDate[0] ? this.screenForm.payDate[0] : null, // 支付时间
         endPayTime: this.screenForm.payDate[1] ? this.screenForm.payDate[1] : null, // 支付时间
-        isNegative: this.screenForm.evaluateStatus, // 评价状态
-        abnormalDispatch: this.screenForm.sendStatus, // 派单异常
-        workerOrderNo: this.screenForm.workerOrderNo, // 信息编号
         pageNum: this.currentPage,
         pageSize: this.pageSize
       };
-      getList(params).then(res => {
+      esOrderList(params).then(res => {
         res.data.records.forEach(item => {
           item.selected = false;
         });