|  | @@ -0,0 +1,1066 @@
 | 
	
		
			
				|  |  | +<template>
 | 
	
		
			
				|  |  | +  <div class="borderless" v-loading="pageLoading">
 | 
	
		
			
				|  |  | +    <div class="customer-head">
 | 
	
		
			
				|  |  | +      <div class="customer-back">
 | 
	
		
			
				|  |  | +        <el-button
 | 
	
		
			
				|  |  | +          type="danger"
 | 
	
		
			
				|  |  | +          style="border: none;background: none;color: red"
 | 
	
		
			
				|  |  | +          icon="el-icon-arrow-left"
 | 
	
		
			
				|  |  | +          @click="backToList"
 | 
	
		
			
				|  |  | +          :loading="btnLoading"
 | 
	
		
			
				|  |  | +        >返回列表</el-button>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +      <div class="add-customer-btn">
 | 
	
		
			
				|  |  | +        <el-button
 | 
	
		
			
				|  |  | +          type="primary"
 | 
	
		
			
				|  |  | +          size="small"
 | 
	
		
			
				|  |  | +          class="el-button--small-yh"
 | 
	
		
			
				|  |  | +          @click.stop="openEdit"
 | 
	
		
			
				|  |  | +          v-if="disabled"
 | 
	
		
			
				|  |  | +        >编 辑</el-button>
 | 
	
		
			
				|  |  | +        <el-button
 | 
	
		
			
				|  |  | +          v-if="checker && form.status != 3"
 | 
	
		
			
				|  |  | +          type="primary"
 | 
	
		
			
				|  |  | +          size="small"
 | 
	
		
			
				|  |  | +          class="el-button--small-yh"
 | 
	
		
			
				|  |  | +          @click.stop="openCheckDialog">
 | 
	
		
			
				|  |  | +          审批
 | 
	
		
			
				|  |  | +        </el-button>
 | 
	
		
			
				|  |  | +        <el-button
 | 
	
		
			
				|  |  | +          v-if="form.status > 0"
 | 
	
		
			
				|  |  | +          @click.native="checkScheduleDialog = true,checkId=form.id"
 | 
	
		
			
				|  |  | +          type="primary"
 | 
	
		
			
				|  |  | +          size="small"
 | 
	
		
			
				|  |  | +        >审核进度</el-button>
 | 
	
		
			
				|  |  | +<!--        <el-button-->
 | 
	
		
			
				|  |  | +<!--          type="primary"-->
 | 
	
		
			
				|  |  | +<!--          v-if="!checkDisabled"-->
 | 
	
		
			
				|  |  | +<!--          :disabled="!form.id || disabled"-->
 | 
	
		
			
				|  |  | +<!--          size="small"-->
 | 
	
		
			
				|  |  | +<!--          @click="pleaseCheck"-->
 | 
	
		
			
				|  |  | +<!--          :loading="btnLoading"-->
 | 
	
		
			
				|  |  | +<!--        >请核</el-button>-->
 | 
	
		
			
				|  |  | +        <el-button
 | 
	
		
			
				|  |  | +          type="success"
 | 
	
		
			
				|  |  | +          :disabled="!form.id"
 | 
	
		
			
				|  |  | +          size="small"
 | 
	
		
			
				|  |  | +          @click="copyDoc"
 | 
	
		
			
				|  |  | +          :loading="btnLoading"
 | 
	
		
			
				|  |  | +          v-if="false"
 | 
	
		
			
				|  |  | +        >复制单据</el-button>
 | 
	
		
			
				|  |  | +        <el-button
 | 
	
		
			
				|  |  | +          type="primary"
 | 
	
		
			
				|  |  | +          @click="editCustomer"
 | 
	
		
			
				|  |  | +          size="small"
 | 
	
		
			
				|  |  | +          :loading="btnLoading"
 | 
	
		
			
				|  |  | +        >保存数据</el-button>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  | +    <div class="customer-main">
 | 
	
		
			
				|  |  | +      <containerTitle title="基础信息"/>
 | 
	
		
			
				|  |  | +      <basic-container :showBtn="true">
 | 
	
		
			
				|  |  | +        <avue-form
 | 
	
		
			
				|  |  | +          ref="form"
 | 
	
		
			
				|  |  | +          class="trading-form"
 | 
	
		
			
				|  |  | +          v-model="form"
 | 
	
		
			
				|  |  | +          :option="option"
 | 
	
		
			
				|  |  | +        >
 | 
	
		
			
				|  |  | +          <template slot="createUser">
 | 
	
		
			
				|  |  | +            <el-select
 | 
	
		
			
				|  |  | +              v-model="form.createUser"
 | 
	
		
			
				|  |  | +              filterable
 | 
	
		
			
				|  |  | +              clearable
 | 
	
		
			
				|  |  | +              size="small"
 | 
	
		
			
				|  |  | +              placeholder="请选择"
 | 
	
		
			
				|  |  | +              @change="userHandle"
 | 
	
		
			
				|  |  | +              @clear="form.userName == null"
 | 
	
		
			
				|  |  | +              disabled
 | 
	
		
			
				|  |  | +            >
 | 
	
		
			
				|  |  | +              <el-option
 | 
	
		
			
				|  |  | +                v-for="(item,index) in userList"
 | 
	
		
			
				|  |  | +                :key="index"
 | 
	
		
			
				|  |  | +                :label="item.realName"
 | 
	
		
			
				|  |  | +                :value="item.id"
 | 
	
		
			
				|  |  | +              ></el-option>
 | 
	
		
			
				|  |  | +            </el-select>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template slot="deptId">
 | 
	
		
			
				|  |  | +            <avue-input-tree
 | 
	
		
			
				|  |  | +              leaf-only
 | 
	
		
			
				|  |  | +              style="width: 100%;"
 | 
	
		
			
				|  |  | +              size="small"
 | 
	
		
			
				|  |  | +              :props="{ label: 'title' }"
 | 
	
		
			
				|  |  | +              v-model="form.deptId"
 | 
	
		
			
				|  |  | +              placeholder=" "
 | 
	
		
			
				|  |  | +              type="tree"
 | 
	
		
			
				|  |  | +              :dic="dic"
 | 
	
		
			
				|  |  | +              :nodeClick="deptClick"
 | 
	
		
			
				|  |  | +              disabled=""
 | 
	
		
			
				|  |  | +            ></avue-input-tree>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template slot="origWarehouse">
 | 
	
		
			
				|  |  | +            <warehouse-select
 | 
	
		
			
				|  |  | +              v-model="form.origWarehouse"
 | 
	
		
			
				|  |  | +              :configuration="configurationWarehouse"/>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template slot="warehouse">
 | 
	
		
			
				|  |  | +            <warehouse-select
 | 
	
		
			
				|  |  | +              v-model="form.warehouse"
 | 
	
		
			
				|  |  | +              :configuration="configurationWarehouse"/>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </avue-form>
 | 
	
		
			
				|  |  | +      </basic-container>
 | 
	
		
			
				|  |  | +      <containerTitle title="商品信息"/>
 | 
	
		
			
				|  |  | +      <basic-container>
 | 
	
		
			
				|  |  | +        <avue-crud
 | 
	
		
			
				|  |  | +          ref="crud"
 | 
	
		
			
				|  |  | +          :data="dataList"
 | 
	
		
			
				|  |  | +          :option="tableOption"
 | 
	
		
			
				|  |  | +          :cell-style="cellStyle"
 | 
	
		
			
				|  |  | +          @saveColumn="saveColumn"
 | 
	
		
			
				|  |  | +          @resetColumn="resetColumn"
 | 
	
		
			
				|  |  | +        >
 | 
	
		
			
				|  |  | +          <template slot="menuLeft">
 | 
	
		
			
				|  |  | +            <el-button
 | 
	
		
			
				|  |  | +              type="primary"
 | 
	
		
			
				|  |  | +              icon="el-icon-plus"
 | 
	
		
			
				|  |  | +              size="small"
 | 
	
		
			
				|  |  | +              @click.stop="newDetails"
 | 
	
		
			
				|  |  | +              :disabled="disabled || checkDisabled"
 | 
	
		
			
				|  |  | +            >录入明细</el-button>
 | 
	
		
			
				|  |  | +            <el-button
 | 
	
		
			
				|  |  | +              type="info"
 | 
	
		
			
				|  |  | +              icon="el-icon-printer"
 | 
	
		
			
				|  |  | +              size="small"
 | 
	
		
			
				|  |  | +              @click="openReport"
 | 
	
		
			
				|  |  | +            >报表打印</el-button>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template slot="menu" slot-scope="{ row, index }">
 | 
	
		
			
				|  |  | +            <el-button
 | 
	
		
			
				|  |  | +              size="small"
 | 
	
		
			
				|  |  | +              icon="el-icon-edit"
 | 
	
		
			
				|  |  | +              type="text"
 | 
	
		
			
				|  |  | +              @click="rowCell(row, index)"
 | 
	
		
			
				|  |  | +              :disabled="disabled || checkDisabled"
 | 
	
		
			
				|  |  | +            >{{ row.$cellEdit ? "保存" : "修改" }}</el-button>
 | 
	
		
			
				|  |  | +            <el-button
 | 
	
		
			
				|  |  | +              size="small"
 | 
	
		
			
				|  |  | +              icon="el-icon-delete"
 | 
	
		
			
				|  |  | +              type="text"
 | 
	
		
			
				|  |  | +              @click="rowDel(row, index)"
 | 
	
		
			
				|  |  | +              :disabled="disabled || checkDisabled"
 | 
	
		
			
				|  |  | +            >删除</el-button>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template slot="code" slot-scope="{ row, index }">
 | 
	
		
			
				|  |  | +            <span v-if="row.$cellEdit" style="display:flex">
 | 
	
		
			
				|  |  | +              <el-select
 | 
	
		
			
				|  |  | +                v-model="row.code"
 | 
	
		
			
				|  |  | +                placeholder="请选择"
 | 
	
		
			
				|  |  | +                filterable
 | 
	
		
			
				|  |  | +                size="small"
 | 
	
		
			
				|  |  | +                style="width:60%"
 | 
	
		
			
				|  |  | +                @change="codeChange(row, index)"
 | 
	
		
			
				|  |  | +              >
 | 
	
		
			
				|  |  | +                <el-option
 | 
	
		
			
				|  |  | +                  v-for="item in goodsoptions"
 | 
	
		
			
				|  |  | +                  :key="item.id"
 | 
	
		
			
				|  |  | +                  :label="item.code"
 | 
	
		
			
				|  |  | +                  :value="item.code"
 | 
	
		
			
				|  |  | +                >
 | 
	
		
			
				|  |  | +                </el-option>
 | 
	
		
			
				|  |  | +              </el-select>
 | 
	
		
			
				|  |  | +              <el-button
 | 
	
		
			
				|  |  | +                icon="el-icon-search"
 | 
	
		
			
				|  |  | +                size="small"
 | 
	
		
			
				|  |  | +                @click="rePick(row, index)"
 | 
	
		
			
				|  |  | +              ></el-button>
 | 
	
		
			
				|  |  | +            </span>
 | 
	
		
			
				|  |  | +            <span v-else> {{ row.code }}</span>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template slot="cname" slot-scope="{ row, index }">
 | 
	
		
			
				|  |  | +            <span v-if="row.$cellEdit" style="display:flex">
 | 
	
		
			
				|  |  | +              <el-select
 | 
	
		
			
				|  |  | +                v-model="row.itemId"
 | 
	
		
			
				|  |  | +                placeholder="请选择"
 | 
	
		
			
				|  |  | +                size="small"
 | 
	
		
			
				|  |  | +                filterable
 | 
	
		
			
				|  |  | +                style="width:60%"
 | 
	
		
			
				|  |  | +                @change="cnameChange(row, index)"
 | 
	
		
			
				|  |  | +              >
 | 
	
		
			
				|  |  | +                <el-option
 | 
	
		
			
				|  |  | +                  v-for="item in goodsoptions"
 | 
	
		
			
				|  |  | +                  :key="item.id"
 | 
	
		
			
				|  |  | +                  :label="item.cname"
 | 
	
		
			
				|  |  | +                  :value="item.id"
 | 
	
		
			
				|  |  | +                >
 | 
	
		
			
				|  |  | +                </el-option>
 | 
	
		
			
				|  |  | +              </el-select>
 | 
	
		
			
				|  |  | +              <el-button
 | 
	
		
			
				|  |  | +                icon="el-icon-search"
 | 
	
		
			
				|  |  | +                size="small"
 | 
	
		
			
				|  |  | +                @click="rePick(row, index)"
 | 
	
		
			
				|  |  | +              ></el-button>
 | 
	
		
			
				|  |  | +            </span>
 | 
	
		
			
				|  |  | +            <span v-else> {{ row.cname }}</span>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template slot="orderQuantity" slot-scope="{ row, index }">
 | 
	
		
			
				|  |  | +            <el-input-number
 | 
	
		
			
				|  |  | +              v-if="row.$cellEdit"
 | 
	
		
			
				|  |  | +              v-model="row.orderQuantity"
 | 
	
		
			
				|  |  | +              size="small"
 | 
	
		
			
				|  |  | +              :controls="false"
 | 
	
		
			
				|  |  | +              :precision="0"
 | 
	
		
			
				|  |  | +              style="width: 100%"
 | 
	
		
			
				|  |  | +            />
 | 
	
		
			
				|  |  | +            <span v-else>{{ row.orderQuantity | IntegerFormat }}</span>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </avue-crud>
 | 
	
		
			
				|  |  | +      </basic-container>
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <el-dialog
 | 
	
		
			
				|  |  | +      append-to-body
 | 
	
		
			
				|  |  | +      title="审批"
 | 
	
		
			
				|  |  | +      class="el-dialogDeep"
 | 
	
		
			
				|  |  | +      :visible.sync="checkDialog"
 | 
	
		
			
				|  |  | +      width="50%"
 | 
	
		
			
				|  |  | +      :close-on-click-modal="false"
 | 
	
		
			
				|  |  | +      :destroy-on-close="true"
 | 
	
		
			
				|  |  | +      :close-on-press-escape="false"
 | 
	
		
			
				|  |  | +      v-dialog-drag
 | 
	
		
			
				|  |  | +    >
 | 
	
		
			
				|  |  | +      <check
 | 
	
		
			
				|  |  | +        :checkData="checkData"
 | 
	
		
			
				|  |  | +        :checkDetail="false"
 | 
	
		
			
				|  |  | +        :idList="[]"
 | 
	
		
			
				|  |  | +        @choceCheckFun="choceCheckFun"
 | 
	
		
			
				|  |  | +      >
 | 
	
		
			
				|  |  | +      </check>
 | 
	
		
			
				|  |  | +    </el-dialog>
 | 
	
		
			
				|  |  | +    <el-dialog
 | 
	
		
			
				|  |  | +      append-to-body
 | 
	
		
			
				|  |  | +      title="审批进度"
 | 
	
		
			
				|  |  | +      class="el-dialogDeep"
 | 
	
		
			
				|  |  | +      :visible.sync="checkScheduleDialog"
 | 
	
		
			
				|  |  | +      width="40%"
 | 
	
		
			
				|  |  | +      :close-on-click-modal="false"
 | 
	
		
			
				|  |  | +      :destroy-on-close="true"
 | 
	
		
			
				|  |  | +      :close-on-press-escape="false"
 | 
	
		
			
				|  |  | +      v-dialog-drag
 | 
	
		
			
				|  |  | +    >
 | 
	
		
			
				|  |  | +      <check-schedule
 | 
	
		
			
				|  |  | +        :checkId="checkId"
 | 
	
		
			
				|  |  | +        :batchNo="batchNo"
 | 
	
		
			
				|  |  | +        @choceScheduleFun="choceScheduleFun"
 | 
	
		
			
				|  |  | +      >
 | 
	
		
			
				|  |  | +      </check-schedule>
 | 
	
		
			
				|  |  | +    </el-dialog>
 | 
	
		
			
				|  |  | +    <!--    报表-->
 | 
	
		
			
				|  |  | +    <report-dialog
 | 
	
		
			
				|  |  | +      :switchDialog="switchDialog"
 | 
	
		
			
				|  |  | +      :reportId="form.id"
 | 
	
		
			
				|  |  | +      reportName="事务-报销单"
 | 
	
		
			
				|  |  | +      @onClose="onClose()"
 | 
	
		
			
				|  |  | +    />
 | 
	
		
			
				|  |  | +    <!--    商品弹窗-->
 | 
	
		
			
				|  |  | +    <el-dialog
 | 
	
		
			
				|  |  | +      title="导入商品"
 | 
	
		
			
				|  |  | +      append-to-body
 | 
	
		
			
				|  |  | +      class="el-dialogDeep"
 | 
	
		
			
				|  |  | +      :visible.sync="dialogVisible"
 | 
	
		
			
				|  |  | +      width="80%"
 | 
	
		
			
				|  |  | +      :close-on-click-modal="false"
 | 
	
		
			
				|  |  | +      :destroy-on-close="true"
 | 
	
		
			
				|  |  | +      :close-on-press-escape="false"
 | 
	
		
			
				|  |  | +      @close="closeGoods"
 | 
	
		
			
				|  |  | +      top="5vh"
 | 
	
		
			
				|  |  | +      v-dialog-drag
 | 
	
		
			
				|  |  | +    >
 | 
	
		
			
				|  |  | +      <span>
 | 
	
		
			
				|  |  | +        <el-row>
 | 
	
		
			
				|  |  | +          <el-col :span="4">
 | 
	
		
			
				|  |  | +            <div>
 | 
	
		
			
				|  |  | +              <el-scrollbar>
 | 
	
		
			
				|  |  | +                <basic-container>
 | 
	
		
			
				|  |  | +                  <avue-tree
 | 
	
		
			
				|  |  | +                    :option="treeOption"
 | 
	
		
			
				|  |  | +                    @node-click="nodeClick"
 | 
	
		
			
				|  |  | +                    :style="treeStyle"
 | 
	
		
			
				|  |  | +                  />
 | 
	
		
			
				|  |  | +                </basic-container>
 | 
	
		
			
				|  |  | +              </el-scrollbar>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +          </el-col>
 | 
	
		
			
				|  |  | +          <el-col :span="20">
 | 
	
		
			
				|  |  | +            <avue-crud
 | 
	
		
			
				|  |  | +              :option="goodsOption"
 | 
	
		
			
				|  |  | +              :table-loading="loading"
 | 
	
		
			
				|  |  | +              :data="goodsListShow"
 | 
	
		
			
				|  |  | +              ref="goodsCrud"
 | 
	
		
			
				|  |  | +              :search.sync="search"
 | 
	
		
			
				|  |  | +              @search-change="searchChange"
 | 
	
		
			
				|  |  | +              @selection-change="selectionChange"
 | 
	
		
			
				|  |  | +              @row-click="rowClick"
 | 
	
		
			
				|  |  | +              :page.sync="page"
 | 
	
		
			
				|  |  | +              @on-load="onLoad"
 | 
	
		
			
				|  |  | +              @saveColumn="saveGoodsColumn"
 | 
	
		
			
				|  |  | +              @resetColumn="resetGoodsColumn"
 | 
	
		
			
				|  |  | +              :cell-style="cellStyle"
 | 
	
		
			
				|  |  | +            >
 | 
	
		
			
				|  |  | +              <template slot="menuLeft">
 | 
	
		
			
				|  |  | +                <el-tabs v-model="activeName" @tab-click="tabHandle">
 | 
	
		
			
				|  |  | +                  <el-tab-pane label="查询结果" name="searchList"></el-tab-pane>
 | 
	
		
			
				|  |  | +                  <el-tab-pane label="已选定数据" name="importStaging"></el-tab-pane>
 | 
	
		
			
				|  |  | +                </el-tabs>
 | 
	
		
			
				|  |  | +              </template>
 | 
	
		
			
				|  |  | +              <template slot-scope="scope" slot="menu">
 | 
	
		
			
				|  |  | +                <el-button
 | 
	
		
			
				|  |  | +                  type="text"
 | 
	
		
			
				|  |  | +                  icon="el-icon-edit"
 | 
	
		
			
				|  |  | +                  size="small"
 | 
	
		
			
				|  |  | +                  @click.stop="importStagList(scope.row,scope.index)"
 | 
	
		
			
				|  |  | +                  v-if="activeName=='searchList'"
 | 
	
		
			
				|  |  | +                  :disabled="goodsListSave.findIndex(item => item.id == scope.row.id) !== -1"
 | 
	
		
			
				|  |  | +                >选择
 | 
	
		
			
				|  |  | +                </el-button>
 | 
	
		
			
				|  |  | +                <el-button
 | 
	
		
			
				|  |  | +                  type="text"
 | 
	
		
			
				|  |  | +                  icon="el-icon-delete"
 | 
	
		
			
				|  |  | +                  size="small"
 | 
	
		
			
				|  |  | +                  @click.stop="removeStagList(scope.row,scope.index)"
 | 
	
		
			
				|  |  | +                  v-else
 | 
	
		
			
				|  |  | +                >移除
 | 
	
		
			
				|  |  | +                </el-button>
 | 
	
		
			
				|  |  | +              </template>
 | 
	
		
			
				|  |  | +            </avue-crud>
 | 
	
		
			
				|  |  | +          </el-col>
 | 
	
		
			
				|  |  | +        </el-row>
 | 
	
		
			
				|  |  | +      </span>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      <span slot="footer" class="dialog-footer">
 | 
	
		
			
				|  |  | +        <el-button @click="dialogVisible = false">取 消</el-button>
 | 
	
		
			
				|  |  | +        <el-button
 | 
	
		
			
				|  |  | +          type="primary"
 | 
	
		
			
				|  |  | +          @click="importGoods"
 | 
	
		
			
				|  |  | +          :disabled="selectionList.length == 0 && goodsListSave.length == 0"
 | 
	
		
			
				|  |  | +        >导入</el-button
 | 
	
		
			
				|  |  | +        >
 | 
	
		
			
				|  |  | +      </span>
 | 
	
		
			
				|  |  | +    </el-dialog>
 | 
	
		
			
				|  |  | +  </div>
 | 
	
		
			
				|  |  | +</template>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<script>
 | 
	
		
			
				|  |  | +import tableOption from "./config/customerContact.json";
 | 
	
		
			
				|  |  | +import goodsOption from "./config/commodity.json";
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  isDiscount,
 | 
	
		
			
				|  |  | +  isPercentage,
 | 
	
		
			
				|  |  | +  micrometerFormat,
 | 
	
		
			
				|  |  | +  IntegerFormat
 | 
	
		
			
				|  |  | +} from "@/util/validate";
 | 
	
		
			
				|  |  | +import { gainUser } from "@/api/basicData/customerInquiry";
 | 
	
		
			
				|  |  | +import {getUserInfo} from "@/api/system/user";
 | 
	
		
			
				|  |  | +import {getDeptTree} from "@/api/system/dept";
 | 
	
		
			
				|  |  | +import { getCurrentDate } from "@/util/date";
 | 
	
		
			
				|  |  | +import {dataDetail, typeSave, removeGoods, pleaseCheck} from "@/api/standAlone/reimbursement";
 | 
	
		
			
				|  |  | +import { contrastObj, contrastList } from "@/util/contrastData";
 | 
	
		
			
				|  |  | +import check from "@/components/check/check";
 | 
	
		
			
				|  |  | +import checkSchedule from "@/components/check/checkSchedule";
 | 
	
		
			
				|  |  | +import reportDialog from "@/components/report-dialog/main";
 | 
	
		
			
				|  |  | +import {getDeptLazyTree,
 | 
	
		
			
				|  |  | +  getGoods,} from "@/api/basicData/customerInquiry";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default {
 | 
	
		
			
				|  |  | +  name: "detail",
 | 
	
		
			
				|  |  | +  props: {
 | 
	
		
			
				|  |  | +    detailData: {
 | 
	
		
			
				|  |  | +      type: Object
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  components: {
 | 
	
		
			
				|  |  | +    check,
 | 
	
		
			
				|  |  | +    checkSchedule,
 | 
	
		
			
				|  |  | +    reportDialog
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  data() {
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      disabled: false,
 | 
	
		
			
				|  |  | +      pageLoading: false,
 | 
	
		
			
				|  |  | +      btnLoading: false,
 | 
	
		
			
				|  |  | +      form: {},
 | 
	
		
			
				|  |  | +      option: {
 | 
	
		
			
				|  |  | +        menuBtn: false,
 | 
	
		
			
				|  |  | +        labelWidth: 100,
 | 
	
		
			
				|  |  | +        column: [
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "原仓库",
 | 
	
		
			
				|  |  | +            prop: "origWarehouse",
 | 
	
		
			
				|  |  | +            rules: [
 | 
	
		
			
				|  |  | +              {
 | 
	
		
			
				|  |  | +                required: true,
 | 
	
		
			
				|  |  | +                message: " ",
 | 
	
		
			
				|  |  | +                trigger: "change"
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            ],
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +            slot: true,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "仓库",
 | 
	
		
			
				|  |  | +            prop: "warehouse",
 | 
	
		
			
				|  |  | +            rules: [
 | 
	
		
			
				|  |  | +              {
 | 
	
		
			
				|  |  | +                required: true,
 | 
	
		
			
				|  |  | +                message: " ",
 | 
	
		
			
				|  |  | +                trigger: "change"
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            ],
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +            slot: true,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "业务日期",
 | 
	
		
			
				|  |  | +            prop: "businessDate",
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +            type: "date",
 | 
	
		
			
				|  |  | +            format: "yyyy-MM-dd",
 | 
	
		
			
				|  |  | +            valueFormat: "yyyy-MM-dd 00:00:00",
 | 
	
		
			
				|  |  | +            rules: [
 | 
	
		
			
				|  |  | +              {
 | 
	
		
			
				|  |  | +                required: true,
 | 
	
		
			
				|  |  | +                message: " ",
 | 
	
		
			
				|  |  | +                trigger: "blur"
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            ]
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "仓管员",
 | 
	
		
			
				|  |  | +            prop: "keeper",
 | 
	
		
			
				|  |  | +            rules: [
 | 
	
		
			
				|  |  | +              {
 | 
	
		
			
				|  |  | +                required: true,
 | 
	
		
			
				|  |  | +                message: " ",
 | 
	
		
			
				|  |  | +                trigger: "blur"
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            ],
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +            slot: true,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "制单人",
 | 
	
		
			
				|  |  | +            prop: "createUser",
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +            slot: true,
 | 
	
		
			
				|  |  | +            disabled: true
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "制单部门",
 | 
	
		
			
				|  |  | +            prop: "deptId",
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +            slot: true,
 | 
	
		
			
				|  |  | +            disabled: true
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "制单日期",
 | 
	
		
			
				|  |  | +            prop: "createTime",
 | 
	
		
			
				|  |  | +            type: "date",
 | 
	
		
			
				|  |  | +            format: "yyyy-MM-dd HH:mm:ss",
 | 
	
		
			
				|  |  | +            valueFormat: "yyyy-MM-dd HH:mm:ss",
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +            slot: true,
 | 
	
		
			
				|  |  | +            disabled: true
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "系统编号",
 | 
	
		
			
				|  |  | +            prop: "sysNo",
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +            slot: true,
 | 
	
		
			
				|  |  | +            disabled: true,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "备注",
 | 
	
		
			
				|  |  | +            prop: "remarks",
 | 
	
		
			
				|  |  | +            type: "textarea",
 | 
	
		
			
				|  |  | +            minRows: 2,
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +        ],
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      dataList: [],
 | 
	
		
			
				|  |  | +      tableOption: {},
 | 
	
		
			
				|  |  | +      goodsoptions: [],
 | 
	
		
			
				|  |  | +      unitOption: [],
 | 
	
		
			
				|  |  | +      selectionList: [],
 | 
	
		
			
				|  |  | +      treeDeptId: null,
 | 
	
		
			
				|  |  | +      reData: null,
 | 
	
		
			
				|  |  | +      treeOption: {
 | 
	
		
			
				|  |  | +        nodeKey: "id",
 | 
	
		
			
				|  |  | +        lazy: true,
 | 
	
		
			
				|  |  | +        treeLoad: function(node, resolve) {
 | 
	
		
			
				|  |  | +          const parentId = node.level === 0 ? 0 : node.data.id;
 | 
	
		
			
				|  |  | +          getDeptLazyTree(parentId).then(res => {
 | 
	
		
			
				|  |  | +            resolve(
 | 
	
		
			
				|  |  | +              res.data.data.map(item => {
 | 
	
		
			
				|  |  | +                return {
 | 
	
		
			
				|  |  | +                  ...item,
 | 
	
		
			
				|  |  | +                  leaf: !item.hasChildren
 | 
	
		
			
				|  |  | +                };
 | 
	
		
			
				|  |  | +              })
 | 
	
		
			
				|  |  | +            );
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        addBtn: false,
 | 
	
		
			
				|  |  | +        menu: false,
 | 
	
		
			
				|  |  | +        size: "small",
 | 
	
		
			
				|  |  | +        props: {
 | 
	
		
			
				|  |  | +          label: "title",
 | 
	
		
			
				|  |  | +          value: "value",
 | 
	
		
			
				|  |  | +          children: "children"
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      search: {},
 | 
	
		
			
				|  |  | +      treeStyle: "height:" + (window.innerHeight - 315) + "px",
 | 
	
		
			
				|  |  | +      goodsOption: {},
 | 
	
		
			
				|  |  | +      loading: false,
 | 
	
		
			
				|  |  | +      switchDialog: false, // 报表弹窗控制
 | 
	
		
			
				|  |  | +      userList: [],
 | 
	
		
			
				|  |  | +      dic: [], // 部门
 | 
	
		
			
				|  |  | +      loginUser: '', // 登录人
 | 
	
		
			
				|  |  | +      // 仓库配置
 | 
	
		
			
				|  |  | +      configurationWarehouse: {
 | 
	
		
			
				|  |  | +        multipleChoices: false,
 | 
	
		
			
				|  |  | +        multiple: false,
 | 
	
		
			
				|  |  | +        collapseTags: false,
 | 
	
		
			
				|  |  | +        placeholder: "请点击右边按钮选择",
 | 
	
		
			
				|  |  | +        dicData: [],
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      oldForm: {},
 | 
	
		
			
				|  |  | +      oldDataList: [],
 | 
	
		
			
				|  |  | +      checkDisabled: false, // 审核状态
 | 
	
		
			
				|  |  | +      checker: false,
 | 
	
		
			
				|  |  | +      checkId: '',
 | 
	
		
			
				|  |  | +      batchNo:'',
 | 
	
		
			
				|  |  | +      checkDialog: false,
 | 
	
		
			
				|  |  | +      checkScheduleDialog: false,
 | 
	
		
			
				|  |  | +      checkData: {},
 | 
	
		
			
				|  |  | +      dialogVisible: false,
 | 
	
		
			
				|  |  | +      activeName: 'searchList',
 | 
	
		
			
				|  |  | +      // 商品列表数据合计
 | 
	
		
			
				|  |  | +      goodsListShow: [],
 | 
	
		
			
				|  |  | +      // 商品列表暂存
 | 
	
		
			
				|  |  | +      goodsListSave: [],
 | 
	
		
			
				|  |  | +      page: {
 | 
	
		
			
				|  |  | +        pageSize: 10,
 | 
	
		
			
				|  |  | +        currentPage: 1,
 | 
	
		
			
				|  |  | +        total: 0
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      pageList: {
 | 
	
		
			
				|  |  | +        pageSize: 10,
 | 
	
		
			
				|  |  | +        currentPage: 1,
 | 
	
		
			
				|  |  | +        total: 0
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  async created() {
 | 
	
		
			
				|  |  | +    this.$set(this.form, 'businessDate', getCurrentDate()); // 默认当前日期
 | 
	
		
			
				|  |  | +    this.$set(this.form, 'createTime', getCurrentDate());
 | 
	
		
			
				|  |  | +    this.tableOption = await this.getColumnData(
 | 
	
		
			
				|  |  | +      this.getColumnName(122),
 | 
	
		
			
				|  |  | +      tableOption
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +    this.goodsOption = await this.getColumnData(
 | 
	
		
			
				|  |  | +      this.getColumnName(123),
 | 
	
		
			
				|  |  | +      goodsOption
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +    gainUser().then(res => {
 | 
	
		
			
				|  |  | +      this.userList = res.data.data;
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    getUserInfo().then(res => {
 | 
	
		
			
				|  |  | +      this.$set(this.form, 'createUser', res.data.data.id);
 | 
	
		
			
				|  |  | +      this.$set(this.form, 'userName', res.data.data.realName);
 | 
	
		
			
				|  |  | +      this.$set(this.form, 'deptId', res.data.data.deptId);
 | 
	
		
			
				|  |  | +      this.$set(this.form, 'deptName', res.data.data.deptName);
 | 
	
		
			
				|  |  | +      this.$set(this.form, 'postId', res.data.data.postId.split(',')[0]);
 | 
	
		
			
				|  |  | +      this.$set(this.form, 'postName', res.data.data.postName.split(',')[0]);
 | 
	
		
			
				|  |  | +      this.loginUser = res.data.data.realName;
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +    getDeptTree().then(res => {
 | 
	
		
			
				|  |  | +      this.dic = res.data.data
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +    getGoods(1, 10).then(res => {
 | 
	
		
			
				|  |  | +      if (res.data.data.total > 0) {
 | 
	
		
			
				|  |  | +        this.goodsoptions = res.data.data.records;
 | 
	
		
			
				|  |  | +        if (Math.ceil(res.data.data.total / 10) > 1) {
 | 
	
		
			
				|  |  | +          for (let i = 2; i <= Math.ceil(res.data.data.total / 10); i++) {
 | 
	
		
			
				|  |  | +            getGoods(i, 10).then(e => {
 | 
	
		
			
				|  |  | +              this.goodsoptions = this.goodsoptions.concat(e.data.data.records);
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    this.getWorkDicts('unit').then(res => {
 | 
	
		
			
				|  |  | +      this.unitOption = res.data.data;
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +    if (this.detailData.query) {
 | 
	
		
			
				|  |  | +      this.disabled = true;
 | 
	
		
			
				|  |  | +      this.option.column.map(e => {
 | 
	
		
			
				|  |  | +        this.$set(e, 'disabled', true)
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +      this.queryData(this.detailData.id);
 | 
	
		
			
				|  |  | +    } else if (this.detailData.auditId) {
 | 
	
		
			
				|  |  | +      this.checker = true;
 | 
	
		
			
				|  |  | +      this.batchNo = this.detailData.check.batchNo
 | 
	
		
			
				|  |  | +      this.queryData(this.detailData.id);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  filters: {
 | 
	
		
			
				|  |  | +    IntegerFormat(num) {
 | 
	
		
			
				|  |  | +      return IntegerFormat(num);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    decimalFormat(num) {
 | 
	
		
			
				|  |  | +      return num ? Number(num).toFixed(2) : "0.00";
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  methods: {
 | 
	
		
			
				|  |  | +    // 查询
 | 
	
		
			
				|  |  | +    queryData(id) {
 | 
	
		
			
				|  |  | +      this.pageLoading = true;
 | 
	
		
			
				|  |  | +      dataDetail({id: id}).then(res => {
 | 
	
		
			
				|  |  | +        this.form = res.data.data;
 | 
	
		
			
				|  |  | +        this.dataList = this.form.itemList? this.form.itemList: [];
 | 
	
		
			
				|  |  | +        this.oldForm = {...this.form};
 | 
	
		
			
				|  |  | +        this.oldDataList = [...this.dataList];
 | 
	
		
			
				|  |  | +        delete this.form.itemList;
 | 
	
		
			
				|  |  | +        this.checkDisabled = this.form.status > 0? true: false;
 | 
	
		
			
				|  |  | +        if (this.form.status > 0) {
 | 
	
		
			
				|  |  | +          this.option.column.map(e => {
 | 
	
		
			
				|  |  | +            this.$set(e, 'disabled', true)
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }).finally(() => {
 | 
	
		
			
				|  |  | +        this.pageLoading = false;
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //返回列表
 | 
	
		
			
				|  |  | +    backToList() {
 | 
	
		
			
				|  |  | +      this.$emit("goBack");
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 编辑按钮触发
 | 
	
		
			
				|  |  | +    openEdit() {
 | 
	
		
			
				|  |  | +      this.disabled = false;
 | 
	
		
			
				|  |  | +      this.option.column.map(e => {
 | 
	
		
			
				|  |  | +        if (this.checkDisabled) {
 | 
	
		
			
				|  |  | +          this.$set(e, 'disabled', true)
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          if (e.prop != 'serialNo') {
 | 
	
		
			
				|  |  | +            this.$set(e, 'disabled', false)
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 复制
 | 
	
		
			
				|  |  | +    copyDoc() {
 | 
	
		
			
				|  |  | +      this.$emit("copyOrder", this.form.id);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //修改提交触发
 | 
	
		
			
				|  |  | +    editCustomer(status) {
 | 
	
		
			
				|  |  | +      this.$refs["form"].validate((valid, done) => {
 | 
	
		
			
				|  |  | +        done();
 | 
	
		
			
				|  |  | +        if (valid) {
 | 
	
		
			
				|  |  | +          if (this.form.origWarehouse == this.form.warehouse) {
 | 
	
		
			
				|  |  | +            return this.$message.error('原仓库与调拨仓库不能一致')
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          this.$set(this.form, 'itemList', this.dataList)
 | 
	
		
			
				|  |  | +          this.btnLoading = true;
 | 
	
		
			
				|  |  | +          typeSave(this.form).then(res => {
 | 
	
		
			
				|  |  | +            this.$message({type: "success", message: this.form.id ? "修改成功!" : "新增成功!"});
 | 
	
		
			
				|  |  | +            this.queryData(res.data.data);
 | 
	
		
			
				|  |  | +          }).finally(() => {
 | 
	
		
			
				|  |  | +            this.btnLoading = false;
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          return false
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    cellStyle() {
 | 
	
		
			
				|  |  | +      return "padding:0;height:40px;";
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    async saveColumn() {
 | 
	
		
			
				|  |  | +      const inSave = await this.saveColumnData(
 | 
	
		
			
				|  |  | +        this.getColumnName(122),
 | 
	
		
			
				|  |  | +        this.tableOption
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +      if (inSave) {
 | 
	
		
			
				|  |  | +        this.$message.success("保存成功");
 | 
	
		
			
				|  |  | +        //关闭窗口
 | 
	
		
			
				|  |  | +        this.$refs.crud.$refs.dialogColumn.columnBox = false;
 | 
	
		
			
				|  |  | +        this.$nextTick(() => {
 | 
	
		
			
				|  |  | +          this.$refs.crud.doLayout()
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    async resetColumn() {
 | 
	
		
			
				|  |  | +      this.tableOption = tableOption;
 | 
	
		
			
				|  |  | +      const inSave = await this.delColumnData(
 | 
	
		
			
				|  |  | +        this.getColumnName(122),
 | 
	
		
			
				|  |  | +        tableOption
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +      if (inSave) {
 | 
	
		
			
				|  |  | +        this.$nextTick(() => {
 | 
	
		
			
				|  |  | +          this.$refs.crud.doLayout()
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        this.$message.success("重置成功");
 | 
	
		
			
				|  |  | +        //关闭窗口
 | 
	
		
			
				|  |  | +        setTimeout(() => {
 | 
	
		
			
				|  |  | +          this.$refs.crud.$refs.dialogColumn.columnBox = false;
 | 
	
		
			
				|  |  | +        }, 1000);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //录入明细
 | 
	
		
			
				|  |  | +    newDetails() {
 | 
	
		
			
				|  |  | +      this.$refs["form"].validate((valid, done) => {
 | 
	
		
			
				|  |  | +        done()
 | 
	
		
			
				|  |  | +        if (valid) {
 | 
	
		
			
				|  |  | +          this.dialogVisible = !this.dialogVisible;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    rowCell(row, index) {
 | 
	
		
			
				|  |  | +      if (row.$cellEdit == true) {
 | 
	
		
			
				|  |  | +        this.$set(row, "$cellEdit", false);
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        this.$set(row, "$cellEdit", true);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    rowDel(row, index) {
 | 
	
		
			
				|  |  | +      this.$confirm("确定删除数据?", {
 | 
	
		
			
				|  |  | +        confirmButtonText: "确定",
 | 
	
		
			
				|  |  | +        cancelButtonText: "取消",
 | 
	
		
			
				|  |  | +        type: "warning"
 | 
	
		
			
				|  |  | +      }).then(() => {
 | 
	
		
			
				|  |  | +        if (row.id) {
 | 
	
		
			
				|  |  | +          removeGoods(row.id).then(res => {
 | 
	
		
			
				|  |  | +            this.$message({
 | 
	
		
			
				|  |  | +              type: 'success',
 | 
	
		
			
				|  |  | +              message: '删除成功!'
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +            this.dataList.splice(row.$index, 1);
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          this.$message({
 | 
	
		
			
				|  |  | +            type: "success",
 | 
	
		
			
				|  |  | +            message: "删除成功!"
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +          this.dataList.splice(row.$index, 1);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    getKHData(row) {},
 | 
	
		
			
				|  |  | +    userHandle() {
 | 
	
		
			
				|  |  | +      this.form.userName = this.userList.find(item => item.id == this.form.createUser).realName;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 验证新旧值对比
 | 
	
		
			
				|  |  | +    verification() {
 | 
	
		
			
				|  |  | +      if (contrastObj(this.form, this.oldForm) ||
 | 
	
		
			
				|  |  | +        contrastList(this.dataList, this.oldDataList)) {
 | 
	
		
			
				|  |  | +        this.$confirm("数据发生变化未有提交记录, 是否提交?", "提示", {
 | 
	
		
			
				|  |  | +          confirmButtonText: "确定",
 | 
	
		
			
				|  |  | +          cancelButtonText: "取消",
 | 
	
		
			
				|  |  | +          type: "warning"
 | 
	
		
			
				|  |  | +        }).then(() => {
 | 
	
		
			
				|  |  | +          this.editCustomer();
 | 
	
		
			
				|  |  | +        }).catch(() => {
 | 
	
		
			
				|  |  | +          return false;   //取消改动数据
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    deptClick(data) {
 | 
	
		
			
				|  |  | +      this.$set(this.form, 'deptName', data.title)
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //打开审核
 | 
	
		
			
				|  |  | +    openCheckDialog(){
 | 
	
		
			
				|  |  | +      this.checkData  = this.detailData.check
 | 
	
		
			
				|  |  | +      this.checkDialog = true;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //关闭审核
 | 
	
		
			
				|  |  | +    choceCheckFun(){
 | 
	
		
			
				|  |  | +      this.checkDialog = false;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    choceScheduleFun(){
 | 
	
		
			
				|  |  | +      this.checkScheduleDialog = false
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 请核
 | 
	
		
			
				|  |  | +    pleaseCheck() {
 | 
	
		
			
				|  |  | +      if (this.verification()) {
 | 
	
		
			
				|  |  | +        const data = {
 | 
	
		
			
				|  |  | +          id : this.form.id,
 | 
	
		
			
				|  |  | +          checkType: 'fybx',
 | 
	
		
			
				|  |  | +          url: '/reimbursement/index',
 | 
	
		
			
				|  |  | +          pageStatus:"this.$store.getters.reimbursementStatus",
 | 
	
		
			
				|  |  | +          pageLabel:"报销",
 | 
	
		
			
				|  |  | +          checkFlag: 1,
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.btnLoading = true;
 | 
	
		
			
				|  |  | +        pleaseCheck(data).then(res => {
 | 
	
		
			
				|  |  | +          this.$message.success('请核成功')
 | 
	
		
			
				|  |  | +          this.queryData(this.form.id)
 | 
	
		
			
				|  |  | +        }).catch(() => {
 | 
	
		
			
				|  |  | +          this.$message.error('请核失败')
 | 
	
		
			
				|  |  | +        }).finally(() => {
 | 
	
		
			
				|  |  | +          this.btnLoading = false;
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 报表
 | 
	
		
			
				|  |  | +    openReport() {
 | 
	
		
			
				|  |  | +      this.switchDialog =! this.switchDialog;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 报表关闭
 | 
	
		
			
				|  |  | +    onClose(val) {
 | 
	
		
			
				|  |  | +      this.switchDialog = val;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    rePick(row, index) {
 | 
	
		
			
				|  |  | +      this.reData = {
 | 
	
		
			
				|  |  | +        ...row,
 | 
	
		
			
				|  |  | +        index: index
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +      this.newDetails();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    codeChange(row) {
 | 
	
		
			
				|  |  | +      this.goodsoptions.forEach(async e => {
 | 
	
		
			
				|  |  | +        if (e.code == row.code) {
 | 
	
		
			
				|  |  | +          row.itemId = e.id;
 | 
	
		
			
				|  |  | +          row.storageQuantity =  e.storageQuantity;
 | 
	
		
			
				|  |  | +          row.cname = e.cname;
 | 
	
		
			
				|  |  | +          row.code = e.code;
 | 
	
		
			
				|  |  | +          row.corpId = e.corpId;
 | 
	
		
			
				|  |  | +          row.corpName = e.corpName;
 | 
	
		
			
				|  |  | +          row.brandItem = e.brandItem;
 | 
	
		
			
				|  |  | +          row.specsOne = e.specsOne;
 | 
	
		
			
				|  |  | +          row.specsTwo = e.specsTwo;
 | 
	
		
			
				|  |  | +          row.typeno = e.typeno;
 | 
	
		
			
				|  |  | +          row.unit = e.unit;
 | 
	
		
			
				|  |  | +          row.size = e.size;
 | 
	
		
			
				|  |  | +          row.arr = e.arr;
 | 
	
		
			
				|  |  | +          row.priceCategory = e.goodsTypeName;
 | 
	
		
			
				|  |  | +          row.purchaseAmount = e.purchaseAmount;
 | 
	
		
			
				|  |  | +          row.batch = e.batch;
 | 
	
		
			
				|  |  | +          row.newJob = e.newJob;
 | 
	
		
			
				|  |  | +          row.newDate = e.newDate;
 | 
	
		
			
				|  |  | +          row.price = e.price;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    cnameChange(row) {
 | 
	
		
			
				|  |  | +      this.goodsoptions.forEach(async e => {
 | 
	
		
			
				|  |  | +        if (e.id == row.itemId) {
 | 
	
		
			
				|  |  | +          row.storageQuantity =  e.storageQuantity
 | 
	
		
			
				|  |  | +          row.cname = e.cname;
 | 
	
		
			
				|  |  | +          row.code = e.code;
 | 
	
		
			
				|  |  | +          row.corpId = e.corpId;
 | 
	
		
			
				|  |  | +          row.corpName = e.corpName;
 | 
	
		
			
				|  |  | +          row.brandItem = e.brandItem;
 | 
	
		
			
				|  |  | +          row.specsOne = e.specsOne;
 | 
	
		
			
				|  |  | +          row.specsTwo = e.specsTwo;
 | 
	
		
			
				|  |  | +          row.typeno = e.typeno;
 | 
	
		
			
				|  |  | +          row.unit = e.unit;
 | 
	
		
			
				|  |  | +          row.size = e.size;
 | 
	
		
			
				|  |  | +          row.arr = e.arr;
 | 
	
		
			
				|  |  | +          row.priceCategory = e.goodsTypeName;
 | 
	
		
			
				|  |  | +          row.purchaseAmount = e.purchaseAmount;
 | 
	
		
			
				|  |  | +          row.batch = e.batch;
 | 
	
		
			
				|  |  | +          row.newDate = e.newDate;
 | 
	
		
			
				|  |  | +          row.newJob = e.newJob;
 | 
	
		
			
				|  |  | +          row.price = e.price;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    importGoods() {
 | 
	
		
			
				|  |  | +      if (this.reData) {
 | 
	
		
			
				|  |  | +        if (this.selectionList.length != 1) {
 | 
	
		
			
				|  |  | +          return this.$message.error("重新选择的时候只能选择一条数据");
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          this.selectionList.forEach(e => {
 | 
	
		
			
				|  |  | +            this.dataList.forEach(async (item, index) => {
 | 
	
		
			
				|  |  | +              if (index == this.reData.index) {
 | 
	
		
			
				|  |  | +                item.itemId = e.id;
 | 
	
		
			
				|  |  | +                item.code = e.code;
 | 
	
		
			
				|  |  | +                item.cname = e.cname;
 | 
	
		
			
				|  |  | +                item.corpId = e.corpId;
 | 
	
		
			
				|  |  | +                item.corpName = e.corpName;
 | 
	
		
			
				|  |  | +                item.brandItem = e.brandItem;
 | 
	
		
			
				|  |  | +                item.specsOne = e.specsOne;
 | 
	
		
			
				|  |  | +                item.specsTwo = e.specsTwo;
 | 
	
		
			
				|  |  | +                item.typeno = e.typeno;
 | 
	
		
			
				|  |  | +                item.unit = e.unit;
 | 
	
		
			
				|  |  | +                item.size = e.size;
 | 
	
		
			
				|  |  | +                item.priceCategory = e.goodsTypeName;
 | 
	
		
			
				|  |  | +                item.purchaseAmount = e.purchaseAmount;
 | 
	
		
			
				|  |  | +                item.batch = e.batch;
 | 
	
		
			
				|  |  | +                item.newDate = e.newDate;
 | 
	
		
			
				|  |  | +                item.newJob = e.newJob;
 | 
	
		
			
				|  |  | +                item.price = e.price;
 | 
	
		
			
				|  |  | +                item.$cellEdit = true;
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        if (this.goodsListSave.length > 0) { // 暂存的有数据
 | 
	
		
			
				|  |  | +          this.goodsListSave.forEach(async e => {
 | 
	
		
			
				|  |  | +            this.dataList.push({
 | 
	
		
			
				|  |  | +              itemId: e.id,
 | 
	
		
			
				|  |  | +              code: e.code,
 | 
	
		
			
				|  |  | +              cname: e.cname,
 | 
	
		
			
				|  |  | +              brandItem: e.brandItem,
 | 
	
		
			
				|  |  | +              specsOne: e.specsOne,
 | 
	
		
			
				|  |  | +              specsTwo: e.specsTwo,
 | 
	
		
			
				|  |  | +              typeno: e.typeno,
 | 
	
		
			
				|  |  | +              corpId: e.corpId,
 | 
	
		
			
				|  |  | +              corpName: e.corpName,
 | 
	
		
			
				|  |  | +              unit: e.unit,
 | 
	
		
			
				|  |  | +              size: e.size,
 | 
	
		
			
				|  |  | +              price: e.price,
 | 
	
		
			
				|  |  | +              amount: 0,
 | 
	
		
			
				|  |  | +              orderQuantity: 0,
 | 
	
		
			
				|  |  | +              storageQuantity: e.storageQuantity,
 | 
	
		
			
				|  |  | +              purchaseAmount: e.purchaseAmount,
 | 
	
		
			
				|  |  | +              batch: e.batch,
 | 
	
		
			
				|  |  | +              arr: e.arr,
 | 
	
		
			
				|  |  | +              newJob:e.newJob,
 | 
	
		
			
				|  |  | +              newDate: e.newDate,
 | 
	
		
			
				|  |  | +              $cellEdit: true
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          this.selectionList.forEach(async e => {
 | 
	
		
			
				|  |  | +            this.dataList.push({
 | 
	
		
			
				|  |  | +              itemId: e.id,
 | 
	
		
			
				|  |  | +              code: e.code,
 | 
	
		
			
				|  |  | +              cname: e.cname,
 | 
	
		
			
				|  |  | +              brandItem: e.brandItem,
 | 
	
		
			
				|  |  | +              specsOne: e.specsOne,
 | 
	
		
			
				|  |  | +              specsTwo: e.specsTwo,
 | 
	
		
			
				|  |  | +              typeno: e.typeno,
 | 
	
		
			
				|  |  | +              corpId: e.corpId,
 | 
	
		
			
				|  |  | +              corpName: e.corpName,
 | 
	
		
			
				|  |  | +              unit: e.unit,
 | 
	
		
			
				|  |  | +              size: e.size,
 | 
	
		
			
				|  |  | +              amount: 0,
 | 
	
		
			
				|  |  | +              orderQuantity: 0,
 | 
	
		
			
				|  |  | +              storageQuantity: e.storageQuantity,
 | 
	
		
			
				|  |  | +              purchaseAmount: e.purchaseAmount,
 | 
	
		
			
				|  |  | +              batch: e.batch,
 | 
	
		
			
				|  |  | +              arr: e.arr,
 | 
	
		
			
				|  |  | +              newJob: e.newJob,
 | 
	
		
			
				|  |  | +              newDate: e.newDate,
 | 
	
		
			
				|  |  | +              price: e.price,
 | 
	
		
			
				|  |  | +              $cellEdit: true
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      this.dialogVisible = false;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    closeGoods() {
 | 
	
		
			
				|  |  | +      this.selectionList = [];
 | 
	
		
			
				|  |  | +      this.treeDeptId = "";
 | 
	
		
			
				|  |  | +      this.reData = null;
 | 
	
		
			
				|  |  | +      this.activeName = 'searchList';
 | 
	
		
			
				|  |  | +      this.goodsListSave = [];
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    nodeClick(data) {
 | 
	
		
			
				|  |  | +      this.treeDeptId = data.id;
 | 
	
		
			
				|  |  | +      this.page.currentPage = 1;
 | 
	
		
			
				|  |  | +      this.onLoad(this.page);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //商品查询
 | 
	
		
			
				|  |  | +    onLoad(page, params = {}) {
 | 
	
		
			
				|  |  | +      let obj = this.deepClone(Object.assign(params, this.search));
 | 
	
		
			
				|  |  | +      this.loading = true;
 | 
	
		
			
				|  |  | +      getGoods(page.currentPage, page.pageSize, this.treeDeptId, obj)
 | 
	
		
			
				|  |  | +        .then(res => {
 | 
	
		
			
				|  |  | +          const data = res.data.data;
 | 
	
		
			
				|  |  | +          this.page.total = data.total;
 | 
	
		
			
				|  |  | +          this.goodsList = data.records;
 | 
	
		
			
				|  |  | +          this.pageList.total = data.total;
 | 
	
		
			
				|  |  | +          this.goodsListShow = data.records;
 | 
	
		
			
				|  |  | +          if (this.page.total) {
 | 
	
		
			
				|  |  | +            this.goodsOption.height = window.innerHeight - 350;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        .finally(() => {
 | 
	
		
			
				|  |  | +          this.loading = false;
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    searchChange(params, done) {
 | 
	
		
			
				|  |  | +      this.search = this.deepClone(params);
 | 
	
		
			
				|  |  | +      this.onLoad(this.page, params);
 | 
	
		
			
				|  |  | +      done();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    selectionChange(list) {
 | 
	
		
			
				|  |  | +      this.selectionList = list;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    rowClick(row) {
 | 
	
		
			
				|  |  | +      this.$refs.goodsCrud.toggleSelection([this.goodsList[row.$index]]);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    async saveGoodsColumn() {
 | 
	
		
			
				|  |  | +      const inSave = await this.saveColumnData(
 | 
	
		
			
				|  |  | +        this.getColumnName(123),
 | 
	
		
			
				|  |  | +        this.goodsOption
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +      if (inSave) {
 | 
	
		
			
				|  |  | +        this.$message.success("保存成功");
 | 
	
		
			
				|  |  | +        //关闭窗口
 | 
	
		
			
				|  |  | +        this.$refs.goodsCrud.$refs.dialogColumn.columnBox = false;
 | 
	
		
			
				|  |  | +        this.$nextTick(() => {
 | 
	
		
			
				|  |  | +          this.$refs.goodsCrud.doLayout()
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    async resetGoodsColumn() {
 | 
	
		
			
				|  |  | +      this.goodsOption = goodsOption;
 | 
	
		
			
				|  |  | +      const inSave = await this.delColumnData(
 | 
	
		
			
				|  |  | +        this.getColumnName(123),
 | 
	
		
			
				|  |  | +        goodsOption
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +      if (inSave) {
 | 
	
		
			
				|  |  | +        this.$nextTick(() => {
 | 
	
		
			
				|  |  | +          this.$refs.goodsCrud.doLayout()
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        this.$message.success("重置成功");
 | 
	
		
			
				|  |  | +        //关闭窗口
 | 
	
		
			
				|  |  | +        setTimeout(() => {
 | 
	
		
			
				|  |  | +          this.$refs.goodsCrud.$refs.dialogColumn.columnBox = false;
 | 
	
		
			
				|  |  | +        }, 1000);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 标签页切换
 | 
	
		
			
				|  |  | +    tabHandle(data) {
 | 
	
		
			
				|  |  | +      if (data.name == 'searchList') {
 | 
	
		
			
				|  |  | +        this.goodsListShow = this.goodsList;
 | 
	
		
			
				|  |  | +        this.page.total = this.pageList.total
 | 
	
		
			
				|  |  | +      } else if (data.name == 'importStaging') {
 | 
	
		
			
				|  |  | +        this.goodsListShow = this.goodsListSave;
 | 
	
		
			
				|  |  | +        this.page.total = 0
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    removeStagList(row, index) {
 | 
	
		
			
				|  |  | +      this.goodsListSave.splice(row.$index, 1)
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    importStagList(row, index) {
 | 
	
		
			
				|  |  | +      this.goodsListSave.push(row);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +</script>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<style scoped>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +</style>
 |