lhl 2 éve
szülő
commit
6031018773

+ 18 - 0
src/api/finance.js

@@ -183,3 +183,21 @@ export function exportUserRechargeApi (data) {
         params: data
     });
 }
+
+
+export function extractListApi(data) {
+	return request({
+	    url: `finance/finance/extract_list`,
+	    method: 'get',
+	    params: data
+	});
+}
+
+export function exportcommissionApi(data) {
+	return request({
+	    url: `export/commission`,
+	    method: 'get',
+	    params: data
+	});
+}
+

+ 8 - 0
src/api/user.js

@@ -723,4 +723,12 @@ export function extendInfo(id) {
         url: `user/user/extend_info/${id}`,
         method: 'get'
     });
+}
+
+export function userListApi(data) {
+	return request({
+	    url: `export/user`,
+	    method: 'get',
+	    params: data
+	});
 }

+ 183 - 0
src/pages/finance/list/components/distribution.vue

@@ -0,0 +1,183 @@
+<template>
+	<Modal v-model="modals" scrollable title="请选择门店" width="850" class="order_box" >
+		<div class="table">
+			<Form
+			  ref="formValidate"
+			  :model="formValidate"
+			  :label-width="100"
+			  @submit.native.prevent
+			>
+				<FormItem label="用户名称:">
+					<Input
+						search
+						enter-button
+						placeholder="请输入用户名称/电话/地址"
+						v-model="formValidate.keywords"
+						style="width: 300px;"
+						@on-search="userSearchs"
+					></Input>
+				</FormItem>
+			</Form>
+			<Table :columns="columns" :data="orderList" ref="table" class="mt25"
+			       :loading="loading" highlight-row
+			       no-userFrom-text="暂无数据"
+			       no-filtered-userFrom-text="暂无筛选结果">
+				<template slot-scope="{ row, index }" slot="image">
+				    <img :src="row.image" >
+				</template>
+			</Table>
+			<div class="acea-row row-right page">
+			  <Page
+			    :total="total"
+			    :current="formValidate.page"
+			    show-elevator
+			    show-total
+			    @on-change="pageChange"
+			    :page-size="formValidate.limit"
+			  />
+			</div>
+		</div>
+		<div slot="footer">
+			
+		</div>
+	</Modal>
+</template>
+
+<script>
+	import {storeListApi, storeShareApi} from '@/api/store'
+	// import {
+	// 	putRemarkData, putRechargeRemarkData, putVipRemarkData
+	// } from '@/api/store';
+	export default {
+		name: 'distshow',
+		data() {
+			return {
+				id: 0,
+				currentid: 0,
+				modals: false,
+				loading: false,
+				orderList: [],
+				total: 0,
+				formValidate: {
+				  page: 1,
+				  limit: 15,
+				  keywords:'',
+				  id:0
+				},
+				columns: [
+					{
+					  title: "选择",
+					  // key: "chose",
+					  width: 60,
+					  align: "center",
+					  render: (h, params) => {
+					    let uid = params.row.id;
+					    let flag = false;
+						// this.currentid === uid
+					    if (this.currentid === uid) {
+					      flag = true;
+					    } else {
+					      flag = false;
+					    }
+					    let self = this;
+					    return h("div", [
+					      h("Radio", {
+					        props: {
+					          value: flag,
+					        },
+					        on: {
+					          "on-change": () => {
+								  self.currentid = uid
+								  storeShareApi({oid:this.id,store_id:params.row.id}).then(res=>{
+									  this.$Message.success(res.msg)
+									  this.modals = false
+									  self.currentid = 0
+									  this.$parent.getList()
+										this.$parent.closeDetail();
+								  }).catch(err=>{
+									  this.modals = false
+									  this.$Message.error(err.msg)
+									  self.currentid = 0
+								  })
+					          },
+					        },
+					      }),
+					    ]);
+					  },
+					},
+					{
+						title: 'ID',
+						key: 'id',
+						minWidth: 50
+					},
+					{
+						title: '门店图片',
+						slot: 'image',
+						minWidth: 80
+					},
+					{
+						title: '门店名称',
+						key: 'name',
+						minWidth: 80
+					},
+					{
+						title: '联系电话',
+						key: 'phone',
+						minWidth: 80
+					},
+					{
+						title: '门店地址',
+						key: 'address',
+						ellipsis: true,  
+						minWidth: 150
+					},
+					{
+						title: '营业时间',
+						key: 'day_time',
+						minWidth: 120
+					},
+				    {
+				        title: '营业状态',
+				        key: 'status_name',
+				        minWidth: 80
+				    }]
+					
+			}
+		},
+		props: {},
+		mounted() {
+			// this.getList()
+		},
+		methods: {
+			userSearchs(){
+				this.formValidate.page = 1;
+				this.getList(this.id);
+			},
+			getList(id){
+				this.id = id
+				this.formValidate.id = id;
+				this.loading = true
+				storeListApi(this.formValidate).then(res=>{
+					this.orderList = res.data.list
+					this.total = res.data.count
+					this.loading = false
+				})
+			},
+			cancel(name) {
+				this.modals = false;
+			},
+			putRemark() {
+				
+			},
+			//分页
+			pageChange(status) {
+			  this.formValidate.page = status;
+			  this.getList(this.id)
+			}
+		}
+	}
+</script>
+
+<style scoped lang="less">
+	.table{padding: 0px 30px 15px 30px; img{width: 40px;height: 40px;}}
+</style>

+ 46 - 0
src/pages/finance/list/components/tableExpand.vue

@@ -0,0 +1,46 @@
+<template>
+    <div class="tdinfo">
+        <Row class="expand-row">
+            <Col span="8">
+                <span class="expand-key">商品总价:</span>
+                <span class="expand-value" v-text="row.total_price"></span>
+            </Col>
+            <Col span="8">
+                <span class="expand-key">下单时间:</span>
+                <span class="expand-value" v-text="row.add_time"></span>
+            </Col>
+            <Col span="8">
+                <span class="expand-key">推广人:</span>
+                <span class="expand-value" v-text="row.spread_nickname?row.spread_nickname:'无'"></span>
+            </Col>
+        </Row>
+        <Row>
+            <Col span="8">
+                <span class="expand-key">用户备注:</span>
+                <span class="expand-value" v-text="row.mark?row.mark:'无'"></span>
+            </Col>
+            <Col span="8">
+                <span class="expand-key">商家备注:</span>
+                <span class="expand-value" v-text="row.remark?row.remark:'无'"></span>
+            </Col>
+        </Row>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'table-expand',
+        props: {
+            row: Object
+        }
+    }
+</script>
+
+<style scoped>
+    .expand-row{
+        margin-bottom: 16px;
+    }
+    .tdinfo {
+        margin-left: 78px;
+    }
+</style>

+ 568 - 0
src/pages/finance/list/components/tableFrom.vue

@@ -0,0 +1,568 @@
+<template>
+  <div>
+    <Form
+      ref="orderData"
+      inline
+      :model="orderData"
+      :label-width="labelWidth"
+      :label-position="labelPosition"
+      class="tabform"
+      @submit.native.prevent
+    >
+      <Row>
+        <Col>
+          <FormItem label="订单状态:">
+            <Select
+              v-model="orderData.status"
+              class="input-add"
+              clearable
+              @on-change="selectChange2"
+              placeholder="全部"
+            >
+              <Option value="">全部</Option>
+              <Option value="0">未支付</Option>
+              <Option value="1">未发货</Option>
+              <Option value="2">待收货(已发货)</Option>
+              <Option value="3">待评价</Option>
+              <Option value="4">交易完成</Option>
+              <Option value="-2">已退款</Option>
+              <Option value="-4">已删除</Option>
+            </Select>
+          </FormItem>
+        </Col>
+        <Col>
+          <FormItem label="支付方式:">
+            <Select
+              v-model="orderData.pay_type"
+              clearable
+            class="input-add"
+              @on-change="userSearchs"
+              placeholder="全部"
+            >
+              <Option
+                v-for="item in payList"
+                :value="item.val"
+                :key="item.id"
+                >{{ item.label }}</Option
+              >
+            </Select>
+          </FormItem>
+        </Col>
+        <Col>
+          <FormItem label="创建时间:">
+            <DatePicker
+              :editable="false"
+              :clearable="true"
+              @on-change="onchangeTime"
+              :value="timeVal"
+              format="yyyy/MM/dd HH:mm:ss"
+              type="datetimerange"
+              placement="bottom-start"
+              placeholder="自定义时间"
+              class="input-add mr20"
+              :options="options"
+            ></DatePicker>
+          </FormItem>
+        </Col>
+      </Row>
+      <Row>
+        <Col>
+          <FormItem label="活动类型:">
+            <Select
+              v-model="orderData.type"
+             class="input-add"
+              clearable
+              @on-change="typeChange"
+              placeholder="全部"
+            >
+              <Option value="0">普通订单</Option>
+              <Option value="1">秒杀订单</Option>
+              <Option value="2">砍价订单</Option>
+              <Option value="3">拼团订单</Option>
+              <Option value="4">积分商品</Option>
+              <Option value="5">套餐商品</Option>
+              <Option value="6">预售商品</Option>
+            </Select>
+          </FormItem>
+        </Col>
+        <Col v-if="orderType == '1'">
+          <FormItem label="选择门店:">
+            <Select
+              v-model="orderData.store_id"
+              clearable
+              filterable
+              @on-change="storeChange"
+              class="input-add"
+            >
+              <Option v-for="item in staffData" :value="item.id" :key="item.id"
+                >{{ item.name }}
+              </Option>
+            </Select>
+          </FormItem>
+        </Col>
+        <Col v-if="orderType == '2'">
+          <FormItem label="供应商:">
+            <Select
+              v-model="orderData.supplier_id"
+              clearable
+              filterable
+              @on-change="supplierChange"
+             class="input-add"
+            >
+              <Option
+                v-for="item in supplierName"
+                :value="item.id"
+                :key="item.id"
+                >{{ item.supplier_name }}</Option
+              >
+            </Select>
+          </FormItem>
+        </Col>
+        <Col>
+          <FormItem label="订单搜索:" prop="real_name" label-for="real_name">
+            <Input
+              v-model="orderData.real_name"
+              placeholder="请输入"
+              element-id="name"
+              clearable
+             class="input-add"
+              maxlength="20"
+              @on-change="clearTap"
+            >
+              <Select
+                v-model="orderData.field_key"
+                slot="prepend"
+                style="width: 80px"
+                default-label="全部"
+              >
+                <Option value="all">全部</Option>
+                <Option value="order_id">订单号</Option>
+                <Option value="uid">用户UID</Option>
+                <Option value="real_name">用户姓名</Option>
+                <Option value="user_phone">用户电话</Option>
+                <Option value="title">商品名称</Option>
+                <Option value="total_num">商品件数</Option>
+              </Select>
+            </Input>
+          </FormItem>
+          <FormItem>
+            <Button
+              type="primary"
+              @click="orderSearch(orderData.real_name)"
+      
+                            style="margin-left: -90px"
+              >查询</Button
+            >
+          </FormItem>
+        </Col>
+      </Row>
+    </Form>
+  </div>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import {
+  putWrite,
+  storeOrderApi,
+  handBatchDelivery,
+  otherBatchDelivery,
+  exportExpressList,
+} from '@/api/order'
+import { staffListInfo } from '@/api/store'
+import { getSupplierList } from '@/api/supplier'
+import autoSend from '../handle/autoSend'
+import queueList from '../handle/queueList'
+import Setting from '@/setting'
+import util from '@/libs/util'
+import timeOptions from '@/utils/timeOptions'
+// import XLSX from 'xlsx';
+// const make_cols = refstr => Array(XLSX.utils.decode_range(refstr).e.c + 1).fill(0).map((x,i) => ({name:XLSX.utils.encode_col(i), key:i}));
+export default {
+  name: 'table_from',
+  components: {
+    autoSend,
+    queueList,
+  },
+  props: ['formSelection', 'isAll'],
+  data() {
+    const codeNum = (rule, value, callback) => {
+      if (!value) {
+        return callback(new Error('请填写核销码'))
+      }
+      // 模拟异步验证效果
+      if (!Number.isInteger(value)) {
+        callback(new Error('请填写12位数字'))
+      } else {
+        // const reg = /[0-9]{12}/;
+        const reg = /\b\d{12}\b/
+        if (!reg.test(value)) {
+          callback(new Error('请填写12位数字'))
+        } else {
+          callback()
+        }
+      }
+    }
+    return {
+      currentTab: '',
+      grid: {
+        xl: 7,
+        lg: 12,
+        md: 24,
+        sm: 24,
+        xs: 24,
+      },
+      // 搜索条件
+      orderData: {
+        status: '',
+        data: '',
+        real_name: '',
+        field_key: 'all',
+        pay_type: '',
+        type:'', // 订单类型
+        store_id: '',
+        supplier_id: '',
+      },
+      modalTitleSs: '',
+      statusType: '',
+      time: '',
+      value2: [],
+      isDelIdList: [],
+      writeOffRules: {
+        code: [{ validator: codeNum, trigger: 'blur', required: true }],
+      },
+      writeOffFrom: {
+        code: '',
+        confirm: 0,
+      },
+      staffData: [], // 门店
+      supplierName: [], // 供应商
+      modals2: false,
+      timeVal: [],
+      options: timeOptions,
+      payList: [
+        { label: '全部', val: '' },
+        { label: '微信支付', val: '1' },
+        { label: '支付宝支付', val: '4' },
+        { label: '余额支付', val: '2' },
+        { label: '线下支付', val: '3' },
+      ],
+      manualModal: false,
+      uploadAction: `${Setting.apiBaseURL}/file/upload/1`,
+      uploadHeaders: {},
+      file: '',
+      autoModal: false,
+      isShow: false,
+      recordModal: false,
+      sendOutValue: '',
+      exportListOn: 0,
+      fileList: [],
+      // modal5: false,
+      // data5: [],
+      // cols5: []
+      // orderStatus: false,
+      // orderInfo:''
+    }
+  },
+  mounted() {
+    // this.getType_id = ''
+    // this.getStore_id = ''
+    // this.getSupplier_id = ''
+
+  },
+  computed: {
+    ...mapState('admin/layout', ['isMobile']),
+    ...mapState('admin/order', [
+      'orderChartType',
+      'isDels',
+      'delIdList',
+      'orderType',
+    ]),
+    labelWidth() {
+      return this.isMobile ? undefined : 96
+    },
+    labelPosition() {
+      return this.isMobile ? 'top' : 'right'
+    },
+    today() {
+      const end = new Date()
+      const start = new Date()
+      var datetimeStart =
+        start.getFullYear() +
+        '/' +
+        (start.getMonth() + 1) +
+        '/' +
+        start.getDate()
+      var datetimeEnd =
+        end.getFullYear() + '/' + (end.getMonth() + 1) + '/' + end.getDate()
+      return [datetimeStart, datetimeEnd]
+    },
+  },
+  watch: {
+    $route() {
+      if (this.$route.fullPath === '/admin/order/list?status=1') {
+        this.getPath()
+      }
+    },
+  },
+  created() {
+    // this.timeVal = this.today;
+    // this.orderData.data = this.timeVal.join('-');
+
+    this.staffList()
+    this.getSupplierList()
+    if (this.$route.fullPath === '/admin/order/list?status=1') {
+      this.getPath()
+    }
+    this.$parent.$emit('add')
+  },
+  methods: {
+    ...mapMutations('admin/order', [
+      'getOrderStatus',
+      'getOrderType',
+      'getOrderTime',
+      'getOrderNum',
+      'getfieldKey',
+      'getSupplier_id',
+      'getStore_id',
+      'getType_id',
+    ]),
+    getPath() {
+      this.orderData.status = this.$route.query.status.toString()
+      this.getOrderStatus(this.orderData.status)
+      this.$emit('getList', 1)
+      this.$emit('order-data', this.orderData)
+    },
+    clearTap(e){
+      this.getOrderNum(e.target.value)
+      this.$emit('order-data', this.orderData)
+    },
+    // 具体日期
+    onchangeTime(e) {
+      if (e[1].slice(-8) === '00:00:00') {
+        e[1] = e[1].slice(0, -8) + '23:59:59'
+        this.timeVal = e
+      } else {
+        this.timeVal = e
+      }
+      this.orderData.data = this.timeVal[0] ? this.timeVal.join('-') : ''
+      // this.$store.dispatch("admin/order/getOrderTabs", {
+      //   data: this.orderData.data,
+      // });
+      this.getOrderTime(this.orderData.data)
+      this.$emit('getList', 1)
+      this.$emit('order-data', this.orderData)
+    },
+    // 选择时间
+    selectChange(tab) {
+      this.$store.dispatch('admin/order/getOrderTabs', { data: tab })
+      this.orderData.data = tab
+      this.getOrderTime(this.orderData.data)
+      this.timeVal = []
+      this.$emit('getList')
+      this.$emit('order-data', this.orderData)
+    },
+
+    // 订单选择状态
+    selectChange2(tab) {
+      this.getOrderStatus(tab)
+      this.$emit('getList', 1)
+      this.$emit('order-data', this.orderData)
+    },
+
+    // 订单类型选择
+    typeChange(tab) {
+      this.getType_id(tab)
+      this.$emit('getList', 1)
+    },
+
+        // 门店
+    storeChange(tab) {
+      this.getStore_id(tab)
+      this.$emit('getList', 1)
+      this.$emit('order-data', this.orderData)
+    },
+
+        // 供应商选择
+    supplierChange(tab) {
+      this.getSupplier_id(tab)
+      this.$emit('getList', 1)
+    },
+
+    userSearchs(type) {
+      this.getOrderType(type)
+      this.$emit('getList', 1)
+    },
+
+    // 时间状态
+    timeChange(time) {
+      this.getOrderTime(time)
+      this.$emit('getList')
+    },
+
+    // 门店列表
+    staffList() {
+      let data = {
+        page: 0,
+        limit: 0,
+      }
+      staffListInfo()
+        .then((res) => {
+          this.staffData = res.data
+        })
+        .catch((err) => {
+          this.$Message.error(err.msg)
+        })
+    },
+
+    // 获取供应商内容
+    getSupplierList() {
+      getSupplierList()
+        .then(async (res) => {
+          this.supplierName = res.data
+        })
+        .catch((res) => {
+          this.$Message.error(res.msg)
+        })
+    },
+
+    // 订单号搜索
+    orderSearch(num) {
+      this.getOrderNum(num)
+      this.getfieldKey(this.orderData.field_key)
+      this.$emit('getList', 1)
+    },
+
+    // 点击订单类型
+    onClickTab() {
+      this.$emit('onChangeType', this.currentTab)
+    },
+
+    // 批量删除
+    delAll() {
+      if (this.delIdList.length === 0) {
+        this.$Message.error('请先选择删除的订单!')
+      } else {
+        if (this.isDels) {
+          this.delIdList.filter((item) => {
+            this.isDelIdList.push(item.id)
+          })
+          let idss = {
+            ids: this.isDelIdList,
+            all: this.isAll,
+            where: this.orderData,
+          }
+          let delfromData = {
+            title: '删除订单',
+            url: `/order/dels`,
+            method: 'post',
+            ids: idss,
+          }
+          this.$modalSure(delfromData)
+            .then((res) => {
+              this.$Message.success(res.msg)
+              this.tabList()
+            })
+            .catch((res) => {
+              this.$Message.error(res.msg)
+            })
+        } else {
+          const title = '错误!'
+          const content =
+            '<p>您选择的的订单存在用户未删除的订单,无法删除用户未删除的订单!</p>'
+          this.$Modal.error({
+            title: title,
+            content: content,
+          })
+        }
+      }
+    },
+    handleSubmit() {
+      this.$emit('on-submit', this.data)
+    },
+
+    // 刷新
+    Refresh() {
+      this.$emit('getList')
+    },
+    //
+    handleReset() {
+      this.$refs.form.resetFields()
+      this.$emit('on-reset')
+    },
+    queuemModal() {
+      this.$refs.queue.modal = true
+    },
+  },
+}
+</script>
+
+<style scoped lang="stylus">
+.input-add {
+ width: 250px;
+}
+.tab_data >>> .ivu-form-item-content {
+  margin-left: 0 !important;
+}
+
+.table_box >>> .ivu-divider-horizontal {
+  margin-top: 0px !important;
+}
+
+.tabform {
+  margin-bottom: 10px;
+}
+
+.Refresh {
+  font-size: 12px;
+  color: #1890FF;
+  cursor: pointer;
+}
+
+.order-wrapper {
+  margin-top: 10px;
+  padding: 10px;
+  border: 1px solid #ddd;
+
+  .title {
+    font-size: 16px;
+  }
+
+  .order-box {
+    margin-top: 10px;
+    border: 1px solid #ddd;
+
+    .item {
+      display: flex;
+      align-items: center;
+      border-bottom: 1px solid #ddd;
+
+      &:last-child {
+        border-bottom: 0;
+      }
+
+      .label {
+        width: 100px;
+        padding: 10px 0 10px 10px;
+        border-right: 1px solid #ddd;
+      }
+
+      .con {
+        flex: 1;
+        padding: 10px 0 10px 10px;
+      }
+    }
+  }
+}
+
+.manual-modal {
+  display: flex;
+  align-items: center;
+}
+
+@media screen and (max-width: 1100px) {
+  .caozuo {
+    margin-top: 20px;
+  }
+}
+</style>

+ 1347 - 0
src/pages/finance/list/components/tableList.vue

