yangfeng
2023-12-13 89d75ee7b52a78c26c4eafc2dcb00ffd39daa596
出库、入库、调拨、报废新建的时候增加对应单号及编码规范
1个文件已添加
5个文件已修改
837 ■■■■■ 已修改文件
src/components/layout/components/appsidebar/index.vue 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/scrap/AddScrapDialog.vue 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/scrap/index.vue 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/overview/AddOverviewDialog.vue 493 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/overview/OverviewListView.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/overview/mixin/codeMixin.js 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/layout/components/appsidebar/index.vue
@@ -16,14 +16,12 @@
        text-color="#bfcbd9"
        active-text-color="#fff"
      >
        <el-submenu  v-for="item in menus" :key="item.id" :index="item.id">
        <el-submenu v-for="item in menus" :key="item.id" :index="item.id">
          <template slot="title">
            <i class="el-icon-s-grid icon"></i>
            <span>{{ item.title }}</span>
          </template>
          <el-menu-item v-for="itm in item.children" :key="itm.id"  :index="itm.path">{{ itm.title }}</el-menu-item>
          <el-menu-item v-for="itm in item.children" :key="itm.id" :index="itm.path">{{ itm.title }}</el-menu-item>
        </el-submenu>
      </el-menu>
    </div>
@@ -31,14 +29,14 @@
</template>
<script>
import {getMenuTreeByRole} from "@/api/menus/index"
import {  mapMutations } from 'vuex';
import { getMenuTreeByRole } from "@/api/menus/index"
import { mapMutations } from "vuex"
export default {
  name: "AppSidebar",
  props: {},
  data() {
    return {
      menus:[]
      menus: []
    }
  },
  watch: {},
@@ -46,16 +44,16 @@
    this.initNavMenu()
    this.getMenuTreeByRole()
  },
  computed:{
    // ...mapState(['menus']),
  computed: {
    // ...mapState(['menus']),
  },
  methods: {
    ...mapMutations(['setMenus']),
    getMenuTreeByRole(){
      getMenuTreeByRole().then((res)=>{
        res.data.list.map((item)=>{
          if(item.systemType===3){
            this.menus=item.menus
    ...mapMutations(["setMenus"]),
    getMenuTreeByRole() {
      getMenuTreeByRole().then((res) => {
        res.data.list.map((item) => {
          if (item.systemType === 3) {
            this.menus = item.menus
          }
        })
      })
@@ -65,7 +63,7 @@
      // console.log(this.$route.name)
    },
    handleOpen(index) {
      console.log(index,"menuIndex")
      console.log(index, "menuIndex")
    },
    handleClose() {}
  }
src/views/operate/scrap/AddScrapDialog.vue
@@ -44,6 +44,25 @@
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item label="报废单号" prop="number">
                  <el-input
                    style="width: 85%"
                    v-if="
                      editConfig.title == '编辑' ||
                      editConfig.title == '查看' ||
                      (editConfig.title == '新建' && codenumer && (explain != '' || isIdDisabled))
                    "
                    :disabled="editConfig.title != '新建'"
                    v-model="editConfig.infomation.number"
                    placeholder="请输入编码"
                  >
                  </el-input>
                  <span v-else-if="editConfig.title == '新建'" style="color: #f56c6c; width: 85%"
                    >请优先配置编码规范 <el-button type="text" @click="numberClick"> 配置规范 </el-button></span
                  >
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="产品" prop="productName">
                  <SimpleSearchInput
                    :echoValue="editConfig.infomation.productName"
@@ -127,8 +146,10 @@
import { getLocationList } from "@/api/overview/overview"
import { addDisuse, finishDisuse, updateScrap } from "@/api/operate/scrap"
import SimpleSearchInput from "@/components/makepager/SimpleSearchInput"
import codeMixin from "@/views/overview/mixin/codeMixin"
export default {
  name: "AddScrapDialog",
  mixins: [codeMixin],
  props: {
    editCommonConfig: {
      type: Object,
@@ -176,8 +197,17 @@
    this.getProductList()
    this.getLocationList()
    this.unit = this.editConfig.infomation.unit || ""
    this.formInfo()
  },
  methods: {
    formInfo() {
      this.objCode.type = "仓库报废编码"
      this.objCode.codeStandID = ""
      if (this.editConfig.infomation.codeStandardID) {
        this.objCode.codeStandID = this.editConfig.infomation.codeStandardID
      }
      this.getRCodeStandardList()
    },
    // 产品
    async getProductList() {
      await getProductList({
src/views/operate/scrap/index.vue
@@ -20,39 +20,29 @@
          <template slot="tableButton">
            <el-table-column fixed="right" label="操作" width="100">
              <template slot-scope="scope">
                <el-button
                  @click="examineClick(scope.row)"
                  type="text"
                  size="small"
                  >查看</el-button
                <el-button @click="examineClick(scope.row)" type="text" size="small">查看</el-button>
                <el-button type="text" v-if="scope.row.status != 4" size="small" @click="editClick(scope.row)"
                  >编辑</el-button
                >
                <el-button type="text" v-if="scope.row.status!=4" size="small" @click="editClick(scope.row)">编辑</el-button>
              </template>
            </el-table-column>
          </template>
        </TableCommonView>
      </div>
      <div class="btn-pager">
        <PagerView
          class="page"
          :pager-options="pagerOptions"
          v-on="pagerEvents"
        />
        <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
      </div>
    </div>
    <!-- 新建/编辑 -->
    <AddScrapDialog
      v-if="editConfig.visible"
      :editCommonConfig="editConfig"
    />
    <AddScrapDialog v-if="editConfig.visible" :editCommonConfig="editConfig" />
  </div>
</template>
<script>
import pageMixin from "@/components/makepager/pager/mixin/pageMixin";
import { getDisuseList } from "@/api/operate/scrap";
import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
import { getDisuseList } from "@/api/operate/scrap"
// import DetailProduct from "@/views/productManage/product/DetailProduct"
import AddScrapDialog from "@/views/operate/scrap/AddScrapDialog";
import AddScrapDialog from "@/views/operate/scrap/AddScrapDialog"
export default {
  name: "ScrapView",
@@ -68,27 +58,27 @@
        visible: false,
        title: "新建",
        infomation: {},
        showEdit:false,
        showEdit: false
      },
      keyword: "",
    };
      keyword: ""
    }
  },
  created() {
    this.setTable();
    this.getData();
    this.setTable()
    this.getData()
  },
  methods: {
    // 查看
    examineClick(row) {
      this.editConfig.title = "查看";
      this.editConfig.infomation = { ...row };
      this.editConfig.visible = true;
      this.editConfig.title = "查看"
      this.editConfig.infomation = { ...row }
      this.editConfig.visible = true
    },
    editClick(row){
      console.log(row,"编辑")
      this.editConfig.title = "编辑";
      this.editConfig.infomation = { ...row };
      this.editConfig.visible = true;
    editClick(row) {
      console.log(row, "编辑")
      this.editConfig.title = "编辑"
      this.editConfig.infomation = { ...row }
      this.editConfig.visible = true
    },
    setTable() {
      this.tableList = {
@@ -97,61 +87,61 @@
        selectIndex: true,
        showcol: this.showcol,
        allcol: [],
        tableColumn: this.setTableColumn(this.showcol),
      };
      let allcol = [];
        tableColumn: this.setTableColumn(this.showcol)
      }
      let allcol = []
      for (let i = 0; i < this.tableList.tableColumn.length; i++) {
        if (!this.tableList.tableColumn[i].default) {
          const label = this.tableList.tableColumn[i].label;
          allcol.push(label);
          const label = this.tableList.tableColumn[i].label
          allcol.push(label)
        }
      }
      this.tableList.allcol = allcol;
      this.tableList.allcol = allcol
    },
    setTableColumn(showcol) {
      console.log(showcol);
      console.log(showcol)
      let tableColumn = [
        {
          label: "单号",
          label: "报废单号",
          prop: "number",
          isShowColumn: true,
          default: true,
          default: true
        },
        {
          label: "日期",
          prop: "operationDate",
          isShowColumn: true,
          default: true,
          default: true
        },
        {
          label: "产品",
          prop: "productName",
          isShowColumn: true,
          default: true,
          default: true
        },
        {
          label: "数量",
          prop: "amount",
          isShowColumn: true,
          default: false,
          default: false
        },
        {
          label: "计量单位",
          prop: "unit",
          isShowColumn: true,
          default: false,
          default: false
        },
        {
          label: "源位置",
          prop: "from",
          isShowColumn: true,
          default: false,
          default: false
        },
        {
          label: "报废位置",
          prop: "to",
          isShowColumn: true,
          default: false,
          default: false
        },
        {
          label: "状态",
@@ -161,61 +151,61 @@
          default: false,
          status: true,
          isCallMethod: true,
          getCallMethod: this.getStatus,
        },
      ];
      return tableColumn;
          getCallMethod: this.getStatus
        }
      ]
      return tableColumn
    },
    selTableCol(val) {
      this.showcol = val;
      this.tableList.tableColumn = this.setTableColumn(val);
      this.showcol = val
      this.tableList.tableColumn = this.setTableColumn(val)
    },
    // 请求数据
    async getData() {
      await getDisuseList({
        number: this.keyword,
        page: this.pagerOptions.currPage,
        pageSize: this.pagerOptions.pageSize,
        pageSize: this.pagerOptions.pageSize
      }).then((res) => {
        if (res.code === 200) {
          const list = res.data.map((item) => {
            return {
              ...item,
              from: item.fromLocation.name,
              to: item.toLocation.name,
            };
          });
          this.tableList.tableInfomation = list || [];
          this.pagerOptions.totalCount = res.total;
              to: item.toLocation.name
            }
          })
          this.tableList.tableInfomation = list || []
          this.pagerOptions.totalCount = res.total
        }
      });
      })
    },
    // 搜索
    getList(val) {
      this.keyword = val;
      console.log(val);
      this.pagerOptions.currPage = 1;
      this.getData();
      this.keyword = val
      console.log(val)
      this.pagerOptions.currPage = 1
      this.getData()
    },
    // 行点击
    tableRowClick(row) {
      console.log(row);
      console.log(row)
      // this.editConfig.visible = true;
      // this.editConfig.title = "编辑";
      this.editConfig.infomation = { ...row };
      this.editConfig.infomation = { ...row }
    },
    // 新建
    addBtnClick() {
      this.editConfig.visible = true;
      this.editConfig.title = "新建";
      this.editConfig.infomation = {};
      this.editConfig.visible = true
      this.editConfig.title = "新建"
      this.editConfig.infomation = {}
    },
    // 状态
    getStatus(val) {
      return val === 1 ? "草稿" : val === 3 ? "就绪" : "完成";
    },
  },
};
      return val === 1 ? "草稿" : val === 3 ? "就绪" : "完成"
    }
  }
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
src/views/overview/AddOverviewDialog.vue
@@ -1,12 +1,16 @@
<template>
  <div class="add-common">
    <el-dialog :title="editCommonConfig.title + '采购入库'" :visible.sync="editConfig.visible" :width="dialogWidth"
      :before-close="handleClose">
    <el-dialog
      :title="editCommonConfig.title + '采购入库'"
      :visible.sync="editConfig.visible"
      :width="dialogWidth"
      :before-close="handleClose"
    >
      <!-- 头 -->
      <div slot="title" class="dialog-header">
        <span>{{ editCommonConfig.title === "查看" ? editCommonConfig.title : editCommonConfig.title + addName }}</span>
        <div class="header_btns">
          <span class="btn" :style="{cursor:thatCursor,color:thatColor}" @click="btnPrint" :disabled="true">
          <span class="btn" :style="{ cursor: thatCursor, color: thatColor }" @click="btnPrint" :disabled="true">
            <i class="el-icon-printer"></i>
            <span>打印</span>
          </span>
