<template>
  <div>
    <!-- 页面主体内容 -->
    <div class="planAddContent">
      <Card style="width: 100%" :bordered="false" :dis-hover="true">
        <p slot="title">申购计划详情</p>
        <div slot="extra">
          <Button v-if="form.spzt != '0'" @click="toSpjl">查看审批记录</Button>
          <Button @click="addSgjh" v-if="
              (form.spzt == '0' || form.spzt == '3') &&
              (form.status = '1' || form.status == '2')
            ">保存</Button>
          <Button @click="submitSgjh" :disabled="submitLoading"
            v-if="planType == 'edit' && (form.spzt == '0' || form.spzt == '3')">提交</Button>
          <Button @click="cancel" :disabled="submitLoading">返回</Button>
        </div>
        <Row class="mainCont">
          <Col span="4" class-name="tables">计划单据号</Col>
          <Col span="4" class-name="tables">
          <span style="color: gray" v-if="form.jhdjh == ''">系统自动生成,不可编辑</span>
          <span v-else>{{ form.jhdjh }}</span>
          </Col>
          <Col span="4" class-name="tables">
          所属区域
          <span class="mustSpan">*</span>
          </Col>
          <Col span="4" class-name="tables">
          <Select clearable v-model="form.ssqy" style="width: 95%" @on-change="ssqyChange"
            :disabled="planType == 'edit'">
            <Option v-for="item in ssqyList" :value="item.areaId + ',' + item.areaName" :key="item.areaId">
              {{ item.areaName }}</Option>
          </Select>
          </Col>
          <Col span="4" class-name="tables">
          所属项目
          <span class="mustSpan">*</span>
          </Col>
          <Col span="4" class-name="tables">
          <Select clearable v-model="form.ssxm" style="width: 95%" :disabled="planType == 'edit'">
            <Option v-for="item in ssxmList" :value="item.projectId + ',' + item.projectName" :key="item.projectId">
              {{ item.projectName }}</Option>
          </Select>
          </Col>
          <Col span="4" class-name="tables">标题</Col>
          <Col span="4" class-name="tables">
          <span style="color: gray" v-if="form.bt == ''">系统自动生成,不可编辑</span>
          <span v-else>{{ form.bt }}</span>
          </Col>
          <Col span="4" class-name="tables">参考总价(元)</Col>
          <Col span="4" class-name="tables">{{ form.totalPrice }}</Col>
          <Col span="4" class-name="tables">
          计划类型
          <span class="mustSpan">*</span>
          </Col>
          <Col span="4" class-name="tables">
          <Select v-model="form.jhlx" :disabled="form.spzt == '2' || form.spzt == '1'" style="width: 95%">
            <Option v-for="item in jhlxList" :value="item.value" :key="item.value">{{ item.label }}</Option>
          </Select>
          </Col>
          <Col span="4" class-name="tables">
          计划月份
          <span class="mustSpan">*</span>
          </Col>
          <Col span="4" class-name="tables">
          <DatePicker :disabled="planType == 'edit'" style="width: 95%" format="yyyy年MM月" :value="form.date"
            @on-change="form.date = $event" :options="jhyfOption" type="month" placeholder="请选择"></DatePicker>
          </Col>
          <Col span="4" class-name="tables">
          分管采购员
          <span class="mustSpan">*</span>
          </Col>
          <Col span="4" class-name="tables">
          <Select v-model="form.fgcgy" filterable :disabled="form.spzt == '2' || form.spzt == '1'" style="width: 95%">
            <Option v-for="item in cgyList" :value="item.userId" :key="item.userId">{{ item.userName }}</Option>
          </Select>
          </Col>
          <Col span="4" class-name="tables">申请人</Col>
          <Col span="4" class-name="tables">
          <span>{{ form.sqr }}</span>
          </Col>
          <Col span="4" class-name="tables">审批状态</Col>
          <Col span="4" class-name="tables">
          <span v-if="form.spzt == '0'">未发起</span>
          <span v-if="form.spzt == '1'">审批中</span>
          <span v-if="form.spzt == '2'">审批通过</span>
          <span v-if="form.spzt == '3'">审批不通过</span>
          <span v-if="form.spzt == '4'">审批驳回</span>
          </Col>
          <Col span="4" class-name="tables">
          </Col>
          <Col span="4" class-name="tables">
          </Col>
          <Col span="4" class-name="tables">
          </Col>
          <Col span="4" class-name="tables">
          </Col>
        </Row>
        <Row class="uplCont" type="flex" justify="center" style="align-items: stretch">
          <Col span="4" class-name="upl">附件</Col>
          <Col span="10" class-name="uplf">
          <Upload :headers="uploadHeaders" style="width: 80%" multiple type="drag" action="/purchase/common/uploadFile"
            :before-upload="beforeUpload" :on-success="uploadFilesSuccess" :show-upload-list="false"
            :disabled="form.spzt == '2' || form.spzt == '1'" :on-progress="upFilesLoading">
            <!-- :default-file-list="xzwgForm.filesList" -->
            <div style="padding: 5px 0">
              <Icon type="md-cloud-upload" size="36" style="color: #3399ff"></Icon>
              <span>点击或将文件拖拽到这里上传</span>
            </div>
          </Upload>
          </Col>
          <Col span="10" class="upl" style="padding: 5px">
          <div v-for="(item, index) in form.filesList" :key="index">
            <a :href="item.docUrl ? item.docUrl : 'javascript:void(0);'" :download="item.fileName"
              :target="item.docUrl ? '_blank' : '_self'">{{ item.fileName }}</a>
            <span v-if="form.spzt == '0' || form.spzt == '3' || form.spzt == '4'" style="float: right; cursor: pointer"
              @click="form.filesList.splice(index, 1)">x</span>
          </div>
          <p v-if="uploading" style="text-align: center">上传中...</p>
          </Col>
        </Row>
        <Row class="mainCont">
          <Col span="4" class-name="tables">说明</Col>
          <Col span="20" class-name="tables" style="padding: 10px 0">
          <Input v-model="form.sm" :disabled="form.spzt == '2' || form.spzt == '1'" placeholder="请输入" type="textarea"
            style="width: 99%" />
          </Col>
        </Row>
        <Spin size="large" fix v-if="spinShow"></Spin>
      </Card>
      <Card style="width: 100%" :bordered="false" :dis-hover="true">
        <p slot="title">申购计划明细</p>
        <div slot="extra">
          <Button v-show="tableData.length" type="primary" @click="plszOpen"
            :disabled="form.spzt == '2' || form.spzt == '1'">批量设置</Button>
          <!-- <Button type="primary">批量导入</Button> -->
          <Button type="primary" @click="addMxShow" :disabled="
              planType == 'add' || form.spzt == '2' || form.spzt == '1'
            ">新增明细</Button>
        </div>
        <Table :columns="tableColumn" style="width: 100%" :data="tableData" :loading="tableLoading" highlight-row border
          @on-select="tableOnSelect" @on-select-cancel="tableOnCancel" @on-select-all="tableOnSelect"
          @on-select-all-cancel="tableOnCancel" class="">
          <template slot-scope="{ row, index }" slot="amount">
            <div>
              <InputNumber :min="0" :precision="2" :active-change="false" v-model="tableData[index].amount"
                :disabled="form.spzt == '2' || form.spzt == '1'" placeholder="请输入" style="width: 95%" />
            </div>
          </template>
          <template slot-scope="{ row, index }" slot="storehouseId">
            <Select :disabled="form.spzt == '2' || form.spzt == '1'" v-model="tableData[index].storehouseId"
              style="width: 95%" :transfer="true">
              <Option v-for="item in ckList" :value="item.twId" :key="item.twId">{{ item.twName }}</Option>
            </Select>
          </template>
          <template slot-scope="{ row, index }" slot="linkedPersonId">
            <Select :disabled="form.spzt == '2' || form.spzt == '1'" v-model="tableData[index].linkedPersonId"
              filterable label-in-value style="width: 95%" :transfer="true" @on-change="
                (param) => {
                  djrChange(param, index);
                }
              ">
              <Option v-for="item in djrList" :value="item.userId" :key="item.userId">{{ item.userName }}</Option>
            </Select>
          </template>
          <!-- <template slot-scope="{ row, index }" slot="billType">
            <Select
              :disabled="form.spzt == '2'  || form.spzt == '1'"
              v-model="tableData[index].billType"
              style="width: 95%"
              :transfer="true"
            >
              <Option v-for="item in djList" :value="item.value" :key="item.value">{{ item.label }}</Option>
            </Select>
          </template>-->
          <template slot-scope="{ row, index }" slot="referenceTotalPrice">
            <span>{{ (row.amount * row.referencePrice).toFixed(3) }}</span>
          </template>
          <template slot-scope="{ row, index }" slot="arriveTime">
            <DatePicker :disabled="form.spzt == '2' || form.spzt == '1'" :transfer="true" format="yyyy-MM-dd"
              :options="jhdhsjOption" type="date" :value="tableData[index].arriveTime"
              @on-change="tableData[index].arriveTime = $event" placeholder="请选择" style="width: 95%"></DatePicker>
          </template>
          <!-- @on-change="((val, date) => tableDateChange(val, date ,index))" -->
          <template slot-scope="{ row, index }" slot="remark">
            <Input :disabled="form.spzt == '2' || form.spzt == '1'" v-model="tableData[index].remark" placeholder="请输入"
              style="width: 95%" />
          </template>
          <template slot-scope="{ row, index }" slot="isCancel">{{
            row.isCancel == "0" ? "有效" : "已取消"
          }}</template>
          <template slot-scope="{ row, index }" slot="cz">
            <div v-if="
                form.spzt != '1' &&
                form.spzt != '2' &&
                (form.status = '1' || form.status == '2')
              ">
              <a href="javascript:;" @click="deleteRow(index)">删除</a>
            </div>
            <div v-if="row.isCancel == '0' && form.spzt == '2'">
              <a href="javascript:;" @click="cancelRow(row, index)">取消</a>
            </div>
            <div v-if="row.isCancel == '1' && form.spzt == '2'">
              <Poptip placement="top-end" width="300" trigger="hover" :transfer="true">
                <a href="javascript:;">查看原因</a>
                <div slot="content">
                  <p>操作人:{{ row.cancelInfo.operatorName }}</p>
                  <p>取消原因:{{ row.cancelInfo.cancelReason }}</p>
                  <p>操作时间:{{ row.cancelInfo.operationTime }}</p>
                </div>
              </Poptip>
            </div>
          </template>
        </Table>
      </Card>
      <Modal v-model="plszShow" title="批量设置" @on-ok="plszOk" @on-cancel="plszCancel">
        <Row class="mainCont">
          <Col span="12" class-name="tables">入库仓库</Col>
          <Col span="12" class-name="tables">
          <Select :disabled="form.spzt == '2' || form.spzt == '1'" clearable v-model="plrkck" style="width: 95%"
            :transfer="true">
            <Option v-for="item in ckList" :value="item.twId" :key="item.twId">{{ item.twName }}</Option>
          </Select>
          </Col>
          <Col span="12" class-name="tables">计划到货时间</Col>
          <Col span="12" class-name="tables">
          <DatePicker :disabled="form.spzt == '2' || form.spzt == '1'" :transfer="true" format="yyyy-MM-dd" type="date"
            :value="pldhsj" @on-change="pldhsj = $event" :options="jhdhsjOption" placeholder="请选择" style="width: 95%">
          </DatePicker>
          </Col>
        </Row>
      </Modal>
    </div>
    <!-- 计划明细新增 -->
    <Modal v-model="contentShow" title="新增申购计划物料" width="1200px">
      <planMxAdd ref="add" @plAdd="plAdd" />
      <div slot="footer">
        <!-- <Button :loading="buttonLoading" @click="addCancel">取消</Button>
        <Button type="primary" :loading="buttonLoading" @click="addOk">确认</Button>-->
      </div>
    </Modal>
    <Modal v-model="qxShow" title="取消明细" @on-ok="qxOk" @on-cancel="qxCancel">
      <Input v-model="qxsm" placeholder="请输入取消原因" />
    </Modal>
  </div>