@@ -0,0 +1,1347 @@
+<template>
+<!-- 订单列表-表格组件 -->
+  <div>
+    <!-- :loading="loading" -->
+    <!-- tab切换栏 -->
+    
+    
+    <!-- 订单列表表格 -->
+    <Table
+      :columns="columns"
+      :data="orderList"
+      ref="table"
+      highlight-row
+      no-data-text="暂无数据"
+      no-filtered-data-text="暂无筛选结果"
+      @on-selection-change="onSelectTab"
+      @on-select-all="selectAll"
+      @on-select-all-cancel="selectAll"
+      @on-select-cancel="onSelectCancel"
+      class="orderData ivu-mt"
+    >
+      <template slot-scope="{ row }" slot="order_id">
+        <Tooltip
+          theme="dark"
+          max-width="300"
+          :delay="600"
+          content="用户已删除"
+          v-if="row.is_del === 1 && row.delete_time == null"
+        >
+          <span style="color: #ed4014; display: block">{{ row.order_id }}</span>
+        </Tooltip>
+        <span
+          @click="changeMenu(row, '2')"
+          v-else
+          style="color: #2d8cf0; display: block; cursor: pointer"
+          >{{ row.order_id }}</span
+        >
+      </template>
+      <template slot-scope="{ row }" slot="nickname">
+        <a @click="showUserInfo(row)">{{ row.nickname }}</a>
+        <span style="color: #ed4014" v-if="row.delete_time != null">
+          (已注销)</span
+        >
+      </template>
+     <template slot-scope="{ row }" slot="pay_type_name">
+        <span>{{ row.pay_type_name }}</span>
+      </template>
+	  <!-- 商品id -->
+	  <template slot-scope="{ row }" slot="goodid">
+	    <!-- <Tooltip theme="dark" max-width="300" :delay="600"> -->
+	      <div class="tabBox" v-for="(val, i) in row._info" :key="i">
+	        <span class="tabBox_tit line1">
+	          {{ val.cart_info.productInfo.id }}
+	         </span>
+	      </div>
+	    <!-- </Tooltip> -->
+	  </template>
+	  <!-- 商品信息 -->
+      <template slot-scope="{ row }" slot="info">
+        <!-- <Tooltip theme="dark" max-width="300" :delay="600"> -->
+          <div class="tabBox" v-for="(val, i) in row._info" :key="i">
+            <div class="tabBox_img" v-viewer>
+              <img v-lazy="val.cart_info.productInfo.attrInfo? val.cart_info.productInfo.attrInfo.image: val.cart_info.productInfo.image" />
+            </div>
+            <span class="tabBox_tit line1">
+              <span class="font-color-red" v-if="val.cart_info.is_gift"
+                >赠品</span>
+              
+             {{ val.cart_info.productInfo.store_name }}
+              <!-- {{val.cart_info.productInfo.attrInfo?val.cart_info.productInfo.attrInfo.suk: ''}} -->
+			  </span>
+          </div>
+        <!-- </Tooltip> -->
+      </template>
+	  <!-- 商品属性 -->
+	  <template slot-scope="{ row }" slot="goodsx">
+	    <!-- <Tooltip theme="dark" max-width="300" :delay="600"> -->
+	      <div class="tabBox" v-for="(val, i) in row._info" :key="i">
+	        <span class="tabBox_tit line1">
+	          {{ val.cart_info.productInfo.attrInfo?val.cart_info.productInfo.attrInfo.suk: '' }}
+	         </span>
+	      </div>
+	    <!-- </Tooltip> -->
+	  </template>
+	  <!-- 商品成本价 -->
+	  <template slot-scope="{ row }" slot="cost">
+	    <!-- <Tooltip theme="dark" max-width="300" :delay="600"> -->
+	      <div class="tabBox" v-for="(val, i) in row._info" :key="i">
+	        <span class="tabBox_tit line1">
+	          {{ val.cart_info.productInfo.cost }}
+	         </span>
+	      </div>
+	    <!-- </Tooltip> -->
+	  </template>
+      <template slot-scope="{ row }" slot="statusName">
+        <Tag color="default" size="medium" v-show="row.status == 3">{{
+          row.status_name.status_name
+        }}</Tag>
+        <Tag color="orange" size="medium" v-show="row.status == 4">{{
+          row.status_name.status_name
+        }}</Tag>
+        <Tag
+          color="orange"
+          size="medium"
+          v-show="row.status == 1 || row.status == 2 || row.status == 5"
+		  v-html = "row.status_name.status_name"
+          >{{ row.status_name.status_name }}</Tag
+        >
+        <Tag color="red" size="medium" v-show="row.status == 0" v-html="row.status_name.status_name"></Tag>
+        <Tag
+          color="orange"
+          size="medium"
+          v-if="!row.is_all_refund && row.refund.length"
+          >部分退款中</Tag
+        >
+        <Tag
+          color="orange"
+          size="medium"
+          v-if="row.is_all_refund && row.refund.length && row.refund_type != 6"
+          >退款中</Tag
+        >
+        <div class="pictrue-box" size="medium" v-if="row.status_name.pics">
+          <div
+            v-viewer
+            v-for="(item, index) in row.status_name.pics || []"
+            :key="index"
+          >
+            <img class="pictrue mr10" v-lazy="item" :src="item" />
+          </div>
+        </div>
+      </template>
+	  <template slot-scope="{ row }" slot="goodprice">
+	    <!-- {{ row.paid > 0 ? row.pay_price : 0 }} -->
+		<div class="tabBox" v-for="(val, i) in row._info" :key="i">
+		  <span class="tabBox_tit line1">
+		    {{ val.cart_info.productInfo.price }}
+		   </span>
+		</div>
+	  </template>
+	  <template slot-scope="{ row }" slot="goodsl">
+	    <!-- {{ row.paid > 0 ? row.pay_price : 0 }} -->
+	  		<div class="tabBox" v-for="(val, i) in row._info" :key="i">
+	  		  <span class="tabBox_tit line1">
+	  		    {{ val.cart_info.cart_num }}
+	  		   </span>
+	  		</div>
+	  </template>
+      <template slot-scope="{ row }" slot="pay_price">
+        {{ row.paid > 0 ? row.pay_price : 0 }}
+      </template>
+      <template slot-scope="{ row }" slot="action">
+        
+        <a @click="infoC(row)">详情</a>
+      </template>
+    </Table>
+    <div class="acea-row row-right page">
+      <Page
+        :total="page.total"
+        :current="page.pageNum"
+        show-elevator
+        show-total
+        @on-change="pageChange"
+        :page-size="page.pageSize"
+        @on-page-size-change="limitChange"
+        show-sizer
+      />
+    </div>
+    <!-- 分配 -->
+    <Distribution ref="distshow"></Distribution>
+    <!-- 编辑 退款 退积分 不退款-->
+    <edit-from
+      ref="edits"
+      :FromData="FromData"
+      @submitFail="submitFail"
+    ></edit-from>
+    <!-- 会员详情-->
+    <user-details ref="userDetails" fromType="order"></user-details>
+    <!-- 详情 -->
+    <details-from
+      ref="detailss"
+      :orderDatalist="orderDatalist"
+      :orderId="orderId"
+      :row-active="rowActive"
+      :openErp="openErp"
+      :formType="1"
+    ></details-from>
+    <!-- 备注 -->
+    <order-remark
+      ref="remarks"
+      :orderId="orderId"
+      @submitFail="submitFail"
+    ></order-remark>
+    <!-- 记录 -->
+    <order-record ref="record"></order-record>
+    <!-- 发送货 -->
+    <order-send
+      ref="send"
+      :orderId="orderId"
+      :status="status"
+      :pay_type="pay_type"
+      @submitFail="submitFail(1)"
+    ></order-send>
+    <Modal
+      v-model="manualModal"
+      title="手动批量发货"
+      @on-ok="manualModalOk"
+      @on-cancel="manualModalCancel"
+      class-name="vertical-center-modal"
+    >
+      <Row type="flex">
+        <Col span="4">
+          <div style="line-height: 32px; text-align: right">文件:</div>
+        </Col>
+        <Col span="20">
+          <Upload
+            ref="upload"
+            :action="uploadAction"
+            :headers="uploadHeaders"
+            accept=".xlsx,.xls"
+            :format="['xlsx', 'xls']"
+            :disabled="!!fileList.length"
+            :on-success="uploadSuccess"
+            :on-remove="removeFile"
+          >
+            <Button icon="ios-cloud-upload-outline">上传文件</Button>
+          </Upload>
+        </Col>
+      </Row>
+    </Modal>
+    <!--订单核销模态框-->
+    <Modal
+      v-model="modals2"
+      title="订单核销"
+      class="paymentFooter"
+      scrollable
+      width="400"
+      class-name="vertical-center-modal"
+    >
+      <Form
+        ref="writeOffFrom"
+        :model="writeOffFrom"
+        :rules="writeOffRules"
+        :label-position="labelPosition"
+        class="tabform"
+        @submit.native.prevent
+      >
+        <FormItem prop="code" label-for="code">
+          <Input
+            search
+            enter-button="验证"
+            style="width: 100%"
+            type="text"
+            placeholder="请输入12位核销码"
+            @on-search="search('writeOffFrom')"
+            v-model.number="writeOffFrom.code"
+            number
+          />
+        </FormItem>
+      </Form>
+      <div slot="footer">
+        <Button type="primary" @click="ok">立即核销</Button>
+        <Button @click="del('writeOffFrom')">取消</Button>
+      </div>
+    </Modal>
+    <auto-send ref="sends" :selectArr="selectArr"></auto-send>
+    <queue-list ref="queue"></queue-list>
+	<commission-details ref="commission"></commission-details>
+  </div>
+</template>
+
+<script>
+import Distribution from './distribution.vue'
+import expandRow from './tableExpand.vue'
+import {
+  orderList,
+  getOrdeDatas,
+  getDataInfo,
+  getRefundFrom,
+  getnoRefund,
+  refundIntegral,
+  getDistribution,
+  writeUpdate,
+  storeOrderApi,
+  handBatchDelivery,
+  putWrite,
+  exportExpressList,
+   remindOrder,
+} from '@/api/order'
+import { erpConfig } from '@/api/erp'
+import { mapState, mapMutations } from 'vuex'
+import editFrom from '../../../../components/from/from'
+import detailsFrom from '../handle/orderDetails'
+import orderRemark from '../handle/orderRemark'
+import orderRecord from '../handle/orderRecord'
+import commissionDetails from "../handle/commissionDetails";
+import orderSend from '../handle/orderSend'
+import userDetails from '@/pages/user/list/handle/userDetails'
+import autoSend from '../handle/autoSend'
+import queueList from '../handle/queueList'
+import Setting from '@/setting'
+import util from '@/libs/util'
+import exportExcel from '@/utils/newToExcel.js'
+import Template from '../../../setting/devise/template.vue'
+export default {
+  name: 'table_list',
+  components: {
+    expandRow,
+    editFrom,
+    detailsFrom,
+    orderRemark,
+    orderRecord,
+    orderSend,
+    userDetails,
+    Distribution,
+    autoSend,
+    queueList,
+    Template,
+	commissionDetails
+  },
+  props: ['where', 'isAll'],
+  data() {
+    const codeNum = (rule, value, callback) => {
+      if (!value) {
+        return callback(new Error('请填写核销码'))
+      }
+      // 模拟异步验证效果
+      if (!Number.isInteger(value)) {
+        callback(new Error('请填写12位数字'))
+      } else {
+        // const reg = /[0-9]{12}/;
+        const reg = /\b\d{12}\b/
+        if (!reg.test(value)) {
+          callback(new Error('请填写12位数字'))
+        } else {
+          callback()
+        }
+      }
+    }
+    return {
+      openErp: false,
+      currentTab: '-1',
+      distshow: false, //分配的弹窗
+      delfromData: {},
+      modal: false,
+      orderList: [],
+      pay_type: '',
+      orderCards: [],
+      loading: false,
+      orderId: 0,
+      columns: [
+        {
+          type: 'expand',
+          width: 30,
+          render: (h, params) => {
+            return h(expandRow, {
+              props: {
+                row: params.row,
+              },
+            })
+          },
+        },
+        {
+          type: 'selection',
+          width: 60,
+          align: 'center',
+        },
+        {
+          title: '订单号',
+          slot: 'order_id',
+          minWidth: 150,
+        },
+        // {
+        //   title: '订单类型',
+        //   key: 'pink_name',
+        //   minWidth: 110,
+        // },
+		{
+		  title: '佣金总额',
+		  key: 'brokerage',
+		  minWidth: 130,
+		},
+        {
+          title: '用户信息',
+          slot: 'nickname',
+          minWidth: 130,
+        },
+		{
+		  title: '商品id',
+		  slot: 'goodid',
+		  minWidth: 100,
+		},
+        {
+          title: '商品信息',
+          slot: 'info',
+          minWidth: 250,
+        },
+		// {
+		//   title: '商品属性',
+		//   slot: 'goodsx',
+		//   minWidth: 100,
+		// },
+		// {
+		//   title: '商品成本价',
+		//   slot: 'cost',
+		//   minWidth: 100,
+		// },
+		// {
+		//   title: '商品价格',
+		//   slot: 'goodprice',
+		//   minWidth: 120,
+		// },
+		// {
+		//   title: '购买数量',
+		//   slot: 'goodsl',
+		//   minWidth: 70,
+		// },
+        {
+          title: '实际支付',
+          slot: 'pay_price',
+          minWidth: 70,
+        },
+		{
+		  title: '下单时间',
+		  key: 'add_time',
+		  minWidth: 130,
+		},
+        // {
+        //   title: '支付时间',
+        //   key: '_pay_time',
+        //   minWidth: 130,
+        // },
+        // {
+        //   title: '支付类型',
+        //   key: 'pay_type_name',
+        //   minWidth: 100,
+        // },
+        // {
+        //   title: '订单状态',
+        //   slot: 'statusName',
+        //   minWidth: 100,
+        // },
+        {
+          title: '操作',
+          slot: 'action',
+          fixed: 'right',
+          minWidth: 140,
+          align: 'left',
+        },
+      ],
+      page: {
+        total: 0, // 总条数
+        pageNum: 1, // 当前页
+        pageSize: 10, // 每页显示条数
+      },
+      data: [],
+      FromData: null,
+      orderDatalist: null,
+      modalTitleSs: '',
+      isDelIdList: [],
+      checkBox: false,
+      formSelection: [],
+      selectionCopy: [],
+      display: 'none',
+      autoDisabled: false,
+      status: 0, //发货状态判断
+      // isAll: -1,
+      rowActive: {},
+      tablists: {},
+      selectArr: [],
+      exportList: [
+        {
+          name: '1',
+          label: '导出发货单',
+        },
+        {
+          name: '0',
+          label: '导出订单',
+        },
+      ],
+      exportListOn: 0,
+      manualModal: false,
+      uploadAction: `${Setting.apiBaseURL}/file/upload/1`,
+      uploadHeaders: {},
+      autoModal: false,
+      isShow: false,
+      recordModal: false,
+      sendOutValue: '',
+      fileList: [],
+      file: '',
+      modals2: false,
+      writeOffRules: {
+        code: [{ validator: codeNum, trigger: 'blur', required: true }],
+      },
+      writeOffFrom: {
+        code: '',
+        confirm: 0,
+      },
+      orderConNum: 0,
+      orderConId: 0,
+    }
+  },
+  computed: {
+    ...mapState('admin/layout', ['isMobile']),
+    ...mapState('admin/order', [
+      'orderPayType',
+      'orderStatus',
+      'orderTime',
+      'orderNum',
+      'fieldKey',
+      'orderType',
+      'orderChartType',
+      'supplier_id',
+      'store_id',
+      'type_id',
+    ]),
+    labelWidth() {
+      return this.isMobile ? undefined : 96
+    },
+    labelPosition() {
+      return this.isMobile ? 'top' : 'right'
+    },
+  },
+  mounted() {},
+  created() {
+    this.getList()
+    this.getToken()
+    this.getErpConfig()
+  },
+  watch: {
+    orderType: function () {
+      this.page.pageNum = 1
+      this.getList()
+    },
+    formSelection(value) {
+      this.$emit('order-select', value)
+      if (value.length) {
+        this.$emit('auto-disabled', 0)
+      } else {
+        this.$emit('auto-disabled', 1)
+      }
+      let isDel = value.some((item) => {
+        return item.is_del === 1
+      })
+      this.getIsDel(isDel)
+      this.getisDelIdListl(value)
+    },
+    orderList: {
+      deep: true,
+      handler(value) {
+        value.forEach((item) => {
+          this.formSelection.forEach((itm) => {
+            if (itm.id === item.id) {
+              item.checkBox = true
+            }
+          })
+        })
+        const arr = this.orderList.filter((item) => item.checkBox)
+        if (this.orderList.length) {
+          this.checkBox = this.orderList.length === arr.length
+        } else {
+          this.checkBox = false
+        }
+      },
+    },
+  },
+  methods: {
+    ...mapMutations('admin/order', [
+      'getIsDel',
+      'getisDelIdListl',
+      'onChangeTabs',
+      'getStore_id',
+      'getSupplier_id',
+    ]),
+    //erp配置
+    getErpConfig() {
+      erpConfig()
+        .then((res) => {
+          this.openErp = res.data.open_erp
+        })
+        .catch((err) => {
+          this.$Message.error(err.msg)
+        })
+    },
+
+    printOreder() {
+      if (this.selectArr.length > 10) {
+        return this.$Message.error('最多批量打印10个订单')
+      }
+      let ids = []
+      this.selectArr.forEach((item) => {
+        ids.push(item.id)
+      })
+      let pathInfo = this.$router.resolve({
+        path: '/admin/supplier/order/distribution',
+        query: {
+          id: ids.join(','),
+          status: 2,
+        },
+      })
+      window.open(pathInfo.href, '_blank')
+    },
+
+    delAll() {
+      if (this.selectArr.length === 0) {
+        this.$Message.error('请先选择删除的订单!')
+      } else {
+        let idArr = []
+        this.selectArr.filter((item) => {
+          idArr.push(item.id)
+        })
+        let idss = {
+          ids: idArr,
+        }
+        let delfromData = {
+          title: '删除订单',
+          url: `/order/dels`,
+          method: 'post',
+          ids: idss,
+        }
+        this.$modalSure(delfromData)
+          .then((res) => {
+            this.$Message.success(res.msg)
+            this.selectArr = []
+            this.getList()
+          })
+          .catch((res) => {
+            this.$Message.error(res.msg)
+          })
+      }
+    },
+
+    onAuto() {
+      this.$refs.sends.modals = true
+      this.$refs.sends.getList()
+      this.$refs.sends.getDeliveryList()
+    },
+    // 提醒发货
+       btnClick(row) {
+      let data = {
+        supplier_id: row.supplier_id,
+        id: row.id,
+      }
+      remindOrder(data)
+        .then(async (res) => {
+          this.$Message.success(res.msg)
+        })
+        .catch((res) => {
+          this.$Message.error(res.msg)
+        })
+    },
+
+    queuemModal() {
+      this.$refs.queue.modal = true
+    },
+
+    // 下载物流公司对照表
+    async getExpressList() {
+      let [th, filekey, data, fileName] = [[], [], [], '']
+      let lebData = await this.getExcelData()
+      if (!fileName) fileName = lebData.filename
+      if (!filekey.length) {
+        filekey = lebData.filekey
+      }
+      if (!th.length) th = lebData.header
+      data = lebData.export
+      exportExcel(th, filekey, fileName, data)
+    },
+
+    getExcelData() {
+      return new Promise((resolve, reject) => {
+        exportExpressList().then((res) => {
+          return resolve(res.data)
+        })
+      })
+    },
+
+    // 订单核销
+    writeOff() {
+      this.modals2 = true
+    },
+
+    // 验证
+    search(name) {
+      this.$refs[name].validate((valid) => {
+        if (valid) {
+          this.writeOffFrom.confirm = 0
+          putWrite(this.writeOffFrom)
+            .then(async (res) => {
+              if (res.status === 200) {
+                // this.orderInfo = res.data;
+                this.$Message.success(res.msg)
+              } else {
+                this.$Message.error(res.msg)
+              }
+            })
+            .catch((res) => {
+              this.$Message.error(res.msg)
+            })
+        } else {
+          this.$Message.error('请填写正确的核销码')
+        }
+      })
+    },
+
+    // 订单核销
+    ok() {
+      if (!this.writeOffFrom.code) {
+        this.$Message.warning('请先验证订单!')
+      } else {
+        this.writeOffFrom.confirm = 1
+        putWrite(this.writeOffFrom)
+          .then(async (res) => {
+            if (res.status === 200) {
+              this.$Message.success(res.msg)
+              this.modals2 = false
+              this.$refs[name].resetFields()
+              this.$emit('getList')
+            } else {
+              this.$Message.error(res.msg)
+            }
+          })
+          .catch((res) => {
+            this.$Message.error(res.msg)
+          })
+      }
+    },
+
+    del(name) {
+      // this.orderInfo = ''
+      this.modals2 = false
+      this.writeOffFrom.confirm = 0
+      this.$refs[name].resetFields()
+    },
+
+    // 上传头部token
+    getToken() {
+      this.uploadHeaders['Authori-zation'] =
+        'Bearer ' + util.cookies.get('token')
+    },
+
+    // 上传成功
+    uploadSuccess(res, file, fileList) {
+      if (res.status === 200) {
+        this.$Message.success(res.msg)
+        this.file = res.data.src
+        this.fileList = fileList
+      } else {
+        this.$Message.error(res.msg)
+      }
+    },
+
+    //移除文件
+    removeFile(file, fileList) {
+      this.file = ''
+      this.fileList = fileList
+    },
+
+    // 手动批量发货-确定
+    manualModalOk() {
+      this.$refs.upload.clearFiles()
+      handBatchDelivery({ file: this.file })
+        .then((res) => {
+          this.$Message.success(res.msg)
+          this.fileList = []
+        })
+        .catch((err) => {
+          this.$Message.error(err.msg)
+          this.fileList = []
+        })
+    },
+
+    // 手动批量发货-取消
+    manualModalCancel() {
+      this.fileList = []
+      this.$refs.upload.clearFiles()
+    },
+
+    getTabs() {
+      this.spinShow = true
+      this.$store
+        .dispatch('admin/order/getOrderTabs', {
+          status: this.orderStatus,
+          pay_type: this.orderPayType,
+          data: this.orderTime,
+          real_name: this.orderNum,
+          field_key: this.fieldKey,
+          type: this.type_id,
+          plat_type: this.currentTab,
+          store_id: this.store_id,
+          supplier_id: this.supplier_id,
+        })
+        .then((res) => {
+          this.tablists = res.data
+          // this.onChangeChart(this.tablists)
+          this.spinShow = false
+        })
+        .catch((res) => {
+          this.spinShow = false
+          this.$Message.error(res.msg)
+        })
+    },
+
+    //全选
+    selectAll(row) {
+      this.selectArr = row
+    },
+
+    //部分选择
+    onSelectTab(selection) {
+      this.selectArr = selection
+    },
+    onClickTab() {
+      this.onChangeTabs(this.currentTab)
+      if (this.currentTab == 1) {
+        this.getSupplier_id('')
+      }
+      if (this.currentTab == 2) {
+        this.getStore_id('')
+      }
+      this.getList()
+      this.$store.dispatch('admin/order/getOrderTabs', {
+        type: this.currentTab,
+      })
+    },
+    closeDetail() {
+      this.$refs.detailss.modals = false
+    },
+    distribution(row) {
+      this.$refs.distshow.modals = true
+      this.$refs.distshow.formValidate.keywords = ''
+      this.$refs.distshow.getList(row.id)
+    },
+    showUserInfo(row) {
+      this.$refs.userDetails.modals = true
+      this.$refs.userDetails.activeName = 'info'
+      this.$refs.userDetails.getDetails(row.uid)
+    },
+
+    // 操作
+    changeMenu(row, name, num) {
+      this.orderId = row.id
+      this.orderConId = row.pid > 0 ? row.pid : row.id
+      this.orderConNum = num
+      switch (name) {
+        case '1':
+          this.delfromData = {
+            title: '修改立即支付',
+            url: `/order/pay_offline/${row.id}`,
+            method: 'post',
+            ids: '',
+          }
+          this.$modalSure(this.delfromData)
+            .then((res) => {
+              this.$Message.success(res.msg)
+              this.$emit('changeGetTabs')
+              this.getData(row.id, 1)
+              this.getList()
+            })
+            .catch((res) => {
+              this.$Message.error(res.msg)
+            })
+          // this.modalTitleSs = '修改立即支付';
+          break
+        case '2':
+          this.rowActive = row
+          this.getData(row.id)
+          break
+        case '3':
+          this.$refs.record.modals = true
+          this.$refs.record.getList(row.id)
+          break
+        case '4':
+          this.$refs.remarks.formValidate.remark = row.remark
+          this.$refs.remarks.modals = true
+          break
+        case '5':
+          this.getOnlyRefundData(row.id, row.refund_type)
+          break
+        case '55':
+          this.getRefundData(row.id, row.refund_type)
+          break
+        case '6':
+          this.getRefundIntegral(row.id)
+          break
+        case '7':
+          this.getNoRefundData(row.id)
+          break
+        case '8':
+          this.delfromData = {
+            title: '修改确认收货',
+            url: `/order/take/${row.id}`,
+            method: 'put',
+            ids: '',
+          }
+          this.$modalSure(this.delfromData)
+            .then((res) => {
+              this.$Message.success(res.msg)
+              this.$emit('changeGetTabs')
+              this.getList()
+              if (num) {
+                this.$refs.detailss.getSplitOrder(row.pid)
+              } else {
+                this.getData(row.id, 1)
+              }
+            })
+            .catch((res) => {
+              this.$Message.error(res.msg)
+            })
+          // this.modalTitleSs = '修改确认收货';
+          break
+        case '10':
+          this.delfromData = {
+            title: '立即打印订单',
+            info: '您确认打印此订单吗?',
+            url: `/order/print/${row.id}`,
+            method: 'get',
+            ids: '',
+          }
+          this.$modalSure(this.delfromData)
+            .then((res) => {
+              this.$Message.success(res.msg)
+              this.$emit('changeGetTabs')
+              this.getList()
+            })
+            .catch((res) => {
+              this.$Message.error(res.msg)
+            })
+          break
+        case '11':
+          this.delfromData = {
+            title: '立即打印电子面单',
+            info: '您确认打印此电子面单吗?',
+            url: `/order/order_dump/${row.id}`,
+            method: 'get',
+            ids: '',
+          }
+          this.$modalSure(this.delfromData)
+            .then((res) => {
+              this.$Message.success(res.msg)
+              this.getList()
+            })
+            .catch((res) => {
+              this.$Message.error(res.msg)
+            })
+          break
+        case '12':
+          let pathInfo = this.$router.resolve({
+            path: '/admin/supplier/order/distribution',
+            query: {
+              id: row.id,
+              status: 2,
+            },
+          })
+          window.open(pathInfo.href, '_blank')
+          break
+        default:
+          this.delfromData = {
+            title: '删除订单',
+            url: `/order/del/${row.id}`,
+            method: 'DELETE',
+            ids: '',
+          }
+          // this.modalTitleSs = '删除订单';
+          this.delOrder(row, this.delfromData)
+      }
+    },
+
+    // 立即支付 /确认收货//删除单条订单
+    submitModel() {
+      this.getList()
+    },
+    pageChange(index) {
+      this.page.pageNum = index
+      this.getList()
+    },
+    limitChange(limit) {
+      this.page.pageSize = limit
+      this.getList()
+    },
+
+    // 订单列表
+    getList(res) {
+      this.page.pageNum = res === 1 ? 1 : this.page.pageNum
+      this.loading = true
+      orderList({
+        page: this.page.pageNum,
+        limit: this.page.pageSize,
+        status: this.orderStatus,
+        pay_type: this.orderPayType,
+        data: this.orderTime,
+        real_name: this.orderNum,
+        field_key: this.fieldKey,
+        type: this.type_id,
+        plat_type: this.currentTab,
+        store_id: this.store_id,
+        supplier_id: this.supplier_id,
+      })
+        .then(async (res) => {
+          let data = res.data
+          data.data.forEach((item) => {
+            if (item.id == this.orderId) {
+              this.rowActive = item
+            }
+          })
+          // this.orderList = data.data;
+          this.$set(this, 'orderList', data.data)
+          this.orderCards = data.stat
+          this.page.total = data.count
+          this.$emit('on-changeCards', data.stat)
+          this.loading = false
+          this.getTabs()
+        })
+        .catch((res) => {
+          this.loading = false
+          this.$Message.error(res.msg)
+        })
+    },
+
+    // 编辑
+    edit(row) { 
+      this.getOrderData(row.id)
+    },
+    splitOrderDetail(row) {
+      this.$router.push({
+        path: 'split_list',
+        query: {
+          id: row.id,
+          orderChartType: this.orderStatus,
+        },
+      })
+    },
+
+    // 删除单条订单
+    delOrder(row, data) {
+      if (row.is_del === 1) {
+        this.$modalSure(data)
+          .then((res) => {
+            this.$Message.success(res.msg)
+            this.getList()
+            this.$refs.detailss.modals = false
+            this.$emit('changeGetTabs')
+          })
+          .catch((res) => {
+            this.$Message.error(res.msg)
+          })
+      } else {
+        const title = '错误!'
+        const content =
+          '<p>您选择的的订单存在用户未删除的订单,无法删除用户未删除的订单!</p>'
+        this.$Modal.error({
+          title: title,
+          content: content,
+        })
+      }
+    },
+
+    // 获取编辑表单数据
+    getOrderData(id) {
+      getOrdeDatas(id)
+        .then(async (res) => {
+          if (res.data.status === false) {
+            return this.$authLapse(res.data)
+          }
+          this.$authLapse(res.data)
+          this.FromData = res.data
+          this.$refs.edits.modals = true
+        })
+        .catch((res) => {
+          this.$Message.error(res.msg)
+        })
+    },
+
+    // 获取详情表单数据
+    getData(id, type) {
+      // this.$refs.detailss.modals = true;
+      getDataInfo(id)
+        .then(async (res) => {
+          if (!type) {
+            this.$refs.detailss.modals = true
+          }
+          this.$refs.detailss.activeName = 'detail'
+          this.orderDatalist = res.data
+          if (this.orderDatalist.orderInfo.refund_reason_wap_img) {
+            try {
+              this.orderDatalist.orderInfo.refund_reason_wap_img = JSON.parse(
+                this.orderDatalist.orderInfo.refund_reason_wap_img
+              )
+            } catch (e) {
+              this.orderDatalist.orderInfo.refund_reason_wap_img = []
+            }
+          }
+        })
+        .catch((res) => {
+          this.$Message.error(res.msg)
+        })
+    },
+
+    // 修改成功
+    submitFail(type) {
+      this.status = 0
+      this.getList()
+      if (this.orderConNum != 1) {
+        this.getData(this.orderId, 1)
+      } else {
+        this.$refs.detailss.getSplitOrder(this.orderConId)
+      }
+      if (type) {
+        this.$emit('changeGetTabs')
+      }
+    },
+infoC(row) {
+	console.log(row)
+	this.$refs.commission.modals = true;
+	// this.$refs.commission.getDetails(row.id);
+	this.$refs.commission.getList(row.order_id);
+},
+    // 仅退款
+    getOnlyRefundData(id, refund_type) {
+      this.$modalForm(getRefundFrom(id)).then(() => {
+        this.getList()
+        this.$emit('changeGetTabs')
+        this.$refs.detailss.modals = false
+      })
+    },
+
+    // 退货退款
+    getRefundData(id, refund_type) {
+      this.delfromData = {
+        title: '是否立即退货退款',
+        url: `/refund/agree/${id}`,
+        method: 'get',
+      }
+      this.$modalSure(this.delfromData)
+        .then((res) => {
+          this.$Message.success(res.msg)
+          this.getList()
+          this.$emit('changeGetTabs')
+        })
+        .catch((res) => {
+          this.$Message.error(res.msg)
+        })
+    },
+
+    // 获取退积分表单数据
+    getRefundIntegral(id) {
+      refundIntegral(id)
+        .then(async (res) => {
+          this.FromData = res.data
+          this.$refs.edits.modals = true
+        })
+        .catch((res) => {
+          this.$Message.error(res.msg)
+        })
+    },
+
+    // 不退款表单数据
+    getNoRefundData(id) {
+      this.$modalForm(getnoRefund(id)).then(() => {
+        this.getList()
+        this.$emit('changeGetTabs')
+      })
+    },
+
+    // 发送货
+    sendOrder(row, num) {
+      this.orderConId = row.pid
+      this.orderConNum = num
+      this.$store.commit('admin/order/setSplitOrder', row.total_num)
+      this.$refs.send.modals = true
+      this.orderId = row.id
+      this.status = row._status
+      this.pay_type = row.pay_type
+      this.$refs.send.getList()
+      this.$refs.send.getDeliveryList()
+      this.$nextTick((e) => {
+        this.$refs.send.getCartInfo(row._status, row.id)
+      })
+    },
+
+    // 配送信息表单数据
+    delivery(row, num) {
+      getDistribution(row.id)
+        .then(async (res) => {
+          this.orderConNum = num
+          this.orderConId = row.pid
+          this.FromData = res.data
+          this.$refs.edits.modals = true
+          if (num != 1) {
+            this.getData(this.orderId, 1)
+          }
+        })
+        .catch((res) => {
+          this.$Message.error(res.msg)
+        })
+    },
+
+    // 订单导出
+    change(status) {},
+    async exports(value) {
+		// console.log(value,'打印value')
+      this.exportListOn = this.exportList.findIndex(
+        (item) => item.name === value
+      )
+      let [th, filekey, data, fileName] = [[], [], [], '']
+      //   let fileName = "";
+      let excelData = JSON.parse(JSON.stringify(this.where))
+	  // console.log(excelData,'excelData')
+      excelData.page = 1
+      excelData.type = value
+      let ids = []
+      this.selectArr.filter((item) => {
+        ids.push(item.id)
+      })
+      excelData.ids = ids.join(',')
+      for (let i = 0; i < excelData.page + 1; i++) {
+        let lebData = await this.downOrderData(excelData)
+		console.log(lebData,'lebData++++')
+		
+		
+        if (!fileName) fileName = lebData.filename
+        if (!filekey.length) {
+          filekey = lebData.filekey
+        }
+        if (!th.length) th = lebData.header
+        if (lebData.export.length) {
+          data = data.concat(lebData.export)
+          excelData.page++
+        } else {
+          exportExcel(th, filekey, fileName, data)
+          return
+        }
+      }
+    },
+
+    downOrderData(excelData) {
+      return new Promise((resolve, reject) => {
+        storeOrderApi(excelData).then((res) => {
+          return resolve(res.data)
+        })
+      })
+    },
+
+    // 核销订单
+    bindWrite(row) {
+      let self = this
+      this.$Modal.confirm({
+        title: '提示',
+        content: '确定要核销该订单吗?',
+        cancelText: '取消',
+        closable: true,
+        maskClosable: true,
+        onOk: function () {
+          writeUpdate(row.order_id).then((res) => {
+            self.$Message.success(res.msg)
+            self.getList()
+          })
+        },
+        onCancel: () => {},
+      })
+    },
+    onSelectCancel(selection, row) {},
+  },
+}
+</script>
+
+<style scoped lang="stylus">
+.ivu-tag-orange{
+  color #fa8c16;
+}
+img {
+  height: 36px;
+  display: block;
+}
+
+.tabBox {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  align-items: center;
+
+  .tabBox_img {
+    width: 30px;
+    height: 30px;
+
+    img {
+      width: 100%;
+      height: 100%;
+    }
+  }
+
+  .tabBox_tit {
+    width: 290px;
+    height: 30px;
+    line-height: 30px;
+    font-size: 12px !important;
+    margin: 0 2px 0 10px;
+    letter-spacing: 1px;
+    box-sizing: border-box;
+  }
+}
+
+.tabBox +.tabBox {
+  margin-top: 5px;
+}
+
+.vertical-center-modal {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+/deep/.select-item:hover {
+  background-color: #f3f3f3;
+}
+
+/deep/.select-on {
+  display: block;
+}
+
+/deep/.select-item.on {
+  /* background: #f3f3f3; */
+}
+
+.pictrue-box {
+  display: flex;
+  align-item: center;
+}
+
+.pictrue {
+  width: 25px;
+  height: 25px;
+}
+
+.trip {
+  color: orange;
+}
+
+.new_tab {
+  >>>.ivu-tabs-nav .ivu-tabs-tab {
+    padding: 4px 16px 20px !important;
+    font-weight: 500;
+  }
+}
+>>> .ivu-table-fixed-body {
+    background-color: #f8f8f9;
+}
+</style>

+ 391 - 0
src/pages/finance/list/handle/autoSend.vue

@@ -0,0 +1,391 @@
+<template>
+  <Modal
+    v-model="modals"
+    scrollable
+    title="订单发送货"
+    class="order_box"
+    :closable="false"
+    class-name="vertical-center-modal"
+  >
+    <Form
+      ref="formItem"
+      :model="formItem"
+      :label-width="100"
+      @submit.native.prevent
+    >
+      <FormItem label="选择类型:">
+        <RadioGroup v-model="formItem.type" @on-change="changeRadio">
+          <!-- <Radio label="1">发货</Radio> -->
+          <Radio label="2">送货</Radio>
+          <Radio label="3">虚拟</Radio>
+        </RadioGroup>
+      </FormItem>
+      <div v-show="formItem.type === '1'">
+        <FormItem label="快递公司:" required>
+          <Select
+            v-model="formItem.delivery_name"
+            filterable
+            placeholder="请选择快递公司"
+            class="input-add"
+            @on-change="expressChange"
+          >
+            <Option
+              v-for="(item, i) in express"
+              :value="item.value"
+              :key="item.value"
+              >{{ item.value }}</Option
+            >
+          </Select>
+        </FormItem>
+        <template v-if="formItem.type === '1'">
+          <FormItem label="电子面单:" required class="express_temp_id">
+            <Select
+              v-model="formItem.express_temp_id"
+              placeholder="请选择电子面单"
+             class="input-add"
+              @on-change="expressTempChange"
+            >
+              <Option
+                v-for="(item, i) in expressTemp"
+                :value="item.temp_id"
+                :key="i"
+                >{{ item.title }}</Option
+              >
+            </Select>
+            <Button v-if="formItem.express_temp_id" type="text" @click="preview"
+              >预览</Button
+            >
+          </FormItem>
+          <FormItem label="寄件人姓名:" required>
+            <Input
+              v-model="formItem.to_name"
+              placeholder="请输入寄件人姓名"
+              class="input-add"
+            ></Input>
+          </FormItem>
+          <FormItem label="寄件人电话:" required>
+            <Input
+              v-model="formItem.to_tel"
+              placeholder="请输入寄件人电话"
+              class="input-add"
+            ></Input>
+          </FormItem>
+          <FormItem label="寄件人地址:" required>
+            <Input
+              v-model="formItem.to_addr"
+              placeholder="请输入寄件人地址"
+              class="input-add"
+            ></Input>
+          </FormItem>
+        </template>
+      </div>
+      <div v-show="formItem.type === '2'">
+        <FormItem label="送货人:" required>
+          <Select
+            v-model="formItem.sh_delivery"
+            placeholder="请选择送货人"
+            class="input-add"
+            @on-change="shDeliveryChange"
+          >
+            <Option v-for="(item, i) in deliveryList" :value="item.id" :key="i"
+              >{{ item.wx_name }}({{ item.phone }})</Option
+            >
+          </Select>
+        </FormItem>
+      </div>
+      <div v-show="formItem.type === '3'">
+        <FormItem label="备注:">
+          <Input
+            v-model="formItem.fictitious_content"
+            type="textarea"
+            :autosize="{ minRows: 2, maxRows: 5 }"
+            placeholder="备注"
+           class="input-add"
+          ></Input>
+        </FormItem>
+      </div>
+    </Form>
+    <div slot="footer">
+      <Button @click="cancel">取消</Button>
+      <Button type="primary" @click="putSend">提交</Button>
+    </div>
+    <div ref="viewer" v-viewer v-show="temp">
+      <img :src="temp.pic" class="display-add "/>
+    </div>
+  </Modal>
+</template>
+
+<script>
+import {
+  getExpressData,
+  orderExpressTemp,
+  orderDeliveryList,
+  orderSheetInfo,
+  otherBatchDelivery,
+} from "@/api/order";
+export default {
+  name: "orderSend",
+  props: {
+    isAll: {
+      type: Number,
+      default: 0,
+    },
+    ids: {
+      type: Array,
+      default() {
+        return [];
+      },
+    },
+    where: {
+      type: Object,
+      default() {
+        return {};
+      },
+    },
+    selectArr:{
+      type:Array,
+      default() {
+        return [];
+      },
+    }
+  },
+  data() {
+    return {
+      formItem: {
+        type: "2",
+        express_record_type: "2",
+        delivery_name: "",
+        delivery_id: "",
+        express_temp_id: "",
+        to_name: "",
+        to_tel: "",
+        to_addr: "",
+        sh_delivery: "",
+        fictitious_content: "",
+      },
+      modals: false,
+      express: [],
+      expressTemp: [],
+      deliveryList: [],
+      temp: {},
+      export_open: true,
+    };
+  },
+  watch: {
+    "formItem.express_temp_id"(value) {
+    },
+  },
+  methods: {
+    changeRadio(o) {
+		console.log(o,'dddd')
+      this.$refs.formItem.resetFields();
+      switch (o) {
+        case "1":
+          this.formItem.delivery_name = "";
+          this.formItem.delivery_id = "";
+          this.formItem.express_temp_id = "";
+          this.formItem.express_record_type = "2";
+          this.expressTemp = [];
+          break;
+        case "2":
+          this.formItem.sh_delivery = "";
+          this.formItem.express_record_type = "1";
+          break;
+        case "3":
+          this.formItem.fictitious_content = "";
+          this.formItem.express_record_type = "1";
+          break;
+      }
+    },
+    changeExpress(j) {
+      switch (j) {
+        case "2":
+          this.formItem.delivery_name = "";
+          this.formItem.express_temp_id = "";
+          this.expressTemp = [];
+          break;
+        case "1":
+          this.formItem.delivery_name = "";
+          this.formItem.delivery_id = "";
+          break;
+        default:
+          break;
+      }
+    },
+    reset() {
+      this.formItem = {
+        type: "2",
+        express_record_type: "2",
+        delivery_name: "",
+        delivery_id: "",
+        express_temp_id: "",
+        expressTemp: [],
+        to_name: "",
+        to_tel: "",
+        to_addr: "",
+        sh_delivery: "",
+        fictitious_content: "",
+      };
+    },
+    // 物流公司列表
+    getList() {
+      getExpressData(1)
+        .then(async (res) => {
+          this.express = res.data;
+          this.getSheetInfo();
+        })
+        .catch((res) => {
+          this.loading = false;
+          this.$Message.error(res.msg);
+        });
+    },
+    // 提交
+    putSend(name) {
+      let data = Object.assign(this.formItem);
+      let arr = [];
+      this.selectArr.forEach((item) => {
+        arr.push(item.id);
+      });
+      if (this.isAll == 1) {
+        data.all = 1;
+        data.where = this.where;
+      } else {
+        data.all = 0;
+        data.ids = arr;
+      }
+      if (this.formItem.type === "1") {
+        if (this.formItem.delivery_name === "") {
+          return this.$Message.error("快递公司不能为空");
+        } else if (this.formItem.express_temp_id === "") {
+          return this.$Message.error("电子面单不能为空");
+        } else if (this.formItem.to_name === "") {
+          return this.$Message.error("寄件人姓名不能为空");
+        } else if (this.formItem.to_tel === "") {
+          return this.$Message.error("寄件人电话不能为空");
+        } else if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(this.formItem.to_tel)) {
+          return this.$Message.error("请输入正确的手机号码");
+        } else if (this.formItem.to_addr === "") {
+          return this.$Message.error("寄件人地址不能为空");
+        }
+      }
+      if (this.formItem.type === "2") {
+        if (this.formItem.express_temp_id) {
+          this.formItem.express_temp_id = "";
+        }
+        if (this.formItem.sh_delivery === "") {
+          return this.$Message.error("送货人不能为空");
+        }
+      }
+      otherBatchDelivery(data)
+        .then(async (res) => {
+          this.modals = false;
+          this.$Message.success(res.msg);
+          this.reset();
+        })
+        .catch((res) => {
+          this.$Message.error(res.msg);
+          this.modals = false;
+        });
+    },
+    cancel(name) {
+      this.modals = false;
+      this.reset();
+    },
+    // 电子面单列表
+    expressChange(value) {
+      let expressItem = this.express.find((item) => {
+        return item.value === value;
+      });
+      if (!expressItem) {
+        return;
+      }
+      this.formItem.delivery_code = expressItem.code;
+      if (this.formItem.type === "1") {
+        this.expressTemp = [];
+        this.formItem.express_temp_id = "";
+        orderExpressTemp({
+          com: this.formItem.delivery_code,
+        })
+          .then((res) => {
+            this.expressTemp = res.data;
+            if (!res.data.length) {
+              this.$Message.error("请配置你所选快递公司的电子面单");
+            }
+          })
+          .catch((err) => {
+            this.$Message.error(err.msg);
+          });
+      }
+    },
+    getDeliveryList() {
+      orderDeliveryList()
+        .then((res) => {
+          this.deliveryList = res.data.list;
+        })
+        .catch((err) => {
+          this.$Message.error(err.msg);
+        });
+    },
+    getSheetInfo() {
+      orderSheetInfo()
+        .then((res) => {
+          const data = res.data;
+          for (const key in data) {
+            if (data.hasOwnProperty(key) && key !== "express_temp_id") {
+              this.formItem[key] = data[key];
+            }
+          }
+          this.export_open =
+            data.export_open === undefined ? true : data.export_open;
+          if (!this.export_open) {
+            this.formItem.express_record_type = "1";
+          }
+          this.formItem.to_addr = data.to_add;
+        })
+        .catch((err) => {
+          this.$Message.error(err.msg);
+        });
+    },
+    shDeliveryChange(value) {
+      let deliveryItem = this.deliveryList.find((item) => {
+        return item.id === value;
+      });
+      this.formItem.sh_delivery_name = deliveryItem.wx_name;
+      this.formItem.sh_delivery_id = deliveryItem.phone;
+      this.formItem.sh_delivery_uid = deliveryItem.uid;
+    },
+    expressTempChange(tempId) {
+      this.temp = this.expressTemp.find((item) => {
+        return tempId === item.temp_id;
+      });
+    },
+    preview() {
+      this.$refs.viewer.$viewer.show();
+    },
+  },
+};
+</script>
+
+<style scoped>
+.input-add {
+ width: 80%;
+}
+.express_temp_id {
+  position: relative;
+}
+
+.express_temp_id button {
+  position: absolute;
+  top: 50%;
+  right: 110px;
+  padding: 0;
+  border: none;
+  background: none;
+  transform: translateY(-50%);
+  color: #57a3f3;
+}
+
+.ivu-btn-text:focus {
+  box-shadow: none;
+}
+</style>