@@ -14,45 +18,118 @@
            <i class="el-icon-s-tools"></i>
            <span>动作</span>
          </span>
          <el-button v-if="showEdit" :disabled="this.editConfig.infomation.status === 5" plain size="mini"
            style="margin-left: 15px" @click="editClick">编辑</el-button>
          <el-button
            v-if="showEdit"
            :disabled="this.editConfig.infomation.status === 5"
            plain
            size="mini"
            style="margin-left: 15px"
            @click="editClick"
            >编辑</el-button
          >
        </div>
      </div>
      <!-- 内容 -->
      <el-form ref="form" :model="editConfig.infomation" :rules="rules" label-position="right" label-width="120px"
        size="mini">
      <el-form
        ref="form"
        :model="editConfig.infomation"
        :rules="rules"
        label-position="right"
        label-width="120px"
        size="mini"
      >
        <div>
          <!-- <div>aaa</div> -->
          <StatusCommonView :showButton="showButton" :isValidateClick="isValidateClick" :isDelClick="isDelClick"
            :isCancel="isCancel" :list="list" :showCancel="showCancel" @delClick="delClick" @validateClick="validateClick"
            @btnCancel="btnCancel" />
          <StatusCommonView
            :showButton="showButton"
            :isValidateClick="isValidateClick"
            :isDelClick="isDelClick"
            :isCancel="isCancel"
            :list="list"
            :showCancel="showCancel"
            @delClick="delClick"
            @validateClick="validateClick"
            @btnCancel="btnCancel"
          />
        </div>
        <div class="basic-info">
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item prop="number">
                  <span slot="label">{{ workType === 1 ? "入库" : workType === 2 ? "出库" : "调拨" }}单号</span>
                  <el-input
                    style="width: 85%"
                    v-if="
                      editConfig.title == '编辑' ||
                      editConfig.title == '查看' ||
                      (editConfig.title == '新建' && codenumer && (explain != '' || isIdDisabled))
                    "
                    :disabled="editConfig.title != '新建'"
                    v-model="editConfig.infomation.number"
                    placeholder="请输入编码"
                  >
                  </el-input>
                  <span v-else-if="editConfig.title == '新建'" style="color: #f56c6c; width: 85%"
                    >请优先配置编码规范 <el-button type="text" @click="numberClick"> 配置规范 </el-button></span
                  >
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item prop="companyName">
                  <span slot="label">{{ workType === 1 ? "供应商" : workType === 2 ? "客户" : "联系人" }}</span>
                  <el-select v-if="workType === 1" v-model="editConfig.infomation.companyName" placeholder="请选择"
                    size="mini" style="width: 90%" :disabled="!showFooter" @change="companyChange">
                    <el-option v-for="item in supplierOptions" :key="item.SupplierId" :label="item.SupplierName"
                      :value="{ value: item.SupplierId, label: item.SupplierName }">
                  <el-select
                    v-if="workType === 1"
                    v-model="editConfig.infomation.companyName"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                    @change="companyChange"
                  >
                    <el-option
                      v-for="item in supplierOptions"
                      :key="item.SupplierId"
                      :label="item.SupplierName"
                      :value="{ value: item.SupplierId, label: item.SupplierName }"
                    >
                    </el-option>
                  </el-select>
                  <el-select v-else-if="workType === 2" v-model="editConfig.infomation.companyName" placeholder="请选择"
                    size="mini" style="width: 90%" :disabled="!showFooter" @change="companyChange">
                    <el-option v-for="item in clientOptions" :key="item.ClientId" :label="item.ClientName"
                      :value="{ value: item.ClientId, label: item.ClientName }">
                  <el-select
                    v-else-if="workType === 2"
                    v-model="editConfig.infomation.companyName"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                    @change="companyChange"
                  >
                    <el-option
                      v-for="item in clientOptions"
                      :key="item.ClientId"
                      :label="item.ClientName"
                      :value="{ value: item.ClientId, label: item.ClientName }"
                    >
                    </el-option>
                  </el-select>
                  <el-select v-else v-model="editConfig.infomation.companyName" placeholder="请选择" size="mini"
                    style="width: 90%" :disabled="!showFooter" @change="companyChange">
                    <el-option v-for="item in companyOptions" :key="item.id" :label="item.name"
                      :value="{ value: item.id, label: item.name }">
                  <el-select
                    v-else
                    v-model="editConfig.infomation.companyName"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                    @change="companyChange"
                  >
                    <el-option
                      v-for="item in companyOptions"
                      :key="item.id"
                      :label="item.name"
                      :value="{ value: item.id, label: item.name }"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <!-- <el-col :span="12">
