c<template>
  <!-- 【单证】 订单数据 -->
  <a-spin :spinning="spinIsShow" >
  <div id="orderList">
    <a-card :bordered="false">
      <!-- 查询区域 -->
      <div class="table-page-search-wrapper">
        <a-form layout="inline" @keyup.enter.native="searchQuery">
          <a-row :gutter="24">
            <a-col :md="6" :sm="8">
                <a-form-item label="账套">
                  <j-search-select-tag
                  placeholder="请选择账套"
                  v-model="queryParam.account"
                  dict="view_account,account,account">
                </j-search-select-tag>
                </a-form-item>
              </a-col>
            <a-col :md="6" :sm="8">
              <a-form-item label="订单号">
                <a-input placeholder="请输入订单号" v-model="queryParam.orderNumber"></a-input>
              </a-form-item>
            </a-col>

            <a-col :md="6" :sm="8">
              <a-form-item label="订单日期">
                <a-range-picker
                  style="width: 100%"
                  :mode="dataRangeMode"
                  :placeholder="['开始日期', '结束日期']"
                  :value="dateRange"
                  format = "YYYY-MM-DD"
                  @change="dateRangeSelectChange"
                />
              </a-form-item>
            </a-col>

            
            <template v-if="toggleSearchStatus">
              <a-col :md="6" :sm="8">
                <a-form-item label="客户简称">
                  <j-search-select-tag
                    placeholder="请选择客户简称"
                    v-model="queryParam.customerAbbreviation"
                    dict="view_customer,customername,customername">
                  </j-search-select-tag>
                </a-form-item>
              </a-col>


              <a-col :md="6" :sm="8">
                <a-form-item label="发货状态">
                  <a-select placeholder="请选择发货状态" v-model="queryParam.dilivery">
                    <a-select-option value="">请选择</a-select-option>
                    <a-select-option value="0">未发货</a-select-option>
                    <a-select-option value="1">已发货</a-select-option>
                  </a-select>
                </a-form-item>
              </a-col>

              <a-col :md="6" :sm="8">
                <a-form-item label="成品/面辅料">
                  <a-select placeholder="请选择" v-model="queryParam.isProduct">
                    <a-select-option value="">请选择</a-select-option>
                    <a-select-option value="0">成品</a-select-option>
                    <a-select-option value="1">面辅料</a-select-option>
                  </a-select>
                </a-form-item>
              </a-col>

              <a-col :md="6" :sm="8">
                <a-form-item label="部门">
                   <a-input placeholder="请输入部门" v-model="queryParam.salesDepartment"></a-input>
                </a-form-item>
              </a-col>

              <a-col :md="6" :sm="8">
                <a-form-item label="业务员">
                   <a-input placeholder="请输入业务员" v-model="queryParam.salesman"></a-input>
                </a-form-item>
              </a-col>
            </template>

            <a-col :md="6" :sm="8">
              <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
                <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
                <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
                <a @click="handleToggleSearch" style="margin-left: 8px">
                  {{ toggleSearchStatus ? '收起' : '展开' }}
                  <a-icon :type="toggleSearchStatus ? 'up' : 'down'" />
                </a>
              </span>
            </a-col>
          </a-row>
        </a-form>
      </div>
    </a-card>

    <!-- 操作按钮区域 -->
    <a-card :bordered="false" style="marginTop:10px;">
      <div class="table-page-search-wrapper">
         <a-form layout="inline">
        <a-row :gutter="24">
          <a-col :md="6" :sm="8">
                <a-form-item label="账套">
                  <j-search-select-tag
                  placeholder="请选择账套"
                  v-model="account"
                  dict="view_account,account,account">
                </j-search-select-tag>
                </a-form-item>
              </a-col>
          <a-col :md="6" :sm="8">
              <a-input placeholder="请输入" v-model="dingDan"></a-input>
          </a-col>
            <a-button type="primary" @click="synchronizationOne" icon="reload" style="margin-right:3%">单条同步</a-button>  
            <a-button type="primary" @click="synchronization" icon="reload" style="margin-right:3%">全量同步</a-button>
            <a-button type="primary" @click="getManualList" icon="reload">手工匹配订单</a-button>
          
       </a-row>
        
         </a-form>

      </div>

      <!-- 主表信息  rowKey="id"  :pagination="ipagination" -->
      <div>
        <a-table
          bordered
          :row-key="record => record.id"
          :columns="orderLIstColumns"
          :data-source="orderListData"
          :loading="loading"
          :pagination="pagination"
          :scroll="{ x: 1500,y:600 }"
          @change="handleTableChange"
        >
         <span slot="operationSlot" slot-scope="text, record,index">
                     <a @click="handleDelete(record)" style="color:red;">删除</a>
                 </span>
          <!-- 订单号 链接-->
          <span slot="orderNumber" slot-scope="text">
            <a>{{ text }}</a>
          </span>
        </a-table>
      </div>
    </a-card>

    <!-- 订单数据明细 抽屉 -->
    <orderDetail-drawer ref="orderDetailDrawer" :fatherList="getOrderList" @ok="modalFormOk"></orderDetail-drawer>
    <manualModal ref="manualModal"></manualModal>
  </div>
  </a-spin>