+ 304 - 0
src/pages/finance/list/handle/commissionDetails.vue

@@ -0,0 +1,304 @@
+<template>
+	<div style="width: 100%">
+		<Modal v-model="modals" scrollable footer-hide closable title="流水详情" :mask-closable="false" width="1000">
+			<Button type="primary" @click="exports">导出</Button>
+			<!-- <Spin size="large" fix v-if="spinShow"></Spin> -->
+			<!-- <div class="acea-row">
+                <div class="dashboard-workplace-header-tip">
+                    <div class="dashboard-workplace-header-tip-desc">
+                        <span class="dashboard-workplace-header-tip-desc-sp">姓名:{{detailsData.nickname}}</span>
+                        <span class="dashboard-workplace-header-tip-desc-sp">上级推广人:{{detailsData.spread_name}}</span>
+                        <span class="dashboard-workplace-header-tip-desc-sp">上级推广人:{{detailsData.spread_name?detailsData.spread_name:'无'}}</span>
+                        <span class="dashboard-workplace-header-tip-desc-sp">佣金总收入:{{detailsData.number}}</span>
+                        <span class="dashboard-workplace-header-tip-desc-sp">用户余额:{{detailsData.now_money}}</span>
+                        <span class="dashboard-workplace-header-tip-desc-sp">创建时间:{{detailsData.add_time}}</span>
+                    </div>
+                </div>
+            </div> -->
+			<!-- <Divider dashed/> -->
+			<!-- <Form ref="formValidate" :label-width="labelWidth" :label-position="labelPosition" class="tabform" @submit.native.prevent>
+                <Row :gutter="24" type="flex">
+                    <Col span="8">
+                        <FormItem label="订单号/昵称:">
+                            <Input enter-button placeholder="请输入" element-id="name" v-model="formValidate.nickname"
+                                   clearable/>
+                        </FormItem>
+                    </Col>
+                    <Col span="12">
+                        <FormItem label="时间范围:" class="tab_data">
+                            <DatePicker :editable="false" style="width: 100%" @on-change="onchangeTime" format="yyyy-MM-dd"
+                                        type="daterange" placement="bottom-end" placeholder="自定义时间"></DatePicker>
+                        </FormItem>
+                    </Col>
+                    <Col span="4">
+                            <Button type="primary" @click="userSearchs">搜索</Button>
+                    </Col>
+                </Row> -->
+			</Form>
+			<!-- <Divider dashed/> -->
+			<Table :columns="columns" :data="tabList" ref="table" :loading="loading" no-userFrom-text="暂无数据"
+				no-filtered-userFrom-text="暂无筛选结果" class="table">
+				<template slot-scope="{ row, index }" slot="number">
+					<span>{{row.pm == 1?"+":"-"}}{{row.number}}</span>
+				</template>
+			</Table>
+			<div class="acea-row row-right page">
+				<Page :total="total" :current="formValidate.page" show-elevator show-total @on-change="pageChange"
+					:page-size="formValidate.limit" />
+			</div>
+		</Modal>
+	</div>
+</template>
+
+<script>
+	import exportExcel from "@/utils/newToExcel.js";
+	import {
+		commissionDetailApi,
+		extractlistApi,
+		extractListApi,
+		exportcommissionApi
+	} from '@/api/finance';
+	import {
+		mapState
+	} from 'vuex';
+	export default {
+		name: 'commissionDetails',
+		data() {
+			return {
+				modals: false,
+				spinShow: false,
+				detailsData: {},
+				Ids: 0,
+				loading: false,
+				formValidate: {
+					order_id: '',
+					// nickname: '',
+					start_time: '',
+					end_time: '',
+					page: 1, // 当前页
+					limit: 20 // 每页显示条数
+				},
+				total: 0,
+				columns: [{
+						title: "用户ID",
+						key: "uid",
+						minWidth: 100,
+					},
+					{
+						title: "昵称",
+						key: "nickname",
+						minWidth: 100,
+					},
+					{
+						title: "手机",
+						key: "phone",
+						// sortable: "custom",
+						minWidth: 120,
+					},
+					{
+						title: "标题",
+						key: "title",
+						minWidth: 100,
+					},
+					{
+						title: "变动金额",
+						slot: "number",
+						// sortable: "custom",
+						minWidth: 120,
+					},
+					{
+						title: "变动后金额",
+						key: "balance",
+						minWidth: 150,
+					},
+					// {
+					// 	title: "关联订单",
+					// 	key: "link_id",
+					// 	minWidth: 100,
+					// },
+					{
+						title: "备注",
+						key: "mark",
+						minWidth: 230,
+					},
+					{
+						title: "时间",
+						key: "_add_time",
+						minWidth: 230,
+					}
+				],
+				tabList: []
+
+			}
+		},
+		computed: {
+			...mapState('admin/layout', [
+				'isMobile'
+			]),
+			labelWidth() {
+				return this.isMobile ? undefined : 80;
+			},
+			labelPosition() {
+				return this.isMobile ? 'top' : 'left';
+			}
+		},
+		mounted() {
+			if (this.Ids) {
+				this.getList();
+			}
+		},
+		methods: {
+			// 时间
+			onchangeTime(e) {
+				this.formValidate.start_time = e[0];
+				this.formValidate.end_time = e[1];
+			},
+			// 详情
+			getDetails(id) {
+				console.log(id, 'dddddd')
+				// this.Ids = id;
+				// this.spinShow = true;
+				// commissionDetailApi(id).then(async res => {
+				//     if (res.status === 200) {
+				//         let data = res.data
+				//         this.detailsData = data.user_info;
+				//         this.spinShow = false;
+				//     } else {
+				//         this.spinShow = false;
+				//         this.$Message.error(res.msg);
+				//     }
+				// }).catch(res => {
+				//     this.spinShow = false;
+				//     this.$Message.error(res.msg);
+				// })
+
+				// extractListApi(this.Ids, this.formValidate).then(async res => {
+				//     let data = res.data;
+				//     this.tabList = data.data;
+				//     this.total = data.count;
+				//     this.loading = false;
+				// }).catch(res => {
+				//     this.loading = false;
+				//     this.$Message.error(res.msg);
+				// })
+			},
+			// 列表
+			getList(id) {
+				if (id) {
+					this.formValidate.order_id = id
+				}
+				this.loading = true;
+				extractListApi(this.formValidate).then(async res => {
+					let data = res.data;
+					this.tabList = data.data;
+					this.total = data.count;
+					this.loading = false;
+				}).catch(res => {
+					this.loading = false;
+					this.$Message.error(res.msg);
+				})
+			},
+			pageChange(index) {
+				this.formValidate.page = index
+				this.getList();
+			},
+			// 搜索
+			async exports() {
+				let [th, filekey, data, fileName] = [
+					[],
+					[],
+					[], ""
+				];
+				//   let fileName = "";
+				let excelData = JSON.parse(JSON.stringify(this.formValidate));
+				excelData.page = 1;
+				for (let i = 0; i < excelData.page + 1; i++) {
+					let lebData = await this.getExcelData(excelData);
+					if (!fileName) fileName = lebData.filename;
+					if (!filekey.length) {
+						filekey = lebData.filekey;
+					}
+					if (!th.length) th = lebData.header;
+					if (lebData.export.length) {
+						data = data.concat(lebData.export);
+						excelData.page++;
+					} else {
+						exportExcel(th, filekey, fileName, data);
+						return;
+					}
+				}
+			},
+			getExcelData(excelData) {
+				return new Promise((resolve, reject) => {
+					exportcommissionApi(excelData).then((res) => {
+						return resolve(res.data);
+					});
+				});
+			},
+		}
+	}
+</script>
+
+<style lang="less" scoped>
+	.table {
+		.ivu-table-default {
+			overflow-y: auto;
+			max-height: 350px;
+		}
+	}
+
+	.dashboard-workplace {
+		&-header {
+			&-avatar {
+				width: 64px;
+				height: 64px;
+				border-radius: 50%;
+				margin-right: 16px;
+				font-weight: 600;
+			}
+
+			&-tip {
+				width: 82%;
+				display: inline-block;
+				vertical-align: middle;
+
+				&-title {
+					font-size: 13px;
+					color: #000000;
+					margin-bottom: 12px;
+				}
+
+				&-desc {
+					&-sp {
+						width: 33.33%;
+						color: #17233D;
+						font-size: 12px;
+						display: inline-block;
+					}
+				}
+			}
+
+			&-extra {
+				.ivu-col {
+					p {
+						text-align: right;
+					}
+
+					p:first-child {
+						span:first-child {
+							margin-right: 4px;
+						}
+
+						span:last-child {
+							color: #808695;
+						}
+					}
+
+					p:last-child {
+						font-size: 22px;
+					}
+				}
+			}
+		}
+	}
+</style>

+ 1701 - 0
src/pages/finance/list/handle/orderDetails.vue

