| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356 | <template>  <div>    <basic-container v-show="show" class="page-crad">      <avue-crud ref="crud" :option="option" :data="dataList" v-model="form" :page.sync="page"                 :search.sync="search" @search-change="searchChange" @current-change="currentChange"                 @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad" :table-loading="loading"                 @saveColumn="saveColumn" @resetColumn="resetColumn" :cell-style="cellStyle"                 @search-criteria-switch="searchCriteriaSwitch">        <template slot="menuLeft">          <el-button type="primary" icon="el-icon-plus" size="small" @click.stop="newAdd()">创建单据          </el-button>        </template>        <template slot-scope="{ row,index}" slot="menu">          <el-button type="text" icon="el-icon-delete" size="small" :disabled="row.status>0"                     @click.stop="rowDel(row, index)">删除          </el-button>        </template>        <template slot-scope="{ row,index}" slot="purchaserId">                    <span style="color: #409EFF;cursor: pointer" @click.stop="editOpen(row, 1)">{{ row.purchaser }}                    </span>        </template>        <template slot="purchaserIdSearch">          <crop-select v-model="search.purchaserId" corpType="KH" :refresh="false"></crop-select>        </template>        <template slot="stockTimeSearch">          <el-date-picker v-model="search.stockTime" type="daterange" start-placeholder="开始日期"                          end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd">          </el-date-picker>        </template>        <template slot-scope="{ row,index}" slot="sysNo">                    <span style="color: #409EFF;cursor: pointer" @click.stop="editOpen(row, 1)">{{ row.sysNo }}                    </span>        </template>        <template slot-scope="{ row,index}" slot="corpId">                    <span>{{ row.corpName }}                    </span>        </template>      </avue-crud>    </basic-container>    <el-dialog title="盘点" :visible.sync="inStockVisible" width="70%" @close="close" append-to-body>            <span>                <avue-crud ref="crud2" v-model="form2" :data="itemData" :option="itemOption" :page.sync="page2"                           :search.sync="search2" @search-change="searchChange2" @current-change="currentChange2"                           @size-change="sizeChange2" @refresh-change="refreshChange2" @on-load="onLoad2"                           :table-loading="loading2" :cell-style="cellStyle" @selection-change="selectionChange"                           @search-criteria-switch="searchCriteriaSwitch2">                    <template slot="purchaserIdSearch">                        <crop-select v-model="search2.purchaserId" corpType="KH" :refresh="false"></crop-select>                    </template>                    <template slot="corpIdSearch">                        <crop-select v-model="search2.corpId" corpType="GYS" :refresh="false"></crop-select>                    </template>                    <template slot-scope="{ row,index}" slot="purchaserId">                        <span>{{ row.purchaser }}                        </span>                    </template>                    <template slot-scope="{ row,index}" slot="corpId">                        <span>{{ row.corpName }}                        </span>                    </template>                    <template slot="stockTimeSearch">                        <el-date-picker v-model="search2.stockTime" type="daterange" start-placeholder="开始日期"                                        end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd">                        </el-date-picker>                    </template>                </avue-crud>            </span>      <span slot="footer" class="dialog-footer">                <el-button @click="inStockVisible= false">取 消</el-button>                <el-button type="primary" @click="generate">生 成</el-button>            </span>    </el-dialog>    <detail-page @goBack="goBack" :detailData="detailData" v-if="!show"></detail-page>  </div></template><script>import {getList, remove, getStoragetree} from "@/api/purchasingManagement/inStock";import option from "./config/mainList.json";import itemOption from "./config/mainList2.json";import detailPage from "./detailsPage";import _ from "lodash";export default {  name: "instock",  data() {    return {      itemOption: itemOption,      search: {},      search2: {},      form: {},      form2: {},      option: {},      dataList: [],      itemData: [],      page: {        pageSize: 20,        currentPage: 1,        total: 0,        pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]      },      page2: {        pageSize: 20,        currentPage: 1,        total: 0,        pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]      },      show: true,      detailData: {},      loading: false,      loading2: false,      searchShow: true,      inStockVisible: false,      selectionList: [],    };  },  components: {detailPage},  async created() {    this.option = await this.getColumnData(this.getColumnName(196), option);    this.option.height = window.innerHeight - 210;    this.itemOption.height = window.innerHeight - 410;    this.getWorkDicts("financing_status").then(res => {      this.findObject(this.itemOption.column, "status").dicData =          res.data.data;    });    this.getWorkDicts("CMY_business_type").then(res => {      this.findObject(this.itemOption.column, "businessType").dicData =          res.data.data;    });    getStoragetree().then(res => {      this.findObject(this.itemOption.column, "storageId").dicData =          res.data.data;    })    this.getAllWorkDicts()    if (this.$route.query.check && this.show) {      this.editOpen({id: this.$route.query.check.srcBillId}, 1)      this.show = false;    }  },  activated() {    setTimeout(() => {      if (this.$route.query.check && this.show) {        this.editOpen({id: this.$route.query.check.srcBillId}, 1)        this.show = false;      }    }, 100);  },  methods: {    getAllWorkDicts() {      this.getWorkDicts("approval_status").then(res => {        this.findObject(this.option.column, "status").dicData =            res.data.data;      });      this.getWorkDicts("CMY_business_type").then(res => {        this.findObject(this.option.column, "businessType").dicData =            res.data.data;      });      getStoragetree().then(res => {        this.findObject(this.option.column, "storageId").dicData =            res.data.data;      })    },    searchCriteriaSwitch(type) {      if (type) {        this.option.height = this.option.height - 191;      } else {        this.option.height = this.option.height + 191;      }      this.$refs.crud.getTableHeight();    },    searchCriteriaSwitch2(type) {      if (type) {        this.itemOption.height = this.itemOption.height - 191;      } else {        this.itemOption.height = this.itemOption.height + 191;      }      this.$refs.crud2.getTableHeight();    },    cellStyle() {      return "padding:0;height:40px;";    },    rowDel(row, index, done) {      this.$confirm("确定删除数据?", {        confirmButtonText: "确定",        cancelButtonText: "取消",        type: "warning"      }).then(() => {        remove({id: row.id}).then(res => {          this.$message({            type: "success",            message: "删除成功!"          });        })            .finally(() => {              this.onLoad(this.page, this.search);            });      });    },    selectionChange(list) {      this.selectionList = list;    },    generate() {      if (this.selectionList.length == 1) {        this.detailData = {          generateId: this.selectionList[0].id,        }        this.show = false        this.inStockVisible = false      } else {        this.$message.error('请选择一条数据')      }    },    editOpen(row, status) {      this.detailData = {        id: row.id,        status: status      };      this.show = false;    },    //点击搜索按钮触发    searchChange(params, done) {      this.page.currentPage = 1;      this.onLoad(this.page, params);      done();    },    searchChange2(params, done) {      this.page2.currentPage = 1;      this.onLoad2(this.page, params);      done();    },    currentChange(val) {      this.page.currentPage = val;    },    currentChange2(val) {      this.page2.currentPage = val;    },    sizeChange(val) {      this.page.currentPage = 1;      this.page.pageSize = val;    },    sizeChange2(val) {      this.page2.currentPage = 1;      this.page2.pageSize = val;    },    onLoad(page, params) {      if (this.search.stockTime && this.search.stockTime.length > 0) {        params = {          ...params,          createStartTime: this.search.stockTime[0] + ' ' + "00:00:00",          createEndTime: this.search.stockTime[1] + ' ' + "23:59:59"        };      }      let data = this.deepClone(Object.assign({}, params, this.search));      delete data.stockTime;      data.billType = "PD"      this.loading = true;      getList(page.currentPage, page.pageSize, data)          .then(res => {            this.dataList = res.data.data.records ? res.data.data.records : [];            this.page.total = res.data.data.total;          })          .finally(() => {            this.loading = false;          });    },    onLoad2(page, params) {      if (this.search2.stockTime && this.search2.stockTime.length > 0) {        params = {          ...params,          createStartTime: this.search2.stockTime[0] + ' ' + "00:00:00",          createEndTime: this.search2.stockTime[1] + ' ' + "23:59:59"        };      }      let data = this.deepClone(Object.assign({}, params, this.search2));      delete data.stockTime;      data.billType = "RK"      data.statuss = 5      this.loading2 = true;      data.pdStatus = 'PD'      getList(page.currentPage, page.pageSize, data)          .then(res => {            this.itemData = res.data.data.records ? res.data.data.records : [];            this.page2.total = res.data.data.total;          })          .finally(() => {            this.loading2 = false;          });    },    refreshChange() {      this.onLoad(this.page, this.search);    },    refreshChange2() {      this.onLoad2(this.page2, this.search2);    },    newAdd() {      this.inStockVisible = true;    },    goBack() {      if (this.$route.query.check) {        this.$router.$avueRouter.closeTag(this.$route.fullPath);        this.$router.push({          path: "/InventoryManagement/inventory/index"        });      }      this.detailData = this.$options.data().detailData;      this.show = true;      this.onLoad(this.page, this.search);    },    close() {      this.$refs.crud2.refreshTable()    },    async saveColumn() {      const inSave = await this.saveColumnData(          this.getColumnName(196),          this.option      );      if (inSave) {        this.$nextTick(() => {          this.$refs.crud.doLayout();        });        this.$message.success("保存成功");        //关闭窗口        this.$refs.crud.$refs.dialogColumn.columnBox = false;      }    },    async resetColumn() {      this.option = option;      const inSave = await this.delColumnData(this.getColumnName(196), this.option);      if (inSave) {        this.$nextTick(() => {          this.$refs.crud.doLayout();        });        this.getAllWorkDicts()        this.$message.success("重置成功");        this.$refs.crud.$refs.dialogColumn.columnBox = false;      }    }  }};</script><style scoped>::v-deep .select-component {  display: flex;}.page-crad ::v-deep .basic-container__card {  height: 94.2vh;}.itemTable ::v-deep .el-table {  width: 738px;}</style>
 |