<template>
  <div class="sys-box knowledge-box">
    <div class="sys-operate">
      <el-button type="primary" @click="goAdd()" v-has="'sales:salesContract:add'">新增</el-button>
      <el-button type="primary" @click="remove()" :disabled="btnOtherDisabled" v-has="'sales:salesContract:remove'">删除</el-button>
      <el-button type="primary" @click="exportExcel()"  v-has="'sales:salesContract:exportExcel'">导出</el-button>
      <el-button type="primary" @click="audit" :disabled="btnDelDisabled" v-has="'sales:salesContract:audit'">审核</el-button>
      <el-button type="primary" @click="disAudit" :disabled="btnDelDisabled" v-has="'sales:salesContract:disAudit'">反审核</el-button>
      <el-button type="primary" @click="close" :disabled="btnDelDisabled" v-has="'sales:salesContract:close'">{{config.closeContractText}}</el-button>
      <el-button type="primary" @click="reverseClose" :disabled="btnDelDisabled" v-has="'sales:salesContract:reverseClose'">{{config.openContractText}}</el-button>
      <el-button type="primary" @click="change" :disabled="btnDelDisabled" v-has="'sales:salesContract:change'">变更</el-button>
      <el-button type="primary" @click="gotoAlterationList" :disabled="btnDelDisabled" v-has="'sales:salesContract:gotoAlterationList'">变更记录</el-button>
      <el-button type="primary" @click="showColumnSetDialog">{{config.configureBtnName}}</el-button>
    </div>
    <div class="sys-search">
      <el-form inline class="form_item_search_out">
        <div class='form_item_input_out'>
          <el-form-item label="合同编号"  style='width:22%' class="form_item-inline">
            <el-input v-model="search_data.contractCode" placeholder="请输入合同编号" clearable ></el-input>
          </el-form-item>
          <el-form-item label="客户"  style='width:22%' class="form_item-inline">
            <el-input v-model="search_data.clientName" placeholder="请输入客户" clearable ></el-input>
          </el-form-item>
          <el-form-item label="物料名称"  style='width:22%' class="form_item-inline">
            <el-input v-model="search_data.materielName" placeholder="物料" clearable ></el-input>
          </el-form-item>
          <el-form-item label="合同日期"  style='width:34%' class="form_item-inline">
            <el-date-picker
              v-model="time"
              type="daterange"
              format="yyyy-MM-dd"
              value-format="yyyy-MM-dd HH:mm:ss"
              range-separator="—"
              start-placeholder="开始时间"
              end-placeholder="结束时间"
            ></el-date-picker>
          </el-form-item>
        </div>
        <div class='form_item_btn_out'>
        <el-form-item>
          <el-button type="primary" @click="search()">查询</el-button>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="moreSearch()">高级查询</el-button>
        </el-form-item>
      </div>
      </el-form>
    </div>
    <div class="sys-table">
      <el-table border
      v-if="formTableData.length>0"
      id="out-table"
      @row-click="gotoDetail"
        ref="tb"
        v-loading="pictLoading"
        show-summary
        :summary-method="getSummaries"
        :data="tableData"
        @selection-change="handleSelectionChange"
        :header-cell-style="{fontWeight: 'normal', textAlign: 'center', backgroundColor: '#eceff4', color: '#222'}"
      >
      <el-table-column type="selection" width="55" align="center"></el-table-column>
      <el-table-column v-for="(items,index) in formTableData" :key="index" :prop="items.prop_" :label="items.title" :sortable="items.sortAble"
                         align="center" show-overflow-tooltip>

        </el-table-column>
      </el-table>
    </div>
    <div class="sys-pagination">
      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :current-page="search_data.pageno"
        :page-sizes="pageSizes"
        :page-size="search_data.pagesize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="total"
      ></el-pagination>
    </div>

    <!-- 状态控制 -->
    <el-dialog :title="columnSetDialogTitle" center :visible.sync="columnSetDialogVisible" width="531px" :before-close="handleClose">
      <el-table border
                :data="showTableColumns"
                :key="Math.random()"
                max-height="350"
                style="width: 100%">
        <el-table-column
          prop="title"
          label="列表名称"
          width="180" fixed>
        </el-table-column>
        <el-table-column
          prop="select"
          label="是否显示"
          width="180">
          <template slot-scope="scope">
            <el-switch v-model="scope.row.select">
            </el-switch>
          </template>
        </el-table-column>
        <el-table-column
          label="操作"
        >
          <template slot-scope="scope">
            <el-button type="text" size="small" @click="toUp(scope)">前移</el-button>
            <el-button type="text" size="small" @click="toDown(scope)">后移</el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-row type="flex" class="row-bg" justify="center" style="margin-top: 10px;">
        <el-col :span="6">
          <el-button type="primary" size="middle" @click="saveAndCloseColumnSetDialog">完成</el-button>
        </el-col>
        <el-col :span="6">
          <el-button type="primary" size="middle" @click="toDefault">恢复默认</el-button>
        </el-col>
      </el-row>
    </el-dialog>

    <!-- 高级查询对话框 -->
    <el-dialog :title="dialogTitle" center :visible.sync="advanceQueryDialogVisible" width="670px">
      <el-form :inline="true"
               v-loading="dialogLoading"
               label-width="80px"
               class="dialog-form"
               ref="form" style="width: 620px"
      >
        <div class="dialog-line">
          <el-form-item label="合同时间"  class="dialog-form-inline-single">
            <el-date-picker
              v-model="formDataTime"
              type="daterange"
              format="yyyy-MM-dd"
              value-format="yyyy-MM-dd HH:mm:ss"
              range-separator="—"
              start-placeholder="开始时间"
              end-placeholder="结束时间"
            ></el-date-picker>
          </el-form-item>
        </div>
        <div class="dialog-line">
          <el-form-item label="合同类型" class="dialog-form-inline">
            <el-select v-model="formData.contractType" style="width:100%" clearable placeholder="请选择" @change="changeFacility">
              <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
            </el-select>
          </el-form-item>
        <el-form-item label="客户" class="dialog-form-inline">
          <el-input placeholder="请输入客户名" v-model="formData.clientName" clearable></el-input>
        </el-form-item>
        </div>
        <div class="dialog-line">
          <el-form-item label="物料" class="dialog-form-inline">
            <btn-input :valueText.sync='formData.materielName' :valueId.sync='formData.materiel' :chooseVisible.sync='chooseMaterielVisible'></btn-input>
          </el-form-item>
        <el-form-item label="规格型号" class="dialog-form-inline">
          <el-input placeholder="请输入规格型号" v-model="formData.specification" clearable></el-input>
        </el-form-item>
        </div>
        <div class="dialog-line">
          <el-form-item label="销售部门" class="dialog-form-inline">
            <el-cascader
              v-model="salesPersonDept"
              clearable
              :options="depOptions"
              :props="{ expandTrigger: 'hover',label:'text',value:'id', checkStrictly: true}"
              @change="handleChange"></el-cascader>
          </el-form-item>
          <el-form-item label="审核状态" class="dialog-form-inline">
            <el-select v-model="formData.auditSign" style="width:100%" clearable placeholder="请选择" @change="changeFacility">
              <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
            </el-select>
          </el-form-item>
        </div>
        <div class="dialog-line">
          <el-form-item label="销售员" prop="salesPersonName" class="dialog-form-inline">
     >
            <btn-input :valueText.sync='formData.salesPersonName' :valueId.sync='formData.salesPerson' :chooseVisible.sync='chooseUserVisible'></btn-input>
          </el-form-item>
          <el-form-item label="制单人" prop="createByName" class="dialog-form-inline">

            <btn-input :valueText.sync='formData.createByName' :valueId.sync='formData.createBy' :chooseVisible.sync='chooseUserVisible1'></btn-input>
          </el-form-item>
        </div>

      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="save">确定</el-button>
        <el-button type="primary" @click="advanceQueryDialogVisible = false">关闭</el-button>
        <el-button type="primary" @click="clear">清空</el-button>
      </span>
    </el-dialog>

    <!--选择用户-->
  <DialogChooseSingleUser :visible.sync="chooseUserVisible" @change="getUser"></DialogChooseSingleUser>
   <!--选择制单人-->
   <DialogChooseSingleUser1 :visible.sync="chooseUserVisible1" @change="getUser1"></DialogChooseSingleUser1>
   <!--选择物料-->
   <dialogChooseSingleParts :visible.sync="chooseMaterielVisible" @change="getMateriel" ></dialogChooseSingleParts>
  </div>