@@ -0,0 +1,1701 @@
+<template>
+	<div>
+		<Drawer :closable="false" width="1000" class-name="order_box" v-model="modals" :styles="{ padding: 0 }">
+			<div v-if="orderDatalist">
+				<div class="head">
+					<div class="full">
+						<Icon :class="{
+                'sale-after': orderDatalist.orderInfo._status._type === -1,
+              }" custom="iconfont icondingdan" size="60" />
+						<div class="text">
+							<div class="title">{{ orderData.pink_name || '售后订单' }}</div>
+							<div>订单编号:{{ orderDatalist.orderInfo.order_id }}</div>
+						</div>
+						<div v-if="rowActive.delete_time == null">
+							<Button :class="openErp ? 'on' : ''" :disabled="openErp" v-if="
+                  orderData._status_new === 1 &&
+                  orderData.paid === 0 &&
+                  orderData.pay_type === 'offline'
+                " @click="changeMenu('1')">立即支付
+							</Button>
+							<Button :class="openErp ? 'on' : ''" :disabled="openErp"
+								v-if="orderData._status_new == 2 && !rowActive.split.length" @click="distribution">分配
+							</Button>
+							<Button :class="openErp ? 'on' : ''" :disabled="openErp" v-if="orderData._status_new == 1"
+								@click="edit">编辑
+							</Button>
+							<Button :class="openErp ? 'on' : ''" :disabled="openErp" v-if="
+                  (orderData._status_new === 2 ||
+                    orderData._status_new === 8 ||
+                    orderData.status === 4) &&
+                  orderData.shipping_type === 1 &&
+                  (orderData.pinkStatus === null || orderData.pinkStatus === 2)
+                " @click="sendOrder">发送货
+							</Button>
+							<Button :class="openErp ? 'on' : ''" :disabled="openErp"
+								v-if="orderData._status_new === 4 && !rowActive.split.length" @click="delivery">
+								配送信息
+							</Button>
+							<Button :class="openErp ? 'on' : ''" :disabled="openErp" v-if="
+                  orderData.shipping_type == 2 &&
+                  orderData.status == 0 &&
+                  orderData.paid == 1 &&
+                  orderData.refund_status === 0
+                " @click="bindWrite">立即核销
+							</Button>
+							<!-- <Button
+                v-if="orderData._status_new >= 2"
+                @click="changeMenu('10')"
+                >小票打印</Button
+              > -->
+							<Button :class="openErp ? 'on' : ''" :disabled="openErp"
+								v-if="orderData._status_new >= 3 && orderData.express_dump"
+								@click="changeMenu('11')">电子面单打印
+							</Button>
+							<Button :class="openErp ? 'on' : ''" :disabled="openErp" v-if="
+                  [1, 2, 5].includes(orderData.refund_type) &&
+                  (parseFloat(orderData.pay_price) >
+                    parseFloat(orderData.refunded_price) ||
+                    orderData.pay_price == 0) &&
+                  !formType
+                " @click="changeMenu('5')">{{ orderData.refund_type == 2 ? '同意退货' : '立即退款' }}
+							</Button>
+							<Button :class="openErp ? 'on' : ''" :disabled="openErp"
+								v-if="[1, 2, 5].includes(orderData.refund_type)" @click="changeMenu('7')">不退款
+							</Button>
+							<Button v-if="!formType" @click="changeMenu('4')">售后备注</Button>
+							<Button :class="openErp ? 'on' : ''" :disabled="openErp" v-if="orderData.is_del == 1"
+								@click="changeMenu('9')">删除订单
+							</Button>
+							<Dropdown @on-click="changeMenu" v-if="orderData._status_new !== 1 && formType">
+								<Button icon="ios-more"></Button>
+								<DropdownMenu slot="list">
+									<DropdownItem v-if="
+                      orderData._status_new !== 1 ||
+                      (orderData._status_new === 3 &&
+                        orderData.use_integral > 0 &&
+                        orderData.use_integral >= orderData.back_integral)
+                    " name="4">订单备注
+									</DropdownItem>
+									<DropdownItem :disabled="openErp" v-if="
+                      (orderData.refund_type == 0 ||
+                        orderData.refund_type == 1 ||
+                        orderData.refund_type == 5) &&
+                      orderData.paid == 1 &&
+                      orderData.refund_status !== 2 &&
+                      parseFloat(orderData.pay_price) > 0 &&
+                      (!rowActive.split.length ||
+                        (rowActive.split.length &&
+                          orderData._status._type == 1))
+                    " name="5">立即退款
+									</DropdownItem>
+									<DropdownItem :disabled="openErp" v-if="orderData._status_new === 4" name="8">已收货
+									</DropdownItem>
+									<DropdownItem v-if="orderData.paid" name="12">打印配货单</DropdownItem>
+								</DropdownMenu>
+							</Dropdown>
+						</div>
+					</div>
+					<ul class="list">
+						<li class="item">
+							<div class="title">订单状态</div>
+							<div v-if="!formType">
+								<div v-if="orderData.refund_type == 1" class="value1">
+									仅退款
+								</div>
+								<div v-else-if="orderData.refund_type == 2" class="value1">
+									退货退款
+								</div>
+								<div v-else-if="orderData.refund_type == 3" class="value1">
+									拒绝退款
+								</div>
+								<div v-else-if="orderData.refund_type == 4" class="value1">
+									商品待退货
+								</div>
+								<div v-else-if="orderData.refund_type == 5" class="value1">
+									退货待收货
+								</div>
+								<div v-else-if="orderData.refund_type == 6" class="value2">
+									已退款
+								</div>
+							</div>
+							<div class="value1" v-else>
+								<span v-html="orderData.status_name.status_name"></span>
+								<span v-if="!orderData.is_all_refund && orderData.refund.length">,部分退款中</span>
+								<span v-if="
+                    orderData.is_all_refund &&
+                    orderData.refund.length &&
+                    orderData.refund_type != 6
+                  ">,退款中</span>
+							</div>
+							<!-- <div v-if="orderDatalist.orderInfo.is_del" class="value4">{{ orderDatalist.orderInfo._status._title }}</div>
+              <template v-else>
+                  <div v-if="orderDatalist.orderInfo._status._type === -1" class="value5">{{ orderDatalist.orderInfo._status._title }}</div>
+                  <div v-else-if="orderDatalist.orderInfo._status._type < 4 || orderDatalist.orderInfo._status._type === 9" class="value1">{{ orderDatalist.orderInfo._status._title }}</div>
+                  <div v-else-if="orderDatalist.orderInfo._status._type === 4" class="value2">{{ orderDatalist.orderInfo._status._title }}</div>
+                  <div v-else-if="orderDatalist.orderInfo._status._type === 5" class="value3">{{ orderDatalist.orderInfo._status._title }}</div>
+              </template> -->
+						</li>
+						<li class="item">
+							<div class="title">实际支付</div>
+							<div>
+								¥{{
+                  orderDatalist.orderInfo.paid > 0
+                    ? orderDatalist.orderInfo.pay_price
+                    : 0
+                }}
+							</div>
+						</li>
+						<li class="item" v-if="!formType">
+							<div class="title">退款件数</div>
+							<div>{{ orderDatalist.orderInfo.total_num || 0 }}</div>
+						</li>
+						<li class="item" v-else>
+							<div class="title">支付方式</div>
+							<div>{{ orderDatalist.orderInfo._status._payType || '-' }}</div>
+						</li>
+						<li class="item" v-if="!formType">
+							<div class="title">退款时间</div>
+							<div>{{ orderDatalist.orderInfo._refund_time || '-' }}</div>
+						</li>
+						<li class="item" v-else>
+							<div class="title">支付时间</div>
+							<div>{{ orderDatalist.orderInfo._pay_time || '-' }}</div>
+						</li>
+					</ul>
+				</div>
+				<Tabs v-model="activeName">
+					<TabPane label="订单信息" name="detail">
+						<div class="section" v-if="!formType">
+							<div class="title">退款信息</div>
+							<ul class="list">
+								<li class="item">
+									<div>退款原因:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.refund_reason || '-' }}
+									</div>
+								</li>
+								<li class="item" v-if="parseFloat(orderDatalist.orderInfo.refund_price)">
+									<div>退款金额:</div>
+									<div class="value">
+										{{ parseFloat(orderDatalist.orderInfo.refund_price) || 0 }}
+									</div>
+								</li>
+								<li class="item" v-if="parseFloat(orderDatalist.orderInfo.back_integral)">
+									<div>退回积分:</div>
+									<div class="value">
+										{{
+                      parseFloat(orderDatalist.orderInfo.back_integral) || '-'
+                    }}
+									</div>
+								</li>
+								<li class="item">
+									<div>退款说明:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.refund_explain || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>退款凭证:</div>
+									<div class="value">
+										<div class="image" v-for="(img, i) in orderDatalist.orderInfo.refund_img"
+											:key="i" v-viewer>
+											<img v-lazy="img" />
+										</div>
+									</div>
+								</li>
+							</ul>
+						</div>
+						<div class="section" v-if="!formType && orderDatalist.orderInfo.refund_express_name">
+							<div class="title">退货物流信息</div>
+							<ul class="list">
+								<li class="item">
+									<div>物流公司:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.refund_express_name || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>物流单号:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.refund_express || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>联系电话:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.refund_phone || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>退货说明:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.refund_goods_explain || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>退货凭证:</div>
+									<div class="value">
+										<div class="image" v-for="(img, i) in orderDatalist.orderInfo
+                        .refund_goods_img" :key="i" v-viewer>
+											<img v-lazy="img" />
+										</div>
+									</div>
+								</li>
+							</ul>
+						</div>
+						<div class="section">
+							<div class="title">用户信息</div>
+							<ul class="list">
+								<li class="item">
+									<div>用户UID:</div>
+									<div class="value">
+										{{
+                      orderDatalist.userInfo.uid
+                        ? orderDatalist.userInfo.uid
+                        : '游客'
+                    }}
+									</div>
+								</li>
+								<li class="item">
+									<div>用户昵称:</div>
+									<div class="value">
+										{{
+                      orderDatalist.userInfo.uid
+                        ? orderDatalist.userInfo.nickname
+                        : '游客'
+                    }}
+									</div>
+								</li>
+								<li class="item">
+									<div>绑定电话:</div>
+									<div class="value">
+										{{ orderDatalist.userInfo.phone || '-' }}
+									</div>
+								</li>
+							</ul>
+						</div>
+						<div class="section" v-if="orderDatalist.orderInfo.product_type == 0">
+							<div class="title">收货信息</div>
+							<ul class="list">
+								<!-- <li class="item">
+                    <div>用户昵称:</div>
+                    <div class="value">{{orderDatalist.userInfo.uid?orderDatalist.userInfo.nickname:'游客'}}</div>
+                </li> -->
+								<li class="item">
+									<div class="value">
+										收货人:{{ orderDatalist.orderInfo.real_name || '-' }}
+									</div>
+								</li>
+							</ul>
+							<ul class="list">
+								<li class="mt10">
+									<div class="value">
+										收货电话:{{ orderDatalist.orderInfo.user_phone || '-' }}
+									</div>
+								</li>
+							</ul>
+							<ul class="list">
+								<li class="mt10">
+									<div class="value">
+										收货地址:{{ orderDatalist.orderInfo.user_address || '-' }}
+									</div>
+								</li>
+							</ul>
+						</div>
+						<div class="section" v-if="
+                orderDatalist.orderInfo.fictitious_content &&
+                orderDatalist.orderInfo.cartInfo[0].product_type != 1
+              ">
+							<!-- <div class="title">虚拟发货</div> -->
+							<div class="title">{{ orderDatalist.orderInfo.fictitious_content }}</div>
+							<!-- <ul class="list">
+								<li class="item">
+									<div class="value">
+										{{ orderDatalist.orderInfo.fictitious_content }}
+									</div>
+								</li>
+							</ul> -->
+						</div>
+						<div class="section" v-if="orderDatalist.orderInfo.cartInfo[0].product_type == 1">
+							<div class="title">卡密发货</div>
+							<div v-if="orderDatalist.orderInfo.virtual.length">
+								<div class="list" v-for="(item, index) in orderDatalist.orderInfo.virtual" :key="index">
+									<div class="item">
+										<div>卡号{{ index + 1 }}:</div>
+										<div class="value">{{ item.card_no }}</div>
+									</div>
+									<div class="item">
+										<div>密码{{ index + 1 }}:</div>
+										<div class="value">{{ item.card_pwd }}</div>
+									</div>
+								</div>
+							</div>
+							<ul class="list" v-else>
+								<li class="item">
+									<div class="value">
+										{{ orderDatalist.orderInfo.virtual_info || '-' }}
+									</div>
+								</li>
+							</ul>
+						</div>
+						<!-- 供应商 -->
+						<div class="section" v-if="orderDatalist.orderInfo.supplierInfo">
+							<div class="title">供应商信息</div>
+							<ul class="list">
+								<li class="item">
+									<div>供应商:</div>
+									<div class="value">
+										{{
+                      orderDatalist.orderInfo.supplierInfo.supplier_name
+                        ? orderDatalist.orderInfo.supplierInfo.supplier_name
+                        : '游客'
+                    }}
+									</div>
+								</li>
+								<li class="item">
+									<div>供应商姓名:</div>
+									<div class="value">
+										{{
+                      orderDatalist.orderInfo.supplierInfo.name
+                        ? orderDatalist.orderInfo.supplierInfo.name
+                        : '游客'
+                    }}
+									</div>
+								</li>
+								<li class="item">
+									<div>联系方式:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.supplierInfo.phone || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>供应商邮箱:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.supplierInfo.email || '-' }}
+									</div>
+								</li>
+							</ul>
+						</div>
+						<div class="section">
+							<div class="title">订单信息</div>
+							<ul class="list">
+								<li class="item">
+									<div>创建时间:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo._add_time || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>商品总数:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.total_num || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>商品总价:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.total_price || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>优惠券金额:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.coupon_price || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>积分抵扣:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.deduction_price || 0.0 }}
+									</div>
+								</li>
+								<li class="item" v-if="parseFloat(orderDatalist.orderInfo.use_integral)">
+									<div>使用积分:</div>
+									<div class="value">
+										{{ parseFloat(orderDatalist.orderInfo.use_integral) }}
+									</div>
+								</li>
+								<li class="item">
+									<div>支付邮费:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.pay_postage || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>会员商品优惠:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.vip_true_price || 0.0 }}
+									</div>
+								</li>
+								<li class="item" v-if="
+                    orderDatalist.orderInfo.shipping_type === 2 &&
+                    orderDatalist.orderInfo.refund_status === 0 &&
+                    orderDatalist.orderInfo.paid === 1
+                  ">
+									<div>门店名称:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo._store_name || '-' }}
+									</div>
+								</li>
+								<li class="item" v-if="
+                    orderDatalist.orderInfo.shipping_type === 2 &&
+                    orderDatalist.orderInfo.refund_status === 0 &&
+                    orderDatalist.orderInfo.paid === 1
+                  ">
+									<div>核销码:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.verify_code || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>推广人:</div>
+									<div class="value">
+										{{ orderDatalist.userInfo.spread_name }}/ID:{{
+                      orderDatalist.userInfo.spread_uid
+                    }}
+									</div>
+								</li>
+								<li class="item">
+									<div>支付时间:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo._pay_time || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>支付方式:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo._status._payType || '-' }}
+									</div>
+								</li>
+								<li class="item" v-if="orderDatalist.orderInfo.store_order_sn">
+									<div>原订单号:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.store_order_sn }}
+									</div>
+								</li>
+								<li class="item" v-for="(item, index) in orderDatalist.orderInfo
+                    .promotions_detail" :key="index">
+									<div>{{ item.title }}:</div>
+									<div class="value">
+										-¥{{ parseFloat(item.promotions_price).toFixed(2) }}
+									</div>
+								</li>
+							</ul>
+						</div>
+						<div class="section" v-if="orderDatalist.orderInfo.delivery_type === 'express'">
+							<div class="title">物流信息</div>
+							<ul class="list">
+								<li class="item">
+									<div>快递公司:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.delivery_name || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>快递单号:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.delivery_id
+                    }}<span class="logisticsLook" @click="openLogistics">查询</span>
+									</div>
+								</li>
+							</ul>
+						</div>
+						<div class="section" v-if="orderDatalist.orderInfo.delivery_type === 'send'">
+							<div class="title">配送信息</div>
+							<ul class="list">
+								<li class="item">
+									<div>送货人姓名:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.delivery_name || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>送货人电话:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.delivery_id || '-' }}
+									</div>
+								</li>
+							</ul>
+						</div>
+						<div v-if="orderDatalist.orderInfo.custom_form.length && isShow" class="section">
+							<div class="title">自定义留言</div>
+							<ul class="list">
+								<li v-for="(item, index) in orderDatalist.orderInfo.custom_form" :key="index"
+									class="item" v-if="item.value">
+									<div>{{ item.title }}:</div>
+									<div v-if="item.label === 'img'" class="value">
+										<div v-for="(img, i) in item.value" :key="i" class="image" v-viewer>
+											<img v-lazy="img" />
+										</div>
+									</div>
+									<div v-else class="value">{{ item.value || '-' }}</div>
+								</li>
+							</ul>
+						</div>
+						<div class="section" v-if="orderDatalist.orderInfo.mark">
+							<div class="title">买家留言</div>
+							<ul class="list">
+								<li class="item">
+									<div class="value">
+										{{ orderDatalist.orderInfo.mark || '-' }}
+									</div>
+								</li>
+							</ul>
+						</div>
+						<div class="section" v-if="orderDatalist.orderInfo.remark">
+							<div class="title">订单备注</div>
+							<ul class="list">
+								<li class="item">
+									<div>备注:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.remark || '-' }}
+									</div>
+								</li>
+							</ul>
+						</div>
+						<div class="section" v-if="orderDatalist.orderInfo.refuse_reason">
+							<div class="title">拒绝退款原因</div>
+							<ul class="list">
+								<li class="item">
+									<div class="value">
+										{{ orderDatalist.orderInfo.refuse_reason }}
+									</div>
+								</li>
+							</ul>
+						</div>
+						<div v-if="orderDatalist.orderInfo.invoice" class="section">
+							<div class="title">发票信息</div>
+							<ul class="list">
+								<li class="item">
+									<div>发票类型:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.invoice.type | invoiceType }}
+									</div>
+								</li>
+								<li class="item">
+									<div>抬头类型:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.invoice.header_type | invoiceHeaderType}}
+									</div>
+								</li>
+								<li class="item">
+									<div>发票抬头:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.invoice.name || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>税号:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.invoice.duty_number || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>邮箱:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.invoice.email || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>开户银行:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.invoice.bank || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>企业地址:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.invoice.address || '-' }}
+									</div>
+								</li>
+								<li class="item">
+									<div>企业电话:</div>
+									<div class="value">
+										{{ orderDatalist.orderInfo.invoice.drawer_phone || '-' }}
+									</div>
+								</li>
+							</ul>
+						</div>
+					</TabPane>
+					<TabPane label="商品信息" name="product">
+						<Table :columns="columns1" :data="orderDatalist.orderInfo.cartInfo" highlight-row>
+							<template slot-scope="{ row }" slot="product">
+								<Tooltip theme="dark" max-width="300" :delay="600">
+									<div class="product">
+										<div class="image" v-viewer>
+											<img
+												v-lazy="row.productInfo.attrInfo ? row.productInfo.attrInfo.image : row.productInfo.image">
+										</div>
+										<div class="title">
+											<div class="line2">
+												<span class="font-color-red" v-if="row.is_gift">[赠品]</span>
+												{{ row.productInfo.store_name }} |
+												{{ row.productInfo.attrInfo ? row.productInfo.attrInfo.suk : '' }}
+											</div>
+										</div>
+									</div>
+									<div slot="content">
+										<div>
+											<p class="font-color-red" v-if="row.is_gift">[赠品]</p>
+											<p>{{ row.productInfo.store_name }}</p>
+											<p>{{ row.productInfo.attrInfo ? row.productInfo.attrInfo.suk : '' }}</p>
+										</div>
+									</div>
+								</Tooltip>
+							</template>
+						</Table>
+					</TabPane>
+					<TabPane label="订单记录" name="record">
+						<Table :columns="columns2" :data="recordData" :loading="loading" no-data-text="暂无数据"
+							highlight-row no-filtered-data-text="暂无筛选结果"></Table>
+					</TabPane>
+					<TabPane label="发货记录" name="recordList" v-if="splitList.length">
+						<Table :columns="columnSplit" :data="splitList" :loading="loading" no-data-text="暂无数据"
+							highlight-row no-filtered-data-text="暂无筛选结果">
+							<template slot-scope="{ row }" slot="order_id">
+								<div>{{ row.order_id }}</div>
+								<span class="supplierName" v-if="row.supplier_name">[{{ row.supplier_name }}]</span>
+								<span class="supplierName" v-if="row.store_name">[{{ row.store_name }}]</span>
+							</template>
+							<template slot-scope="{ row }" slot="product">
+								<Tooltip theme="dark" max-width="300" :delay="600">
+									<div class="product productTime" v-for="(j,index) in row._info" :key="index">
+										<div class="image" v-viewer>
+											<img
+												v-lazy="j.cart_info.productInfo.attrInfo ? j.cart_info.productInfo.attrInfo.image : j.cart_info.productInfo.image">
+										</div>
+										<div class="title">
+											<div class="line2">
+												<span class="font-color-red" v-if="j.cart_info.is_gift">[赠品]</span>
+												{{ j.cart_info.productInfo.store_name }} |
+												{{ j.cart_info.productInfo.attrInfo ? j.cart_info.productInfo.attrInfo.suk : '' }}
+											</div>
+										</div>
+									</div>
+									<div slot="content">
+										<div v-for="(j,index) in row._info" :key="index">
+											<p class="font-color-red" v-if="j.cart_info.is_gift">[赠品]</p>
+											<p>{{ j.cart_info.productInfo.store_name }}</p>
+											<p>{{ j.cart_info.productInfo.attrInfo ? j.cart_info.productInfo.attrInfo.suk : '' }}
+											</p>
+											<p class="tabBox_pice">
+												{{ "¥" + j.cart_info.sum_price + " x " + j.cart_info.cart_num }}</p>
+										</div>
+									</div>
+								</Tooltip>
+							</template>
+							<template slot-scope="{ row }" slot="deliveryInfo">
+								<div v-if="row.add_time"><span>创建时间:</span>{{row.add_time}}</div>
+								<div v-if="row.delivery_time"><span>发货时间:</span>{{row.delivery_time}}</div>
+								<div v-if="
+                    row.delivery_type == 'express' ||
+                    row.delivery_type == 'send' ||
+                    row.delivery_type == 'fictitious'
+                  ">
+									发货方式:
+									<span v-if="row.delivery_type == 'express'">物流发货</span>
+									<span v-if="row.delivery_type == 'send'">送货</span>
+									<span v-if="row.delivery_type == 'fictitious'">虚拟发货</span>
+								</div>
+								<div v-if="row.delivery_name">
+									快递公司:{{ row.delivery_name }}
+								</div>
+								<template v-if="row.delivery_id">
+									<div v-if="row.delivery_type == 'express'" @click="openItemLogistics(row)">
+										快递单号:<span style="color: #1890ff; cursor: pointer">{{
+                        row.delivery_id
+                    }}</span>
+									</div>
+									<div v-if="row.delivery_type == 'send'">
+										快递单号:<span style="color: #1890ff;">{{
+                        row.delivery_id
+                    }}</span>
+									</div>
+								</template>
+							</template>
+							<template slot-scope="{ row, index }" slot="action">
+								<a :disabled="openErp" @click="distribution(row, 1)"
+									v-if="row._status === 2 && !row.supplier_name">分配</a>
+								<Divider type="vertical"
+									v-if="row._status === 2 && !row.supplier_name && row.store_id==0" />
+								<a :disabled="openErp" @click="edit(row, 1)" v-if="row._status === 1">编辑</a>
+								<a :disabled="openErp" @click="sendOrder(row, 1)" v-if="
+                    (row._status === 2 ||
+                      row._status === 8 ||
+                      row.status === 4) &&
+                    row.shipping_type === 1 &&
+                    (row.pinkStatus === null || row.pinkStatus === 2) &&
+                    !row.supplier_name && row.store_id==0
+                  ">发送货</a>
+								<a :disabled="openErp" @click="delivery(row, 1)"
+									v-if="row._status === 4 && !row.split.length">配送信息</a>
+								<Divider type="vertical" v-if="
+                    row._status === 4 && !row.split.length && row.supplier_name && row.store_id==0
+                  " />
+
+								<a :disabled="openErp" @click="bindWrite(row, 1)" v-if="
+                    row.shipping_type == 2 &&
+                    row.status == 0 &&
+                    row.paid == 1 &&
+                    row.refund_status === 0
+                  ">立即核销</a>
+
+								<a :disabled="openErp" @click="btnClick(row)"
+									v-if="row.supplier_name && row.status_name.status_name == '未发货'">提醒发货</a>
+								<!-- <Divider type="vertical" v-if="row.supplier_name "/> -->
+								<!--     <Divider
+                        type="vertical"
+                        v-if="
+            (((row._status === 2 || row._status === 8 || row.status === 4) &&
+              row.shipping_type === 1 &&
+              (row.pinkStatus === null || row.pinkStatus === 2)) ||
+              (row.shipping_type == 2 && row.status == 0)) &&
+            row.split.length
+          "
+                />
+                <a @click="splitOrderDetail(row)" v-if="row.split.length">查看子订单</a> -->
+
+								<Divider type="vertical" v-if="
+                   row._status === 1 ||
+                    ((row._status === 2 || row.split.length) &&
+                      row.shipping_type === 1 &&
+                      (row.pinkStatus === null || row.pinkStatus === 2)) ||
+                    row._status === 4 ||
+                    (row.shipping_type == 2 &&
+                      row.status == 0 &&
+                      row.paid == 1 &&
+                      row.refund_status === 0) ||
+                    row.supplier_name&&row.supplier_name && row.status_name.status_name == '未发货'
+                  " />
+								<template>
+									<Dropdown :transfer="true" @on-click="changeMenu('', row, $event, 1)">
+										<a href="javascript:void(0)">
+											更多
+											<Icon type="ios-arrow-down"></Icon>
+										</a>
+										<DropdownMenu slot="list">
+											<DropdownItem :disabled="openErp" name="1" ref="ones" v-show="
+                          row._status === 1 &&
+                          row.paid === 0 &&
+                          row.pay_type === 'offline'
+                        ">立即支付</DropdownItem>
+											<!-- <DropdownItem name="2">订单详情</DropdownItem> -->
+											<DropdownItem :disabled="openErp" name="3">订单记录</DropdownItem>
+											<DropdownItem :disabled="openErp" name="11"
+												v-show="row._status >= 3 && row.express_dump">电子面单打印</DropdownItem>
+											<DropdownItem name="10" v-show="row._status >= 2">小票打印</DropdownItem>
+											<DropdownItem name="4" v-show="
+                          row._status !== 1 ||
+                          (row._status === 3 &&
+                            row.use_integral > 0 &&
+                            row.use_integral >= row.back_integral)
+                        ">订单备注</DropdownItem>
+											<DropdownItem :disabled="openErp" name="5" v-show="
+                          row.refund_type != 2 &&
+                          row.refund_type != 4 &&
+                          row.refund_type != 6 &&
+                          row.paid == 1 &&
+                          row.refund_status !== 2 &&
+                          parseFloat(row.pay_price) > 0 &&
+                          (row.split == null || row.split.length == 0)
+                        ">立即退款</DropdownItem>
+											<DropdownItem :disabled="openErp" name="55" v-show="row.refund_type == 2">
+												同意退货</DropdownItem>
+											<DropdownItem :disabled="openErp" name="8"
+												v-show="row._status === 4 && !row.split.length">已收货</DropdownItem>
+											<DropdownItem :disabled="openErp" name="9" v-if="row.is_del == 1">删除订单
+											</DropdownItem>
+										</DropdownMenu>
+									</Dropdown>
+								</template>
+							</template>
+						</Table>
+					</TabPane>
+				</Tabs>
+			</div>
+		</Drawer>
+		<Modal v-model="modal2" scrollable title="物流查询" width="350" class="order_box2">
+			<div class="logistics acea-row row-top">
+				<div class="logistics_img">
+					<img src="../../../../assets/images/expressi.jpg" />
+				</div>
+				<div class="logistics_cent">
+					<span>物流公司:{{logisticsChecked.delivery_name}}</span>
+					<span>物流单号:{{logisticsChecked.delivery_id}}</span>
+				</div>
+			</div>
+			<div class="acea-row row-column-around trees-coadd">
+				<div class="scollhide">
+					<Timeline>
+						<TimelineItem v-for="(item, i) in result" :key="i">
+							<p class="time" v-text="item.time"></p>
+							<p class="content" v-text="item.status"></p>
+						</TimelineItem>
+					</Timeline>
+				</div>
+			</div>
+		</Modal>
+	</div>
+	<!-- <div  v-if="orderDatalist">
+        <Modal v-model="modals"  scrollable title="订单信息" width="1000" class="order_box" footer-hide :z-index="2">
+            <Card :bordered="false" dis-hover class="i-table-no-border">
+              <div class="ivu-description-list-title">收货信息</div>
+              <Row class="mb10">
+                <Col span="12">用户昵称:{{orderDatalist.userInfo.nickname}}</Col>
+                <Col span="12">收货人:{{orderDatalist.orderInfo.real_name}}</Col>
+              </Row>
+              <Row class="mb10">
+                <Col span="12">联系电话:{{orderDatalist.orderInfo.user_phone}}</Col>
+                <Col span="12">收货地址:{{orderDatalist.orderInfo.user_address}}</Col>
+              </Row>
+              <Divider style="margin: 20px 0 !important;"/>
+              <div class="ivu-description-list-title">订单信息</div>
+              <Row class="mb10">
+                <Col span="12">订单ID:{{orderDatalist.orderInfo.order_id}}</Col>
+                <Col span="12" class="fontColor1">订单状态:{{orderDatalist.orderInfo._status._title}}</Col>
+              </Row>
+              <Row class="mb10">
+                <Col span="12">商品总数:{{orderDatalist.orderInfo.total_num}}</Col>
+                <Col span="12">商品总价:{{orderDatalist.orderInfo.total_price}}</Col>
+              </Row>
+              <Row class="mb10">
+                <Col span="12">交付邮费:{{orderDatalist.orderInfo.pay_postage}}</Col>
+                <Col span="12">优惠券金额:{{orderDatalist.orderInfo.coupon_price}}</Col>
+              </Row>
+              <Row class="mb10">
+                <Col span="12">会员商品优惠:{{orderDatalist.orderInfo.vip_true_price||0.00}}</Col>
+                <Col span="12">积分抵扣:{{orderDatalist.orderInfo.deduction_price||0.00}}</Col>
+              </Row>
+              <Row class="mb10">
+                <Col span="12" class="mb10">实际支付:{{orderDatalist.orderInfo.pay_price}}</Col>
+                <Col span="12" class="fontColor3 mb10" v-if="parseFloat(orderDatalist.orderInfo.refund_price)">退款金额:{{parseFloat(orderDatalist.orderInfo.refund_price)}}</Col>
+                <Col span="12" class="fontColor3 mb10" v-if="parseFloat(orderDatalist.orderInfo.use_integral)">使用积分:{{parseFloat(orderDatalist.orderInfo.use_integral)}}</Col>
+                <Col span="12" class="fontColor3 mb10" v-if="parseFloat(orderDatalist.orderInfo.back_integral)">退回积分:{{parseFloat(orderDatalist.orderInfo.back_integral)}}</Col>
+                <Col span="12" class="mb10">创建时间:{{orderDatalist.orderInfo._add_time}}</Col>
+                <Col span="12" class="mb10">支付时间:{{orderDatalist.orderInfo._pay_time}}</Col>
+                <Col span="12" class="mb10">支付方式:{{orderDatalist.orderInfo._status._payType}}</Col>
+                <Col span="12" class="mb10">推广人:{{orderDatalist.userInfo.spread_name+'/'+orderDatalist.userInfo.spread_uid}}</Col>
+                <Col span="12" class="mb10" v-if="orderDatalist.orderInfo.shipping_type === 2 && orderDatalist.orderInfo.refund_status === 0 && orderDatalist.orderInfo.paid === 1">门店名称:{{orderDatalist.orderInfo._store_name}}</Col>
+                <Col span="12" class="mb10" v-if="orderDatalist.orderInfo.shipping_type === 2 && orderDatalist.orderInfo.refund_status === 0 && orderDatalist.orderInfo.paid === 1">核销码:{{orderDatalist.orderInfo.verify_code}}</Col>
+                <Col span="12" class="mb10" v-if="orderDatalist.orderInfo.remark">商家备注:{{orderDatalist.orderInfo.remark}}</Col>
+                <Col span="12" class="mb10" v-if="orderDatalist.orderInfo.fictitious_content">虚拟发货备注:{{orderDatalist.orderInfo.fictitious_content}}</Col>
+              </Row>
+              <div v-if="orderDatalist.orderInfo.delivery_type==='express'">
+                <Divider style="margin: 20px 0 !important;"/>
+                <div class="ivu-description-list-title">物流信息</div>
+                <Row class="mb10">
+                  <Col span="12">快递公司:{{orderDatalist.orderInfo.delivery_name}}</Col>
+                  <Col span="12">快递单号:{{orderDatalist.orderInfo.delivery_id}} <Button type="info" size="small" @click="openLogistics">物流查询</Button></Col>
+                </Row>
+              </div>
+              <div v-if="orderDatalist.orderInfo.delivery_type==='send'">
+                <Divider style="margin: 20px 0 !important;"/>
+                <div class="ivu-description-list-title">配送信息</div>
+                <Row class="mb10">
+                  <Col span="12">送货人姓名:{{orderDatalist.orderInfo.delivery_name}}</Col>
+                  <Col span="12">送货人电话:{{orderDatalist.orderInfo.delivery_id}}</Col>
+                </Row>
+              </div>
+              <div v-if="orderDatalist.orderInfo.mark">
+                <Divider style="margin: 20px 0 !important;" v-if="orderDatalist.orderInfo.mark"/>
+                <div class="ivu-description-list-title" v-if="orderDatalist.orderInfo.mark">备注信息</div>
+                <Row class="mb10">
+                  <Col span="12" class="fontColor2">{{orderDatalist.orderInfo.mark}}</Col>
+                </Row>
+              </div>
+              <div v-if="orderDatalist.orderInfo.refund_reason_wap">
+                  <Divider style="margin: 20px 0 !important;"/>
+                  <div class="ivu-description-list-title">退款信息</div>
+                  <Row class="mb10">
+                      <Col span="12">退款原因:{{orderDatalist.orderInfo.refund_reason_wap}}</Col>
+                      <Col span="12">退款状态:{{orderDatalist.orderInfo.refund_status===1?'申请退款中':orderDatalist.orderInfo.refund_status===2?'已退款':'拒绝退款'}}</Col>
+                  </Row>
+				  <Row class="mb10">
+				      <Col span="24">备注说明:{{orderDatalist.orderInfo.refund_reason_wap_explain}}</Col>
+				  </Row>
+                  <Row class="mb10">
+                      <Col span="12" v-if="orderDatalist.orderInfo.refund_reason_wap_img.length">退款凭证:
+                          <viewer class="tabBoxPic" v-for="item in orderDatalist.orderInfo.refund_reason_wap_img" :key="item">
+                              <div class="tabBox_img">
+                                  <img v-lazy="item">
+                              </div>
+                          </viewer>
+                      </Col>
+                      <Col span="12" v-if="orderDatalist.orderInfo.refund_type !=1 && orderDatalist.orderInfo.refund_type !=2 && orderDatalist.orderInfo.refund_type !=4 && orderDatalist.orderInfo.refund_type !=5 && orderDatalist.orderInfo.refund_reason">不退款原因:{{orderDatalist.orderInfo.refund_reason}}</Col>
+                  </Row>
+              </div>
+            </Card>
+            <Card :bordered="false" dis-hover class="i-table-no-border">
+                <DescriptionList title="收货信息" :col="2">
+                    <Description term="用户昵称:">{{orderDatalist.userInfo.nickname}}</Description>
+                    <Description term="收货人:">{{ orderDatalist.orderInfo.real_name }}</Description>
+                    <Description term="联系电话:">{{ orderDatalist.orderInfo.user_phone }}</Description>
+                    <Description term="收货地址:">{{ orderDatalist.orderInfo.user_address }}</Description>
+                </DescriptionList>
+                <Divider style="margin: 20px 0 !important;"/>
+                <DescriptionList title="订单信息" :col="2">
+                    <Description term="订单ID:">{{orderDatalist.orderInfo.order_id}}</Description>
+                    <Description term="订单状态:" class="fontColor1">{{orderDatalist.orderInfo._status._title}}</Description>
+                    <Description term="商品总数:">{{orderDatalist.orderInfo.total_num}}</Description>
+                    <Description term="商品总价:">{{orderDatalist.orderInfo.total_price}}</Description>
+                    <Description term="交付邮费:">{{orderDatalist.orderInfo.pay_postage}}</Description>
+                    <Description term="优惠券金额:">{{orderDatalist.orderInfo.coupon_price}}</Description>
+                    <Description term="实际支付:">{{orderDatalist.orderInfo.pay_price}}</Description>
+                    <Description term="退款金额:" class="fontColor3" v-if="parseFloat(orderDatalist.orderInfo.refund_price)">{{parseFloat(orderDatalist.orderInfo.refund_price)}}</Description>
+                    <Description term="使用积分:" class="fontColor3" v-if="parseFloat(orderDatalist.orderInfo.use_integral)">{{parseFloat(orderDatalist.orderInfo.use_integral)}}</Description>
+                    <Description term="退回积分:" class="fontColor3" v-if="parseFloat(orderDatalist.orderInfo.back_integral)">{{parseFloat(orderDatalist.orderInfo.back_integral)}}</Description>
+                    <Description term="创建时间:">{{orderDatalist.orderInfo._add_time}}</Description>
+                    <Description term="支付方式:">{{orderDatalist.orderInfo._status._payType}}</Description>
+                    <Description term="推广人:">{{orderDatalist.userInfo.spread_name+'/'+orderDatalist.userInfo.spread_uid}}</Description>
+                    <Description term="门店名称:" v-if="orderDatalist.orderInfo.shipping_type === 2 && orderDatalist.orderInfo.refund_status === 0 && orderDatalist.orderInfo.paid === 1">{{orderDatalist.orderInfo._store_name}}</Description>
+                    <Description term="核销码:" v-if="orderDatalist.orderInfo.shipping_type === 2 && orderDatalist.orderInfo.refund_status === 0 && orderDatalist.orderInfo.paid === 1">{{orderDatalist.orderInfo.verify_code}}</Description>
+                    <Description term="商家备注:">{{orderDatalist.orderInfo.remark}}</Description>
+                </DescriptionList>
+                <Divider v-if="orderDatalist.orderInfo.refund_status != 0" style="margin: 20px 0 !important;"/>
+                <DescriptionList title="订单退款信息" v-if="orderDatalist.orderInfo.refund_status != 0" :col="2">
+                    <Description term="退款原因:">{{orderDatalist.orderInfo.refund_reason_wap}}</Description>
+                    <Description term="退款备注:">{{orderDatalist.orderInfo.refund_reason_wap_explain || '无'}}</Description>
+                    <Description :col="1" term="退款凭证" v-if="orderDatalist.orderInfo.refund_reason_wap_img.length">
+                        <viewer v-for="item in orderDatalist.orderInfo.refund_reason_wap_img" :key="item">
+                            <div class="tabBox_img">
+                                <img v-lazy="item">
+                            </div>
+                        </viewer>
+                    </Description>
+                </DescriptionList>
+                <Divider style="margin: 20px 0 !important;"/>
+                <DescriptionList title="物流信息" :col="2" v-if="orderDatalist.orderInfo.delivery_type==='express'">
+                    <Description term="快递公司:">{{orderDatalist.orderInfo.delivery_name}}</Description>
+                    <Description term="快递单号:">{{orderDatalist.orderInfo.delivery_id}} <Button type="info" size="small" @click="openLogistics">物流查询</Button></Description>
+                </DescriptionList>
+                <DescriptionList title="配送信息" :col="2" v-if="orderDatalist.orderInfo.delivery_type==='send'">
+                    <Description term="送货人姓名:">{{orderDatalist.orderInfo.delivery_name}}</Description>
+                    <Description term="送货人电话:">{{orderDatalist.orderInfo.delivery_id}}</Description>
+                </DescriptionList>
+                <Divider style="margin: 20px 0 !important;" v-if="orderDatalist.orderInfo.mark"/>
+                <DescriptionList title="备注信息" :col="2" v-if="orderDatalist.orderInfo.mark">
+                    <Description class="fontColor2">{{orderDatalist.orderInfo.mark}}</Description>
+                </DescriptionList>
+            </Card>
+        </Modal>
+        <Modal v-model="modal2" scrollable title="物流查询"  width="350" class="order_box2">
+            <div class="logistics acea-row row-top">
+                <div class="logistics_img"><img src="../../../../assets/images/expressi.jpg"></div>
+                <div class="logistics_cent">
+                    <span>物流公司:{{orderDatalist.orderInfo.delivery_name}}</span>
+                    <span>物流单号:{{orderDatalist.orderInfo.delivery_id}}</span>
+                </div>
+            </div>
+            <div class="acea-row row-column-around trees-coadd">
+                <div class="scollhide">
+                    <Timeline>
+                        <TimelineItem v-for="(item,i) in result" :key="i">
+                            <p class="time" v-text="item.time"></p>
+                            <p class="content" v-text="item.status"></p>
+                        </TimelineItem>
+                    </Timeline>
+                </div>
+            </div>
+        </Modal>
+    </div> -->
+</template>
+
+<script>
+	import {
+		getExpress,
+		getOrderRecord,
+		splitOrder,
+		remindOrder,
+	} from '@/api/order'
+	import template from '../../../setting/devise/template.vue'
+	export default {
+		components: {
+			template
+		},
+		name: 'orderDetails',
+		filters: {
+			invoiceType: (value) => (value == 1 ? '电子普通发票' : '纸质专用发票'),
+			invoiceHeaderType: (value) => (value == 1 ? '个人' : '企业'),
+		},
+		data() {
+			return {
+				isShow: 0,
+				modal2: false,
+				modals: false,
+				grid: {
+					xl: 8,
+					lg: 8,
+					md: 12,
+					sm: 24,
+					xs: 24,
+				},
+				result: [],
+				columns1: [{
+						title: '商品信息',
+						slot: 'product',
+						minWidth: 400,
+					},
+					{
+						title: '售价',
+						key: 'sum_price',
+					},
+					{
+						title: '实付金额',
+						key: 'truePrice',
+					},
+					{
+						title: '数量',
+						key: 'cart_num',
+					},
+					{
+						title: '小计',
+						render: (h, params) => {
+							return h(
+								'div',
+								(params.row.truePrice * params.row.cart_num).toFixed(2)
+							)
+						},
+					},
+				],
+				columns2: [{
+						title: '订单ID',
+						key: 'oid',
+						minWidth: 40,
+					},
+					{
+						title: '操作记录',
+						key: 'change_message',
+						minWidth: 280,
+					},
+					{
+						title: '操作时间',
+						key: 'change_time',
+						minWidth: 100,
+					},
+				],
+				columnSplit: [{
+						title: '订单号',
+						slot: 'order_id',
+						minWidth: 100,
+					},
+					{
+						title: '商品信息',
+						slot: 'product',
+						minWidth: 250,
+					},
+					{
+						title: '发货信息',
+						slot: 'deliveryInfo',
+						minWidth: 100,
+					},
+					{
+						title: '操作',
+						slot: 'action',
+						minWidth: 90,
+					},
+				],
+				recordData: [],
+				activeName: 'detail',
+				orderData: {},
+				splitList: [],
+				logisticsChecked: {
+					delivery_name: '',
+					delivery_id: ''
+				}
+			}
+		},
+		props: {
+			orderDatalist: Object,
+			orderId: Number,
+			rowActive: Object,
+			formType: {
+				type: Number,
+				default: 0,
+			},
+			openErp: {
+				type: Boolean,
+				default: false,
+			},
+		},
+		watch: {
+			orderDatalist(value) {
+				this.orderData = value.orderInfo
+				this.getList(
+					!this.formType ? value.orderInfo.store_order_id : value.orderInfo.id
+				)
+				if (this.formType) {
+					this.getSplitOrder(value.orderInfo.id)
+				}
+			},
+			orderData(value) {
+				if (value && value.custom_form && value.custom_form.length) {
+					value.custom_form.forEach((item) => {
+						if (item.value) {
+							return (this.isShow = 1)
+						}
+					})
+				}
+			},
+		},
+		mounted() {
+			if (
+				this.orderData &&
+				this.orderData.custom_form &&
+				this.orderData.custom_form.length
+			) {
+				this.orderData.custom_form.forEach((item) => {
+					if (item.value) {
+						return (this.isShow = 1)
+					}
+				})
+			}
+		},
+		methods: {
+			openItemLogistics(row) {
+				this.logisticsChecked.delivery_name = row.delivery_name;
+				this.logisticsChecked.delivery_id = row.delivery_id;
+				this.modal2 = true
+				getExpress(row.id)
+					.then(async (res) => {
+						this.result = res.data.result
+					})
+					.catch((res) => {
+						this.$Message.error(res.msg)
+					})
+			},
+			openLogistics() {
+				this.logisticsChecked.delivery_name = this.orderDatalist.orderInfo.delivery_name;
+				this.logisticsChecked.delivery_id = this.orderDatalist.orderInfo.delivery_id;
+				this.modal2 = true
+				this.getOrderData()
+			},
+
+			// 提醒发货
+			btnClick(row) {
+				let data = {
+					supplier_id: row.supplier_id,
+					id: row.id,
+				}
+				remindOrder(data)
+					.then(async (res) => {
+						this.$Message.success(res.msg)
+					})
+					.catch((res) => {
+						this.$Message.error(res.msg)
+					})
+			},
+			// 获取订单物流信息
+			getOrderData() {
+				getExpress(
+						!this.formType ?
+						this.orderDatalist.orderInfo.store_order_id :
+						this.orderDatalist.orderInfo.id
+					)
+					.then(async (res) => {
+						this.result = res.data.result
+					})
+					.catch((res) => {
+						this.$Message.error(res.msg)
+					})
+			},
+			//发货记录
+			getSplitOrder(id) {
+				if (!id) {
+					return;
+				}
+				splitOrder(id, {
+						status: 2
+					})
+					.then((res) => {
+						this.splitList = res.data
+					})
+					.catch((err) => {
+						this.$Message.error(err.msg)
+					})
+			},
+			getList(id) {
+				let data = {
+					id: id,
+					datas: this.page,
+				}
+				this.loading = true
+				getOrderRecord(data)
+					.then(async (res) => {
+						this.recordData = res.data
+						this.loading = false
+					})
+					.catch((res) => {
+						this.loading = false
+						this.$Message.error(res.msg)
+					})
+			},
+			changeMenu(value, row, name, num) {
+				if (num) {
+					this.$parent.changeMenu(row, name, num)
+				} else {
+					this.$parent.changeMenu(this.rowActive, value)
+				}
+			},
+			distribution(row, num) {
+				if (num) {
+					this.$parent.distribution(row)
+				} else {
+					this.$parent.distribution(this.rowActive)
+				}
+			},
+			edit(row, num) {
+				if (num) {
+					this.$parent.edit(row)
+				} else {
+					this.$parent.edit(this.rowActive)
+				}
+			},
+			sendOrder(row, num) {
+				if (num) {
+					this.$parent.sendOrder(row, num)
+				} else {
+					this.$parent.sendOrder(this.rowActive)
+				}
+			},
+			delivery(row, num) {
+				if (num) {
+					this.$parent.delivery(row, num)
+				} else {
+					this.$parent.delivery(this.rowActive)
+				}
+			},
+			bindWrite(row, num) {
+				if (num) {
+					this.$parent.bindWrite(row)
+				} else {
+					this.$parent.bindWrite(this.rowActive)
+				}
+			},
+		},
+		computed: {},
+	}
+</script>
+<style scoped lang="stylus">
+	.order_box .head .full .ivu-btn.on {
+		color: #c5c8ce !important;
+		background-color: #f7f7f7 !important;
+		border-color: #dcdee2 !important;
+	}
+
+	.productTime~.productTime {
+		margin-top: 10px;
+	}
+
+	.product .title .line2 {
+		height: 36px;
+	}
+</style>
+<style scoped lang="stylus">
+	.supplierName {
+		margin-top: 5px;
+	}
+
+	.ivu-description-list-title {
+		margin-bottom: 16px;
+		color: #17233d;
+		font-weight: 500;
+		font-size: 14px;
+	}
+
+	.logisticsLook {
+		font-size: 13px;
+		margin-left: 10px;
+		color: #1890FF;
+		cursor: pointer;
+	}
+
+	.value {
+		word-break: break-all;
+	}
+
+	/deep/.ivu-icon-ios-more {
+		font-size: 20px;
+	}
+
+	.logistics {
+		align-items: cente;
+		padding: 10px 0px;
+
+		.logistics_img {
+			width: 45px;
+			height: 45px;
+			margin-right: 12px;
+
+			img {
+				width: 100%;
+				height: 100%;
+			}
+		}
+
+		.logistics_cent {
+			span {
+				display: block;
+				font-size: 12px;
+			}
+		}
+	}
+
+	.trees-coadd {
+		width: 100%;
+		height: 400px;
+		border-radius: 4px;
+		overflow: hidden;
+
+		.scollhide {
+			width: 100%;
+			height: 100%;
+			overflow: auto;
+			margin-left: 18px;
+			padding: 10px 0 10px 0;
+			box-sizing: border-box;
+
+			.content {
+				font-size: 12px;
+			}
+
+			.time {
+				font-size: 12px;
+				color: #2d8cf0;
+			}
+		}
+	}
+
+	.order_box2 {
+		position: absolute;
+		z-index: 999999999;
+	}
+
+	.order_box>>>.ivu-modal-header {
+		padding: 30px 16px !important;
+	}
+
+	.order_box>>>.ivu-card {
+		font-size: 12px !important;
+	}
+
+	.fontColor1>>>.ivu-description-term {
+		color: red !important;
+	}
+
+	.fontColor1>>>.ivu-description-detail {
+		color: red !important;
+		padding-bottom: 14px !important;
+	}
+
+	.fontColor2>>>.ivu-description-detail {
+		color: #733AF9 !important;
+	}
+
+	.order_box>>>.ivu-description-term {
+		padding-bottom: 10px !important;
+	}
+
+	.order_box>>>.ivu-description-detail {
+		padding-bottom: 10px !important;
+	}
+
+	.order_box>>>.ivu-modal-body {
+		padding: 0 !important;
+	}
+
+	.fontColor3>>>.ivu-description-term {
+		color: #f1a417 !important;
+	}
+
+	.fontColor3>>>.ivu-description-detail {
+		color: #f1a417 !important;
+	}
+
+	.tabBoxPic {
+		width: 50px;
+		height: 50px;
+		display: inline-block;
+		vertical-align: top;
+		margin-right: 6px;
+	}
+
+	.tabBox_img {
+		width: 100%;
+		height: 100%;
+		border-radius: 4px;
+		cursor: pointer;
+
+		img {
+			width: 100%;
+			height: 100%;
+			padding: 2px;
+		}
+	}
+
+	>>>.order_box {
+		.head {
+			padding: 30px 35px 25px;
+
+			.full {
+				display: flex;
+
+				.iconfont {
+					color: #1890FF;
+
+					&.sale-after {
+						color: #90ADD5;
+					}
+				}
+
+				.text {
+					align-self: center;
+					flex: 1;
+					min-width: 0;
+					padding-left: 12px;
+					border: 0;
+					font-size: 13px;
+					line-height: 13px;
+					color: #606266;
+
+					.title {
+						margin-bottom: 10px;
+						font-weight: 500;
+						font-size: 16px;
+						line-height: 16px;
+						color: rgba(0, 0, 0, 0.85);
+					}
+				}
+
+				.ivu-btn {
+					margin-left: 12px;
+
+					&:first-child {
+						display: inline-block;
+						border-color: #1890FF;
+						margin-left: 0;
+						background-color: #1890FF;
+						color: #FFFFFF;
+					}
+
+					&:nth-child(2) {
+						display: inline-block;
+						border-color: #19BE6B;
+						background-color: #19BE6B;
+						color: #FFFFFF;
+					}
+
+					&:nth-child(3) {
+						display: inline-block;
+					}
+
+					&:focus {
+						box-shadow: none;
+					}
+				}
+
+				.ivu-dropdown {
+					margin-left: 12px;
+
+					&:nth-child(n+5) {
+						display: inline-block;
+					}
+
+					.ivu-btn {
+						border-color: #DCDEE2;
+						background-color: #FFFFFF;
+						color: #515A6E;
+					}
+				}
+			}
+
+			.list {
+				display: flex;
+				margin-top: 20px;
+				overflow: hidden;
+				list-style: none;
+
+				.item {
+					flex: none;
+					width: 200px;
+					font-size: 14px;
+					line-height: 14px;
+					color: rgba(0, 0, 0, 0.85);
+
+					.title {
+						margin-bottom: 12px;
+						font-size: 13px;
+						line-height: 13px;
+						color: #666666;
+					}
+
+					.value1 {
+						color: #F56022;
+					}
+
+					.value2 {
+						color: #1BBE6B;
+					}
+
+					.value3 {
+						color: #1890FF;
+					}
+
+					.value4 {
+						color: #6A7B9D;
+					}
+
+					.value5 {
+						color: #F5222D;
+					}
+				}
+			}
+		}
+
+		.section {
+			padding: 25px 0;
+			border-bottom: 1px dashed #EEEEEE;
+
+			.title {
+				padding-left: 10px;
+				border-left: 3px solid #1890FF;
+				font-size: 15px;
+				line-height: 15px;
+				color: #303133;
+			}
+
+			.list {
+				display: flex;
+				flex-wrap: wrap;
+				list-style: none;
+			}
+
+			.item {
+				flex: 0 0 calc((100% / 3));
+				display: flex;
+				margin-top: 16px;
+				font-size: 13px;
+			}
+		}
+	}
+
+	color #606266 {
+		&:nth-child(3n+1) {
+			padding-right: 20px;
+		}
+
+		&:nth-child(3n+2) {
+			padding-right: 10px;
+			padding-left: 10px;
+		}
+
+		&:nth-child(3n+3) {
+			padding-left: 20px;
+		}
+	}
+
+	.value {
+		flex: 1;
+
+		.image {
+			display: inline-block;
+			width: 40px;
+			height: 40px;
+			margin: 0 12px 12px 0;
+			vertical-align: middle;
+		}
+
+		img {
+			width: 100%;
+			height: 100%;
+		}
+	}
+
+	.product {
+
+		// display flex
+		.image {
+			width: 50px;
+			height: 50px;
+			display: inline-block;
+			vertical-align: middle;
+		}
+
+		img {
+			width: 100%;
+			height: 100%;
+			border-radius: 4px;
+		}
+
+		.title {
+			width: calc(100% - 63px);
+			padding-left: 13px;
+			text-align: left;
+			display: inline-block;
+			vertical-align: middle;
+		}
+	}
+
+	>>>.ivu-tabs {
+		color: rgba(0, 0, 0, 0.85);
+
+		.ivu-tabs-bar {
+			border-bottom: 0;
+			margin-bottom: 0;
+			background-color: #F5F7FA;
+		}
+
+		.ivu-tabs-nav-container {
+			font-size: 13px;
+		}
+
+		.ivu-tabs-nav-wrap {
+			margin-bottom: 0;
+		}
+
+		.ivu-tabs-ink-bar {
+			display: none;
+		}
+
+		.ivu-tabs-tab {
+			padding: 7px 19px !important;
+			margin-right: 0;
+			line-height: 26px;
+		}
+
+		.ivu-tabs-tab-active {
+			background-color: #FFFFFF;
+			color: rgba(0, 0, 0, 0.85);
+
+			&::before {
+				content: '';
+				position: absolute;
+				top: 0;
+				left: 0;
+				width: 100%;
+				height: 2px;
+				background-color: #1890FF;
+			}
+		}
+
+		.ivu-tabs-tabpane {
+			padding: 15px;
+
+			&:first-child {
+				padding: 0 25px;
+			}
+		}
+	}
+
+	>>>.ivu-table {
+		.ivu-table-header {
+			table {
+				border-top: 0 !important;
+			}
+
+			th {
+				background-color: #F7F7F7 !important;
+			}
+		}
+	}
+</style>

+ 77 - 0
src/pages/finance/list/handle/orderRecord.vue