</template>

<script>
  import {
    getProjectList,
    addPurchaseApply,
    queryPurchaseApplyInfo,
    editPurchaseApply,
    warehouseList,
    submitPurchaseApply,
    getLabelByCode4Purchase,
    editPurchaseApplyDetailState,
    cancelPurchaseApplyDetail,
    getDockUserList,
  } from "@/service/getData";
  import planMxAdd from "./planMxAdd";
  export default {
    name: "planAdd",
    components: {
      planMxAdd,
    },
    props: ["ssqyList", "cgyList"],
    data() {
      return {
        submitLoading: false,
        planMxAddvisible: false,
        id: "",
        qxShow: false,
        qxsm: "",
        qxrow: null,
        qxindex: null,
        spinShow: false,
        contentShow: false,
        requestId: "",
        planType: "add",
        uploadHeaders: {
          token: localStorage.token,
          userId: localStorage.user_id,
        },
        jhyfOption: {
          disabledDate(date) {
            let nDate = new Date();
            let dn = +new Date(`${nDate.getFullYear()}-${nDate.getMonth()}-28`);
            return date.valueOf() < dn;
          },
        },
        jhdhsjOption: {
          disabledDate(date) {
            let nDate = new Date();
            let dn = +new Date(
              `${nDate.getFullYear()}-${nDate.getMonth() + 1}-${nDate.getDate()}`
            );
            return date.valueOf() < dn;
          },
        },
        form: {
          status: "", //申购计划状态
          jhdjh: "", // 计划单据号
          bt: "", //标题
          spzt: 0, //审批状态
          date: "", //计划月份
          ssqy: "", //所属区域
          ssxm: "", //所属项目
          jhlx: "", //计划类型
          fgcgy: "", //分管采购员
          totalPrice: 0, //总价
          sqr: localStorage.user_name, //申请人
          filesList: [],
        },
        // ssqyList: [{ label: "test", value: "1" }],
        ssxmList: [],
        jhlxList: [{
            label: "计划性申购",
            value: 1
          },
          {
            label: "临时申购",
            value: 2
          },
        ],
        sqrList: [],
        uploading: false,
        // 批量设置
        plszShow: false,
        plrkck: "",
        pldhsj: "",
        // table
        ckList: [],
        djList: [],
        djrList: [],
        tableColumn: [{
            type: "selection",
            width: 60,
            align: "center",
          resizable: true,
          },
          {
            type: "index",
            title: "序号",
            width: 60,
            align: "center",
            resizable: true,
          },
          {
            title: "物料编码",
            key: "code",
            tooltip: true,
            width: 180,
            resizable: true,
          },
          {
            title: "物料分类",
            key: "firstClassName",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          {
            title: "物料名称",
            key: "materialName",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          {
            title: "规格型号",
            key: "specs",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          {
            title: "单位",
            key: "unit",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          {
            title: "库存量",
            key: "inventory",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          {
            title: "申购数量",
            slot: "amount",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          {
            title: "参考单价(元)",
            key: "referencePrice",
            tooltip: true,
            width: 120,
            resizable: true,
          },
          {
            title: "参考总价(元)",
            slot: "referenceTotalPrice",
            tooltip: true,
            width: 120,
            resizable: true,
          },
          {
            title: "入库仓库",
            slot: "storehouseId",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          {
            title: "对接人",
            slot: "linkedPersonId",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          // {
          //   title: "单据类型",
          //   slot: "billType",
          //   tooltip: true,
          //   width: 100
          // },
          {
            title: "计划到货时间",
            slot: "arriveTime",
            tooltip: true,
            width: 130,
            resizable: true,
          },
          {
            title: "备注",
            slot: "remark",
            tooltip: true,
            width: 150,
            resizable: true,
          },
          // {
          //   title: "状态",
          //   slot: "isCancel",
          //   tooltip: true,
          //   width: 100
          // },
          {
            title: "操作",
            slot: "cz",
            tooltip: true,
            width: 80,
            resizable: true,
          },
        ],
        tableData: [],
        tableSelect: [],
        tableLoading: false,
      };
    },
    created() {
      // getLabelByCode4Purchase({ dictCode: "billType" }).then(res => {
      //   if (res.status == 200) {
      //     this.djList = res.data;
      //   } else {
      //     this.$Message.error(res.message);
      //   }
      // });
    },
    methods: {
      //批量设置弹窗
      plszOpen() {
        if (!this.tableSelect.length) {
          this.$Message.error("请至少选择一条物料明细!");
          return false;
        } else {
          this.plszShow = true;
        }
      },
      plszOk() {
        let ck = this.plrkck ? this.plrkck : "";
        let sj = this.pldhsj ? this.pldhsj : "";
        let select = this.tableSelect;
        for (let item in this.tableData) {
          let id = this.tableData[item].id;
          if (select.filter((a) => a.id == id).length > 0) {
            if (ck != "") {
              this.tableData[item].storehouseId = ck;
            }
            if (sj != "") {
              this.tableData[item].arriveTime = sj;
            }
          }
        }
      },
      plszCancel() {},
      //表单上传
      beforeUpload() {},
      upFilesLoading() {
        this.uploading = true;
      },
      uploadFilesSuccess(response, file, fileList) {
        this.uploading = false;
        this.form.filesList.push({
          fileName: response.data.fileName,
          filePath: response.data.filePath,
          fileDetailType: "",
        });
      },
      plAdd(list) {
        this.contentShow = false;
        for (let item in list) {
          if (
            this.tableData.filter((a) => a.materialId == list[item].materialId)
            .length > 0
          ) {} else {
            if (this.ckList.length == 1) {
              list.forEach((a) => (a.storehouseId = this.ckList[0].twId));
            }
            this.tableData.push(list[item]);
          }
        }
      },
      //查询申购计划详情
      getSgjh(id, arr) {
        this.id = id;
        let postData = {
          id: id,
        };
        this.spinShow = true;
        queryPurchaseApplyInfo(postData).then((res) => {
          this.spinShow = false;
          if (res.status == 200) {
            this.form.jhdjh = res.data.code;
            this.form.bt = res.data.title;
            this.form.ssqy = `${res.data.areaId},${res.data.areaName}`;
            this.form.ssxm = `${res.data.projectId},${res.data.projectName}`;
            this.form.jhlx = res.data.type;
            this.form.date = res.data.applyMonth;
            // this.form.fgcgy = res.data.purchaserName;
            this.form.sqr = res.data.applicantName;
            this.form.spzt = res.data.applyStatus;
            if (res.data.applyStatus == "2") {
              this.tableColumn = [{
                  type: "selection",
                  width: 60,
                  align: "center",
                resizable: true,
                },
                {
                  type: "index",
                  title: "序号",
                  width: 60,
                  align: "center",
                  resizable: true,
                },
                {
                  title: "物料编码",
                  key: "code",
                  tooltip: true,
                  width: 180,
                  resizable: true,
                },
                {
                  title: "物料分类",
                  key: "firstClassName",
                  tooltip: true,
                  width: 100,
                  resizable: true,
                },
                {
                  title: "物料名称",
                  key: "materialName",
                  tooltip: true,
                  width: 100,
                  resizable: true,
                },
                {
                  title: "规格型号",
                  key: "specs",
                  tooltip: true,
                  width: 100,
                  resizable: true,
                },
                {
                  title: "单位",
                  key: "unit",
                  tooltip: true,
                  width: 100,
                  resizable: true,
                },
                {
                  title: "库存量",
                  key: "inventory",
                  tooltip: true,
                  width: 100,
                  resizable: true,
                },
                {
                  title: "申购数量",
                  slot: "amount",
                  tooltip: true,
                  width: 100,
                  resizable: true,
                },
                {
                  title: "参考单价(元)",
                  key: "referencePrice",
                  tooltip: true,
                  width: 120,
                  resizable: true,
                },
                {
                  title: "参考总价(元)",
                  slot: "referenceTotalPrice",
                  tooltip: true,
                  width: 120,
                  resizable: true,
                },
                {
                  title: "入库仓库",
                  slot: "storehouseId",
                  tooltip: true,
                  width: 100,
                  resizable: true,
                },
                {
                  title: "对接人",
                  slot: "linkedPersonId",
                  tooltip: true,
                  width: 100,
                  resizable: true,
                },
                // {
                //   title: "单据类型",
                //   slot: "billType",
                //   tooltip: true,
                //   width: 100
                // },
                {
                  title: "计划到货时间",
                  slot: "arriveTime",
                  tooltip: true,
                  width: 130,
                  resizable: true,
                },
                {
                  title: "备注",
                  slot: "remark",
                  tooltip: true,
                  width: 150,
                  resizable: true,
                },
                {
                  title: "状态",
                  slot: "isCancel",
                  tooltip: true,
                  width: 100,
                  resizable: true,
                },
                {
                  title: "操作",
                  slot: "cz",
                  tooltip: true,
                  width: 80,
                  resizable: true,
                },
              ];
            }
            this.form.status = res.data.status;
            this.form.fgcgy = `${res.data.purchaserId}`;
            this.form.ylh = res.data.gpUnionpayNo;
            this.form.sf = res.data.gpProvince;
            this.form.yb = res.data.gpPostalCode;
            this.form.email = res.data.gpEmail;
            this.form.fax = res.data.gpFax;
            this.form.filesList = res.data.attachmentList;
            this.form.sm = res.data.remark;
            this.requestId = res.data.requestId;
            let docData = {
              projectId: res.data.projectId,
            };
            getDockUserList(docData).then((res) => {
              this.djrList = res.data;
            });
            let postData = {
              areaId: this.form.ssqy.split(",")[0],
              userId: localStorage.user_id,
            };
            getProjectList(postData).then((res) => {
              this.ssxmList = res.items;
            });
            let getData = {
              areaId: res.data.areaId,
              projectId: res.data.projectId,
            };
            warehouseList(getData).then((res) => {
              if (res.status == 200) {
                for (let i in res.data) {
                  res.data[i].twId = res.data[i].twId;
                }
                this.ckList = res.data;
              }
            });
            if (arr) {
              this.tableData = arr;
            } else {
              this.tableData = res.data.detailList;
            }
          }
        });
      },
      //新增申购计划
      addSgjh() {
        let mustArr = ["ssqy", "ssxm", "jhlx", "date", "fgcgy"];
        for (let i in mustArr) {
          if (!this.form[mustArr[i]]) {
            this.$Message.error("请将信息填写完整!");
            return false;
          }
          if (this.form[mustArr[i]] == "" || this.form[mustArr[i]].length == 0) {
            this.$Message.error("请将信息填写完整!");
            return false;
          }
        }
        if (this.planType == "add") {
          let postData = {
            areaId: this.form.ssqy.split(",")[0],
            areaName: this.form.ssqy.split(",")[1],
            projectId: this.form.ssxm.split(",")[0],
            projectName: this.form.ssxm.split(",")[1],
            type: this.form.jhlx,
            applyMonth: this.form.date,
            purchaserId: this.form.fgcgy,
            purchaserName: this.form.fgcgy == "" ?
              "" : this.cgyList.filter((a) => a.userId == this.form.fgcgy)[0]
              .userName,
            applicantId: localStorage.user_id,
            applicantName: localStorage.user_name,
            attachmentList: this.form.filesList,
            remark: this.form.sm,
          };
          this.spinShow = true;
          addPurchaseApply(postData).then((res) => {
            this.spinShow = false;
            if (res.status == 200) {
              this.$Message.success("新建申购计划成功!");
              // this.form.bt = res.data.title;
              // this.form.jhdjh = res.data.code;
              // this.form.filesList = res.data.attachmentList;
              this.id = res.data.id;
              this.planType = "edit";
              this.getSgjh(this.id);
              // let getData = {
              //   areaId: res.data.areaId,
              //   projectId: res.data.projectId
              // };
              // warehouseList(getData).then(res => {
              //   if (res.status == 200) {
              //     this.ckList = res.data;
              //   }
              // });
            } else {
              this.$Message.error(res.message);
            }
          });
        } else {
          this.editSgjh();
        }
      },
      editSgjh() {
        for (let i in this.tableData) {
          if (this.tableData[i].storehouseId == "") {
            this.$Message.error("请选择计划明细仓库!");
            return false;
          }
          if (this.tableData[i].amount <= 0) {
            this.$Message.error("计划明细申购数量不能小于或等于0!");
            return false;
          }
          // if (this.tableData[i].billType == "") {
          //   this.$Message.error("请选择计划明细单据类型!");
          //   return false;
          // }
          this.tableData[i].referenceTotalPrice = (
            this.tableData[i].amount * this.tableData[i].referencePrice
          ).toFixed(3);
          this.tableData[i].storehouseName = this.ckList.filter(
            (a) => a.twId == this.tableData[i].storehouseId
          )[0].twName;
        }
        // for (let i in this.tableData) {
        //   this.tableData[i].amount = Number(this.tableData[i].amount).toFixed(3);
        // }
        let postData = {
          areaId: this.form.ssqy.split(",")[0],
          areaName: this.form.ssqy.split(",")[1],
          projectId: this.form.ssxm.split(",")[0],
          projectName: this.form.ssxm.split(",")[1],
          type: this.form.jhlx,
          applyMonth: this.form.date,
          purchaserId: this.form.fgcgy,
          purchaserName: this.form.fgcgy == "" ?
            "" : this.cgyList.filter((a) => a.userId == this.form.fgcgy)[0]
            .userName,
          applicantId: localStorage.user_id,
          applicantName: localStorage.user_name,
          attachmentList: this.form.filesList,
          remark: this.form.sm,
          id: this.id,
          detailList: this.tableData,
        };
        this.spinShow = true;
        return new Promise((resolve, reject) => {
          editPurchaseApply(postData).then((res) => {
            this.spinShow = false;
            if (res.status == 200) {
              this.$Message.success("编辑申购计划成功!");
              this.getSgjh(this.id);
              resolve();
              // this.cancel();
            } else {
              this.$Message.error(res.message);
              reject();
            }
          });
        });
      },
      tableOnSelect(selection, row) {
        this.tableSelect = selection;
      },
      tableOnCancel(selection, row) {
        this.tableSelect = selection;
      },
      //审批记录跳转
      toSpjl() {
        let link =
          `http://oa.kingser.com:88/westvalley/PSWorkflow/PSWorkflowDecode.jsp?loginmsg=bG9naW5pZD1wbXMmdXNlcnBhc3N3b3JkPVBBYjEyMzQ1Nio=&requestid=${this.requestId}`;
        window.open(link);
      },
      submitSgjh() {
        if (this.submitLoading) {
          return false;
        }
        let cango = true;
        for (let i in this.tableData) {
          if (this.tableData[i].storehouseId == "") {
            cango = false;
            this.$Message.error("请选择计划明细仓库!");
            return false;
          }
          if (this.tableData[i].amount <= 0) {
            this.$Message.error("计划明细申购数量不能小于或等于0!");
            cango = false;
            return false;
          }
          this.tableData[i].referenceTotalPrice = (
            this.tableData[i].amount * this.tableData[i].referencePrice
          ).toFixed(3);
          this.tableData[i].storehouseName = this.ckList.filter(
            (a) => a.twId == this.tableData[i].storehouseId
          )[0].twName;
        }
        if (!cango) {
          return false;
        }
        this.spinShow = true;
        this.submitLoading = true;
        this.editSgjh()
          .then(() => {
            let postData = {
              id: this.id,
            };
            submitPurchaseApply(postData).then((res) => {
              this.submitLoading = false;
              this.spinShow = false;
              if (res.status == 200) {
                this.$Message.success("提交申购计划成功!");
                this.getSgjh(this.id);
              } else {
                this.$Message.error(res.message);
              }
            });
          })
          .catch(() => {
            this.submitLoading = false;
            this.spinShow = false;
          });
      },
      //对接人选择
      djrChange(val, index) {
        // console.log(val, index);
        this.tableData[index].linkedPersonName = val.label;
      },
      //所属区域切换
      ssqyChange(val) {
        if (this.form.ssqy) {
          let postData = {
            areaId: this.form.ssqy.split(",")[0],
            userId: localStorage.user_id,
          };
          getProjectList(postData).then((res) => {
            this.form.ssxm = "";
            this.ssxmList = res.items;
          });
        }
      },
      deleteRow(index) {
        this.tableData.splice(index, 1);
      },
      qxOk() {
        if (this.qxsm == "") {
          this.$Message.error("请填写取消说明");
          return false;
        } else {
          let postData = {
            purchaseApplyDetailId: this.qxrow.id,
            cancelReason: this.qxsm,
          };
          cancelPurchaseApplyDetail(postData).then((res) => {
            if (res.status == 200) {
              this.$Message.success("取消申购计划明细成功!");
              this.tableData[this.qxindex].isCancel = 1;
              this.qxCancel();
              this.getSgjh(this.id);
            } else {
              this.$Message.error(res.message);
            }
          });
        }
      },
      qxCancel() {
        this.qxShow = false;
        this.qxsm = "";
        this.qxindex = null;
        this.qxrow = null;
      },
      cancelRow(row, index) {
        if (this.form.sqr != localStorage.user_name) {
          this.$Message.error("非计划申请人不允许取消申购计划明细!");
          return false;
        } else {
          this.qxShow = true;
          this.qxrow = row;
          this.qxindex = index;
        }
        // editPurchaseApplyDetailState(row.id).then(res => {
        //   if (res.status == 200) {
        //     this.$Message.success("取消申购计划明细成功!");
        //     this.tableData[index].isCancel = 1;
        //   } else {
        //     this.$Message.error(res.message);
        //   }
        // });
      },
      //明细弹窗
      addMxShow() {
        this.contentShow = true;
        this.$refs.add.projectId = this.form.ssxm;
        this.$refs.add.documentNo = this.form.jhdjh;
        this.$refs.add.getTableData();
      },
      //返回、取消
      cancel() {
        this.submitLoading = false;
        this.form = {
          jhdjh: "", // 计划单据号
          bt: "", //标题
          spzt: 0, //审批状态
          date: "", //计划月份
          ssqy: "", //所属区域
          ssxm: "", //所属项目
          jhlx: "", //计划类型
          fgcgy: "", //分管采购员
          totalPrice: 0, //总价
          sqr: localStorage.user_name, //申请人
          filesList: [],
        };
        this.tableColumn = [{
            type: "selection",
            width: 60,
            align: "center",
          resizable: true,
          },
          {
            type: "index",
            title: "序号",
            width: 60,
            align: "center",
            resizable: true,
          },
          {
            title: "物料编码",
            key: "code",
            tooltip: true,
            width: 180,
            resizable: true,
          },
          {
            title: "物料分类",
            key: "firstClassName",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          {
            title: "物料名称",
            key: "materialName",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          {
            title: "规格型号",
            key: "specs",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          {
            title: "单位",
            key: "unit",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          {
            title: "库存量",
            key: "inventory",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          {
            title: "申购数量",
            slot: "amount",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          {
            title: "参考单价(元)",
            key: "referencePrice",
            tooltip: true,
            width: 120,
            resizable: true,
          },
          {
            title: "参考总价(元)",
            slot: "referenceTotalPrice",
            tooltip: true,
            width: 120,
            resizable: true,
          },
          {
            title: "入库仓库",
            slot: "storehouseId",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          {
            title: "对接人",
            slot: "linkedPersonId",
            tooltip: true,
            width: 100,
            resizable: true,
          },
          // {
          //   title: "单据类型",
          //   slot: "billType",
          //   tooltip: true,
          //   width: 100
          // },
          {
            title: "计划到货时间",
            slot: "arriveTime",
            tooltip: true,
            width: 130,
            resizable: true,
          },
          {
            title: "备注",
            slot: "remark",
            tooltip: true,
            width: 150,
            resizable: true,
          },
          {
            title: "操作",
            slot: "cz",
            tooltip: true,
            width: 80,
            resizable: true,
          },
        ];
        this.id = "";
        this.tableData = [];
        this.tableSelect = [];
        this.planType = "add";
        this.spinShow = false;
        this.$emit("return");
      },
    },
    watch: {
      ssqyList(val) {
        if (val && val.length && val.length === 1) {
          const [{
            areaId,
            areaName
          }] = val;
          this.form.ssqy = `${areaId},${areaName}`;
          this.ssqyChange();
        }
      },
      ssxmList(val) {
        if (val && val.length && val.length === 1) {
          console.log("change");
          const [{
            projectId,
            projectName
          }] = val;
          this.form.ssxm = `${projectId},${projectName}`;
        }
      },
      tableData: {
        handler(val, name) {
          // console.log(val, 11111111111111111);
          let total = 0;
          let str = "";
          for (let item in val) {
            if (val[item].isCancel) {} else {
              total += val[item].referencePrice * val[item].amount;
            }
          }
          this.form.totalPrice = Number(total).toFixed(3);
        },
        deep: true,
      },
    },
  };

</script>

<style lang="scss" scoped>
  .mustSpan {
    color: red;
    margin-left: 2px;
  }

  button {
    min-width: 80px;
  }

  .uplCont {
    border-left: 1px solid #e4e4e4;

    .upl {
      flex: auto;
      border-right: 1px solid #e4e4e4;

      &:nth-child(1) {
        background: #f8f9fb;
        display: flex;
        align-items: center;
        justify-content: center;
      }
    }

    .uplf {
      display: flex;
      align-items: center;
      justify-content: center;
      min-height: 80px;
    }
  }

  .mainCont .tables {
    min-height: 50px;
    border-right: 1px solid #e4e4e4;
    border-bottom: 1px solid #e4e4e4;
    display: flex;
    align-items: center;
    justify-content: center;
    word-break: break-all;

    &:nth-child(2n + 1) {
      background: #f8f9fb;
    }
  }

  .mainCont {
    border-left: 1px solid #e4e4e4;
    border-top: 1px solid #e4e4e4;
  }

  ivu-card-head-inner,
  .ivu-card-head p {
    display: inline-block;
    width: 100%;
    height: 20px;
    line-height: 20px;
    font-size: 14px;
    color: #17233d;
    font-weight: 700;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: normal;
  }

</style>