@@ -85,15 +162,26 @@
              </el-col> -->
              <el-col :span="12">
                <el-form-item label="日期" prop="operationDate">
                  <el-date-picker v-model="editConfig.infomation.operationDate" value-format="yyyy-MM-dd" type="date"
                    placeholder="选择日期" style="width: 90%" :disabled="!showFooter">
                  <el-date-picker
                    v-model="editConfig.infomation.operationDate"
                    value-format="yyyy-MM-dd"
                    type="date"
                    placeholder="选择日期"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col v-if="showOperationType" :span="12">
                <el-form-item label="入库类型" prop="operationTypeId">
                  <el-select v-model="editConfig.infomation.operationTypeId" placeholder="请选择" size="mini"
                    style="width: 90%" :disabled="!showFooter">
                  <el-select
                    v-model="editConfig.infomation.operationTypeId"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                    <el-option v-for="item in operationTypeOptions" :key="item.id" :label="item.name" :value="item.id">
                    </el-option>
                  </el-select>
@@ -106,34 +194,68 @@
              </el-col>
              <el-col :span="12">
                <el-form-item label="来源单据" prop="sourceNumber">
                  <el-input v-model="editConfig.infomation.sourceNumber" placeholder="例如:PO0032" style="width: 90%"
                    :disabled="!showFooter"></el-input>
                  <el-input
                    v-model="editConfig.infomation.sourceNumber"
                    placeholder="例如:PO0032"
                    style="width: 90%"
                    :disabled="!showFooter"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item v-if="workType !== 1" label="源位置" prop="fromLocationId">
                  <el-select v-model="editConfig.infomation.fromLocationId" placeholder="请选择" size="mini"
                    style="width: 90%" :disabled="!showFooter">
                    <el-option v-for="item in toLocationOptions" :key="item.id" :label="item.jointName" :value="item.id">
                  <el-select
                    v-model="editConfig.infomation.fromLocationId"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                    <el-option
                      v-for="item in toLocationOptions"
                      :key="item.id"
                      :label="item.jointName"
                      :value="item.id"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item v-if="workType !== 2" label="仓库位置" prop="toLocationId">
                  <el-select v-model="editConfig.infomation.toLocationId" placeholder="请选择" size="mini" style="width: 90%"
                    :disabled="!showFooter">
                    <el-option v-for="item in toLocationOptions" :key="item.id" :label="item.jointName" :value="item.id">
                  <el-select
                    v-model="editConfig.infomation.toLocationId"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                    <el-option
                      v-for="item in toLocationOptions"
                      :key="item.id"
                      :label="item.jointName"
                      :value="item.id"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="负责人" prop="contacterName">
                  <el-select v-model="editConfig.infomation.contacterName" placeholder="请选择" size="mini"
                    style="width: 90%" :disabled="!showFooter" @change="contacterChange">
                    <el-option v-for="item in memberOptions" :key="item.id" :label="item.name"
                      :value="{ value: item.id, label: item.name }">
                  <el-select
                    v-model="editConfig.infomation.contacterName"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                    @change="contacterChange"
                  >
                    <el-option
                      v-for="item in memberOptions"
                      :key="item.id"
                      :label="item.name"
                      :value="{ value: item.id, label: item.name }"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