</template>

<script>
import {mapState, mapActions, mapGetters} from "vuex";
import btnInput from "@/components/btnInput.vue";
import FileSaver from 'file-saver'
import config from "@/utils/config.js";
import Cookies from "js-cookie";
import DialogChooseSingleUser from "@/components/System/dialogChooseSingleUser";
import dialogChooseSingleParts from "@/components/System/dialogChooseSingleParts";
import DialogChooseSingleUser1 from "@/components/System/dialogChooseSingleUser";
import { formatDateTime, getCurrentDate } from "@/utils/tools.js";
export default {
  components: {
    btnInput,DialogChooseSingleUser,DialogChooseSingleUser1,dialogChooseSingleParts
  },
  data() {
    return {
      total: 0, //总条数
      pageSizes: [10, 20, 50], //每页展示多少条
      search_data: {
        pageno: 1,
        pagesize: 10,
      },
      search_data1: {
        pageno: 1,
        pagesize: 10,
        startTime: "",
        endTime: "",
        contractCode: '',
        createByName: '',
      },
      formData: {
        startTime: "",
        endTime: "",
        contractType: '',
        contractTypeName: '',
        unitUomName: '',
        clientName: '',
        materielName: '',
        specification: '',
        auditSign: '',
        salesPersonName: '',
        salesPerson: '',
        // createTime: '',
        deptId: '',
        salesPersonDept: '',
        createBy: "",//制单人id
        createByName:"",
      },
      //默认列表数据
      showTableColumnsDefault: [
          {title: "合同日期", prop_: "contractDate", select: true},
          {title: "合同编号", prop_: "contractCode", select: true},
          {title: "合同类型", prop_: "contractTypeName", select: true},
          {title: "关闭标志", prop_: "closeStatusName", select: true},
          {title: "客户名称", prop_: "clientName", select: true},
          {title: "销售员", prop_: "salesPersonName", select: true},
          {title: "销售部门", prop_: "salesPersonDeptName", select: true},
          {title: "发货是否检验", prop_: "isCheck", select: true},
          {title: "物料代码", prop_: "materielSerialNo", select: true},
          {title: "物料名称", prop_: "materielName", select: true},
          {title: "规格型号", prop_: "specification", select: true},
          {title: "主计量单位", prop_: "unitUomName", select: true},
          {title: "主单位数量", prop_: "count", select: true},
          {title: "辅助单位", prop_: "supportUomName", select: true},
          {title: "销售数量", prop_: "saleCount", select: true},
          {title: "含税单价（元）", prop_: "taxUnitPrice", select: true},
          {title: "销售金额（元）", prop_: "taxAmount", select: true},
          {title: "交货日期", prop_: "deliveryDate", select: true,sortAble:true},
          {title: "审核状态", prop_: "auditSignName", select: true},
          {title: "行关闭状态", prop_: "itemCloseStatusName", select: true},
          {title: "行关闭时间", prop_: "itemCloseTime", select: true},
          {title: "行关闭原因", prop_: "itemCloseReason", select: true}
        ],
        ///弹出页面列表数据
        showTableColumns: [
          {title: "合同日期", prop_: "contractDate", select: true},
          {title: "合同编号", prop_: "contractCode", select: true},
          {title: "合同类型", prop_: "contractTypeName", select: true},
          {title: "关闭标志", prop_: "closeStatusName", select: true},
          {title: "客户名称", prop_: "clientName", select: true},
          {title: "销售员", prop_: "salesPersonName", select: true},
          {title: "销售部门", prop_: "salesPersonDeptName", select: true},
          {title: "发货是否检验", prop_: "isCheck", select: true},
          {title: "物料代码", prop_: "materielSerialNo", select: true},
          {title: "物料名称", prop_: "materielName", select: true},
          {title: "规格型号", prop_: "specification", select: true},
          {title: "主计量单位", prop_: "unitUomName", select: true},
          {title: "主单位数量", prop_: "count", select: true},
          {title: "辅助单位", prop_: "supportUomName", select: true},
          {title: "销售数量", prop_: "saleCount", select: true},
          {title: "含税单价（元）", prop_: "taxUnitPrice", select: true},
          {title: "销售金额（元）", prop_: "taxAmount", select: true},
          {title: "交货日期", prop_: "deliveryDate", select: true},
          {title: "审核状态", prop_: "auditSignName", select: true},
          {title: "行关闭状态", prop_: "itemCloseStatusName", select: true},
          {title: "行关闭时间", prop_: "itemCloseTime", select: true},
          {title: "行关闭原因", prop_: "itemCloseReason", select: true}
        ],
        showTableColumnsTemp: [],//弹框弹出的时候，保存当前的列表数据
        //显示的列表字段
        alterationDetailId: '',
      formTableData: [],
          contractList: [],
          contractData: [],
          tableData1: [],
          summary: {},
      formDataTime: "",
      time: '',
      salesTime: '',
      tableData: [],
      depOptions: [],
      salesPersonDept: '',
      options: [],
      typeList: [],
      config: config,
      btnDelDisabled: true,
      btnOtherDisabled: true,
      advanceQueryDialogVisible: false,
      chooseUserVisible: false,
      chooseUserVisible1: false,
      chooseMaterielVisible:false,//物料
      dialogLoading: false,
      dialogTitle: "",
      pictLoading: false,
      columnSetDialogTitle: "设置显示字段列表",
      columnSetDialogVisible: false,
      salesContractIds: [],
      tableId: 'sales_contract_table'
    }
  },
  watch: {
      time(val) {
        if (val) {
          this.search_data.startTime = val[0];
          this.search_data.endTime = val[1];
        } else {
          this.search_data.startTime = "";
          this.search_data.endTime = "";
        }

      },
      formDataTime(val) {
        if (val) {
          this.formData.startTime = val[0];
          this.formData.endTime = val[1];
        } else {
          this.formData.startTime = "";
          this.formData.endTime = "";
        }

      },
    },
  created() {
    this.showTableColumns = JSON.parse(JSON.stringify(this.showTableColumns));
    this.showTableColumnsTemp = JSON.parse(JSON.stringify(this.showTableColumns));
    this.getList()
    this.getShowColumns();
    this.initData()
  },
  methods: {

    // 变更合同列表页
    gotoAlterationList() {
      let id = this.salesContractIds[0].salesContractId
      this.$router.push({ path: "/sales/salesContract_alterationList", query: { id: id, t: Date.now()} })
    },

    // 返回首页
    gotoIndex() {
      this.chooseProVisible = false
    },
    // 变更
    change() {
      let id = this.salesContractIds[0].salesContractId
      this.$router.push({ path: "/sales/salesContract_edit", query: { id: id, t: Date.now()} })
    },

    /**
   * 关闭
   */
   close() {
    let id = this.salesContractIds[0].salesContractId
    this.$confirm("确认终止选中的项吗?", "提示", {
          type: "warning"
        }).then(() => {
          this.$api.salesAPI
          .closeContract({id: id})
          .then(res => {
            if(res.code === 0) {
              this.$message({
                  message: res.msg,
                  type: "success"
                })
                this. getList();
            } else {
              this.$message({
                  message: res.msg,
                  type: "error"
                })
            }
          })
        })

   },
   // 反关闭
  reverseClose () {
    let id = this.salesContractIds[0].salesContractId
    this.$confirm("确认开启选中的项吗?", "提示", {
          type: "warning"
        }).then(() => {
          this.$api.salesAPI
          .reverseClose({id: id})
          .then(res => {
            if(res.code === 0) {
              this.$message({
                  message: res.msg,
                  type: "success"
                })
                this. getList();
            } else {
              this.$message({
                  message: res.msg,
                  type: "error"
                })
            }
          })
        })
  },
   // 导出
   exportExcel() {
       delete this.search_data.pagesize
       delete this.search_data.pageno
        this.$api.salesAPI
        .exportExcel(this.search_data)
        .then(res => {
        })
      },
   /**
   * 反审核
   */
   disAudit() {
      let id = this.salesContractIds[0].salesContractId
      this.$confirm("确认反审核选中的项吗?", "提示", {
          type: "warning"
        }).then(() => {
          this.$api.salesAPI
          .reverseAuditContract({id: id})
          .then(res => {
            if(res.code === 0) {
              this.$message({
                message: res.msg,
                type: "success"
              })
              this. getList();
            } else {
              this.$message({
                message: res.msg,
                type: "error"
              })
            }
          })
        })

    },

   /**
   * 审核
   */
   audit() {
    let id = this.salesContractIds[0].salesContractId
    this.$confirm("确认审核选中的项吗?", "提示", {
      type: "warning"
    }).then(() => {
      this.$api.salesAPI
    .auditContract({id: id})
    .then(res => {
      if(res.code === 0) {
        this.$message({
            message: res.msg,
            type: "success"
          })
          this. getList();
      } else {
        this.$message({
            message: res.msg,
            type: "error"
          })
      }
    })
    })

   },

    clickRow(row) {
      this.$refs.tb.toggleRowSelection(row);
    },

    // 跳转到查看页面
    gotoDetail(row) {
        this.$router.push({ path: "/sales/salesContract_add", query: { id: row.salesContractId,t: Date.now() } })
    },

    // 前往新增页面
    goAdd() {
      this.$router.push({ path: "/sales/salesContract_add", query: {t: Date.now() } })
    },

    // 获取销售订单列表
    getList() {
      this.pictLoading = true;
      this.$api.salesAPI
      .listSalesContract(this.search_data)
      .then(res => {
        this.pictLoading = false;
        if(res.data) {
          this.summary = res.total
          this.total = res.data.totalRows;
          this.tableData = res.data.datas ? res.data.datas : [];
          this.tableData.forEach(item => {
            item.contractDate = /\d{4}-\d{1,2}-\d{1,2}/g.exec(item.contractDate)
            item.deliveryDate = /\d{4}-\d{1,2}-\d{1,2}/g.exec(item.deliveryDate)
          })
        } else {
          this.total = 0;
          this.tableData = [];
        }
      }).catch(r => {
            console.log(r);
          });
    },

      //设置显示字段
      showColumnSetDialog() {
        this.columnSetDialogVisible = true;
        this.showTableColumnsTemp = JSON.parse(JSON.stringify(this.showTableColumns));
      },
      //前移
      toUp(scope) {
        if (scope.$index == 0) {
          return false;
        }
        let n;
        for (let i = 0; i < this.showTableColumns.length; i++) {
          if (this.showTableColumns[i].prop_ == scope.row.prop_) {
            n = i;
          }
        }
        let temp = this.showTableColumns[n];
        this.showTableColumns[n] = this.showTableColumns[n - 1];
        this.showTableColumns[n - 1] = temp;
        this.$forceUpdate();
      },
      //后移
      toDown(scope) {
        if (scope.$index == this.showTableColumns.length - 1) {
          return false;
        }
        let n;
        for (let i = 0; i < this.showTableColumns.length; i++) {
          if (this.showTableColumns[i].prop_ == scope.row.prop_) {
            n = i;
          }
        }
        let temp = this.showTableColumns[n];
        this.showTableColumns[n] = this.showTableColumns[n + 1];
        this.showTableColumns[n + 1] = temp;
        this.$forceUpdate();
      },
      //恢复默认
      toDefault() {
        this.showTableColumns = JSON.parse(JSON.stringify(this.showTableColumnsDefault));
        this.$forceUpdate();
      },
      //完成列表字段设置
      saveAndCloseColumnSetDialog() {
        let tableNo = this.tableId;
        let tableColumns = JSON.stringify(this.showTableColumns);
        this.columnSetDialogVisible = false;
        this.$api.tableColumnAPI
          .saveShowColumns({tableNo:tableNo,tableColumns:tableColumns})
          .then(res => {
              let arr = JSON.parse(JSON.stringify(this.showTableColumns));
              this.formTableData = [];
              for (let i = 0; i < arr.length; i++) {
                  if (arr[i].select) {
                      this.formTableData.push(arr[i]);
                  }
              }
          })
          .catch(r => {
            console.log(r);
          });
      },
      //关闭字段设置弹出
      handleClose() {
        this.showTableColumns = JSON.parse(JSON.stringify(this.showTableColumnsTemp));
        this.columnSetDialogVisible = false;

      },
      /**
       * 获取显示字段
       */
       getShowColumns() {
        let tableNo = this.tableId;
        this.formTableData = [];

        this.$api.tableColumnAPI
          .getShowColumns({tableNo:tableNo})
          .then(res => {
            if(res.code==0){
              if(res.results){
                this.showTableColumns = JSON.parse(res.results);
                let arr = JSON.parse(JSON.stringify(this.showTableColumns));
                for (let i = 0; i < arr.length; i++) {
                  if (arr[i].select) {
                    this.formTableData.push(arr[i]);
                  }
                }
                this.$forceUpdate();
              }else{
                let arr = JSON.parse(JSON.stringify(this.showTableColumnsDefault));
                for (let i = 0; i < arr.length; i++) {
                  if (arr[i].select) {
                    this.formTableData.push(arr[i]);
                  }
                }
                this.$forceUpdate();
              }
            }else{
              this.$message({
                message: res.msg ? res.msg : "获取列表信息失败",
                type: "error"
              });
            }

          })
          .catch(r => {
            this.$message({
              message: r,
              type: "error"
            });
            console.log(r);
          });
      },

    // 查询
    search() {
      this.search_data.pageno = 1;
      this.search_data.pagesize = 10;
      this.getList();
    },

    /**
     * 高级查询
     */
      moreSearch() {
      this.advanceQueryDialogVisible = true;
      this.dialogTitle = "高级查询";
    },
    save() {
        for (var n in this.formData) {
          this.search_data[n] = this.formData[n];
        }
        this.search_data.inDatas = "";
        this.time = this.formDataTime;
        this.search_data.pageno = 1;
        this.$nextTick(function () {
          this.advanceQueryDialogVisible = false;
          this.getList();
        })
      },
      //清空
      clear() {
        for (var n in this.formData) {
          this.formData[n] = '';
        }
        this.formDataTime = "";
        this.salesPersonDept=''
        // this.createTime = "";
      },
      changeFacility() {
        this.$forceUpdate();
      },

    //设置显示字段
    showColumnSetDialog() {
      this.columnSetDialogVisible = true;
      this.showTableColumnsTemp = JSON.parse(JSON.stringify(this.showTableColumns));
    },
    // 每页显示多少条
    handleSizeChange(val) {
      this.search_data.pagesize = val;
      this.getList();
    },
    // 上下分页
    handleCurrentChange(val) {
      this.search_data.pageno = val;
      this.getList();
    },

    /**
     * 初始化
     */
     initData() {
      // 获取审核状态
      this.$api.salesAPI
      .listAauditSign({
        type: "audit_status",
      })
      .then(res => {
        this.options = res.datas
      });
      //  获取合同类型
      this.$api.salesAPI
      .listContractType({
        type: "sales_contract_type",
      })
      .then(res => {
        this.typeList = res.datas
      });
      // 获取生产部门
      Promise.all([this.$api.commonAPI.getDeptsTree(), this.$api.roleAPI.list()])
            .then(([r1, r2]) => {
                if (r1.code === 0) {
                    this.depOptions=r1.data.children;
                    // this.setDefaultDept();
                    this.setDeptList(this.depOptions);
                }
                if (r2.code === 0) {
                    this.roleList = r2.datas;
                }
            })
            .catch(error => {
                console.log(error);
            });
     },
     getMateriel(val){
        if (val) {
          this.$set(this.formData,'materiel',val.id)
          this.$set(this.formData,'materielName',val.name)
        }else{
          this.$set(this.formData,'materiel',"")
          this.$set(this.formData,'materielName',"")
        }
      },

     /**
     * 获取用户
     */
     getUser(data) {
        if (data) {
          this.$set(this.formData,'salesPersonName',data.name)
          this.$set(this.formData,'salesPerson',data.id)
        //   this.formData.salesPersonName = data.name;
        //   this.formData.salesPerson = data.id;
        //   this.getUserList.forEach(item => {
        //     if (data.id === item.id) {
        //       self.formData.salesPersonDept = item.deptId;
        //         self.formData.deptId= item.deptId;
        //       return;
        //     }
        //   });
          // if (self.formData.deptId == 0) {
          //   self.formData.salesPersonDept = "";
          // }
          this.setDefaultDept()
        }
      },
      /**
     * 获取制单人
     */
     getUser1(data) {
        console.log(data)
        var self = this;
        if (data) {
          this.formData.createByName = data.name;
          this.formData.createBy = data.id;
        }
      },
       //根据当前id,获取一条树枝上的所有id数据
       treeFindPath (tree, func, path = []) {
                if (!tree) return []
                for (const data of tree) {
                    path.push(data.id)
                    if (func(data)) return path
                    if (data.children) {
                        const findChildren = this.treeFindPath(data.children, func, path)
                        if (findChildren.length) return findChildren
                    }
                    path.pop()
                }
                return []
            },
      //当选择器选项没有下一级时，将children设置为undefined，就能选则该项了
      setDeptList(tree){
          for (const data of tree) {
              if(!data.hasChildren){
                  data.children=undefined;
              }else{
                  this.setDeptList(data.children)
              }
          }
      },
    //显示默认部门
    // setDefaultDept(){
    //     if(this.depOptions.length>0&&this.formData.deptId){
    //       let id=JSON.stringify( this.formData.deptId)
    //       let select_id=this.treeFindPath(this.depOptions,data=> data.id===id)
    //       this.salesPersonDept=JSON.parse(JSON.stringify(select_id))
    //     }
    //   },
      // 选择部门
      handleChange:function(value){
        this.formData.salesPersonDept=value.length>=1?value[value.length-1]:'';
        this.salesPersonDept=value;
      },


        /**
       * 处理选中
       */
       handleSelectionChange(val) {
        this.salesContractIds= val;
        this.setBtn(val);
      },

      /**
       * 删除
       */
       remove() {
        let ids = [];
          this.salesContractIds.forEach(item => {
            ids.push(item.salesContractId)
            console.log(ids)
          })
        this.$confirm("确认删除选中的项吗?", "提示", {
          type: "warning"
        }).then(() => {
          this.$api.salesAPI
            .removeContract({salesContractIds: ids})
            .then(res => {
              if (res.code === 0) {
                this.$message({
                  message: res.msg,
                  type: "success"
                });
                this.search();
              } else {
                this.$message({
                  message: res.msg ? res.msg : "删除失败，请重试",
                  type: "error"
                });
              }
            })
            .catch(error => {
              this.$message({
                message: "删除失败，请重试",
                type: "error"
              });
            });
        });
      },
      /**
     * 控件操作按钮状态
     */
        setBtn(val) {
        let isFlag = true;
        let isDelFlag = true;
        if (val.length > 0) {
          isDelFlag = false;
          if (val.length == 1) {
            isFlag = false;
          }
        } else {
          isFlag = true;
          isDelFlag = true;
        }
        this.btnOtherDisabled = isDelFlag;
        this.btnDelDisabled = isFlag;
      },
      // 合计
      getSummaries(param){
        const { columns, data } = param;
        let sums=[];
        columns.forEach((column, index) => { //计算不含税金额总计

          if (index === 0) {
            sums[index] = '合计';
            return;
          }
          if (column.property!=='count'&&column.property!=='taxAmount'&&column.property!=='saleCount') {
            sums[index] = '';
            return;
          }

          const values = data.map(item => Number(item[column.property]));
          if (!values.every(value => isNaN(value))) {
            sums[index] = values.reduce((prev, curr) => {
              const value = Number(curr);
              if (!isNaN(value)) {
                return prev + curr;
              } else {
                return prev;
              }
            }, 0);
          } else {
            sums[index] = '';
          }
          if (column.property==='count') {
            if(sums[index]) {
              sums[index] = this.summary.totalCount;
            }
            return;
          }
          if (column.property==='saleCount') {
            if(sums[index]) {
              sums[index] = this.summary.totalSaleCount;
            }
            return;
          }
          if (column.property==='taxAmount') {
            if(sums[index]) {
              sums[index] = this.summary.totalTaxAmount;
            }
            return;
          }
        });

        return sums;
      },

  }
}
</script>