</template>

<script>
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import JEllipsis from '@/components/jeecg/JEllipsis'
import moment from 'moment'
import OrderDetailDrawer from '@views/order/orderDetailDrawer.vue'
import manualModal from '@views/order/manualModal.vue'
import { orderList, syncy,oneSyncy,deleteOrder} from '@api/document/order'
export default {
  name: 'OrderList', // 【单证】 订单数据
  mixins: [JeecgListMixin],
  components: { JEllipsis, moment, OrderDetailDrawer,manualModal },

  data() {
    // let ellipsis = (v, l = 20) => <j-ellipsis value={v} length={l} />
    // sorter: true, table表头排序
    return {
      // 表头
      orderLIstColumns: [

        {
          title: '账套',
          width: 70,
          dataIndex: 'account',
          fixed: 'left',
          className: 'replacecolor',
          align: 'center',
          ellipsis: true
        },
        {
          title: '订单号',
          width: 200,
          dataIndex: 'orderNumber',
          fixed: 'left',
          className: 'replacecolor',
          align: 'left',
          customCell: this.showDrawer,
          scopedSlots: { customRender: 'orderNumber' },
          ellipsis: true
        },

        {
          title: '订单日期',
          width: 110,
          dataIndex: 'orderDate',
          fixed: 'left',
          customRender: text => {
            return moment(text).format('YYYY-MM-DD')
          },
          className: 'replacecolor',
        },
        // { title: '业务类型', width: 100, dataIndex: 'businessTypeValue', className: 'replacecolor' ,ellipsis: true},
        { title: '客户订单号', width: 120, dataIndex: 'customerOrderNumber', className: 'replacecolor',ellipsis: true },
        // {
        //   title: '销售类型',
        //   width: 100,
        //   dataIndex: 'salesTypeText',
        //   className: 'replacecolor'
        // },
        { title: '最终客户', width: 120, dataIndex: 'endCustomer', className: 'replacecolor', ellipsis: true, },
        { title: '客户简称', width: 220, dataIndex: 'customerAbbreviation', align: 'left', className: 'replacecolor',ellipsis: true },
        // { title: '客户名称', width: 220, dataIndex: 'customerName', align: 'left', className: 'replacecolor', ellipsis: true, },
        { title: '供应商', width: 120, dataIndex: 'supplier', className: 'replacecolor' ,ellipsis: true},
        // { title: '汇率', width: 90, dataIndex: 'exchangeRate', className: 'replacecolor' ,ellipsis: true},
        { title: '整单合计', width: 120, dataIndex: 'wholeOrderTotal', className: 'replacecolor' ,ellipsis: true},
        { title: '销售部门', width: 100, dataIndex: 'salesDepartment', className: 'replacecolor' ,ellipsis: true},
        { title: '业务员', width: 140, dataIndex: 'salesman', className: 'replacecolor' ,ellipsis: true},

        { title: '品牌方', width: 220, dataIndex: 'brandSide', align: 'left', className: 'replacecolor',ellipsis: true },
        { title: '币种', width: 90, dataIndex: 'currencyText', className: 'replacecolor',ellipsis: true },
        { title: '第三方', width: 220, dataIndex: 'thirdParty', align: 'left', className: 'replacecolor',ellipsis: true },
        { title: '定金比例(%)', width: 120, dataIndex: 'depositRatio', className: 'replacecolor',ellipsis: true },
        { title: '定金', width: 100, dataIndex: 'deposit', className: 'replacecolor',ellipsis: true },
        // { title: '协同路线', width: 160, dataIndex: 'collaborativeRoute', className: 'replacecolor',ellipsis: true },
        { title: '付款条件', width: 180, dataIndex: 'termOfPayment', className: 'replacecolor' ,ellipsis: true},
        {
          title: '订单备注',
          width: 220,
          dataIndex: 'orderRemarks',
          // customRender: t => ellipsis(t),
          className: 'replacecolor',
          scopedSlots: { customRender: 'orderRemarks' },
          ellipsis: true
        },
        {
          title: '价格备注',
          width: 120,
          dataIndex: 'priceRemarks',
          // customRender: t => ellipsis(t),
          className: 'replacecolor',
          scopedSlots: { customRender: 'priceRemarks' },
          ellipsis: true
        },

        {
          title: '订单变更说明',
          width: 120,
          dataIndex: 'orderChangeDescription',
          fixed: 'right',
          // customRender: t => ellipsis(t),
          className: 'replacecolor',
          scopedSlots: { customRender: 'orderChangeDescription' },
          ellipsis: true
        },
         {
          title: '操作',
          width: 120,
          dataIndex: 'operation',
          scopedSlots: { customRender: 'operationSlot' },
          className: 'replacecolor',
          ellipsis: true,
           fixed: 'right',
        },
      ],
      orderListData: [], // 主表信息
      loading: false, // 表格加载

      queryParam: {
        orderNumber: '',
        orderDate: '',
        customerAbbreviation: '',
        account: '',
        dilivery: '',
        isProduct: '', // 客户需求新增
        salesDepartment: '',//部门
        salesman:'',//业务员
        pageNo: '' // 初始页
      },
      dingDan:'',//单条同步订单号

      pagination: {
         pageSizeOptions: ["50", "100", "150"],
        showSizeChanger: true,
        // total: '',
        // current: 0,
        // pageSize: 0
      },
      account:'',//单条同步条件
      dateRange:[],
      dataRangeMode:['date','date'],
      spinDelayMS:500, // 加载框延迟时间
      spinIsShow:false,  // 加载框是否显示
    }
  },

  created() {
    // this.getOrderList()
  },
  methods: {
    // 分页查询
    getOrderList() {
      var that = this;
      // that.spinIsShow = true;
      this.loading = true
      this.$nextTick(() => {
        this.queryParam.pageSize = 50
        orderList(this.queryParam).then(res => {
          // that.spinIsShow = false;
          this.loading = false
          if (res.success) {
            that.orderListData = res.result.records;
            that.pagination = {
              total: res.result.total,
              current: res.result.current,
              pageSize: res.result.size
            }
          }else{
              that.$message.error(res.message);
          }
          
        })
      })
    },
    // 同步
    synchronization() {
      this.$nextTick(() => {
        var id = "1570672855704420354"
        this.loading = true
        syncy({id}).then(res => {
          if (res.success) {
            this.loading = false
            this.getOrderList();
            this.$message.success('同步成功')
          }else{
            this.loading = false

            this.$message.error(res.message)
          }
        })
      })
    },
    //单条同步
    synchronizationOne(){
      this.$nextTick(() => {
        if(this.account == '' || !this.account){
          this.$message.error('请选择账套号!')
        }else{
          // var parameter = this.dingDan,
          // account=this.account 
          this.loading = true
         oneSyncy({parameter:this.dingDan,account:this.account}).then(res => {
            if (res.success) {
              this.loading =false
              this.queryParam.orderNumber = this.dingDan
              this.getOrderList();
             this.$message.success(res.message)
             }else{
              this.loading =false
              this.$message.error(res.message)
             }
            })
        }
        
      })
    },
    //删除
    handleDelete(record){
      deleteOrder({orderNumber:record.orderNumber,account:record.account}).then(res => {
          if (res.success) {
            this.getOrderList();
            this.$message.success('删除成功')
          }else{
            this.$message.error(res.message)
          }
        })
    },

    // 【订单号】 抽屉
    showDrawer(record) {
      return {
        on: {
          click: event => {
            this.$refs.orderDetailDrawer.visible = true
            this.$refs.orderDetailDrawer.record = record // 接口参数
            this.$refs.orderDetailDrawer.getOrderChild()
            this.$refs.orderDetailDrawer.orderDetail = record // 详情页主表赋值
          }
        }
      }
    },

    //手工匹配订单
    getManualList(){
      this.$refs.manualModal.manualModVis = true
    },
    // 查询按钮
    searchQuery() {
      this.queryParam.pageNo = ''
      this.toggleSearchStatus = false
      this.getOrderList()
      // console.log('发货状态', this.queryParam.dilivery)
    },

    searchReset() {
      this.queryParam = {}
      this.getOrderList()
    },

    // 查询条件 订单日期转换成字符串并赋值
    onDateChange(value, dateString) {
      this.queryParam.orderDate = dateString
    },

    handleTableChange(pagination, filters, sorter) {
      this.queryParam.pageNo = pagination.current
      this.getOrderList()
    },

    // 时间发生变化的回调,发生在用户选择时间时
    dateRangeSelectChange(value) {
      this.dateRange = value;
      if (value.length == 0){
        this.queryParam.dateStar = "";
        this.queryParam.dateEnd = "";
      }else{
        this.queryParam.dateStar = value[0].format('YYYY-MM-DD');
        this.queryParam.dateEnd  = value[1].format('YYYY-MM-DD');
      }
    },
  },
  computed: {},
  mounted() {}
}
</script>
<style lang="less" scoped>
@import '~@assets/less/common.less';
@import '~@assets/less/overwriter.less';
/deep/ .ant-table-thead > tr > th {
  text-align: center !important;
  // font-weight: 700;
}

/deep/ .ant-table-tbody {
  text-align: center !important;
}
// /deep/ th.replacecolor {
//   background-color: #ccc;
// }
/deep/ .ant-table-tbody .ant-table-row td{
    padding-top: 8px;
    padding-bottom: 8px;
     text-align: center !important;
}
/deep/.ant-card-body{
padding-top: 10px !important;
padding-bottom: 0px !important;
}
/deep/.table-operator .ant-btn{
  margin: 0 8px 3px 0;
}
/deep/.table-page-search-wrapper .ant-form-inline .ant-form-item{
  margin-bottom: 10px;
}
/deep/.table-page-search-wrapper .table-page-search-submitButtons{
 margin-bottom: 10px;
}
/deep/ thead.ant-table-thead>tr{
      height: 0 !important;
}
/deep/ .ant-table-thead > tr > th, .ant-table-tbody > tr > td{
  padding: 9px 16px
}
</style>