@@ -154,8 +276,14 @@
              </el-col> -->
              <el-col :span="24">
                <el-form-item label="备注" prop="comment">
                  <el-input v-model.trim="editConfig.infomation.comment" size="mini" type="textarea" style="width: 96%"
                    :autosize="{ minRows: 3 }" :disabled="!showFooter"></el-input>
                  <el-input
                    v-model.trim="editConfig.infomation.comment"
                    size="mini"
                    type="textarea"
                    style="width: 96%"
                    :autosize="{ minRows: 3 }"
                    :disabled="!showFooter"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
@@ -168,8 +296,12 @@
            </el-tabs>
            <!-- 操作 -->
            <div v-if="activeName === 'first'">
              <CommonFormTableView :product-table-list="productTableList" :detail-enter="!showFooter"
                @inputContent="inputContent" @addProductClick="addProductClick('操作')">
              <CommonFormTableView
                :product-table-list="productTableList"
                :detail-enter="!showFooter"
                @inputContent="inputContent"
                @addProductClick="addProductClick('操作')"
              >
                <template v-if="showFooter" slot="tableButton">
                  <el-table-column label="操作" width="60" fixed="right" align="center">
                    <template slot-scope="scope">
@@ -183,51 +315,88 @@
            </div>
            <!-- 物流信息 -->
            <div v-if="activeName === 'two' && this.workType === 2">
              <el-form :rules="rules2" ref="shipmentsInfo" label-position="right" :model="editConfig.infomation" label-width="120px" size="mini"
                style="margin-top: 20px;">
              <el-form
                :rules="rules2"
                ref="shipmentsInfo"
                label-position="right"
                :model="editConfig.infomation"
                label-width="120px"
                size="mini"
                style="margin-top: 20px"
              >
                <el-col :span="12">
                  <el-form-item label="承运商">
                    <el-select size="mini" :disabled="!showFooter" v-model="editConfig.infomation.logisticCompanyId"
                      placeholder="请选择" style="width: 90%;">
                      <el-option v-for="item in editConfig.infomation.carrier" :key="item.id" :label="item.name" :value="item.id">
                    <el-select
                      size="mini"
                      :disabled="!showFooter"
                      v-model="editConfig.infomation.logisticCompanyId"
                      placeholder="请选择"
                      style="width: 90%"
                    >
                      <el-option
                        v-for="item in editConfig.infomation.carrier"
                        :key="item.id"
                        :label="item.name"
                        :value="item.id"
                      >
                      </el-option>
                    </el-select>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="运单号">
                    <el-input style="width: 90%;" :disabled="!showFooter"
                      v-model="editConfig.infomation.waybillNumber"></el-input>
                    <el-input
                      style="width: 90%"
                      :disabled="!showFooter"
                      v-model="editConfig.infomation.waybillNumber"
                    ></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="收货人">
                    <el-input style="width: 90%;" :disabled="!showFooter"
                      v-model="editConfig.infomation.receiverName"></el-input>
                    <el-input
                      style="width: 90%"
                      :disabled="!showFooter"
                      v-model="editConfig.infomation.receiverName"
                    ></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="联系电话" prop="receiverPhone">
                    <el-input style="width: 90%;" :disabled="!showFooter"
                      v-model="editConfig.infomation.receiverPhone"></el-input>
                    <el-input
                      style="width: 90%"
                      :disabled="!showFooter"
                      v-model="editConfig.infomation.receiverPhone"
                    ></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="收货地址">
                    <el-input style="width: 90%;" :disabled="!showFooter"
                      v-model="editConfig.infomation.receiverAddr"></el-input>
                    <el-input
                      style="width: 90%"
                      :disabled="!showFooter"
                      v-model="editConfig.infomation.receiverAddr"
                    ></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="重量">
                    <el-input style="width: 90%;" :disabled="!showFooter" type="number"
                      v-model="editConfig.infomation.weight"></el-input>
                    <el-input
                      style="width: 90%"
                      :disabled="!showFooter"
                      type="number"
                      v-model="editConfig.infomation.weight"
                    ></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="物流重量">
                    <el-input style="width: 90%;" :disabled="!showFooter" type="number"
                      v-model="editConfig.infomation.logisticWeight"></el-input>
                    <el-input
                      style="width: 90%"
                      :disabled="!showFooter"
                      type="number"
                      v-model="editConfig.infomation.logisticWeight"
                    ></el-input>
                  </el-form-item>
                </el-col>
              </el-form>