@@ -0,0 +1,77 @@
+<template>
+    <Modal v-model="modals"  scrollable title="订单记录" width="700" class="order_box" footer-hide>
+        <Card :bordered="false" dis-hover>
+            <Table :columns="columns" border  :data="recordData" :loading="loading" no-data-text="暂无数据"
+                   highlight-row   no-filtered-data-text="暂无筛选结果"></Table>
+            <!-- <div class="acea-row row-right page">
+                <Page :total="recordData.length" show-elevator show-total @on-change="pageChange"
+                      :page-size="page.limit"/>
+            </div> -->
+        </Card>
+    </Modal>
+</template>
+
+<script>
+    import { getOrderRecord } from '@/api/order';
+    export default {
+        name: 'orderRecord',
+        data () {
+            return {
+                modals: false,
+                loading: false,
+                recordData: [],
+                page: {
+                    page: 1, // 当前页
+                    limit: 10 // 每页显示条数
+                },
+                columns: [
+                    {
+                        title: '订单ID',
+                        key: 'oid',
+                        align: 'center',
+                        minWidth: 40
+                    },
+                    {
+                        title: '操作记录',
+                        key: 'change_message',
+                        align: 'center',
+                        minWidth: 280
+                    },
+                    {
+                        title: '操作时间',
+                        key: 'change_time',
+                        align: 'center',
+                        minWidth: 100
+                    }
+                ]
+            }
+        },
+        methods: {
+            pageChange (index) {
+                this.page.pageNum = index
+                this.getList();
+            },
+            getList (id) {
+                let data = {
+                    id: id,
+                    datas: this.page
+                }
+                this.loading = true;
+                getOrderRecord(data).then(async res => {
+                    this.recordData = res.data;
+                    this.loading = false;
+                }).catch(res => {
+                    this.loading = false;
+                    this.$Message.error(res.msg);
+                })
+            }
+        }
+    }
+</script>
+
+<style scoped lang="stylus">
+.ivu-table-wrapper
+    border-left: 1px solid #dcdee2;
+    border-top: 1px solid #dcdee2;
+ .order_box >>> .ivu-table th{background: #f8f8f9 !important;}
+</style>

+ 91 - 0
src/pages/finance/list/handle/orderRemark.vue

@@ -0,0 +1,91 @@
+<template>
+  <Modal
+    v-model="modals"
+    scrollable
+    title="备注"
+    class="order_box"
+    :closable="false"
+  >
+    <Form
+      ref="formValidate"
+      :model="formValidate"
+      :rules="ruleValidate"
+      :label-width="80"
+      @submit.native.prevent
+    >
+      <FormItem label="备注:" prop="remark">
+        <Input
+          v-model="formValidate.remark"
+          maxlength="200"
+          show-word-limit
+          type="textarea"
+          placeholder="订单备注"
+          style="width: 100%"
+        />
+      </FormItem>
+    </Form>
+    <div slot="footer">
+      <Button type="primary" @click="putRemark('formValidate')">提交</Button>
+      <Button @click="cancel('formValidate')">取消</Button>
+    </div>
+  </Modal>
+</template>
+
+<script>
+import { putRemarkData, putRefundRemarkData } from "@/api/order";
+export default {
+  name: "orderMark",
+  props: {
+    orderId: Number,
+    remarkType: {
+      default: "",
+      type: String,
+    }
+  },
+  data() {
+    return {
+      formValidate: {
+        remark: '',
+      },
+      modals: false,
+      ruleValidate: {
+        remark: [
+          { required: true, message: "请输入备注信息", trigger: "blur" },
+          // { type: 'string', min: 20, message: 'Introduce no less than 20 words', trigger: 'blur' }
+        ],
+      },
+    };
+  },
+  methods: {
+    cancel(name) {
+      this.modals = false;
+      this.$refs[name].resetFields();
+    },
+    putRemark(name) {
+      let data = {
+        id: this.orderId,
+        remark: this.formValidate,
+      };
+      this.$refs[name].validate((valid) => {
+        if (valid) {
+          (this.remarkType ? putRefundRemarkData : putRemarkData)(data)
+            .then(async (res) => {
+              this.$Message.success(res.msg);
+              this.modals = false;
+              this.$refs[name].resetFields();
+              this.$emit("submitFail");
+            })
+            .catch((res) => {
+              this.$Message.error(res.msg);
+            });
+        } else {
+          this.$Message.warning("请填写备注信息");
+        }
+      });
+    },
+  },
+};
+</script>
+
+<style scoped>
+</style>

+ 670 - 0
src/pages/finance/list/handle/orderSend.vue

@@ -0,0 +1,670 @@
+<template>
+  <Modal
+    v-model="modals"
+    scrollable
+    title="订单发送货"
+    class="order_box"
+    :closable="false"
+    width="1000"
+    @on-visible-change="changeModal"
+  >
+    <Form
+      v-if="modals"
+      ref="formItem"
+      :model="formItem"
+      :label-width="100"
+      @submit.native.prevent
+    >
+      <FormItem label="选择类型:">
+        <RadioGroup v-model="formItem.type" @on-change="changeRadio">
+          <Radio label="1" v-if="!productType">发货</Radio>
+          <Radio label="2" v-if="!productType && sheetInfo.city_delivery_status">送货</Radio>
+          <Radio label="3">无需配送</Radio>
+        </RadioGroup>
+      </FormItem>
+      <FormItem
+        v-if="formItem.type == 1"
+        v-show="export_open"
+        label="发货类型:"
+      >
+        <RadioGroup
+          v-model="formItem.express_record_type"
+          @on-change="changeExpress"
+        >
+          <Radio label="1">手动填写</Radio>
+          <Radio label="2">电子面单打印</Radio>
+        </RadioGroup>
+      </FormItem>
+      <div>
+        <FormItem label="快递公司:" required v-if="formItem.type == 1">
+          <Select
+            v-model="formItem.delivery_name"
+            filterable
+            placeholder="请选择快递公司"
+            class="input-add"
+            @on-change="expressChange"
+          >
+            <Option
+              v-for="(item, i) in express"
+              :value="item.value"
+              :key="item.value"
+              >{{ item.value }}</Option
+            >
+          </Select>
+        </FormItem>
+        <FormItem
+          v-if="formItem.express_record_type === '1' && formItem.type == 1"
+          label="快递单号:" required
+        >
+          <Input
+            v-model="formItem.delivery_id"
+            placeholder="请输入快递单号"
+             class="input-add"
+          ></Input>
+          <div class="trips" v-if="formItem.delivery_name == '顺丰速运'">
+            <p>顺丰请输入单号 :收件人或寄件人手机号后四位,</p>
+            <p>例如:SF000000000000:3941</p>
+          </div>
+        </FormItem>
+        <template
+          v-if="formItem.express_record_type === '2' && formItem.type === '1'"
+        >
+          <FormItem label="电子面单:" class="express_temp_id">
+            <Select
+              v-model="formItem.express_temp_id"
+              placeholder="请选择电子面单"
+             class="input-add"
+              @on-change="expressTempChange"
+            >
+              <Option
+                v-for="(item, i) in expressTemp"
+                :value="item.temp_id"
+                :key="i"
+                >{{ item.title }}</Option
+              >
+            </Select>
+            <Button v-if="formItem.express_temp_id" type="text" @click="preview"
+              >预览</Button
+            >
+          </FormItem>
+          <FormItem label="寄件人姓名:">
+            <Input
+              v-model="formItem.to_name"
+              placeholder="请输入寄件人姓名"
+               class="input-add"
+            ></Input>
+          </FormItem>
+          <FormItem label="寄件人电话:">
+            <Input
+              v-model="formItem.to_tel"
+              placeholder="请输入寄件人电话"
+              class="input-add"
+            ></Input>
+          </FormItem>
+          <FormItem label="寄件人地址:">
+            <Input
+              v-model="formItem.to_addr"
+              placeholder="请输入寄件人地址"
+               class="input-add"
+            ></Input>
+          </FormItem>
+        </template>
+      </div>
+      <div v-show="formItem.type === '2'">
+        <FormItem label="配送类型:">
+          <RadioGroup v-model="formItem.delivery_type" @on-change="changeDelivery">
+            <Radio label="1" v-if="sheetInfo.self_delivery_status">商家配送</Radio>
+            <Radio label="2" v-if="sheetInfo.dada_delivery_status || sheetInfo.uu_delivery_status">第三方配送</Radio>
+          </RadioGroup>
+        </FormItem>
+        <FormItem label="送货人:" required v-if="formItem.delivery_type === '1'">
+          <Select
+            v-model="formItem.sh_delivery"
+            placeholder="请选择送货人"
+             class="input-add"
+            @on-change="shDeliveryChange"
+          >
+            <Option v-for="(item, i) in deliveryList" :value="item.id" :key="i"
+              >{{ item.wx_name }}({{ item.phone }})</Option
+            >
+          </Select>
+        </FormItem>
+        <div v-if="formItem.delivery_type === '2'">
+          <FormItem label="配送平台:">
+            <RadioGroup v-model="formItem.station_type">
+              <Radio :label="1" v-if="sheetInfo.dada_delivery_status">达达</Radio>
+              <Radio :label="2" v-if="sheetInfo.uu_delivery_status">uu跑腿</Radio>
+            </RadioGroup>
+          </FormItem>
+          <FormItem label="包裹重量:" required>
+            <InputNumber :min="0" v-model="formItem.cargo_weight" class="input-add"></InputNumber><span style="margin-left: 10px;">kg</span>
+          </FormItem>
+          <FormItem label="配送备注:">
+            <Input v-model="formItem.remark" type="textarea" :autosize="{ minRows: 2, maxRows: 5 }"
+                   placeholder="配送备注" class="input-add"></Input>
+          </FormItem>
+          <FormItem label="备注:">
+            <Input v-model="formItem.mark" type="textarea" :autosize="{ minRows: 2, maxRows: 5 }"
+                   placeholder="备注" class="input-add"></Input>
+          </FormItem>
+        </div>
+      </div>
+      <div v-show="formItem.type === '3'">
+        <FormItem label="备注:" required>
+          <Input
+            v-model="formItem.fictitious_content"
+            type="textarea"
+			
+            :autosize="{ minRows: 2, maxRows: 5 }"
+            placeholder="备注"
+            class="input-add"
+          ></Input>
+        </FormItem>
+      </div>
+      <div v-if="splitOrder > 1 && formItem.type !== '3'">
+        <FormItem label="分单发货:">
+          <Switch
+            size="large"
+            v-model="splitSwitch"
+            :disabled="orderStatus === 8"
+            @on-change="changeSplitStatus"
+          >
+            <span slot="open">开启</span>
+            <span slot="close">关闭</span>
+          </Switch>
+          <div class="trips">
+            <p>
+              可选择表格中的商品单独发货,发货后会生成新的订单且不能撤回,请谨慎操作!
+            </p>
+          </div>
+          <Table
+            v-if="splitSwitch && manyFormValidate.length"
+            :data="manyFormValidate"
+            @on-selection-change="selectOne"
+            :columns="header"
+            border
+          >
+            <template slot-scope="{ row, index }" slot="image">
+              <div class="product-data">
+                <img class="image" :src="row.cart_info.productInfo.image" />
+                <div class="line2">
+                  {{ row.cart_info.productInfo.store_name }}
+                </div>
+              </div>
+            </template>
+            <template slot-scope="{ row, index }" slot="value">
+              <div>{{ row.cart_info.productInfo.attrInfo.suk }}</div>
+            </template>
+            <template slot-scope="{ row, index }" slot="sellPrice">
+              <div>
+                {{
+                  row.cart_info.productInfo.attrInfo
+                    ? row.cart_info.productInfo.attrInfo.price
+                    : row.cart_info.productInfo.price
+                }}
+              </div>
+            </template>
+            <template slot-scope="{ row, index }" slot="price">
+              <div>
+                <div>{{ row.cart_info.truePrice }}</div>
+              </div>
+            </template>
+          </Table>
+        </FormItem>
+      </div>
+    </Form>
+    <div slot="footer">
+      <Button @click="cancel">取消</Button>
+      <Button type="primary" @click="putSend" v-if="!stopSubmit">提交</Button>
+      <Button type="warning" v-else>存在售后待处理订单</Button>
+    </div>
+    <!-- <viewer @inited="inited">
+            <img :src="temp.pic" style="display:none" />
+        </viewer> -->
+    <div ref="viewer" v-viewer v-show="temp">
+      <img :src="temp.pic" class="display-add" />
+    </div>
+  </Modal>
+</template>
+
+<script>
+import { mapState } from "vuex";
+import {
+  getExpressData,
+  putDelivery,
+  splitDelivery,
+  orderExpressTemp,
+  orderDeliveryList,
+  orderSheetInfo,
+  splitCartInfo,
+} from "@/api/order";
+export default {
+  name: "orderSend",
+  props: {
+    orderId: Number,
+    status: Number,
+    pay_type: String,
+  },
+  data() {
+    return {
+	  productType:0,	
+      orderStatus: 0,
+      splitSwitch: false,
+      formItem: {
+        type: "1",
+        express_record_type: "1",
+        delivery_name: "",
+        delivery_id: "",
+        express_temp_id: "",
+        to_name: "",
+        to_tel: "",
+        to_addr: "",
+        sh_delivery: "",
+        fictitious_content: "",
+        station_type:1,
+        delivery_type:'1',
+        cargo_weight:0,
+        remark:'',
+        mark:''
+      },
+      modals: false,
+      express: [],
+      expressTemp: [],
+      deliveryList: [],
+      temp: {},
+      export_open: true,
+      manyFormValidate: [],
+      stopSubmit: false,
+      header: [
+        {
+          type: "selection",
+          width: 60,
+          align: "center",
+        },
+        {
+          title: "商品信息",
+          slot: "image",
+          width: 200,
+          align: "center",
+        },
+        {
+          title: "规格",
+          slot: "value",
+          align: "center",
+          minWidth: 120,
+        },
+        {
+          title: "商品售价",
+          slot: "sellPrice",
+          align: "center",
+          minWidth: 100,
+        },
+        {
+          title: "商品优惠价",
+          slot: "price",
+          align: "center",
+          minWidth: 100,
+        },
+        {
+          title: "总数",
+          key: "cart_num",
+          align: "center",
+          minWidth: 80,
+        },
+        {
+          title: "待发数量",
+          key: "surplus_num",
+          align: "center",
+          width: 180,
+          render: (h, params) => {
+            return h("div", [
+              h("InputNumber", {
+                props: {
+                  min: 1,
+                  max: params.row.numShow,
+                  value: params.row.surplus_num || 1,
+                },
+                on: {
+                  "on-change": (e) => {
+                    params.row.surplus_num = e || 1;
+                    this.manyFormValidate[params.index] = params.row;
+                    this.selectData.forEach((v, index) => {
+                      if (v.cart_id === params.row.cart_id) {
+                        this.selectData.splice(index, 1, params.row);
+                      }
+                    });
+                  },
+                },
+              }),
+            ]);
+          },
+        },
+      ],
+      selectData: [],
+      sheetInfo:{}
+    };
+  },
+  computed: {
+    ...mapState("admin/order", ["splitOrder"]),
+  },
+  methods: {
+    changeDelivery(e){
+      // console.log('eeeeeeeee',e);
+      // this.formItem.delivery_type = e;
+    },
+    selectOne(data) {
+      this.selectData = data;
+    },
+    changeModal(status) {
+      if (!status) this.cancel();
+    },
+    changeSplitStatus(status) {
+      if (status) {
+        splitCartInfo(this.orderId).then((res) => {
+          let data = res.data;
+          data.forEach((item) => {
+            item.numShow = item.surplus_num;
+          });
+          this.manyFormValidate = data;
+        });
+      }
+    },
+    changeRadio(o) {
+      this.$refs.formItem.resetFields();
+      switch (o) {
+        case "1":
+          this.formItem.delivery_name = "";
+          this.formItem.delivery_id = "";
+          this.formItem.express_temp_id = "";
+          this.formItem.express_record_type = "1";
+          this.expressTemp = [];
+          break;
+        case "2":
+          this.formItem.sh_delivery = "";
+          if(this.sheetInfo.self_delivery_status){
+            this.formItem.delivery_type = '1'
+          }else{
+            this.formItem.delivery_type = '2'
+          }
+          if(this.sheetInfo.dada_delivery_status){
+            this.formItem.station_type = 1
+          }else {
+            this.formItem.station_type = 2
+          }
+          break;
+        case "3":
+          this.formItem.fictitious_content = "";
+          break;
+        default:
+          break;
+      }
+    },
+    changeExpress(j) {
+      switch (j) {
+        case "2":
+          this.formItem.delivery_name = "";
+          this.formItem.express_temp_id = "";
+          this.expressTemp = [];
+          this.getList(2);
+          break;
+        case "1":
+          this.formItem.delivery_name = "";
+          this.formItem.delivery_id = "";
+          this.getList(1);
+          break;
+        default:
+          break;
+      }
+    },
+    reset() {
+      this.formItem = {
+        type: "1",
+        express_record_type: "1",
+        delivery_name: "",
+        delivery_id: "",
+        express_temp_id: "",
+        expressTemp: [],
+        to_name: "",
+        to_tel: "",
+        to_addr: "",
+        sh_delivery: "",
+        fictitious_content: "",
+        station_type:1,
+        delivery_type:'1',
+        cargo_weight:0,
+        remark:'',
+        mark:''
+      };
+    },
+    // 物流公司列表
+    getList(type) {
+      let status = type === 2 ? 1 : "";
+      getExpressData(status)
+        .then(async (res) => {
+          this.express = res.data;
+          this.getSheetInfo();
+        })
+        .catch((res) => {
+          this.loading = false;
+          this.$Message.error(res.msg);
+        });
+    },
+    // 提交
+    putSend(name) {
+      let data = {
+        id: this.orderId,
+        datas: this.formItem,
+      };
+      if (
+        this.formItem.type === "1" &&
+        this.formItem.express_record_type === "2"
+      ) {
+        if (this.formItem.delivery_name === "") {
+          return this.$Message.error("快递公司不能为空");
+        } else if (this.formItem.express_temp_id === "") {
+          return this.$Message.error("电子面单不能为空");
+        } else if (this.formItem.to_name === "") {
+          return this.$Message.error("寄件人姓名不能为空");
+        } else if (this.formItem.to_tel === "") {
+          return this.$Message.error("寄件人电话不能为空");
+        } else if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(this.formItem.to_tel)) {
+          return this.$Message.error("请输入正确的手机号码");
+        } else if (this.formItem.to_addr === "") {
+          return this.$Message.error("寄件人地址不能为空");
+        }
+      }
+      if (
+        this.formItem.type === "1" &&
+        this.formItem.express_record_type === "1"
+      ) {
+        if (this.formItem.delivery_name === "") {
+          return this.$Message.error("快递公司不能为空");
+        } else if (this.formItem.delivery_id === "") {
+          return this.$Message.error("快递单号不能为空");
+        }
+      }
+      if (this.formItem.type === "2") {
+        if (this.formItem.delivery_type === '1' && this.formItem.sh_delivery === "") {
+          return this.$Message.error("送货人不能为空");
+        }
+        if(this.formItem.delivery_type === '2' && this.formItem.cargo_weight<=0){
+          return this.$Message.error("请输入有效的重量");
+        }
+      }
+      if (this.splitSwitch) {
+        data.datas.cart_ids = [];
+        this.selectData.forEach((v) => {
+          data.datas.cart_ids.push({
+            cart_id: v.cart_id,
+            cart_num: v.surplus_num,
+          });
+        });
+        splitDelivery(data)
+          .then((res) => {
+            this.modals = false;
+            this.$Message.success(res.msg);
+            this.$emit("submitFail");
+            this.reset();
+            this.splitSwitch = false;
+          })
+          .catch((res) => {
+            this.$Message.error(res.msg);
+          });
+      } else {
+        putDelivery(data)
+          .then(async (res) => {
+            this.modals = false;
+            this.$Message.success(res.msg);
+            this.splitSwitch = false;
+            this.$emit("submitFail");
+            this.reset();
+          })
+          .catch((res) => {
+            this.$Message.error(res.msg);
+          });
+      }
+    },
+    cancel(name) {
+      this.modals = false;
+      this.orderStatus = 0;
+      this.splitSwitch = false;
+      this.selectData = [];
+      this.reset();
+    },
+    // 电子面单列表
+    expressChange(value) {
+      let expressItem = this.express.find((item) => {
+        return item.value === value;
+      });
+      if (expressItem === undefined) {
+        return;
+      }
+      this.formItem.delivery_code = expressItem.code;
+      if (this.formItem.express_record_type === "2") {
+        this.expressTemp = [];
+        this.formItem.express_temp_id = "";
+        orderExpressTemp({
+          com: this.formItem.delivery_code,
+        })
+          .then((res) => {
+            this.expressTemp = res.data;
+            if (!res.data.length) {
+              this.$Message.error("请配置你所选快递公司的电子面单");
+            }
+          })
+          .catch((err) => {
+            this.$Message.error(err.msg);
+          });
+      }
+    },
+    getCartInfo() {
+      // this.$set(this, "orderStatus", data);
+      // this.$set(this, "splitSwitch", data === 8 ? true : false);
+      // if (data === 8) {
+      splitCartInfo(this.orderId).then((res) => {
+        let data = res.data;
+        data.forEach((item) => {
+          item.numShow = item.surplus_num;
+        });
+        this.manyFormValidate = data;
+		this.productType = data[0].product_type;
+		if(this.productType==3){
+			this.formItem.type = '3'
+		    this.formItem.fictitious_content = "";
+		}
+      });
+    },
+    getDeliveryList() {
+      orderDeliveryList()
+        .then((res) => {
+          this.deliveryList = res.data.list;
+        })
+        .catch((err) => {
+          this.$Message.error(err.msg);
+        });
+    },
+    getSheetInfo() {
+      orderSheetInfo()
+        .then((res) => {
+          const data = res.data;
+          for (const key in data) {
+            if (data.hasOwnProperty(key)) {
+              this.formItem[key] = data[key];
+            }
+          }
+          this.export_open =
+            data.export_open === undefined ? true : data.export_open;
+          if (!this.export_open) {
+            this.formItem.express_record_type = "1";
+          }
+          this.formItem.to_addr = data.to_add;
+          this.sheetInfo = data;
+        })
+        .catch((err) => {
+          this.$Message.error(err.msg);
+        });
+    },
+    shDeliveryChange(value) {
+      if (!value) return;
+      let deliveryItem = this.deliveryList.find((item) => {
+        return item.id === value;
+      });
+      this.formItem.sh_delivery_name = deliveryItem.wx_name;
+      this.formItem.sh_delivery_id = deliveryItem.phone;
+      this.formItem.sh_delivery_uid = deliveryItem.uid;
+    },
+    expressTempChange(tempId) {
+      this.temp = this.expressTemp.find((item) => {
+        return tempId === item.temp_id;
+      });
+      if (this.temp === undefined) {
+        this.temp = {};
+      }
+    },
+    preview() {
+      this.$refs.viewer.$viewer.show();
+    },
+  },
+};
+</script>
+
+<style scoped>
+.input-add {
+ width: 80% !important;
+}
+.express_temp_id {
+  position: relative;
+}
+
+.express_temp_id button {
+  position: absolute;
+  top: 50%;
+  right: 110px;
+  padding: 0;
+  border: none;
+  background: none;
+  transform: translateY(-50%);
+  color: #57a3f3;
+}
+
+.ivu-btn-text:focus {
+  box-shadow: none;
+}
+.trips {
+  color: #ccc;
+}
+.product-data {
+  display: flex;
+  align-items: center;
+}
+.product-data .image {
+  width: 50px !important;
+  height: 50px !important;
+}
+.line2 {
+  display: -webkit-box;
+  -webkit-line-clamp: 2;
+  -webkit-box-orient: vertical;
+  overflow: hidden;
+}
+</style>

+ 614 - 0
src/pages/finance/list/handle/queueList.vue

@@ -0,0 +1,614 @@
+<template>
+  <Modal v-model="modal" title="任务列表" width="1000" footer-hide class-name="vertical-center-modal">
+    <Card :bordered="false" dis-hover v-if="modal">
+      <Form
+        ref="formValidate"
+        inline
+        :model="formValidate"
+        :label-width="labelWidth"
+        :label-position="labelPosition"
+        class="tabform"
+        @submit.native.prevent
+      >
+        <FormItem label="操作时间:">
+          <DatePicker
+            :editable="false"
+            @on-change="onchangeTime"
+            :value="timeVal"
+            format="yyyy/MM/dd"
+            type="datetimerange"
+            placement="bottom-start"
+            placeholder="自定义时间"
+            :options="options"
+           class="width20"
+          ></DatePicker>
+        </FormItem>
+        <FormItem label="类型:">
+          <Select
+            v-model="formValidate.type"
+            clearable
+            @on-change="typeSearchs"
+            class="width20"
+          >
+            <Option
+              v-for="item in typeList"
+              :value="item.value"
+              :key="item.value"
+              >{{ item.label }}</Option
+            >
+          </Select>
+        </FormItem>
+        <FormItem label="状态:">
+          <Select
+            v-model="formValidate.status"
+            clearable
+            @on-change="statusSearchs"
+            class="width20"
+          >
+            <Option
+              v-for="item in statusList"
+              :value="item.value"
+              :key="item.value"
+              >{{ item.label }}</Option
+            >
+          </Select>
+        </FormItem>
+      </Form>
+      <Table
+        class="mt25"
+        height="500"
+        :columns="columns1"
+        :data="data1"
+        :loading="loading"
+      >
+        <template slot-scope="{ row, index }" slot="action">
+          <template v-if="row.is_show_log">
+            <a @click="deliveryLook(row)">查看</a>
+            <Divider type="vertical" />
+          </template>
+          <template>
+            <Dropdown @on-click="changeMenu(row, $event)">
+              <a>更多<Icon type="ios-arrow-down"></Icon></a>
+              <DropdownMenu slot="list">
+                <DropdownItem name="1" v-if="[7, 8, 9, 10].includes(row.type)"
+                  >下载</DropdownItem
+                >
+                <DropdownItem name="2" v-if="row.status == 1">重新执行</DropdownItem>
+                <DropdownItem v-if="row.is_stop_button" name="3"
+                  >停止任务</DropdownItem
+                >
+                <DropdownItem name="4">清除任务</DropdownItem>
+              </DropdownMenu>
+            </Dropdown>
+          </template>
+        </template>
+      </Table>
+      <div class="acea-row row-right page">
+        <Page
+          :total="page1.total"
+          :current="page1.pageNum"
+          show-elevator
+          show-total
+          @on-change="pageChange"
+          @on-page-size-change="limitChange"
+          :page-size="page1.pageSize"
+          show-sizer
+        />
+      </div>
+    </Card>
+    <Modal v-model="modal1" width="900" footer-hide>
+      <Table
+        height="500"
+        class="mt25"
+        :columns="columns4"
+        :data="data2"
+        :loading="loading2"
+      ></Table>
+      <div class="acea-row row-right page">
+        <Page
+          :total="page2.total"
+          :current="page2.pageNum"
+          show-elevator
+          show-total
+          @on-change="pageChange2"
+          @on-page-size-change="limitChange2"
+          :page-size="page2.pageSize"
+          show-sizer
+        />
+      </div>
+    </Modal>
+    <!-- </div> -->
+  </Modal>
+</template>
+
+<script>
+import {
+  queueIndex,
+  deliveryLog,
+  queueAgain,
+  queueDel,
+  batchOrderDelivery,
+  stopWrongQueue,
+} from "@/api/order";
+import { mapState } from "vuex";
+import exportExcel from "@/utils/newToExcel.js";
+export default {
+  data() {
+    return {
+      modal: false,
+      columns1: [
+        {
+          title: "ID",
+          key: "id",
+        },
+        {
+          title: "操作时间",
+          key: "add_time",
+        },
+        {
+          title: "发货单数",
+          key: "total_num",
+        },
+        {
+          title: "成功发货单数",
+          key: "success_num",
+        },
+        {
+          title: "发货类型",
+          key: "title",
+        },
+        {
+          title: "状态",
+          key: "status_cn",
+        },
+        {
+          title: "操作",
+          slot: "action",
+          width: 150,
+          align: "center",
+        },
+      ],
+      data1: [],
+      page1: {
+        total: 0, // 总条数
+        pageNum: 1, // 当前页
+        pageSize: 10, // 每页显示条数
+      },
+      formValidate: {
+        type: "",
+        status: "",
+        data: "",
+      },
+      options: {
+        shortcuts: [
+          {
+            text: "今天",
+            value() {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(
+                new Date(
+                  new Date().getFullYear(),
+                  new Date().getMonth(),
+                  new Date().getDate()
+                )
+              );
+              return [start, end];
+            },
+          },
+          {
+            text: "昨天",
+            value() {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(
+                start.setTime(
+                  new Date(
+                    new Date().getFullYear(),
+                    new Date().getMonth(),
+                    new Date().getDate() - 1
+                  )
+                )
+              );
+              end.setTime(
+                end.setTime(
+                  new Date(
+                    new Date().getFullYear(),
+                    new Date().getMonth(),
+                    new Date().getDate() - 1
+                  )
+                )
+              );
+              return [start, end];
+            },
+          },
+          {
+            text: "最近7天",
+            value() {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(
+                start.setTime(
+                  new Date(
+                    new Date().getFullYear(),
+                    new Date().getMonth(),
+                    new Date().getDate() - 6
+                  )
+                )
+              );
+              return [start, end];
+            },
+          },
+          {
+            text: "最近30天",
+            value() {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(
+                start.setTime(
+                  new Date(
+                    new Date().getFullYear(),
+                    new Date().getMonth(),
+                    new Date().getDate() - 29
+                  )
+                )
+              );
+              return [start, end];
+            },
+          },
+          {
+            text: "本月",
+            value() {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(
+                start.setTime(
+                  new Date(new Date().getFullYear(), new Date().getMonth(), 1)
+                )
+              );
+              return [start, end];
+            },
+          },
+          {
+            text: "本年",
+            value() {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(
+                start.setTime(new Date(new Date().getFullYear(), 0, 1))
+              );
+              return [start, end];
+            },
+          },
+        ],
+      },
+      timeVal: [],
+      typeList: [
+        // {
+        //     label: '批量发放用户优惠券',
+        //     value: '1'
+        // },
+        // {
+        //     label: '批量设置用户分组',
+        //     value: '2'
+        // },
+        // {
+        //     label: '批量设置用户标签',
+        //     value: '3'
+        // },
+        // {
+        //     label: '批量下架商品',
+        //     value: '4'
+        // },
+        // {
+        //     label: '批量删除商品规格',
+        //     value: '5'
+        // },
+        {
+          label: "批量删除订单",
+          value: "6",
+        },
+        {
+          label: "批量手动发货",
+          value: "7",
+        },
+        {
+          label: "批量打印电子面单",
+          value: "8",
+        },
+        {
+          label: "批量配送",
+          value: "9",
+        },
+        {
+          label: "批量虚拟发货",
+          value: "10",
+        },
+      ],
+      statusList: [
+        {
+          label: "未处理",
+          value: "0",
+        },
+        {
+          label: "处理中",
+          value: "1",
+        },
+        {
+          label: "已完成",
+          value: "2",
+        },
+        {
+          label: "处理失败",
+          value: "3",
+        },
+      ],
+      columns2: [
+        {
+          title: "订单ID",
+          key: "order_id",
+        },
+        {
+          title: "物流公司",
+          key: "delivery_name",
+        },
+        {
+          title: "物流单号",
+          key: "delivery_id",
+        },
+        {
+          title: "处理状态",
+          key: "status_cn",
+        },
+        {
+          title: "异常原因",
+          key: "error",
+        },
+      ],
+      columns3: [
+        {
+          title: "订单ID",
+          key: "order_id",
+        },
+        {
+          title: "备注",
+          key: "fictitious_content",
+        },
+        {
+          title: "处理状态",
+          key: "status_cn",
+        },
+        {
+          title: "异常原因",
+          key: "error",
+        },
+      ],
+      columns5: [
+        {
+          title: "订单ID",
+          key: "order_id",
+        },
+        {
+          title: "配送员",
+          key: "delivery_name",
+        },
+        {
+          title: "配送员电话",
+          key: "delivery_id",
+        },
+        {
+          title: "处理状态",
+          key: "status_cn",
+        },
+        {
+          title: "异常原因",
+          key: "error",
+        },
+      ],
+      columns4: [],
+      data2: [],
+      page2: {
+        total: 0, // 总条数
+        pageNum: 1, // 当前页
+        pageSize: 12, // 每页显示条数
+      },
+      modal1: false,
+      deliveryLog: null,
+      deliveryLogId: 0,
+      deliveryLogType: "",
+      loading: false,
+      loading2: false,
+    };
+  },
+  computed: {
+    ...mapState("admin/layout", ["isMobile"]),
+    labelWidth() {
+      return this.isMobile ? undefined : 96;
+    },
+    labelPosition() {
+      return this.isMobile ? "top" : "right";
+    },
+  },
+  created() {
+    this.getQueue();
+  },
+  methods: {
+    getQueue() {
+      let data = {
+        page: this.page1.pageNum,
+        limit: this.page1.pageSize,
+      };
+      if (this.formValidate.status) {
+        data.status = this.formValidate.status;
+      }
+      if (this.formValidate.type) {
+        data.type = this.formValidate.type;
+      }
+      if (this.formValidate.data) {
+        data.data = this.formValidate.data;
+      }
+      this.loading = true;
+      queueIndex(data)
+        .then((res) => {
+          this.loading = false;
+          this.data1 = res.data.list;
+          this.page1.total = res.data.count;
+        })
+        .catch((err) => {
+          this.loading = false;
+        });
+    },
+    pageChange(index) {
+      this.page1.pageNum = index;
+      this.getQueue();
+    },
+    // 查看-分页
+    pageChange2(index) {
+      this.page2.pageNum = index;
+      this.getDeliveryLog();
+    },
+    limitChange(limit) {
+      this.page1.pageSize = limit;
+      this.getQueue();
+    },
+    limitChange2(limit) {
+      this.page2.pageSize = limit;
+      this.getDeliveryLog();
+    },
+    // 搜索-操作时间
+    onchangeTime(time) {
+      this.timeVal = time;
+      this.formValidate.data = this.timeVal[0] ? this.timeVal.join("-") : "";
+      this.page1.pageNum = 1;
+      this.getQueue();
+    },
+    // 搜索-类型
+    typeSearchs() {
+      this.page1.pageNum = 1;
+      this.getQueue();
+    },
+    // 搜索-状态
+    statusSearchs() {
+      this.page1.pageNum = 1;
+      this.getQueue();
+    },
+    // 查看-获取数据
+    getDeliveryLog() {
+      this.loading2 = true;
+      deliveryLog(this.deliveryLogId, this.deliveryLogType, {
+        page: this.page2.pageNum,
+        limit: this.page2.pageSize,
+      })
+        .then((res) => {
+          this.loading2 = false;
+          this.data2 = res.data.list;
+          this.page2.total = res.data.count;
+        })
+        .catch((err) => {
+          this.loading2 = false;
+        });
+    },
+    // 查看
+    deliveryLook(row) {
+      this.modal1 = true;
+      this.deliveryLogId = row.id;
+      this.deliveryLogType = row.cache_type;
+      this.deliveryLog = row;
+      switch (row.type) {
+        case 7:
+        case 8:
+          this.columns4 = this.columns2;
+          break;
+        case 9:
+          this.columns4 = this.columns5;
+          break;
+        case 10:
+          this.columns4 = this.columns3;
+          break;
+      }
+      this.getDeliveryLog();
+    },
+    // 更多
+    changeMenu(row, $event) {
+      switch ($event) {
+        // 下载
+        case "1":
+          this.exports(row.id, row.type, row.cache_type);
+          break;
+        // 重新执行
+        case "2":
+          this.queueAgain(row.id, row.type);
+          break;
+        // 停止任务
+        case "3":
+          this.$Modal.confirm({
+            title: "谨慎操作",
+            content: "<p>确认停止该任务?</p>",
+            onOk: () => {
+              this.stopQueue(row.id);
+            },
+          });
+          break;
+        // 清除异常任务
+        case "4":
+          this.queueDel(row.id, row.type);
+          break;
+      }
+    },
+    // 数据导出;
+    async exports(id, type, cache_type) {
+      let [th, filekey, data, fileName] = [[], [], [], ""];
+      let lebData = await this.getExcelData(id, type, cache_type);
+      if (!fileName) fileName = lebData.filename;
+      if (!filekey.length) {
+        filekey = lebData.filekey;
+      }
+      if (!th.length) th = lebData.header;
+      data = lebData.export;
+      exportExcel(th, filekey, fileName, data);
+    },
+    getExcelData(id, type, cache_type) {
+      return new Promise((resolve, reject) => {
+        batchOrderDelivery(id, type, cache_type).then((res) => {
+          return resolve(res.data);
+        });
+      });
+    },
+    // 重新执行
+    queueAgain(id, type) {
+      queueAgain(id, type)
+        .then((res) => {
+          this.$Message.success(res.msg);
+          this.getQueue();
+        })
+        .catch((err) => {
+          this.$Message.error(err.msg);
+        });
+    },
+    // 清除异常任务
+    queueDel(id, type) {
+      queueDel(id, type)
+        .then((res) => {
+          this.$Message.success(res.msg);
+          this.getQueue();
+        })
+        .catch((err) => {
+          this.$Message.error(err.msg);
+        });
+    },
+    // 停止任务
+    stopQueue(id) {
+      stopWrongQueue(id)
+        .then((res) => {
+          this.$Message.success(res.msg);
+          this.getQueue();
+        })
+        .catch((err) => {
+          this.$Message.error(err.msg);
+        });
+    },
+  },
+};
+</script>
+
+<style></style>