<style scoped>

</style>

<style>
  /*.el-cascader .el-input {*/
  /*  width: 100% !important;*/
  /*}*/

  .process-box  .el-select,
  .process-box .el-input {
    width: 100%;
  }

  .process-box .el-table thead {
    line-height: 1;
  }

 .process-box .el-input-number .el-input {
    width: 100% !important;
  }
  .process-box .el-input-number--small{
    width: 70% !important;
  }
  .process-box .form-inline {
    width: 33.3% !important;
  }
  .process-box .el-input-number el-input-number--small{
    white-space: nowrap;

  }
  .process-box .el-form-item__content{
    margin-left: 100px !important;
  }
 .process-box .el-form-item__label{
   width: 100px !important;
 }
  .process-box  .el-input,.process-box  .el-form--inline .el-input,.process-box .el-cascader--small{
    width: 100% !important;
  }
  .childlist .el-form-item__content{
    margin-left: 0 !important;
  }

  .process-box .el-input--small{
    width: 70% !important;
  }
</style>

<style scoped>
  >>>.sys-search .el-input__inner{
    width: 100%;
  }
  .dialog-form{
    position: relative;
  }
  .dialog-line{
    position: relative;
    display: flex;
    justify-content: center;
    width: 100%;
  }
  .dialog-line .dialog-form-inline{
    position: relative;
    width: 50%;
    margin-right: 0;
  }
  .dialog-line  .dialog-form-inline-single{
    position: relative;
    width: 100%;
    margin-right: 0;
  }
  >>>.dialog-line .el-input__inner{
    width: 100% !important;;
  }
  >>>.dialog-line .el-form-item__content{
    width: calc(100% - 80px) !important;;
  }
  >>>.dialog-line .el-input,>>>.dialog-line .el-cascader{
    width: 100% !important;
  }
</style>