@@ -278,8 +447,10 @@
  printReceipts
} from "@/api/overview/overview"
import { getSupplierList, getCompanyList, getClientList } from "@/api/common/other"
import codeMixin from "@/views/overview/mixin/codeMixin"
export default {
  name: "AddOverviewDialog",
  mixins: [codeMixin],
  props: {
    editCommonConfig: {
      type: Object,
@@ -317,21 +488,21 @@
        toLocationId: [{ required: true, message: "请选择仓库位置", trigger: "change" }],
        fromLocationId: [{ required: true, message: "请选择源位置", trigger: "change" }],
        operationTypeId: [{ required: true, message: "请选择入库类型", trigger: "change" }],
      },
      rules2:{
        receiverPhone:  [
        number: [{ required: true, validator: this.validateCheckCode, trigger: ["change", "blur"] }]
      },
      rules2: {
        receiverPhone: [
          // {required: true, message: "请输入手机号", trigger: "change" },
          {
            pattern:
              /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/,
            pattern: /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/,
            message: "请输入正确的手机号",
            trigger: ["blur",'change' ],
          },
        ]
            trigger: ["blur", "change"]
          }
        ]
      },
      companyOptions: [], // 公司
      supplierOptions: [],//供应商
      clientOptions: [],//客户
      supplierOptions: [], //供应商
      clientOptions: [], //客户
      memberOptions: [{ id: 1, name: "管理员" }],
      toLocationOptions: [], //  源位置 仓库位置
      showButton: true,
@@ -357,16 +528,16 @@
      operationTypeOptions: [], // 入库类型列表
      shipmentsInfo: {
        carrier: [],
        waybillNumber: '',
        waybillNumber: "",
        weight: 0,
        logisticWeight: 0,
        receiverPhone:''
        receiverPhone: ""
      },
      showCancel: false, // 取消是否可以显示
      list: [],
      pdfParams:{},
      thatCursor:this.workType===3?"no-drop":'pointer',
      thatColor:this.workType===3?'#ccc':'#000'
      pdfParams: {},
      thatCursor: this.workType === 3 ? "no-drop" : "pointer",
      thatColor: this.workType === 3 ? "#ccc" : "#000"
    }
  },
  created() {
@@ -381,8 +552,17 @@
      this.getListTransfer()
    }
    this.getLogisticCompanyList()
    this.formInfo()
  },
  methods: {
    formInfo() {
      this.objCode.type = this.workType === 1 ? "入库编码" : this.workType === 2 ? "出库编码" : "调拨编码"
      this.objCode.codeStandID = ""
      if (this.editConfig.infomation.codeStandardID) {
        this.objCode.codeStandID = this.editConfig.infomation.codeStandardID
      }
      this.getRCodeStandardList()
    },
    setStatusList() {
      if (this.editConfig.infomation.status === 5) {
        this.list = [
@@ -541,50 +721,50 @@
    },
    // 保存
    saveClick() {
      let validArr=[]
      if(this.workType === 2){
         console.log("出库")
         validArr=[this.$refs.form.validate(),this.$refs.shipmentsInfo.validate()]
      }else{
      let validArr = []
      if (this.workType === 2) {
        console.log("出库")
        validArr = [this.$refs.form.validate()]
      } else {
        console.log("入库")
        validArr=[this.$refs.form.validate()]
        validArr = [this.$refs.form.validate()]
      }
      console.log(validArr,"xxx")
      console.log(validArr, "xxx")
      Promise.all(validArr)
      .then((results) => {
        console.log(results,"执行成功")
        for (let i = 0; i < this.tableData.length; i++) {
          if (this.tableData[i].productName.length === 0) {
            this.isNoProduct = true
            break
          } else {
            this.isNoProduct = false
          }
        }
        if (this.isNoProduct) {
          this.$message.error("请添加明细行或选择产品不能为空")
        } else {
          let requestUrl = this.editConfig.title === "新建" ? addOperation : updateOperation
          let params = this.saveParams()
          requestUrl({
            ...params
          }).then((res) => {
            console.log(res)
            this.editConfig.visible = false
            if (res.code === 200) {
              if(this.editConfig.title === "新建"){
                this.$message.success("添加成功")
              }else {
                this.$message.success("编辑成功")
              }
              this.$parent.getData()
        .then((results) => {
          console.log(results, "执行成功")
          for (let i = 0; i < this.tableData.length; i++) {
            if (this.tableData[i].productName.length === 0) {
              this.isNoProduct = true
              break
            } else {
              this.isNoProduct = false
            }
          })
        }
      })
      .catch((error) => {
        console.error('表单校验未通过:', error);
      });
          }
          if (this.isNoProduct) {
            this.$message.error("请添加明细行或选择产品不能为空")
          } else {
            let requestUrl = this.editConfig.title === "新建" ? addOperation : updateOperation
            let params = this.saveParams()
            requestUrl({
              ...params
            }).then((res) => {
              console.log(res)
              this.editConfig.visible = false
              if (res.code === 200) {
                if (this.editConfig.title === "新建") {
                  this.$message.success("添加成功")
                } else {
                  this.$message.success("编辑成功")
                }
                this.$parent.getData()
              }
            })
          }
        })
        .catch((error) => {
          console.error("表单校验未通过:", error)
        })
    },
    saveParams() {
      let data = this.editConfig.infomation
@@ -620,13 +800,13 @@
        sourceNumber: data.sourceNumber || "",
        status: 3,
        toLocationId: data.toLocationId || 0,
        waybillNumber: data.waybillNumber || '',
        waybillNumber: data.waybillNumber || "",
        weight: data.weight || 0,
        logisticWeight: data.logisticWeight || 0,
        logisticCompanyId: data.logisticCompanyId,
        receiverAddr: data.receiverAddr || '',
        receiverName: data.receiverName || '',
        receiverPhone: data.receiverPhone || ''
        receiverAddr: data.receiverAddr || "",
        receiverName: data.receiverName || "",
        receiverPhone: data.receiverPhone || ""
      }
      return params
    },
@@ -796,57 +976,56 @@
    // 取消
    btnCancel() {
      this.$confirm('确定取消吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        stateCancel(this.editConfig.infomation.id).then((res) => {
          console.log(res)
          this.editConfig.visible = false
          if (res.code === 200) {
            this.$message.success("取消调拨")
            this.$parent.getData()
          }
      this.$confirm("确定取消吗?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          stateCancel(this.editConfig.infomation.id).then((res) => {
            console.log(res)
            this.editConfig.visible = false
            if (res.code === 200) {
              this.$message.success("取消调拨")
              this.$parent.getData()
            }
          })
          this.list.map((item) => {
            if (item.label === "已取消") {
              item.status = "active"
            } else {
              item.status = "todo"
            }
          })
        })
        this.list.map((item) => {
          if (item.label === "已取消") {
            item.status = "active"
          } else {
            item.status = "todo"
          }
        })
      }).catch(() => {
      });
        .catch(() => {})
    },
    //打印
    async btnPrint() {
      if(this.workType!==3){
        localStorage.removeItem('pdfParams');
      if (this.workType !== 3) {
        localStorage.removeItem("pdfParams")
        try {
          let res = await printReceipts(this.editCommonConfig.infomation.id);
          console.log(res);
          let res = await printReceipts(this.editCommonConfig.infomation.id)
          console.log(res)
          if (res.code === 200) {
            console.log(this.editConfig.infomation.baseOperationType,"类型")
            console.log(this.editConfig.infomation.baseOperationType, "类型")
            let pdfParams = {
              url: res.data,
              baseOperationType: this.editConfig.infomation.baseOperationType || undefined,
              cutAfterWidth: this.editConfig.infomation.baseOperationType === 2 ? 50.8 : 53.3
            };
            }
            var { href } = this.$router.resolve({
                path: '/overview/previewExcel',
                query:{
                  ...pdfParams
                }
            });
            window.open(href, '_blank');
              path: "/overview/previewExcel",
              query: {
                ...pdfParams
              }
            })
            window.open(href, "_blank")
          }
        } catch (error) {
          console.error(error);
          console.error(error)
        }
      }
    }
  }
}
@@ -870,7 +1049,7 @@
    .btn:nth-of-type(2) {
      cursor: no-drop;
      color:#ccc;
      color: #ccc;
    }
  }
}
@@ -923,7 +1102,7 @@
    }
  }
  .el-tabs--card>.el-tabs__header {
  .el-tabs--card > .el-tabs__header {
    border-bottom: none;
  }
src/views/overview/OverviewListView.vue
@@ -22,7 +22,7 @@
              <template slot-scope="scope">
                <el-button @click="tableRowClick(scope.row, '查看')" type="text" size="small">查看</el-button>
                <el-button
                  v-if="scope.row.status !== 4&&scope.row.status !== 5"
                  v-if="scope.row.status !== 4 && scope.row.status !== 5"
                  @click="tableRowClick(scope.row, '编辑')"
                  type="text"
                  size="small"
@@ -67,8 +67,7 @@
      searchOptions: [],
      commonDetail: {
        visible: false,
        title: "新建"
        ,
        title: "新建",
        infomation: {}
      },
      editConfig: {
@@ -83,7 +82,8 @@
      formLabel: "",
      toLabel: "",
      addName: "",
      searchTaskMap: []
      searchTaskMap: [],
      numberLabel: "单号"
    }
  },
  created() {
@@ -112,12 +112,15 @@
      if (this.workType === 1) {
        this.formLabel = "供应商位置"
        this.toLabel = "仓库位置"
        this.numberLabel = "入库单号"
      } else if (this.workType === 2) {
        this.formLabel = "仓库位置"
        this.toLabel = "客户位置"
        this.numberLabel = "出库单号"
      } else {
        this.formLabel = "调出位置"
        this.toLabel = "调入位置"
        this.numberLabel = "调拨单号"
      }
    },
    setTable() {
@@ -141,7 +144,7 @@
    setTableColumn(showcol) {
      let tableColumn = [
        {
          label: "单号",
          label: this.numberLabel,
          prop: "number",
          isShowColumn: true,
          default: true
@@ -234,7 +237,7 @@
    async getData() {
      await getOperation({
        number: this.keyword,
        operationTypeId: this.$route.params.id?this.$route.params.id:this.params.id,
        operationTypeId: this.$route.params.id ? this.$route.params.id : this.params.id,
        page: this.pagerOptions.currPage,
        pageSize: this.pagerOptions.pageSize,
        status: this.params.status
@@ -278,7 +281,7 @@
    },
    // 状态
    getStatus(val) {
      return val === 1 ? "草稿" : val === 3 ? "就绪" : val === 4 ? "完成" :val === 5 ? "取消" : ""
      return val === 1 ? "草稿" : val === 3 ? "就绪" : val === 4 ? "完成" : val === 5 ? "取消" : ""
    },
    // 删除搜索状态
    delSelectClick() {
src/views/overview/mixin/codeMixin.js
New file
@@ -0,0 +1,133 @@
import { getCodeStandardList, getAutoCode } from "@/api/common/standard"
export default {
  components: {},
  data() {
    return {
      // 编码
      // 是否自动生成
      isIdDisabled: false,
      inputValue: [],
      explain: "",
      codenumer: 0, //每次输入的编码
      codenumberList: [], //整条编码
      sum: 0,
      method: 0,
      objCode: { name: "", page: 0, pageSize: 0, type: "物料编码", codeStandID: "" },
      codeRule: {},
      codeLength: 0,
      autoCodeObj: {}
    }
  },
  methods: {
    async getRCodeStandardList() {
      try {
        if (this.editConfig.title == "新建") {
          const res = await getCodeStandardList(this.objCode)
          this.codenumer = []
          this.sum = 0
          this.explain = ""
          this.codeLength = 0
          if (res.code == 200) {
            const { List = [], ID, AutoRule = {}, Method } = res.data ? res.data[0] : []
            this.codeRule = res.data ? res.data[0] : {}
            let autoRule = AutoRule
            let method = Method ? Method : 0
            this.method = method
            let rules = List
            this.editConfig.infomation.ID = ID
            if (method == 0 && res.data.data.length > 0) {
              console.log("sss")
              rules.forEach((item, index) => {
                // setTimeout(() => {
                //   this.codenumer = item.length;
                //   this.sum++;
                // }, 200);
                this.codenumer.push(item.Length)
                this.codeLength += item.Length
                this.sum++
                this.explain += item.Name + (index === rules.Length - 1 ? "" : "/")
              })
            }
            console.log(method)
            if (method == 1) {
              if (Object.keys(autoRule).length > 0) {
                this.isIdDisabled = true
                if (autoRule.PrefixMethod == 1) {
                  let prefix = autoRule.PrefixValue.split("").length
                  this.codenumer.push(prefix)
                  this.codeLength += prefix
                  if (autoRule.SuffixMethod == 2) {
                    this.codenumer.push(8)
                    this.codeLength += 8
                  }
                  if (autoRule.AutoLength) {
                    this.codenumer.push(autoRule.AutoLength)
                    this.codeLength += autoRule.AutoLength
                  }
                  this.sum = prefix + Number(autoRule.AutoLength)
                  // this.codeList(
                  //   this.editConfig.infomation.id ? this.editConfig.infomation.id : autoRule.PrefixValue
                  // )
                }
              }
            }
            this.$forceUpdate()
          } else {
            this.$message.error(res.data.msg ? res.data.msg : "获取编码规范失败,请重试!")
          }
          this.getAutoCodeValue()
        } else {
          this.codeList(this.editConfig.infomation.number)
        }
      } catch (err) {
        console.log(err)
      }
    },
    async getAutoCodeValue() {
      if (Object.keys(this.codeRule).length > 0) {
        const res = await getAutoCode(this.codeRule)
        if (res.code == 200) {
          let p = {
            id: "",
            codeStandardID: "",
            maxAutoIncr: ""
          }
          this.autoCodeObj = res.data ? res.data : p
          this.$set(this.editConfig.infomation, "number", this.autoCodeObj.id)
        } else {
          this.$set(
            this.editConfig.infomation,
            "number",
            this.codeRule.AutoRule.PrefixValue ? this.codeRule.AutoRule.PrefixValue : ""
          )
        }
      }
    },
    codeList(val) {
      this.inputValue = val
      this.codenumberList = val.toString()
      this.editConfig.infomation.number = this.codenumberList.length > 0 ? this.codenumberList.replace(/,/g, "") : ""
      console.log(this.codenumberList.replace(/,/g, ""))
    },
    // 订单编码单独校验
    validateCheckCode(rule, value, callback) {
      if (value && value.length > 0) {
        if (this.editConfig.title == "新建") {
          if (value.length != this.codeLength) {
            callback(new Error("请填写" + this.codeLength + "位的编码!"))
          }
        }
        callback()
      } else {
        callback(new Error("请输入编码"))
      }
    },
    // 配置编码规范的跳转
    numberClick() {
      window.open("http://www.fai365.com:9080/facilty", "_blank")
    }
  }
}