+ 74 - 0
src/pages/finance/list/index.vue

@@ -0,0 +1,74 @@
+<template>
+<!-- 订单-订单列表 -->
+    <div>
+        <productlist-details v-if="currentTab === 'article' || 'project' || 'app'" ref="productlist" ></productlist-details>
+        <Spin size="large" fix v-if="spinShow"></Spin>
+    </div>
+</template>
+
+<script>
+    import productlistDetails from './orderlistDetails';
+    import { mapMutations } from 'vuex';
+    export default {
+        name: 'list',
+        components: {
+            productlistDetails
+        },
+        data () {
+            return {
+                spinShow: false,
+                currentTab: '',
+                data: [],
+                tablists: null
+            }
+        },
+        created () {
+            this.getOrderType('');
+            this.getOrderStatus('');
+            this.getOrderTime('');
+            this.getOrderNum('');
+            this.getfieldKey('');
+            this.onChangeTabs('');
+            this.getSupplier_id('')
+            this.getStore_id('')
+            this.getType_id('')
+
+        },
+        beforeDestroy () {
+            this.getOrderType('');
+            this.getOrderStatus('');
+            this.getOrderTime('');
+            this.getOrderNum('');
+            this.getfieldKey('');
+            this.onChangeTabs('');
+              this.getSupplier_id('')
+            this.getStore_id('')
+            this.getType_id('')
+        },
+        mounted () {
+            
+        },
+        methods: {
+            ...mapMutations('admin/order', [
+                'getOrderStatus',
+                'getOrderTime',
+                'getOrderNum',
+                'getfieldKey',
+                'onChangeTabs',
+                'getOrderType',
+                'getSupplier_id',
+                'getStore_id',
+                'getType_id'
+                // 'onChangeChart'
+            ]),
+        }
+    }
+</script>
+<style scoped lang="stylus">
+    .product_tabs >>> .ivu-tabs-bar
+      margin-bottom 0px !important
+    .product_tabs >>> .ivu-page-header-content
+      margin-bottom 0px !important
+    .product_tabs >>> .ivu-page-header-breadcrumb
+        margin-bottom 0px !important
+</style>

+ 133 - 0
src/pages/finance/list/orderlistDetails.vue

@@ -0,0 +1,133 @@
+<template>
+<!-- 订单列表 -->
+    <div>
+        <Card :bordered="false" dis-hover class="ivu-mt" :padding="0">
+            <!-- 订单列表-筛选条件 -->
+            <div class="new_card_pd">
+                <table-form :is-all="isAll" :auto-disabled="autoDisabled" :form-selection="selection" @getList="getData" @order-data="orderDatas" />
+            </div>
+        </Card>
+        <cards-data :cardLists="cardLists" v-if="cardLists.length >= 0"></cards-data>
+        <Card :bordered="false" dis-hover>
+            <!-- 订单列表-表格组件-->
+            <table-list
+                ref="table"
+                :where="orderData"
+                :is-all="isAll"
+                @on-all="onAll"
+                @auto-disabled="onAutoDisabled"
+                @order-data="onOrderData"
+                @on-changeCards="getCards"
+                @changeGetTabs="changeGetTabs"
+                @order-select="orderSelect"
+            />
+        </Card>
+    </div>
+</template>
+
+<script>
+import cardsData from '../../../components/cards/cards';
+import tableForm from './components/tableFrom';
+import tableList from './components/tableList';
+export default {
+    name: 'orderlistDetails',
+    components: {
+        tableForm,
+        tableList,
+        cardsData
+    },
+    data() {
+        return {
+            currentTab: '',
+            cardLists: [],
+            selection: [],
+            orderData: {
+                status: '',
+                data: '',
+                real_name: '',
+                field_key: 'all',
+                pay_type: ''
+            },
+            // display: 'none',
+            autoDisabled: true,
+            isAll: -1
+        };
+    },
+    methods: {
+        changeGetTabs() {
+            this.$refs.table.getTabs();
+               
+        },
+        // tab xuanxiang dezhi
+        getChangeTabs(tab) {
+          
+            this.$refs.table.getList();
+        },
+        // 列表数据
+        getData(res) {
+            if (this.$refs.table) {
+                this.$refs.table.checkBox = false;
+                this.$refs.table.getList(res);
+            }
+        },
+        // 模块数据
+        getCards(list) {
+            this.cardLists = list;
+        },
+        handleResize() {
+            this.$refs.ellipsis.forEach(item => item.init());
+        },
+        orderSelect(selection) {
+            this.selection = selection;
+        },
+        onOrderData(e) {
+            this.orderData = e;
+        },
+        orderDatas(e) {
+            this.orderData = e;
+        },
+        onAutoDisabled(e) {
+            this.autoDisabled = e ? true : false;
+        },
+        onAll (e){
+            this.isAll = e
+        }
+    },
+    mounted() {
+       
+    }
+};
+</script>
+
+<style scoped lang="stylus">
+.card_cent >>> .ivu-card-body
+    width 100%
+    height 100%
+.card_box
+    width 100%
+    height 100%
+    display flex
+    align-items: center
+    justify-content: center
+    padding: 25px
+    box-sizing: border-box
+    border-radius: 4px
+    .card_box_img
+        width 48px
+        height 48px
+        border-radius: 50%
+        overflow: hidden
+        margin-right: 20px
+        img
+            width 100%
+            height 100%
+    .card_box_txt
+        .sp1
+            display block
+            color #252631
+            font-size 24px
+        .sp2
+            display block
+            color #98A9BC
+            font-size 12px
+</style>

+ 48 - 3
src/pages/finance/userExtract/index.vue

@@ -47,7 +47,26 @@
             >
           </Select>
         </FormItem>
-
+		<FormItem label="用户ID:">
+		  <div class="acea-row row-middle">
+		    <Input
+		      placeholder="用户ID"
+		      element-id="uid"
+		      v-model="formValidate.uid"
+		       class="input-width"
+		    />
+		  </div>
+		</FormItem>
+		<FormItem label="用户手机号:">
+		<div class="acea-row row-middle">
+		    <Input
+		      placeholder="用户手机号"
+		      element-id="phone"
+		      v-model="formValidate.phone"
+		       class="input-width"
+		    />
+		  </div>
+		</FormItem>
         <FormItem label="搜索:">
           <div class="acea-row row-middle">
             <Input
@@ -347,7 +366,9 @@ export default {
         nireid: "",
         data: "",
         page: 1,
-        limit: 20,
+        limit: 20,
+		uid: "",
+		phone: ""
       },
       extractStatistics: {},
       timeVal: [],
@@ -488,7 +509,31 @@ export default {
               count: this.extractStatistics.brokerage_not,
               name: "未提现金额",
               className: "ios-cash",
-            },
+            },
+			{
+			  col: 6,
+			  count: this.extractStatistics.award_piece,
+			  name: "分红值",
+			  className: "md-add",
+			},
+			{
+			  col: 6,
+			  count: this.extractStatistics.award_piece_partner,
+			  name: "董事分红值",
+			  className: "md-brush",
+			},
+			{
+			  col: 6,
+			  count: this.extractStatistics.award_range,
+			  name: "分红额度",
+			  className: "md-attach",
+			},
+			{
+			  col: 6,
+			  count: this.extractStatistics.now_money,
+			  name: "余额",
+			  className: "ios-arrow-down",
+			},
           ];
           this.loading = false;
         })

+ 1610 - 1571
src/pages/user/list/index.vue

@@ -1,104 +1,105 @@
-<template>
-	<!-- 用户-用户列表 -->
-	<div>
-		<Card :bordered="false" dis-hover class="ivu-mt" :padding="0">
-			<div class="padding-add">
-				<!-- 筛选条件 -->
-				<Form ref="userFrom" :model="userFrom" :label-width="labelWidth" :label-position="labelPosition"
-					@submit.native.prevent>
-					<Row :gutter="24">
-						<Col span="18">
-						<Row>
-							<Col span="24">
-							<Row>
-								<Col v-bind="grid">
-								<FormItem label="用户搜索:" label-for="nickname">
-									<Input v-model="userFrom.nickname" placeholder="请输入" element-id="nickname" clearable
-										class="input-add">
-									<Select v-model="field_key" slot="prepend" style="width: 80px">
-										<Option value="all">全部</Option>
-										<Option value="uid">UID</Option>
-										<Option value="phone">手机号</Option>
-										<Option value="nickname">用户昵称</Option>
-									</Select>
-									</Input>
-								</FormItem>
-								</Col>
-							</Row>
-							</Col>
-						</Row>
-						</Col>
-						<template v-if="collapse">
-							<Col span="18">
-							<Row>
-								<Col v-bind="grid">
-								<FormItem label="用户分组:" label-for="group_id">
-									<Select v-model="userFrom.group_id" placeholder="请选择" element-id="group_id"
-										clearable class="input-add">
-										<Option value="">全部</Option>
-										<Option :value="item.id" v-for="(item, index) in groupList" :key="index">
-											{{ item.group_name }}</Option>
-									</Select>
-								</FormItem>
-								</Col>
-								<Col v-bind="grid">
-								<FormItem label="用户标签:" label-for="label_id">
-									<div class="labelInput acea-row row-between-wrapper input-add"
-										@click="openLabelList">
-										<div>
-											<div v-if="dataLabel.length">
-												<Tag closable v-for="(item, index) in dataLabel" :key="index"
-													@on-close="closeLabel(item)">{{ item.label_name }}</Tag>
-											</div>
-											<span class="span" v-else>请选择</span>
-										</div>
-										<div class="iconfont iconxiayi"></div>
-									</div>
-								</FormItem>
-								</Col>
-								<Col v-bind="grid">
-								<FormItem label="性别:" label-for="sex">
-									<Select v-model="userFrom.sex" placeholder="请选择" clearable class="input-add">
-										<Option value="">全部</Option>
-										<Option value="1">男</Option>
-										<Option value="2">女</Option>
-										<Option value="0">未知</Option>
-									</Select>
-								</FormItem>
-								</Col>
-							</Row>
-							</Col>
-							<Col span="18">
-							<Row>
-								<Col v-bind="grid">
-								<FormItem label="会员等级:" label-for="level">
-									<Select v-model="userFrom.level" placeholder="请选择" element-id="level" clearable
-										class="input-add">
-										<Option value="">全部</Option>
-										<Option :value="item.id" v-for="(item, index) in levelList" :key="index">
-											{{ item.name }}</Option>
-									</Select>
-								</FormItem>
-								</Col>
-								<!-- <Col v-bind="grid">
-								<FormItem label="付费会员:" label-for="isMember">
-									<Select v-model="userFrom.isMember" placeholder="请选择" clearable class="input-add">
-										<Option value="">全部</Option>
-										<Option value="1">是</Option>
-										<Option value="0">否</Option>
-									</Select>
-								</FormItem>
-								</Col> -->
-								<Col>
-								<FormItem label="市场等级:">
-									<Select v-model="userFrom.area_level" placeholder="请选择" clearable
-										class="input-add">
-										<Option value="0">全部</Option>
-										<Option value="1">门店</Option>
+<template>
+	<!-- 用户-用户列表 -->
+	<div>
+		<Card :bordered="false" dis-hover class="ivu-mt" :padding="0">
+			<div class="padding-add">
+				<!-- 筛选条件 -->
+				<Form ref="userFrom" :model="userFrom" :label-width="labelWidth" :label-position="labelPosition"
+					@submit.native.prevent>
+					<Row :gutter="24">
+						<Col span="18">
+						<Row>
+							<Col span="24">
+							<Row>
+								<Col v-bind="grid">
+								<FormItem label="用户搜索:" label-for="nickname">
+									<Input v-model="userFrom.nickname" placeholder="请输入" element-id="nickname" clearable
+										class="input-add">
+									<Select v-model="field_key" slot="prepend" style="width: 80px">
+										<Option value="all">全部</Option>
+										<Option value="uid">UID</Option>
+										<Option value="phone">手机号</Option>
+										<Option value="nickname">用户昵称</Option>
+									</Select>
+									</Input>
+								</FormItem>
+								</Col>
+							</Row>
+							</Col>
+						</Row>
+						</Col>
+						<template v-if="collapse">
+							<Col span="18">
+							<Row>
+								<Col v-bind="grid">
+								<FormItem label="用户分组:" label-for="group_id">
+									<Select v-model="userFrom.group_id" placeholder="请选择" element-id="group_id"
+										clearable class="input-add">
+										<Option value="">全部</Option>
+										<Option :value="item.id" v-for="(item, index) in groupList" :key="index">
+											{{ item.group_name }}
+										</Option>
+									</Select>
+								</FormItem>
+								</Col>
+								<Col v-bind="grid">
+								<FormItem label="用户标签:" label-for="label_id">
+									<div class="labelInput acea-row row-between-wrapper input-add"
+										@click="openLabelList">
+										<div>
+											<div v-if="dataLabel.length">
+												<Tag closable v-for="(item, index) in dataLabel" :key="index"
+													@on-close="closeLabel(item)">{{ item.label_name }}</Tag>
+											</div>
+											<span class="span" v-else>请选择</span>
+										</div>
+										<div class="iconfont iconxiayi"></div>
+									</div>
+								</FormItem>
+								</Col>
+								<Col v-bind="grid">
+								<FormItem label="性别:" label-for="sex">
+									<Select v-model="userFrom.sex" placeholder="请选择" clearable class="input-add">
+										<Option value="">全部</Option>
+										<Option value="1">男</Option>
+										<Option value="2">女</Option>
+										<Option value="0">未知</Option>
+									</Select>
+								</FormItem>
+								</Col>
+							</Row>
+							</Col>
+							<Col span="18">
+							<Row>
+								<Col v-bind="grid">
+								<FormItem label="会员等级:" label-for="level">
+									<Select v-model="userFrom.level" placeholder="请选择" element-id="level" clearable
+										class="input-add">
+										<Option value="">全部</Option>
+										<Option :value="item.id" v-for="(item, index) in levelList" :key="index">
+											{{ item.name }}
+										</Option>
+									</Select>
+								</FormItem>
+								</Col>
+								<!-- <Col v-bind="grid">
+								<FormItem label="付费会员:" label-for="isMember">
+									<Select v-model="userFrom.isMember" placeholder="请选择" clearable class="input-add">
+										<Option value="">全部</Option>
+										<Option value="1">是</Option>
+										<Option value="0">否</Option>
+									</Select>
+								</FormItem>
+								</Col> -->
+								<Col>
+								<FormItem label="市场等级:">
+									<Select v-model="userFrom.area_level" placeholder="请选择" clearable class="input-add">
+										<Option value="0">全部</Option>
+										<Option value="1">门店</Option>
 										<Option value="2">社区</Option>
-										<Option value="3">城市</Option>
-									</Select>
-								</FormItem>
+										<Option value="3">城市</Option>
+									</Select>
+								</FormItem>
 								</Col>
 								<Col v-bind="grid">
 								<FormItem label="身份:">
@@ -109,1480 +110,1518 @@
 										<Option value="0">普通用户</Option>
 									</Select>
 								</FormItem>
-								</Col>
-							</Row>
-							</Col>
-
-							<Col span="18">
-							<Row>
-								<Col v-bind="grid" class="dateMedia">
-								<FormItem label="访问时间:" label-for="user_time">
-									<DatePicker :editable="false" @on-change="onchangeTime" :value="timeVal"
-										format="yyyy/MM/dd" type="daterange" placement="bottom-start"
-										placeholder="自定义时间" :options="options" class="input-add"></DatePicker>
-								</FormItem>
-								</Col>
-								<Col v-bind="grid">
-								<FormItem label="访问情况:" label-for="user_time_type">
-									<Select v-model="userFrom.user_time_type" placeholder="请选择"
-										element-id="user_time_type" clearable class="input-add">
-										<Option value="all">全部</Option>
-										<Option value="visitno">时间段未访问</Option>
-										<Option value="visit">时间段访问过</Option>
-										<Option value="add_time">首次访问</Option>
-									</Select>
-								</FormItem>
-								</Col>
-								<Col v-bind="grid">
-								<FormItem label="下单次数:" label-for="pay_count">
-									<Select v-model="userFrom.pay_count" placeholder="请选择" element-id="pay_count"
-										clearable class="input-add">
-										<Option value="">全部</Option>
-										<Option value="-1">0次</Option>
-										<Option value="0">1次以上</Option>
-										<Option value="1">2次以上</Option>
-										<Option value="2">3次以上</Option>
-										<Option value="3">4次以上</Option>
-										<Option value="4">5次以上</Option>
-									</Select>
-								</FormItem>
-								</Col>
-							</Row>
-							</Col>
-							<Col span="18">
-							<Row>
-								<Col v-bind="grid">
-								<FormItem label="国家:" label-for="country">
-									<Select v-model="userFrom.country" placeholder="请选择" element-id="country" clearable
-										@on-change="changeCountry" class="input-add">
-										<Option value="">全部</Option>
-										<Option value="domestic">中国</Option>
-										<Option value="abroad">其他</Option>
-									</Select>
-								</FormItem>
-								</Col>
-								<Col v-bind="grid" v-if="userFrom.country === 'domestic'">
-								<FormItem label="省份:">
-									<Cascader :data="addresData" :value="address" v-model="address"
-										@on-change="handleChange" class="input-add"></Cascader>
-								</FormItem>
-								</Col>
-							</Row>
-							</Col>
-
-						</template>
-						<Col span="6" class="ivu-text-right userFrom">
-						<FormItem>
-							<Button type="primary" label="default" class="mr15" @click="userSearchs">搜索</Button>
-							<Button class="ResetSearch" @click="reset('userFrom')">重置</Button>
-							<a v-font="14" class="ivu-ml-8" @click="collapse = !collapse">
-								<template v-if="!collapse">
-									展开
-									<Icon type="ios-arrow-down" />
-								</template>
-								<template v-else>
-									收起
-									<Icon type="ios-arrow-up" />
-								</template>
-							</a>
-						</FormItem>
-						</Col>
-					</Row>
-				</Form>
-			</div>
-		</Card>
-		<Card :bordered="false" dis-hover class="ivu-mt listbox">
-			<div class="new_tab">
-				<!-- Tab栏切换 -->
-				<Tabs @on-click="onClickTab">
-					<TabPane :label="item.name" :name="item.type" v-for="(item, index) in headeNum" :key="index" />
-				</Tabs>
-			</div>
-			<Row type="flex" justify="space-between">
-				<!-- 相关操作 -->
-				<Col span="24">
-				<Button v-auth="['admin-user-save']" type="primary" class="mr20" @click="save">添加用户</Button>
-				<Tooltip content="本页至少选中一项" :disabled="!!selectionList.length">
-					<Button v-auth="['admin-user-coupon']" type="primary" class="mr20" :disabled="!selectionList.length"
-						@click="onSend">发送优惠券</Button>
-				</Tooltip>
-				<Button v-auth="['admin-wechat-news']" class="greens mr20" size="default" @click="onSendPic"
-					v-if="userFrom.user_type === 'wechat'">
-					<Icon type="md-list"></Icon>
-					发送图文消息
-				</Button>
-				<Tooltip content="本页至少选中一项" :disabled="!!selectionList.length">
-					<Button v-auth="['admin-user-group_set']" class="mr20" :disabled="!selectionList.length"
-						@click="setGroup">批量设置分组</Button>
-				</Tooltip>
-				<Tooltip content="本页至少选中一项" :disabled="!!selectionList.length">
-					<Button v-auth="['admin-user-set_label']" class="mr20" :disabled="!selectionList.length"
-						@click="setLabel">批量设置标签</Button>
-				</Tooltip>
-				<!--<Button v-auth="['admin-user-synchro']" class="mr20" @click="synchro"-->
-				<!--&gt;同步公众号用户</Button-->
-				<!--&gt;-->
-				</Col>
-				<!-- <Col span="24" class="userAlert" v-if="selectionList.length">
-                    <Alert show-icon> 已选择<i class="userI"> {{selectionList.length}} </i>项</Alert>
-                </Col> -->
-			</Row>
-			<!-- 用户列表表格 -->
-			<Table :columns="columns" :data="userLists" class="mt25" ref="table" highlight-row :loading="loading"
-				no-userFrom-text="暂无数据" no-filtered-userFrom-text="暂无筛选结果" @on-selection-change="onSelectTab"
-				@on-sort-change="sortChanged" @on-select-all="selectAll" @on-select-all-cancel="selectAll"
-				@on-select-cancel="onSelectCancel">
-				<template slot-scope="{ row, index }" slot="avatars">
-					<viewer>
-						<div class="tabBox_img">
-							<img v-lazy="row.avatar" />
-						</div>
-					</viewer>
-				</template>
-				<template slot-scope="{ row, index }" slot="nickname">
-					<div class="acea-row">
-						<Icon type="md-male" v-show="row.sex === '男'" color="#2db7f5" size="15" class="mr5" />
-						<Icon type="md-female" v-show="row.sex === '女'" color="#ed4014" size="15" class="mr5" />
-						<div v-if="row.delete_time != null" style="color:#ed4014;">
-							{{row.nickname}} (已注销)
-						</div>
-						<div v-else v-text="row.nickname"></div>
-					</div>
-					<!-- <div v-show="row.vip_name" class="vipName">{{row.vip_name}}</div> -->
-				</template>
-				<template slot-scope="{ row, index }" slot="isMember">
-					<div>{{ row.isMember ? "是" : "否" }}</div>
-				</template>
-				<template slot-scope="{ row, index }" slot="follow_list">
-					<div v-if="row.follow_list">
-						<span v-for="(item, index1) in row.follow_list" :key="index1">{{
-              item.member.name
-            }}</span>
-					</div>
-
-					<!-- <div>{{ row.isMember ? "是" : "否" }}</div> -->
-				</template>
-				<!--                <template slot-scope="{ row, index }" slot="status">-->
-				<!--                    <i-switch v-model="row.status" :value="row.status" :true-value="1" :false-value="0" @on-change="onchangeIsShow(row)" size="large">-->
-				<!--                        <span slot="open">显示</span>-->
-				<!--                        <span slot="close">隐藏</span>-->
-				<!--                    </i-switch>-->
-				<!--                </template>-->
-				<template slot-scope="{ row, index }" slot="action">
-					<span v-if="row.delete_time != null" style="color: #c5c8ce;">编辑</span>
-					<a v-else @click="edit(row)">编辑</a>
-					<Divider type="vertical" v-if="row.is_extend_info" />
-					<a @click="extendInfo(row)" v-if="row.is_extend_info">信息补充</a>
-					<Divider type="vertical" />
-					<a @click="changeMenu(row, '1')">详情</a>
-					<!-- <template>
-				    本身就没有等级
-            <Dropdown @on-click="changeMenu(row, $event, index)">
-              <a href="javascript:void(0)">
-                更多
-                <Icon type="ios-arrow-down"></Icon>
-              </a>
-              <DropdownMenu slot="list">
-              <DropdownItem name="1">用户详情</DropdownItem>
-                <DropdownItem name="2">积分余额</DropdownItem>
-                <DropdownItem name="3">赠送会员</DropdownItem>
-                <DropdownItem name="4" v-if="row.vip_name">清除等级</DropdownItem>
-                <DropdownItem name="5">设置分组</DropdownItem>
-                <DropdownItem name="6">设置标签</DropdownItem>
-                <DropdownItem name="7">修改上级推广人</DropdownItem>
-                <DropdownItem name="8" v-if="row.spread_uid"
-                  >清除上级推广人</DropdownItem
-                >
-              </DropdownMenu>
-            </Dropdown>
-          </template> -->
-				</template>
-			</Table>
-			<div class="acea-row row-right page">
-				<Page :total="total" :current="userFrom.page" show-elevator show-total @on-change="pageChange"
-					:page-size="userFrom.limit" />
-			</div>
-		</Card>
-		<!-- 用户标签 -->
-		<Modal v-model="labelListShow" scrollable title="请选择用户标签" :closable="false" width="320" :footer-hide="true"
-			:mask-closable="false">
-			<labelList ref="labelList" @activeData="activeData" @close="labelListClose"></labelList>
-		</Modal>
-		<!-- 编辑表单 积分余额-->
-		<edit-from ref="edits" :FromData="FromData" :userEdit="1" @submitFail="submitFail"></edit-from>
-		<!-- 发送优惠券-->
-		<send-from ref="sends" :is-all="isAll" :where="userFrom" :userIds="user_ids"></send-from>
-		<!-- 会员详情-->
-		<user-details ref="userDetails" :group-list="groupList"></user-details>
-		<!--发送图文消息 -->
-		<Modal v-model="modal13" scrollable title="发送消息" width="1200" height="800" footer-hide class="modelBox">
-			<news-category v-if="modal13" :isShowSend="isShowSend" :userIds="user_ids" :scrollerHeight="scrollerHeight"
-				:contentTop="contentTop" :contentWidth="contentWidth" :maxCols="maxCols"></news-category>
-		</Modal>
-		<!--修改推广人-->
-		<Modal v-model="promoterShow" scrollable title="修改推广人" class="order_box" :closable="false">
-			<Form ref="formInline" :model="formInline" :label-width="100" @submit.native.prevent>
-				<FormItem label="用户头像:" prop="image">
-					<div class="picBox" @click="customer">
-						<div class="pictrue" v-if="formInline.image">
-							<img v-lazy="formInline.image" />
-						</div>
-						<div class="upLoad acea-row row-center-wrapper" v-else>
-							<Icon type="ios-camera-outline" size="26" />
-						</div>
-					</div>
-				</FormItem>
-			</Form>
-			<div slot="footer">
-				<Button type="primary" @click="putSend('formInline')">提交</Button>
-				<Button @click="cancel('formInline')">取消</Button>
-			</div>
-		</Modal>
-		<Modal v-model="customerShow" scrollable title="请选择商城用户" :closable="false" width="50%">
-			<customerInfo v-if="customerShow" @imageObject="imageObject"></customerInfo>
-		</Modal>
-		<Modal v-model="labelShow" scrollable title="请选择用户标签" :closable="false" width="320" :footer-hide="true">
-			<userLabel :uid="labelActive.uid" @close="labelClose"></userLabel>
-		</Modal>
-	</div>
-</template>
-
-<script>
-	import userLabel from "../../../components/userLabel";
-	import labelList from "@/components/labelList";
-	import {
-		mapState
-	} from "vuex";
-	import expandRow from "./tableExpand.vue";
-	import {
-		userList,
-		getUserData,
-		isShowApi,
-		editOtherApi,
-		giveLevelApi,
-		userSetGroup,
-		userGroupApi,
-		levelListApi,
-		userSetLabelApi,
-		userLabelApi,
-		userSynchro,
-		getUserSaveForm,
-		giveLevelTimeApi,
-		extendInfo
-	} from "@/api/user";
-	import {
-		agentSpreadApi
-	} from "@/api/agent";
-	import editFrom from "../../../components/from/from";
-	import sendFrom from "@/components/sendCoupons/index";
-	import userDetails from "./handle/userDetails";
-	import newsCategory from "@/components/newsCategory/index";
-	import city from "@/utils/city";
-	import customerInfo from "@/components/customerInfo";
-	export default {
-		name: "user_list",
-		components: {
-			expandRow,
-			editFrom,
-			sendFrom,
-			userDetails,
-			newsCategory,
-			customerInfo,
-			userLabel,
-			labelList,
-		},
-		data() {
-			return {
-				dataLabel: [],
-				labelListShow: false,
-				labelShow: false,
-				customerShow: false,
-				promoterShow: false,
-				labelActive: {
-					uid: 0,
-				},
-				formInline: {
-					uid: 0,
-					spread_uid: 0,
-					image: "",
-				},
-				options: {
-					shortcuts: [{
-							text: "今天",
-							value() {
-								const end = new Date();
-								const start = new Date();
-								start.setTime(
-									new Date(
-										new Date().getFullYear(),
-										new Date().getMonth(),
-										new Date().getDate()
-									)
-								);
-								return [start, end];
-							},
-						},
-						{
-							text: "昨天",
-							value() {
-								const end = new Date();
-								const start = new Date();
-								start.setTime(
-									start.setTime(
-										new Date(
-											new Date().getFullYear(),
-											new Date().getMonth(),
-											new Date().getDate() - 1
-										)
-									)
-								);
-								end.setTime(
-									end.setTime(
-										new Date(
-											new Date().getFullYear(),
-											new Date().getMonth(),
-											new Date().getDate() - 1
-										)
-									)
-								);
-								return [start, end];
-							},
-						},
-						{
-							text: "最近7天",
-							value() {
-								const end = new Date();
-								const start = new Date();
-								start.setTime(
-									start.setTime(
-										new Date(
-											new Date().getFullYear(),
-											new Date().getMonth(),
-											new Date().getDate() - 6
-										)
-									)
-								);
-								return [start, end];
-							},
-						},
-						{
-							text: "最近30天",
-							value() {
-								const end = new Date();
-								const start = new Date();
-								start.setTime(
-									start.setTime(
-										new Date(
-											new Date().getFullYear(),
-											new Date().getMonth(),
-											new Date().getDate() - 29
-										)
-									)
-								);
-								return [start, end];
-							},
-						},
-						{
-							text: "本月",
-							value() {
-								const end = new Date();
-								const start = new Date();
-								start.setTime(
-									start.setTime(
-										new Date(new Date().getFullYear(), new Date().getMonth(), 1)
-									)
-								);
-								return [start, end];
-							},
-						},
-						{
-							text: "本年",
-							value() {
-								const end = new Date();
-								const start = new Date();
-								start.setTime(
-									start.setTime(new Date(new Date().getFullYear(), 0, 1))
-								);
-								return [start, end];
-							},
-						},
-					],
-				},
-				collapse: false,
-				headeNum: [{
-						type: "",
-						name: "全部"
-					},
-					{
-						type: "wechat",
-						name: "微信公众号"
-					},
-					{
-						type: "routine",
-						name: "微信小程序"
-					},
-					{ type: "h5", name: "H5" },
-					// {
-					// 	type: "pc",
-					// 	name: "PC"
-					// },
-					{
-						type: "app",
-						name: "APP"
-					},
-				],
-				address: [],
-				addresData: city,
-				isShowSend: true,
-				modal13: false,
-				maxCols: 4,
-				scrollerHeight: "600",
-				contentTop: "130",
-				contentWidth: "98%",
-				// grid: {
-				//   xl: 8,
-				//   lg: 8,
-				//   md: 12,
-				//   sm: 24,
-				//   xs: 24,
-				// },
-				grid2: {
-					xl: 18,
-					lg: 16,
-					md: 12,
-					sm: 24,
-					xs: 24,
-				},
-				loading: false,
-				total: 0,
-				userFrom: {
-					label_id: "",
-					user_type: "",
-					status: "",
-					sex: "",
-					is_promoter: "",
-					country: "",
-					isMember: "",
-					pay_count: "",
-					user_time_type: "",
-					user_time: "",
-					nickname: "",
-					province: "",
-					city: "",
-					page: 1,
-					limit: 15,
-					level: "",
-					group_id: "",
-					field_key: "",
-				},
-				field_key: "",
-				level: "",
-				group_id: "",
-				label_id: "",
-				user_time_type: "",
-				pay_count: "",
-				columns: [{
-						type: "expand",
-						width: 40,
-						render: (h, params) => {
-							return h(expandRow, {
-								props: {
-									row: params.row,
-								},
-							});
-						},
-					},
-					// {
-					//     type: 'selection',
-					//     width: 60,
-					//     align: 'center'
-					// },
-					{
-						width: 60,
-						align: "center",
-						renderHeader: (h, params) => {
-							return h(
-								"div", {
-									class: {
-										"select-panel": true,
-									},
-									on: {
-										mouseenter: (e) => {
-											this.display = "block";
-										},
-										mouseleave: (e) => {
-											this.display = "none";
-										},
-									},
-								},
-								[
-									h("Checkbox", {
-										props: {
-											value: this.checkBox,
-										},
-										on: {
-											"on-change": (e) => {
-												this.checkBox = e;
-												this.$refs.table.selectAll(this.checkBox);
-												this.isAll = e ? 0 : -1;
-											},
-										},
-									}),
-									h(
-										"div", {
-											style: {
-												position: "absolute",
-												top: 0,
-												zIndex: 2,
-												display: this.display,
-												width: "80px",
-												// height: "100%",
-												padding: "5px",
-												borderRadius: "4px",
-												backgroundColor: "#fff",
-												boxShadow: "0 0px 5px rgba(0, 0, 0, 0.2)",
-												transform: "translateX(25%)",
-											},
-										},
-										[
-											h(
-												"div", {
-													class: {
-														"select-item": true,
-														on: this.isAll === 0,
-													},
-													style: {
-														padding: "1px 6px",
-														cursor: "pointer",
-														height: "50%",
-													},
-													on: {
-														click: (e) => {
-															if (this.isAll === 0) {
-																this.isAll = -1;
-																this.checkBox = false;
-																this.$refs.table.selectAll(this.checkBox);
-															} else {
-																this.isAll = 0;
-																if (!this.selectionList.length) {
-																	this.checkBox = true;
-																	this.$refs.table.selectAll(this
-																		.checkBox);
-																}
-															}
-															this.display = "none";
-														},
-													},
-												}
-												// "选择当页"
-											),
-											h(
-												"div", {
-													class: {
-														"select-item": true,
-														on: this.isAll === 1,
-													},
-													style: {
-														padding: "4px",
-														cursor: "pointer",
-														// height: "50%",
-													},
-													on: {
-														click: (e) => {
-															if (this.isAll === 1) {
-																this.isAll = -1;
-																this.checkBox = false;
-															} else {
-																this.isAll = 1;
-																this.checkBox = true;
-															}
-															this.$refs.table.selectAll(this.checkBox);
-															this.display = "none";
-														},
-													},
-												},
-												"选择全部"
-											),
-										]
-									),
-								]
-							);
-						},
-						render: (h, params) => {
-							return h("Checkbox", {
-								props: {
-									value: params.row.checkBox,
-								},
-								on: {
-									"on-change": (e) => {
-										if (e) {
-											this.selectionList.push(params.row);
-										} else {
-											this.checkBox = false;
-											this.selectionList.forEach((item, index) => {
-												if (item.id === params.row.id) {
-													this.selectionList.splice(index, 1);
-												}
-											});
-										}
-										this.isAll = this.selectionList.length ? 0 : -1;
-										// this.responseData为查询出的结果数据
-										// params.row.checkBox = e;
-										params.row.checkBox = e;
-										this.userLists[params.index].checkBox = e;
-									},
-								},
-								ref: "checkbox",
-								refInFor: true,
-							});
-						},
-					},
-					{
-						title: "UID",
-						key: "uid",
-						width: 60,
-					},
-					{
-						title: "头像",
-						slot: "avatars",
-						width: 50,
-					},
-					{
-						title: "昵称",
-						slot: "nickname",
-						minWidth: 150,
-					},
-					// {
-					//   title: "付费会员",
-					//   slot: "isMember",
-					//   minWidth: 90,
-					// },
-					{
-						title: "董事",
-						key: "is_partner",
-						minWidth: 90,
-					},
-					{
-						title: "业绩",
-						key: "achievement",
-						minWidth: 90,
-					},
-					{
-						title: "分红额度",
-						key: "award_range",
-						minWidth: 90,
-					},
-					{
-						title: "分红值",
-						key: "award_piece",
-						minWidth: 90,
-					},
-					{
-						title: "董事分红值",
-						key: "award_piece_partner",
-						minWidth: 90,
+								</Col>
+							</Row>
+							</Col>
+
+							<Col span="18">
+							<Row>
+								<Col v-bind="grid" class="dateMedia">
+								<FormItem label="访问时间:" label-for="user_time">
+									<DatePicker :editable="false" @on-change="onchangeTime" :value="timeVal"
+										format="yyyy/MM/dd" type="daterange" placement="bottom-start"
+										placeholder="自定义时间" :options="options" class="input-add"></DatePicker>
+								</FormItem>
+								</Col>
+								<Col v-bind="grid">
+								<FormItem label="访问情况:" label-for="user_time_type">
+									<Select v-model="userFrom.user_time_type" placeholder="请选择"
+										element-id="user_time_type" clearable class="input-add">
+										<Option value="all">全部</Option>
+										<Option value="visitno">时间段未访问</Option>
+										<Option value="visit">时间段访问过</Option>
+										<Option value="add_time">首次访问</Option>
+									</Select>
+								</FormItem>
+								</Col>
+								<Col v-bind="grid">
+								<FormItem label="下单次数:" label-for="pay_count">
+									<Select v-model="userFrom.pay_count" placeholder="请选择" element-id="pay_count"
+										clearable class="input-add">
+										<Option value="">全部</Option>
+										<Option value="-1">0次</Option>
+										<Option value="0">1次以上</Option>
+										<Option value="1">2次以上</Option>
+										<Option value="2">3次以上</Option>
+										<Option value="3">4次以上</Option>
+										<Option value="4">5次以上</Option>
+									</Select>
+								</FormItem>
+								</Col>
+							</Row>
+							</Col>
+							<Col span="18">
+							<Row>
+								<Col v-bind="grid">
+								<FormItem label="国家:" label-for="country">
+									<Select v-model="userFrom.country" placeholder="请选择" element-id="country" clearable
+										@on-change="changeCountry" class="input-add">
+										<Option value="">全部</Option>
+										<Option value="domestic">中国</Option>
+										<Option value="abroad">其他</Option>
+									</Select>
+								</FormItem>
+								</Col>
+								<Col v-bind="grid" v-if="userFrom.country === 'domestic'">
+								<FormItem label="省份:">
+									<Cascader :data="addresData" :value="address" v-model="address"
+										@on-change="handleChange" class="input-add"></Cascader>
+								</FormItem>
+								</Col>
+							</Row>
+							</Col>
+
+						</template>
+						<Col span="6" class="ivu-text-right userFrom">
+						<FormItem>
+							<Button type="primary" label="default" class="mr15" @click="exports">导出</Button>
+							<Button type="primary" label="default" class="mr15" @click="userSearchs">搜索</Button>
+							<Button class="ResetSearch" @click="reset('userFrom')">重置</Button>
+							<a v-font="14" class="ivu-ml-8" @click="collapse = !collapse">
+								<template v-if="!collapse">
+									展开
+									<Icon type="ios-arrow-down" />
+								</template>
+								<template v-else>
+									收起
+									<Icon type="ios-arrow-up" />
+								</template>
+							</a>
+						</FormItem>
+						</Col>
+					</Row>
+				</Form>
+			</div>
+		</Card>
+		<Card :bordered="false" dis-hover class="ivu-mt listbox">
+			<div class="new_tab">
+				<!-- Tab栏切换 -->
+				<Tabs @on-click="onClickTab">
+					<TabPane :label="item.name" :name="item.type" v-for="(item, index) in headeNum" :key="index" />
+				</Tabs>
+			</div>
+			<Row type="flex" justify="space-between">
+				<!-- 相关操作 -->
+				<Col span="24">
+				<Button v-auth="['admin-user-save']" type="primary" class="mr20" @click="save">添加用户</Button>
+				<Tooltip content="本页至少选中一项" :disabled="!!selectionList.length">
+					<Button v-auth="['admin-user-coupon']" type="primary" class="mr20" :disabled="!selectionList.length"
+						@click="onSend">发送优惠券</Button>
+				</Tooltip>
+				<Button v-auth="['admin-wechat-news']" class="greens mr20" size="default" @click="onSendPic"
+					v-if="userFrom.user_type === 'wechat'">
+					<Icon type="md-list"></Icon>
+					发送图文消息
+				</Button>
+				<Tooltip content="本页至少选中一项" :disabled="!!selectionList.length">
+					<Button v-auth="['admin-user-group_set']" class="mr20" :disabled="!selectionList.length"
+						@click="setGroup">批量设置分组</Button>
+				</Tooltip>
+				<Tooltip content="本页至少选中一项" :disabled="!!selectionList.length">
+					<Button v-auth="['admin-user-set_label']" class="mr20" :disabled="!selectionList.length"
+						@click="setLabel">批量设置标签</Button>
+				</Tooltip>
+				<!--<Button v-auth="['admin-user-synchro']" class="mr20" @click="synchro"-->
+				<!--&gt;同步公众号用户</Button-->
+				<!--&gt;-->
+				</Col>
+				<!-- <Col span="24" class="userAlert" v-if="selectionList.length">
+                    <Alert show-icon> 已选择<i class="userI"> {{selectionList.length}} </i>项</Alert>
+                </Col> -->
+			</Row>
+			<!-- 用户列表表格 -->
+			<Table :columns="columns" :data="userLists" class="mt25" ref="table" highlight-row :loading="loading"
+				no-userFrom-text="暂无数据" no-filtered-userFrom-text="暂无筛选结果" @on-selection-change="onSelectTab"
+				@on-sort-change="sortChanged" @on-select-all="selectAll" @on-select-all-cancel="selectAll"
+				@on-select-cancel="onSelectCancel">
+				<template slot-scope="{ row, index }" slot="avatars">
+					<viewer>
+						<div class="tabBox_img">
+							<img v-lazy="row.avatar" />
+						</div>
+					</viewer>
+				</template>
+				<template slot-scope="{ row, index }" slot="nickname">
+					<div class="acea-row">
+						<Icon type="md-male" v-show="row.sex === '男'" color="#2db7f5" size="15" class="mr5" />
+						<Icon type="md-female" v-show="row.sex === '女'" color="#ed4014" size="15" class="mr5" />
+						<div v-if="row.delete_time != null" style="color:#ed4014;">
+							{{row.nickname}} (已注销)
+						</div>
+						<div v-else v-text="row.nickname"></div>
+					</div>
+					<!-- <div v-show="row.vip_name" class="vipName">{{row.vip_name}}</div> -->
+				</template>
+				<template slot-scope="{ row, index }" slot="isMember">
+					<div>{{ row.isMember ? "是" : "否" }}</div>
+				</template>
+				<template slot-scope="{ row, index }" slot="follow_list">
+					<div v-if="row.follow_list">
+						<span v-for="(item, index1) in row.follow_list" :key="index1">{{
+              item.member.name
+            }}</span>
+					</div>
+
+					<!-- <div>{{ row.isMember ? "是" : "否" }}</div> -->
+				</template>
+				<!--                <template slot-scope="{ row, index }" slot="status">-->
+				<!--                    <i-switch v-model="row.status" :value="row.status" :true-value="1" :false-value="0" @on-change="onchangeIsShow(row)" size="large">-->
+				<!--                        <span slot="open">显示</span>-->
+				<!--                        <span slot="close">隐藏</span>-->
+				<!--                    </i-switch>-->
+				<!--                </template>-->
+				<template slot-scope="{ row, index }" slot="action">
+					<span v-if="row.delete_time != null" style="color: #c5c8ce;">编辑</span>
+					<a v-else @click="edit(row)">编辑</a>
+					<Divider type="vertical" v-if="row.is_extend_info" />
+					<a @click="extendInfo(row)" v-if="row.is_extend_info">信息补充</a>
+					<Divider type="vertical" />
+					<a @click="changeMenu(row, '1')">详情</a>
+					<!-- <template>
+				    本身就没有等级
+            <Dropdown @on-click="changeMenu(row, $event, index)">
+              <a href="javascript:void(0)">
+                更多
+                <Icon type="ios-arrow-down"></Icon>
+              </a>
+              <DropdownMenu slot="list">
+              <DropdownItem name="1">用户详情</DropdownItem>
+                <DropdownItem name="2">积分余额</DropdownItem>
+                <DropdownItem name="3">赠送会员</DropdownItem>
+                <DropdownItem name="4" v-if="row.vip_name">清除等级</DropdownItem>
+                <DropdownItem name="5">设置分组</DropdownItem>
+                <DropdownItem name="6">设置标签</DropdownItem>
+                <DropdownItem name="7">修改上级推广人</DropdownItem>
+                <DropdownItem name="8" v-if="row.spread_uid"
+                  >清除上级推广人</DropdownItem
+                >
+              </DropdownMenu>
+            </Dropdown>
+          </template> -->
+				</template>
+			</Table>
+			<div class="acea-row row-right page">
+				<Page :total="total" :current="userFrom.page" show-elevator show-total @on-change="pageChange"
+					:page-size="userFrom.limit" />
+			</div>
+		</Card>
+		<!-- 用户标签 -->
+		<Modal v-model="labelListShow" scrollable title="请选择用户标签" :closable="false" width="320" :footer-hide="true"
+			:mask-closable="false">
+			<labelList ref="labelList" @activeData="activeData" @close="labelListClose"></labelList>
+		</Modal>
+		<!-- 编辑表单 积分余额-->
+		<edit-from ref="edits" :FromData="FromData" :userEdit="1" @submitFail="submitFail"></edit-from>
+		<!-- 发送优惠券-->
+		<send-from ref="sends" :is-all="isAll" :where="userFrom" :userIds="user_ids"></send-from>
+		<!-- 会员详情-->
+		<user-details ref="userDetails" :group-list="groupList"></user-details>
+		<!--发送图文消息 -->
+		<Modal v-model="modal13" scrollable title="发送消息" width="1200" height="800" footer-hide class="modelBox">
+			<news-category v-if="modal13" :isShowSend="isShowSend" :userIds="user_ids" :scrollerHeight="scrollerHeight"
+				:contentTop="contentTop" :contentWidth="contentWidth" :maxCols="maxCols"></news-category>
+		</Modal>
+		<!--修改推广人-->
+		<Modal v-model="promoterShow" scrollable title="修改推广人" class="order_box" :closable="false">
+			<Form ref="formInline" :model="formInline" :label-width="100" @submit.native.prevent>
+				<FormItem label="用户头像:" prop="image">
+					<div class="picBox" @click="customer">
+						<div class="pictrue" v-if="formInline.image">
+							<img v-lazy="formInline.image" />
+						</div>
+						<div class="upLoad acea-row row-center-wrapper" v-else>
+							<Icon type="ios-camera-outline" size="26" />
+						</div>
+					</div>
+				</FormItem>
+			</Form>
+			<div slot="footer">
+				<Button type="primary" @click="putSend('formInline')">提交</Button>
+				<Button @click="cancel('formInline')">取消</Button>
+			</div>
+		</Modal>
+		<Modal v-model="customerShow" scrollable title="请选择商城用户" :closable="false" width="50%">
+			<customerInfo v-if="customerShow" @imageObject="imageObject"></customerInfo>
+		</Modal>
+		<Modal v-model="labelShow" scrollable title="请选择用户标签" :closable="false" width="320" :footer-hide="true">
+			<userLabel :uid="labelActive.uid" @close="labelClose"></userLabel>
+		</Modal>
+	</div>
+</template>
+
+<script>
+	import exportExcel from "@/utils/newToExcel.js";
+	import userLabel from "../../../components/userLabel";
+	import labelList from "@/components/labelList";
+	import {
+		mapState
+	} from "vuex";
+	import expandRow from "./tableExpand.vue";
+	import {
+		userListApi,
+		userList,
+		getUserData,
+		isShowApi,
+		editOtherApi,
+		giveLevelApi,
+		userSetGroup,
+		userGroupApi,
+		levelListApi,
+		userSetLabelApi,
+		userLabelApi,
+		userSynchro,
+		getUserSaveForm,
+		giveLevelTimeApi,
+		extendInfo
+	} from "@/api/user";
+	import {
+		agentSpreadApi
+	} from "@/api/agent";
+	import editFrom from "../../../components/from/from";
+	import sendFrom from "@/components/sendCoupons/index";
+	import userDetails from "./handle/userDetails";
+	import newsCategory from "@/components/newsCategory/index";
+	import city from "@/utils/city";
+	import customerInfo from "@/components/customerInfo";
+	export default {
+		name: "user_list",
+		components: {
+			expandRow,
+			editFrom,
+			sendFrom,
+			userDetails,
+			newsCategory,
+			customerInfo,
+			userLabel,
+			labelList,
+		},
+		data() {
+			return {
+				dataLabel: [],
+				labelListShow: false,
+				labelShow: false,
+				customerShow: false,
+				promoterShow: false,
+				labelActive: {
+					uid: 0,
+				},
+				formInline: {
+					uid: 0,
+					spread_uid: 0,
+					image: "",
+				},
+				options: {
+					shortcuts: [{
+							text: "今天",
+							value() {
+								const end = new Date();
+								const start = new Date();
+								start.setTime(
+									new Date(
+										new Date().getFullYear(),
+										new Date().getMonth(),
+										new Date().getDate()
+									)
+								);
+								return [start, end];
+							},
+						},
+						{
+							text: "昨天",
+							value() {
+								const end = new Date();
+								const start = new Date();
+								start.setTime(
+									start.setTime(
+										new Date(
+											new Date().getFullYear(),
+											new Date().getMonth(),
+											new Date().getDate() - 1
+										)
+									)
+								);
+								end.setTime(
+									end.setTime(
+										new Date(
+											new Date().getFullYear(),
+											new Date().getMonth(),
+											new Date().getDate() - 1
+										)
+									)
+								);
+								return [start, end];
+							},
+						},
+						{
+							text: "最近7天",
+							value() {
+								const end = new Date();
+								const start = new Date();
+								start.setTime(
+									start.setTime(
+										new Date(
+											new Date().getFullYear(),
+											new Date().getMonth(),
+											new Date().getDate() - 6
+										)
+									)
+								);
+								return [start, end];
+							},
+						},
+						{
+							text: "最近30天",
+							value() {
+								const end = new Date();
+								const start = new Date();
+								start.setTime(
+									start.setTime(
+										new Date(
+											new Date().getFullYear(),
+											new Date().getMonth(),
+											new Date().getDate() - 29
+										)
+									)
+								);
+								return [start, end];
+							},
+						},
+						{
+							text: "本月",
+							value() {
+								const end = new Date();
+								const start = new Date();
+								start.setTime(
+									start.setTime(
+										new Date(new Date().getFullYear(), new Date().getMonth(), 1)
+									)
+								);
+								return [start, end];
+							},
+						},
+						{
+							text: "本年",
+							value() {
+								const end = new Date();
+								const start = new Date();
+								start.setTime(
+									start.setTime(new Date(new Date().getFullYear(), 0, 1))
+								);
+								return [start, end];
+							},
+						},
+					],
+				},
+				collapse: false,
+				headeNum: [{
+						type: "",
+						name: "全部"
+					},
+					{
+						type: "wechat",
+						name: "微信公众号"
+					},
+					{
+						type: "routine",
+						name: "微信小程序"
+					},
+					{
+						type: "h5",
+						name: "H5"
+					},
+					// {
+					// 	type: "pc",
+					// 	name: "PC"
+					// },
+					{
+						type: "app",
+						name: "APP"
+					},
+				],
+				address: [],
+				addresData: city,
+				isShowSend: true,
+				modal13: false,
+				maxCols: 4,
+				scrollerHeight: "600",
+				contentTop: "130",
+				contentWidth: "98%",
+				// grid: {
+				//   xl: 8,
+				//   lg: 8,
+				//   md: 12,
+				//   sm: 24,
+				//   xs: 24,
+				// },
+				grid2: {
+					xl: 18,
+					lg: 16,
+					md: 12,
+					sm: 24,
+					xs: 24,
+				},
+				loading: false,
+				total: 0,
+				userFrom: {
+					label_id: "",
+					user_type: "",
+					status: "",
+					sex: "",
+					is_promoter: "",
+					country: "",
+					isMember: "",
+					pay_count: "",
+					user_time_type: "",
+					user_time: "",
+					nickname: "",
+					province: "",
+					city: "",
+					page: 1,
+					limit: 50,
+					level: "",
+					group_id: "",
+					field_key: "",
+				},
+				field_key: "",
+				level: "",
+				group_id: "",
+				label_id: "",
+				user_time_type: "",
+				pay_count: "",
+				columns: [{
+						type: "expand",
+						width: 40,
+						render: (h, params) => {
+							return h(expandRow, {
+								props: {
+									row: params.row,
+								},
+							});
+						},
+					},
+					// {
+					//     type: 'selection',
+					//     width: 60,
+					//     align: 'center'
+					// },
+					{
+						width: 60,
+						align: "center",
+						renderHeader: (h, params) => {
+							return h(
+								"div", {
+									class: {
+										"select-panel": true,
+									},
+									on: {
+										mouseenter: (e) => {
+											this.display = "block";
+										},
+										mouseleave: (e) => {
+											this.display = "none";
+										},
+									},
+								},
+								[
+									h("Checkbox", {
+										props: {
+											value: this.checkBox,
+										},
+										on: {
+											"on-change": (e) => {
+												this.checkBox = e;
+												this.$refs.table.selectAll(this.checkBox);
+												this.isAll = e ? 0 : -1;
+											},
+										},
+									}),
+									h(
+										"div", {
+											style: {
+												position: "absolute",
+												top: 0,
+												zIndex: 2,
+												display: this.display,
+												width: "80px",
+												// height: "100%",
+												padding: "5px",
+												borderRadius: "4px",
+												backgroundColor: "#fff",
+												boxShadow: "0 0px 5px rgba(0, 0, 0, 0.2)",
+												transform: "translateX(25%)",
+											},
+										},
+										[
+											h(
+												"div", {
+													class: {
+														"select-item": true,
+														on: this.isAll === 0,
+													},
+													style: {
+														padding: "1px 6px",
+														cursor: "pointer",
+														height: "50%",
+													},
+													on: {
+														click: (e) => {
+															if (this.isAll === 0) {
+																this.isAll = -1;
+																this.checkBox = false;
+																this.$refs.table.selectAll(this.checkBox);
+															} else {
+																this.isAll = 0;
+																if (!this.selectionList.length) {
+																	this.checkBox = true;
+																	this.$refs.table.selectAll(this
+																		.checkBox);
+																}
+															}
+															this.display = "none";
+														},
+													},
+												}
+												// "选择当页"
+											),
+											h(
+												"div", {
+													class: {
+														"select-item": true,
+														on: this.isAll === 1,
+													},
+													style: {
+														padding: "4px",
+														cursor: "pointer",
+														// height: "50%",
+													},
+													on: {
+														click: (e) => {
+															if (this.isAll === 1) {
+																this.isAll = -1;
+																this.checkBox = false;
+															} else {
+																this.isAll = 1;
+																this.checkBox = true;
+															}
+															this.$refs.table.selectAll(this.checkBox);
+															this.display = "none";
+														},
+													},
+												},
+												"选择全部"
+											),
+										]
+									),
+								]
+							);
+						},
+						render: (h, params) => {
+							return h("Checkbox", {
+								props: {
+									value: params.row.checkBox,
+								},
+								on: {
+									"on-change": (e) => {
+										if (e) {
+											this.selectionList.push(params.row);
+										} else {
+											this.checkBox = false;
+											this.selectionList.forEach((item, index) => {
+												if (item.id === params.row.id) {
+													this.selectionList.splice(index, 1);
+												}
+											});
+										}
+										this.isAll = this.selectionList.length ? 0 : -1;
+										// this.responseData为查询出的结果数据
+										// params.row.checkBox = e;
+										params.row.checkBox = e;
+										this.userLists[params.index].checkBox = e;
+									},
+								},
+								ref: "checkbox",
+								refInFor: true,
+							});
+						},
+					},
+					{
+						title: "UID",
+						key: "uid",
+						width: 60,
+					},
+					{
+						title: "头像",
+						slot: "avatars",
+						width: 50,
+					},
+					{
+						title: "昵称",
+						slot: "nickname",
+						minWidth: 150,
+					},
+					// {
+					//   title: "付费会员",
+					//   slot: "isMember",
+					//   minWidth: 90,
+					// },
+					{
+						title: "董事",
+						key: "is_partner",
+						minWidth: 90,
+					},
+					{
+						title: "业绩",
+						key: "achievement",
+						minWidth: 90,
+					},
+					{
+						title: "分红额度",
+						key: "award_range",
+						minWidth: 90,
+					},
+					{
+						title: "分红值",
+						key: "award_piece",
+						minWidth: 90,
+					},
+					{
+						title: "董事分红值",
+						key: "award_piece_partner",
+						minWidth: 90,
 					},
 					{
 						title: "购物券",
 						key: "shop_ticket",
 						minWidth: 90,
-					},
-					{
-						title: "市场等级",
-						key: "area_level_name",
-						minWidth: 90,
-					},
-					{
-						title: "用户等级",
-						key: "level",
-						minWidth: 90,
-					},
-					{
-						title: "分组",
-						key: "group_id",
-						minWidth: 100,
-					},
-					{
-						title: "手机号",
-						key: "phone",
-						minWidth: 100,
-					},
-					{
-						title: "用户类型",
-						key: "user_type",
-						minWidth: 100,
-					},
-					{
-						title: "内部联系人",
-						slot: "follow_list",
-						minWidth: 100,
-					},
-					{
-						title: "余额",
-						key: "now_money",
-						sortable: "custom",
-						minWidth: 100,
-					},
-					{
-						title: "操作",
-						slot: "action",
-						fixed: "right",
-						minWidth: 120,
-					},
-				],
-				userLists: [],
-				FromData: null,
-				selectionList: [],
-				user_ids: "",
-				selectedData: [],
-				timeVal: [],
-				array_ids: [],
-				groupList: [],
-				levelList: [],
-				labelFrom: {
-					page: 1,
-					limit: "",
-				},
-				labelLists: [],
-				display: "none",
-				checkBox: false,
-				selectionCopy: [],
-				isAll: -1,
-				userId: 0,
-			};
-		},
-		watch: {
-			selectionList(value) {
-				let arr = value.map((item) => item.uid);
-				this.array_ids = arr;
-				this.user_ids = arr.join();
-			},
-			userLists: {
-				deep: true,
-				handler(value) {
-					value.forEach((item) => {
-						this.selectionList.forEach((itm) => {
-							if (itm.uid === item.uid) {
-								item.checkBox = true;
-							}
-						});
-					});
-					const arr = this.userLists.filter((item) => item.checkBox);
-					if (this.userLists.length) {
-						this.checkBox = this.userLists.length === arr.length;
-					} else {
-						this.checkBox = false;
-					}
-				},
-			},
-		},
-		computed: {
-			...mapState("admin/layout", ["isMobile"]),
-			labelWidth() {
-				return this.isMobile ? undefined : 100;
-			},
-			labelPosition() {
-				return this.isMobile ? "top" : "right";
-			},
-		},
-		created() {
-			this.getList();
-		},
-		mounted() {
-			this.userGroup();
-			this.levelLists();
-			this.groupLists();
-		},
-		methods: {
-			closeLabel(label) {
-				let index = this.dataLabel.indexOf(
-					this.dataLabel.filter((d) => d.id == label.id)[0]
-				);
-				this.dataLabel.splice(index, 1);
-			},
-			activeData(dataLabel) {
-				this.labelListShow = false;
-				this.dataLabel = dataLabel;
-			},
-			openLabelList(row) {
-				this.labelListShow = true;
-				this.$refs.labelList.userLabel(
-					JSON.parse(JSON.stringify(this.dataLabel))
-				);
-			},
-			// 标签弹窗关闭
-			labelListClose() {
-				this.labelListShow = false;
-			},
-
-			selectAll(row) {
-				let list = this.userLists;
-				if (list.length) {
-					this.selectionList = list;
-					this.selectionCopy = list;
-				}
-				this.userLists.forEach((item, index) => {
-					item.checkBox = this.checkBox;
-					this.$set(this.userLists, index, item);
-				});
-			},
-			// 标签弹窗关闭
-			labelClose(e) {
-				if (!e) {
-					this.getList();
-				}
-				this.labelShow = false;
-				this.labelActive.uid = 0;
-			},
-			// 提交
-			putSend(name) {
-				this.$refs[name].validate((valid) => {
-					if (valid) {
-						if (!this.formInline.spread_uid) {
-							return this.$Message.error("请上传用户");
-						}
-						agentSpreadApi(this.formInline)
-							.then((res) => {
-								this.promoterShow = false;
-								this.$Message.success(res.msg);
-								this.getList();
-								this.$refs[name].resetFields();
-							})
-							.catch((res) => {
-								this.$Message.error(res.msg);
-							});
-					}
-				});
-			},
-			save() {
-				this.$modalForm(getUserSaveForm()).then(() => this.getList());
-				// getUserSaveForm().then(async (res) => {
-				// 	if(res.data.status === false){
-				// 		return this.$authLapse(res.data);
-				// 	}
-				// 	this.FromData = res.data;
-				// 	this.$refs.edits.modals = true;
-				// }).catch(err=>{
-				// 	this.$Message.error(err.msg);
-				// })
-			},
-			synchro() {
-				userSynchro()
-					.then((res) => {
-						this.$Message.success(res.msg);
-					})
-					.catch((err) => {
-						this.$Message.error(err.msg);
-					});
-			},
-			// 分组列表
-			groupLists() {
-				this.loading = true;
-				userLabelApi(this.labelFrom)
-					.then(async (res) => {
-						let data = res.data;
-						this.labelLists = data.list;
-					})
-					.catch((res) => {
-						this.loading = false;
-						this.$Message.error(res.msg);
-					});
-			},
-			onClickTab(type) {
-				this.userFrom.page = 1;
-				this.userFrom.user_type = type;
-				this.getList();
-			},
-			userGroup() {
-				let data = {
-					page: 1,
-					limit: "",
-				};
-				userGroupApi(data).then((res) => {
-					this.groupList = res.data.list;
-				});
-			},
-			levelLists() {
-				let data = {
-					page: 1,
-					limit: "",
-					title: "",
-					is_show: 1,
-				};
-				levelListApi(data).then((res) => {
-					this.levelList = res.data.list;
-				});
-			},
-			// 批量设置分组;
-			setGroup() {
-				if (this.selectionList.length === 0) {
-					this.$Message.warning("请选择要设置分组的用户");
-				} else {
-					let uids = {
-						all: this.isAll
-					};
-					if (this.isAll === 0) {
-						uids.uids = this.array_ids;
-					} else if (this.isAll === 1) {
-						uids.where = this.userFrom;
-						uids.where = {
-							city: this.userFrom.city,
-							country: this.userFrom.country,
-							field_key: this.userFrom.field_key,
-							group_id: this.userFrom.group_id,
-							isMember: this.userFrom.isMember,
-							is_promoter: this.userFrom.is_promoter,
-							label_id: this.userFrom.label_id,
-							level: this.userFrom.level,
-							nickname: this.userFrom.nickname,
-							pay_count: this.userFrom.pay_count,
-							province: this.userFrom.province,
-							sex: this.userFrom.sex,
-							status: this.userFrom.status,
-							user_time: this.userFrom.user_time,
-							user_time_type: this.userFrom.user_time_type,
-							user_type: this.userFrom.user_type,
-						};
-					}
-					this.$modalForm(userSetGroup(uids)).then(() => this.getList());
-				}
-			},
-			// 批量设置标签;
-			setLabel() {
-				if (this.selectionList.length === 0) {
-					this.$Message.warning("请选择要设置标签的用户");
-				} else {
-					let uids = {
-						all: this.isAll
-					};
-					if (this.isAll === 0) {
-						uids.uids = this.array_ids;
-					} else if (this.isAll === 1) {
-						uids.where = {
-							city: this.userFrom.city,
-							country: this.userFrom.country,
-							field_key: this.userFrom.field_key,
-							group_id: this.userFrom.group_id,
-							isMember: this.userFrom.isMember,
-							is_promoter: this.userFrom.is_promoter,
-							label_id: this.userFrom.label_id,
-							level: this.userFrom.level,
-							nickname: this.userFrom.nickname,
-							pay_count: this.userFrom.pay_count,
-							province: this.userFrom.province,
-							sex: this.userFrom.sex,
-							status: this.userFrom.status,
-							user_time: this.userFrom.user_time,
-							user_time_type: this.userFrom.user_time_type,
-							user_type: this.userFrom.user_type,
-						};
-					}
-					this.labelShow = true;
-					this.labelActive.uid = uids;
-					// this.$modalForm(userSetLabelApi(uids)).then(() => this.getList());
-				}
-			},
-			// 是否为付费会员;
-			changeMember() {
-				this.userFrom.page = 1;
-				this.getList();
-			},
-			// 选择国家
-			changeCountry() {
-				if (this.userFrom.country === "abroad" || !this.userFrom.country) {
-					this.selectedData = [];
-					this.userFrom.province = "";
-					this.userFrom.city = "";
-					this.address = [];
-				}
-			},
-			// 选择地址
-			handleChange(value, selectedData) {
-				this.selectedData = selectedData.map((o) => o.label);
-				this.userFrom.province = this.selectedData[0];
-				this.userFrom.city = this.selectedData[1];
-			},
-			// 具体日期
-			onchangeTime(e) {
-				this.timeVal = e;
-				this.userFrom.user_time = this.timeVal.join("-");
-			},
-			// 操作
-			changeMenu(row, name, index) {
-				this.userId = row.uid;
-				let uid = [];
-				uid.push(row.uid);
-				let uids = {
-					uids: uid
-				};
-				switch (name) {
-					case "1":
-						this.$refs.userDetails.modals = true;
-						this.$refs.userDetails.activeName = "info";
-						this.$refs.userDetails.getDetails(row.uid);
-						break;
-					case "2":
-						this.getOtherFrom(row.uid);
-						break;
-					case "3":
-						// this.giveLevel(row.uid);
-						this.giveLevelTime(row.uid);
-						break;
-					case "4":
-						this.del(
-							row,
-							"清除 【 " + row.nickname + " 】的会员等级",
-							index,
-							"user"
-						);
-						break;
-					case "5":
-						this.$modalForm(userSetGroup(uids)).then(() =>
-							this.$refs.sends.getList()
-						);
-						break;
-					case "6":
-						this.openLabel(row);
-						// this.$modalForm(userSetLabelApi(uids)).then(() => this.$refs.sends.getList());
-						break;
-					case "7":
-						this.editS(row);
-						break;
-					default:
-						this.del(
-							row,
-							"解除【 " + row.nickname + " 】的上级推广人",
-							index,
-							"tuiguang"
-						);
-						break;
-						// this.del(row, '清除 【 ' + row.nickname + ' 】的会员等级', index)
-				}
-			},
-			openLabel(row) {
-				this.labelShow = true;
-				this.labelActive.uid = row.uid;
-			},
-			editS(row) {
-				this.promoterShow = true;
-				this.formInline.uid = row.uid;
-			},
-			customer() {
-				this.customerShow = true;
-			},
-			imageObject(e) {
-				this.customerShow = false;
-				this.formInline.spread_uid = e.uid;
-				this.formInline.image = e.image;
-			},
-			cancel(name) {
-				this.promoterShow = false;
-				this.$refs[name].resetFields();
-			},
-			// 赠送会员等级
-			giveLevel(id) {
-				giveLevelApi(id)
-					.then(async (res) => {
-						if (res.data.status === false) {
-							return this.$authLapse(res.data);
-						}
-						this.FromData = res.data;
-						this.$refs.edits.modals = true;
-					})
-					.catch((res) => {
-						this.$Message.error(res.msg);
-					});
-			},
-			// 赠送会员等级
-			giveLevelTime(id) {
-				giveLevelTimeApi(id)
-					.then(async (res) => {
-						if (res.data.status === false) {
-							return this.$authLapse(res.data);
-						}
-						this.FromData = res.data;
-						this.$refs.edits.modals = true;
-					})
-					.catch((res) => {
-						this.$Message.error(res.msg);
-					});
-			},
-			// 删除
-			del(row, tit, num, name) {
-				let delfromData = {
-					title: tit,
-					num: num,
-					url: name === "user" ?
-						`user/del_level/${row.uid}` :
-						`agent/stair/delete_spread/${row.uid}`,
-					method: name === "user" ? "DELETE" : "PUT",
-					// url: `user/del_level/${row.uid}`,
-					// method: 'DELETE',
-					ids: "",
-				};
-				this.$modalSure(delfromData)
-					.then((res) => {
-						this.$Message.success(res.msg);
-						this.getList();
-					})
-					.catch((res) => {
-						this.$Message.error(res.msg);
-					});
-			},
-			// 清除会员删除成功
-			submitModel() {
-				this.getList();
-			},
-			// 会员列表
-			getList() {
-				this.loading = true;
-				let activeIds = [];
-				this.dataLabel.forEach((item) => {
-					activeIds.push(item.id);
-				});
-				this.userFrom.label_id = activeIds.join(",") || "";
-				this.userFrom.user_type = this.userFrom.user_type || "";
-				this.userFrom.status = this.userFrom.status || "";
-				this.userFrom.sex = this.userFrom.sex || "";
-				this.userFrom.is_promoter = this.userFrom.is_promoter || "";
-				this.userFrom.country = this.userFrom.country || "";
-				this.userFrom.user_time_type = this.userFrom.user_time_type || "";
-				this.userFrom.pay_count = this.userFrom.pay_count || "";
-				// this.userFrom.label_id = this.userFrom.label_id || "";
-				this.userFrom.field_key = this.field_key === "all" ? "" : this.field_key;
-				this.userFrom.level =
-					this.userFrom.level === "all" ? "" : this.userFrom.level;
-				this.userFrom.group_id =
-					this.userFrom.group_id === "all" ? "" : this.userFrom.group_id;
-				userList(this.userFrom)
-					.then(async (res) => {
-						let data = res.data;
-						data.list.forEach((item) => {
-							item.checkBox = false;
-						});
-						this.userLists = data.list.map((item)=>{
-							item.is_partner = +item.partner==1?'是':'否'
-							item.area_level_name = +item.area_level==0?'':+item.area_level==1?'门店':+item.area_level==2?'社区':'城市';
-							return item;
-						});
-						
-						if (this.isAll == 1) {
-							this.selectionList = this.userLists;
-							this.userLists = data.list.map((item) => {
-								item.checkBox = true;
-								return item;
-							});
-						}
-						this.total = data.count;
-						// this.isAll = -1;
-						this.loading = false;
-					})
-					.catch((res) => {
-						this.loading = false;
-						this.$Message.error(res.msg);
-					});
-			},
-			pageChange(index) {
-				this.userFrom.page = index;
-				this.getList();
-			},
-			// 搜索
-			userSearchs() {
-				if (this.userFrom.user_time_type && !this.timeVal.length) {
-					return this.$Message.error("请选择访问时间");
-				}
-				if (this.timeVal.length && !this.userFrom.user_time_type) {
-					return this.$Message.error("请选择访问情况");
-				}
-				this.userFrom.page = 1;
-				this.selectionList = [];
-				this.getList();
-			},
-			// 重置
-			reset(name) {
-				this.userFrom = {
-					user_type: "",
-					status: "",
-					sex: "",
-					is_promoter: "",
-					country: "",
-					pay_count: "",
-					user_time_type: "",
-					user_time: "",
-					nickname: "",
-					field_key: "",
-					level: "",
-					group_id: "",
-					label_id: "",
-					page: 1, // 当前页
-					limit: 20, // 每页显示条数
-				};
-				this.field_key = "";
-				this.level = "";
-				this.group_id = "";
-				this.label_id = "";
-				this.user_time_type = "";
-				this.pay_count = "";
-				this.timeVal = [];
-				this.selectionList = [];
-				this.getList();
-			},
-			// 获取编辑表单数据
-			getUserFrom(id) {
-				this.$modalForm(getUserData(id)).then(() => this.getList());
-				// getUserData(id)
-				//   .then(async (res) => {
-				//     if (res.data.status === false) {
-				//       return this.$authLapse(res.data);
-				//     }
-				//     this.FromData = res.data;
-				//     this.$refs.edits.modals = true;
-				//   })
-				//   .catch((res) => {
-				//     this.$Message.error(res.msg);
-				//   });
-			},
-			// 获取积分余额表单
-			getOtherFrom(id) {
-				editOtherApi(id)
-					.then(async (res) => {
-						if (res.data.status === false) {
-							return this.$authLapse(res.data);
-						}
-						res.data.rules[1].props.max = 999999;
-						res.data.rules[1].props.precision = 0;
-						this.FromData = res.data;
-						this.$refs.edits.modals = true;
-					})
-					.catch((res) => {
-						this.$Message.error(res.msg);
-					});
-			},
-			// 修改状态
-			onchangeIsShow(row) {
-				let data = {
-					id: row.uid,
-					status: row.status,
-				};
-				isShowApi(data)
-					.then(async (res) => {
-						this.$Message.success(res.msg);
-					})
-					.catch((res) => {
-						this.$Message.error(res.msg);
-					});
-			},
-			// 全选
-			onSelectTab(selection) {
-				this.selectionList = selection;
-				let data = [];
-				this.selectionList.map((item) => {
-					data.push(item.uid);
-				});
-				this.array_ids = data;
-				this.user_ids = data.join(",");
-			},
-			// 点击发送优惠券
-			onSend() {
-				if (this.selectionList.length === 0) {
-					this.$Message.warning("请选择要发送优惠券的用户");
-				} else {
-					this.$refs.sends.modals = true;
-					this.$refs.sends.getList();
-				}
-			},
-			// 发送图文消息
-			onSendPic() {
-				if (this.selectionList.length === 0) {
-					this.$Message.warning("请选择要发送图文消息的用户");
-				} else {
-					this.modal13 = true;
-				}
-			},
-			// 编辑
-			edit(row) {
-				this.getUserFrom(row.uid);
-				// this.$modalForm(getUserSaveForm(row.uid)).then(() => this.getList());
-			},
-			//信息补充
-			extendInfo(row) {
-				// this.$modalForm(extendInfo(row.uid)).then(() => this.getList());
-				extendInfo(row.uid).then(async (res) => {
-					if (res.data.status === false) {
-						return this.$authLapse(res.data);
-					}
-					this.FromData = res.data;
-					this.$refs.edits.modals = true;
-					this.getList()
-				}).catch(err => {
-					this.$Message.error(err.msg);
-				})
-			},
-			// 修改成功
-			submitFail(p) {
-				this.getList();
-				if (this.$refs.userDetails.modals) {
-					this.$refs.userDetails.getDetails(this.userId);
-				}
-			},
-			// 排序
-			sortChanged(e) {
-				this.userFrom[e.key] = e.order;
-				this.getList();
-			},
-			onSelectCancel(selection, row) {},
-		},
-	};
-</script>
-
-<style scoped lang="stylus">
-	.padding-add {
-		padding: 20px 20px 0;
-	}
-
-	.input-add {
-		max-width: 250px;
-	}
-
-	.labelInput {
-		max-width: 250px;
-		border: 1px solid #dcdee2;
-		padding: 0 5px;
-		border-radius: 5px;
-		min-height: 30px;
-		cursor: pointer;
-
-		.span {
-			color: #c5c8ce;
-		}
-
-		.iconxiayi {
-			font-size: 12px;
-		}
-	}
-
-	.picBox {
-		display: inline-block;
-		cursor: pointer;
-
-		.upLoad {
-			width: 58px;
-			height: 58px;
-			line-height: 58px;
-			border: 1px dotted rgba(0, 0, 0, 0.1);
-			border-radius: 4px;
-			background: rgba(0, 0, 0, 0.02);
-		}
-
-		.pictrue {
-			width: 60px;
-			height: 60px;
-			border: 1px dotted rgba(0, 0, 0, 0.1);
-			margin-right: 10px;
-
-			img {
-				width: 100%;
-				height: 100%;
-			}
-		}
-	}
-
-	.userFrom {
-		>>>.ivu-form-item-content {
-			margin-left: 0px !important;
-		}
-	}
-
-	.userAlert {
-		margin-top: 20px;
-	}
-
-	.userI {
-		color: #1890FF;
-		font-style: normal;
-	}
-
-	img {
-		height: 36px;
-		display: block;
-	}
-
-	.tabBox_img {
-		width: 36px;
-		height: 36px;
-		border-radius: 4px;
-		cursor: pointer;
-
-		img {
-			width: 100%;
-			height: 100%;
-		}
-	}
-
-	.tabBox_tit {
-		width: 60%;
-		font-size: 12px !important;
-		margin: 0 2px 0 10px;
-		letter-spacing: 1px;
-		padding: 5px 0;
-		box-sizing: border-box;
-	}
-
-	.modelBox {
-		>>>.ivu-modal-body {
-			padding: 0 16px 16px 16px !important;
-		}
-	}
-
-	.vipName {
-		color: #dab176;
-	}
-
-	.listbox {
-		>>>.ivu-divider-horizontal {
-			margin: 0 !important;
-		}
-	}
-
-	/deep/.ivu-table-header {
-		// overflow visible
-	}
-
-	/deep/.ivu-table th {
-		overflow: visible;
-	}
-
-	/deep/.select-item:hover {
-		background-color: #f3f3f3;
-	}
-
-	/deep/.select-on {
-		display: block;
-	}
-
-	/deep/.select-item.on {
-		/* background: #f3f3f3; */
-	}
-
-	.pane_pd {
-		padding: 4px 16px 20px !important;
-		font-weight: 500;
-	}
-
-	.new_tab {
-		>>>.ivu-tabs-nav .ivu-tabs-tab {
-			padding: 4px 16px 20px !important;
-			font-weight: 500;
-		}
-	}
-
-	.dateMedia {
-		/deep/.ivu-form-item-content {
-			max-width 250px;
-
-			/deep/.ivu-date-picker {
-				width 100%;
-			}
-		}
-	}
+					},
+					{
+						title: "市场等级",
+						key: "area_level_name",
+						minWidth: 90,
+					},
+					{
+						title: "用户等级",
+						key: "level",
+						minWidth: 90,
+					},
+					{
+						title: "分组",
+						key: "group_id",
+						minWidth: 100,
+					},
+					{
+						title: "手机号",
+						key: "phone",
+						minWidth: 100,
+					},
+					{
+						title: "用户类型",
+						key: "user_type",
+						minWidth: 100,
+					},
+					{
+						title: "内部联系人",
+						slot: "follow_list",
+						minWidth: 100,
+					},
+					{
+						title: "余额",
+						key: "now_money",
+						sortable: "custom",
+						minWidth: 100,
+					},
+					{
+						title: "操作",
+						slot: "action",
+						fixed: "right",
+						minWidth: 120,
+					},
+				],
+				userLists: [],
+				FromData: null,
+				selectionList: [],
+				user_ids: "",
+				selectedData: [],
+				timeVal: [],
+				array_ids: [],
+				groupList: [],
+				levelList: [],
+				labelFrom: {
+					page: 1,
+					limit: "",
+				},
+				labelLists: [],
+				display: "none",
+				checkBox: false,
+				selectionCopy: [],
+				isAll: -1,
+				userId: 0,
+			};
+		},
+		watch: {
+			selectionList(value) {
+				let arr = value.map((item) => item.uid);
+				this.array_ids = arr;
+				this.user_ids = arr.join();
+			},
+			userLists: {
+				deep: true,
+				handler(value) {
+					value.forEach((item) => {
+						this.selectionList.forEach((itm) => {
+							if (itm.uid === item.uid) {
+								item.checkBox = true;
+							}
+						});
+					});
+					const arr = this.userLists.filter((item) => item.checkBox);
+					if (this.userLists.length) {
+						this.checkBox = this.userLists.length === arr.length;
+					} else {
+						this.checkBox = false;
+					}
+				},
+			},
+		},
+		computed: {
+			...mapState("admin/layout", ["isMobile"]),
+			labelWidth() {
+				return this.isMobile ? undefined : 100;
+			},
+			labelPosition() {
+				return this.isMobile ? "top" : "right";
+			},
+		},
+		created() {
+			this.getList();
+		},
+		mounted() {
+			this.userGroup();
+			this.levelLists();
+			this.groupLists();
+		},
+		methods: {
+			closeLabel(label) {
+				let index = this.dataLabel.indexOf(
+					this.dataLabel.filter((d) => d.id == label.id)[0]
+				);
+				this.dataLabel.splice(index, 1);
+			},
+			activeData(dataLabel) {
+				this.labelListShow = false;
+				this.dataLabel = dataLabel;
+			},
+			openLabelList(row) {
+				this.labelListShow = true;
+				this.$refs.labelList.userLabel(
+					JSON.parse(JSON.stringify(this.dataLabel))
+				);
+			},
+			// 标签弹窗关闭
+			labelListClose() {
+				this.labelListShow = false;
+			},
+
+			selectAll(row) {
+				let list = this.userLists;
+				if (list.length) {
+					this.selectionList = list;
+					this.selectionCopy = list;
+				}
+				this.userLists.forEach((item, index) => {
+					item.checkBox = this.checkBox;
+					this.$set(this.userLists, index, item);
+				});
+			},
+			// 标签弹窗关闭
+			labelClose(e) {
+				if (!e) {
+					this.getList();
+				}
+				this.labelShow = false;
+				this.labelActive.uid = 0;
+			},
+			// 提交
+			putSend(name) {
+				this.$refs[name].validate((valid) => {
+					if (valid) {
+						if (!this.formInline.spread_uid) {
+							return this.$Message.error("请上传用户");
+						}
+						agentSpreadApi(this.formInline)
+							.then((res) => {
+								this.promoterShow = false;
+								this.$Message.success(res.msg);
+								this.getList();
+								this.$refs[name].resetFields();
+							})
+							.catch((res) => {
+								this.$Message.error(res.msg);
+							});
+					}
+				});
+			},
+			save() {
+				this.$modalForm(getUserSaveForm()).then(() => this.getList());
+				// getUserSaveForm().then(async (res) => {
+				// 	if(res.data.status === false){
+				// 		return this.$authLapse(res.data);
+				// 	}
+				// 	this.FromData = res.data;
+				// 	this.$refs.edits.modals = true;
+				// }).catch(err=>{
+				// 	this.$Message.error(err.msg);
+				// })
+			},
+			synchro() {
+				userSynchro()
+					.then((res) => {
+						this.$Message.success(res.msg);
+					})
+					.catch((err) => {
+						this.$Message.error(err.msg);
+					});
+			},
+			// 分组列表
+			groupLists() {
+				this.loading = true;
+				userLabelApi(this.labelFrom)
+					.then(async (res) => {
+						let data = res.data;
+						this.labelLists = data.list;
+					})
+					.catch((res) => {
+						this.loading = false;
+						this.$Message.error(res.msg);
+					});
+			},
+			onClickTab(type) {
+				this.userFrom.page = 1;
+				this.userFrom.user_type = type;
+				this.getList();
+			},
+			userGroup() {
+				let data = {
+					page: 1,
+					limit: "",
+				};
+				userGroupApi(data).then((res) => {
+					this.groupList = res.data.list;
+				});
+			},
+			levelLists() {
+				let data = {
+					page: 1,
+					limit: "",
+					title: "",
+					is_show: 1,
+				};
+				levelListApi(data).then((res) => {
+					this.levelList = res.data.list;
+				});
+			},
+			// 批量设置分组;
+			setGroup() {
+				if (this.selectionList.length === 0) {
+					this.$Message.warning("请选择要设置分组的用户");
+				} else {
+					let uids = {
+						all: this.isAll
+					};
+					if (this.isAll === 0) {
+						uids.uids = this.array_ids;
+					} else if (this.isAll === 1) {
+						uids.where = this.userFrom;
+						uids.where = {
+							city: this.userFrom.city,
+							country: this.userFrom.country,
+							field_key: this.userFrom.field_key,
+							group_id: this.userFrom.group_id,
+							isMember: this.userFrom.isMember,
+							is_promoter: this.userFrom.is_promoter,
+							label_id: this.userFrom.label_id,
+							level: this.userFrom.level,
+							nickname: this.userFrom.nickname,
+							pay_count: this.userFrom.pay_count,
+							province: this.userFrom.province,
+							sex: this.userFrom.sex,
+							status: this.userFrom.status,
+							user_time: this.userFrom.user_time,
+							user_time_type: this.userFrom.user_time_type,
+							user_type: this.userFrom.user_type,
+						};
+					}
+					this.$modalForm(userSetGroup(uids)).then(() => this.getList());
+				}
+			},
+			// 批量设置标签;
+			setLabel() {
+				if (this.selectionList.length === 0) {
+					this.$Message.warning("请选择要设置标签的用户");
+				} else {
+					let uids = {
+						all: this.isAll
+					};
+					if (this.isAll === 0) {
+						uids.uids = this.array_ids;
+					} else if (this.isAll === 1) {
+						uids.where = {
+							city: this.userFrom.city,
+							country: this.userFrom.country,
+							field_key: this.userFrom.field_key,
+							group_id: this.userFrom.group_id,
+							isMember: this.userFrom.isMember,
+							is_promoter: this.userFrom.is_promoter,
+							label_id: this.userFrom.label_id,
+							level: this.userFrom.level,
+							nickname: this.userFrom.nickname,
+							pay_count: this.userFrom.pay_count,
+							province: this.userFrom.province,
+							sex: this.userFrom.sex,
+							status: this.userFrom.status,
+							user_time: this.userFrom.user_time,
+							user_time_type: this.userFrom.user_time_type,
+							user_type: this.userFrom.user_type,
+						};
+					}
+					this.labelShow = true;
+					this.labelActive.uid = uids;
+					// this.$modalForm(userSetLabelApi(uids)).then(() => this.getList());
+				}
+			},
+			// 是否为付费会员;
+			changeMember() {
+				this.userFrom.page = 1;
+				this.getList();
+			},
+			// 选择国家
+			changeCountry() {
+				if (this.userFrom.country === "abroad" || !this.userFrom.country) {
+					this.selectedData = [];
+					this.userFrom.province = "";
+					this.userFrom.city = "";
+					this.address = [];
+				}
+			},
+			// 选择地址
+			handleChange(value, selectedData) {
+				this.selectedData = selectedData.map((o) => o.label);
+				this.userFrom.province = this.selectedData[0];
+				this.userFrom.city = this.selectedData[1];
+			},
+			// 具体日期
+			onchangeTime(e) {
+				this.timeVal = e;
+				this.userFrom.user_time = this.timeVal.join("-");
+			},
+			// 操作
+			changeMenu(row, name, index) {
+				this.userId = row.uid;
+				let uid = [];
+				uid.push(row.uid);
+				let uids = {
+					uids: uid
+				};
+				switch (name) {
+					case "1":
+						this.$refs.userDetails.modals = true;
+						this.$refs.userDetails.activeName = "info";
+						this.$refs.userDetails.getDetails(row.uid);
+						break;
+					case "2":
+						this.getOtherFrom(row.uid);
+						break;
+					case "3":
+						// this.giveLevel(row.uid);
+						this.giveLevelTime(row.uid);
+						break;
+					case "4":
+						this.del(
+							row,
+							"清除 【 " + row.nickname + " 】的会员等级",
+							index,
+							"user"
+						);
+						break;
+					case "5":
+						this.$modalForm(userSetGroup(uids)).then(() =>
+							this.$refs.sends.getList()
+						);
+						break;
+					case "6":
+						this.openLabel(row);
+						// this.$modalForm(userSetLabelApi(uids)).then(() => this.$refs.sends.getList());
+						break;
+					case "7":
+						this.editS(row);
+						break;
+					default:
+						this.del(
+							row,
+							"解除【 " + row.nickname + " 】的上级推广人",
+							index,
+							"tuiguang"
+						);
+						break;
+						// this.del(row, '清除 【 ' + row.nickname + ' 】的会员等级', index)
+				}
+			},
+			openLabel(row) {
+				this.labelShow = true;
+				this.labelActive.uid = row.uid;
+			},
+			editS(row) {
+				this.promoterShow = true;
+				this.formInline.uid = row.uid;
+			},
+			customer() {
+				this.customerShow = true;
+			},
+			imageObject(e) {
+				this.customerShow = false;
+				this.formInline.spread_uid = e.uid;
+				this.formInline.image = e.image;
+			},
+			cancel(name) {
+				this.promoterShow = false;
+				this.$refs[name].resetFields();
+			},
+			// 赠送会员等级
+			giveLevel(id) {
+				giveLevelApi(id)
+					.then(async (res) => {
+						if (res.data.status === false) {
+							return this.$authLapse(res.data);
+						}
+						this.FromData = res.data;
+						this.$refs.edits.modals = true;
+					})
+					.catch((res) => {
+						this.$Message.error(res.msg);
+					});
+			},
+			// 赠送会员等级
+			giveLevelTime(id) {
+				giveLevelTimeApi(id)
+					.then(async (res) => {
+						if (res.data.status === false) {
+							return this.$authLapse(res.data);
+						}
+						this.FromData = res.data;
+						this.$refs.edits.modals = true;
+					})
+					.catch((res) => {
+						this.$Message.error(res.msg);
+					});
+			},
+			// 删除
+			del(row, tit, num, name) {
+				let delfromData = {
+					title: tit,
+					num: num,
+					url: name === "user" ?
+						`user/del_level/${row.uid}` : `agent/stair/delete_spread/${row.uid}`,
+					method: name === "user" ? "DELETE" : "PUT",
+					// url: `user/del_level/${row.uid}`,
+					// method: 'DELETE',
+					ids: "",
+				};
+				this.$modalSure(delfromData)
+					.then((res) => {
+						this.$Message.success(res.msg);
+						this.getList();
+					})
+					.catch((res) => {
+						this.$Message.error(res.msg);
+					});
+			},
+			// 清除会员删除成功
+			submitModel() {
+				this.getList();
+			},
+			// 会员列表
+			getList() {
+				this.loading = true;
+				let activeIds = [];
+				this.dataLabel.forEach((item) => {
+					activeIds.push(item.id);
+				});
+				this.userFrom.label_id = activeIds.join(",") || "";
+				this.userFrom.user_type = this.userFrom.user_type || "";
+				this.userFrom.status = this.userFrom.status || "";
+				this.userFrom.sex = this.userFrom.sex || "";
+				this.userFrom.is_promoter = this.userFrom.is_promoter || "";
+				this.userFrom.country = this.userFrom.country || "";
+				this.userFrom.user_time_type = this.userFrom.user_time_type || "";
+				this.userFrom.pay_count = this.userFrom.pay_count || "";
+				// this.userFrom.label_id = this.userFrom.label_id || "";
+				this.userFrom.field_key = this.field_key === "all" ? "" : this.field_key;
+				this.userFrom.level =
+					this.userFrom.level === "all" ? "" : this.userFrom.level;
+				this.userFrom.group_id =
+					this.userFrom.group_id === "all" ? "" : this.userFrom.group_id;
+				userList(this.userFrom)
+					.then(async (res) => {
+						let data = res.data;
+						data.list.forEach((item) => {
+							item.checkBox = false;
+						});
+						this.userLists = data.list.map((item) => {
+							item.is_partner = +item.partner == 1 ? '是' : '否'
+							item.area_level_name = +item.area_level == 0 ? '' : +item.area_level == 1 ?
+								'门店' : +item.area_level == 2 ? '社区' : '城市';
+							return item;
+						});
+
+						if (this.isAll == 1) {
+							this.selectionList = this.userLists;
+							this.userLists = data.list.map((item) => {
+								item.checkBox = true;
+								return item;
+							});
+						}
+						this.total = data.count;
+						// this.isAll = -1;
+						this.loading = false;
+					})
+					.catch((res) => {
+						this.loading = false;
+						this.$Message.error(res.msg);
+					});
+			},
+			pageChange(index) {
+				this.userFrom.page = index;
+				this.getList();
+			},
+			// 搜索
+			userSearchs() {
+				if (this.userFrom.user_time_type && !this.timeVal.length) {
+					return this.$Message.error("请选择访问时间");
+				}
+				if (this.timeVal.length && !this.userFrom.user_time_type) {
+					return this.$Message.error("请选择访问情况");
+				}
+				this.userFrom.page = 1;
+				this.selectionList = [];
+				this.getList();
+			},
+			// 重置
+			reset(name) {
+				this.userFrom = {
+					user_type: "",
+					status: "",
+					sex: "",
+					is_promoter: "",
+					country: "",
+					pay_count: "",
+					user_time_type: "",
+					user_time: "",
+					nickname: "",
+					field_key: "",
+					level: "",
+					group_id: "",
+					label_id: "",
+					page: 1, // 当前页
+					limit: 20, // 每页显示条数
+				};
+				this.field_key = "";
+				this.level = "";
+				this.group_id = "";
+				this.label_id = "";
+				this.user_time_type = "";
+				this.pay_count = "";
+				this.timeVal = [];
+				this.selectionList = [];
+				this.getList();
+			},
+			// 获取编辑表单数据
+			getUserFrom(id) {
+				this.$modalForm(getUserData(id)).then(() => this.getList());
+				// getUserData(id)
+				//   .then(async (res) => {
+				//     if (res.data.status === false) {
+				//       return this.$authLapse(res.data);
+				//     }
+				//     this.FromData = res.data;
+				//     this.$refs.edits.modals = true;
+				//   })
+				//   .catch((res) => {
+				//     this.$Message.error(res.msg);
+				//   });
+			},
+			// 获取积分余额表单
+			getOtherFrom(id) {
+				editOtherApi(id)
+					.then(async (res) => {
+						if (res.data.status === false) {
+							return this.$authLapse(res.data);
+						}
+						res.data.rules[1].props.max = 999999;
+						res.data.rules[1].props.precision = 0;
+						this.FromData = res.data;
+						this.$refs.edits.modals = true;
+					})
+					.catch((res) => {
+						this.$Message.error(res.msg);
+					});
+			},
+			// 修改状态
+			onchangeIsShow(row) {
+				let data = {
+					id: row.uid,
+					status: row.status,
+				};
+				isShowApi(data)
+					.then(async (res) => {
+						this.$Message.success(res.msg);
+					})
+					.catch((res) => {
+						this.$Message.error(res.msg);
+					});
+			},
+			// 全选
+			onSelectTab(selection) {
+				this.selectionList = selection;
+				let data = [];
+				this.selectionList.map((item) => {
+					data.push(item.uid);
+				});
+				this.array_ids = data;
+				this.user_ids = data.join(",");
+			},
+			// 点击发送优惠券
+			onSend() {
+				if (this.selectionList.length === 0) {
+					this.$Message.warning("请选择要发送优惠券的用户");
+				} else {
+					this.$refs.sends.modals = true;
+					this.$refs.sends.getList();
+				}
+			},
+			// 发送图文消息
+			onSendPic() {
+				if (this.selectionList.length === 0) {
+					this.$Message.warning("请选择要发送图文消息的用户");
+				} else {
+					this.modal13 = true;
+				}
+			},
+			// 编辑
+			edit(row) {
+				this.getUserFrom(row.uid);
+				// this.$modalForm(getUserSaveForm(row.uid)).then(() => this.getList());
+			},
+			//信息补充
+			extendInfo(row) {
+				// this.$modalForm(extendInfo(row.uid)).then(() => this.getList());
+				extendInfo(row.uid).then(async (res) => {
+					if (res.data.status === false) {
+						return this.$authLapse(res.data);
+					}
+					this.FromData = res.data;
+					this.$refs.edits.modals = true;
+					this.getList()
+				}).catch(err => {
+					this.$Message.error(err.msg);
+				})
+			},
+			// 修改成功
+			submitFail(p) {
+				this.getList();
+				if (this.$refs.userDetails.modals) {
+					this.$refs.userDetails.getDetails(this.userId);
+				}
+			},
+			// 排序
+			sortChanged(e) {
+				this.userFrom[e.key] = e.order;
+				this.getList();
+			},
+			onSelectCancel(selection, row) {},
+			async exports() {
+				console.log('开始导出')
+			  let [th, filekey, data, fileName] = [[], [], [], ""];
+			  //   let fileName = "";
+			  let excelData = JSON.parse(JSON.stringify(this.userFrom));
+			 console.log('开始导出1')
+			  excelData.page = 1;
+			  for (let i = 0; i < excelData.page + 1; i++) {
+			    let lebData = await this.getExcelData(excelData);
+			    if (!fileName) fileName = lebData.filename;
+			    if (!filekey.length) {
+			      filekey = lebData.filekey;
+			    }
+			    if (!th.length) th = lebData.header;
+			    if (lebData.export.length == excelData.limit) {
+			      data = data.concat(lebData.export);
+			      excelData.page++;
+			    } else {
+					  data = data.concat(lebData.export);
+			      exportExcel(th, filekey, fileName, data);
+			      return;
+			    }
+			  }
+			},
+			getExcelData(excelData) {
+				console.log('开始获取导出数据')
+				return new Promise((resolve, reject) => {
+					userListApi(excelData).then((res) => {
+						return resolve(res.data);
+					});
+				});
+			},
+		},
+	};
+</script>
+
+<style scoped lang="stylus">
+	.padding-add {
+		padding: 20px 20px 0;
+	}
+
+	.input-add {
+		max-width: 250px;
+	}
+
+	.labelInput {
+		max-width: 250px;
+		border: 1px solid #dcdee2;
+		padding: 0 5px;
+		border-radius: 5px;
+		min-height: 30px;
+		cursor: pointer;
+
+		.span {
+			color: #c5c8ce;
+		}
+
+		.iconxiayi {
+			font-size: 12px;
+		}
+	}
+
+	.picBox {
+		display: inline-block;
+		cursor: pointer;
+
+		.upLoad {
+			width: 58px;
+			height: 58px;
+			line-height: 58px;
+			border: 1px dotted rgba(0, 0, 0, 0.1);
+			border-radius: 4px;
+			background: rgba(0, 0, 0, 0.02);
+		}
+
+		.pictrue {
+			width: 60px;
+			height: 60px;
+			border: 1px dotted rgba(0, 0, 0, 0.1);
+			margin-right: 10px;
+
+			img {
+				width: 100%;
+				height: 100%;
+			}
+		}
+	}
+
+	.userFrom {
+		>>>.ivu-form-item-content {
+			margin-left: 0px !important;
+		}
+	}
+
+	.userAlert {
+		margin-top: 20px;
+	}
+
+	.userI {
+		color: #1890FF;
+		font-style: normal;
+	}
+
+	img {
+		height: 36px;
+		display: block;
+	}
+
+	.tabBox_img {
+		width: 36px;
+		height: 36px;
+		border-radius: 4px;
+		cursor: pointer;
+
+		img {
+			width: 100%;
+			height: 100%;
+		}
+	}
+
+	.tabBox_tit {
+		width: 60%;
+		font-size: 12px !important;
+		margin: 0 2px 0 10px;
+		letter-spacing: 1px;
+		padding: 5px 0;
+		box-sizing: border-box;
+	}
+
+	.modelBox {
+		>>>.ivu-modal-body {
+			padding: 0 16px 16px 16px !important;
+		}
+	}
+
+	.vipName {
+		color: #dab176;
+	}
+
+	.listbox {
+		>>>.ivu-divider-horizontal {
+			margin: 0 !important;
+		}
+	}
+
+	/deep/.ivu-table-header {
+		// overflow visible
+	}
+
+	/deep/.ivu-table th {
+		overflow: visible;
+	}
+
+	/deep/.select-item:hover {
+		background-color: #f3f3f3;
+	}
+
+	/deep/.select-on {
+		display: block;
+	}
+
+	/deep/.select-item.on {
+		/* background: #f3f3f3; */
+	}
+
+	.pane_pd {
+		padding: 4px 16px 20px !important;
+		font-weight: 500;
+	}
+
+	.new_tab {
+		>>>.ivu-tabs-nav .ivu-tabs-tab {
+			padding: 4px 16px 20px !important;
+			font-weight: 500;
+		}
+	}
+
+	.dateMedia {
+		/deep/.ivu-form-item-content {
+			max-width 250px;
+
+			/deep/.ivu-date-picker {
+				width 100%;
+			}
+		}
+	}
 </style>

+ 10 - 1
src/router/modules/finance.js

@@ -58,6 +58,15 @@ export default {
                 title: '佣金记录'
             },
             component: () => import('@/pages/finance/commission/index')
-        }
+        },
+		{
+		    path: 'finance/list',
+		    name: `${pre}list`,
+		    meta: {
+		        auth: ['finance-finance-list'],
+		        title: '佣金流水'
+		    },
+		    component: () => import('@/pages/finance/list/index')
+		}
     ]
 };