戴艳蓉 3 年 前
コミット
f0565bbab6

+ 1 - 0
package.json

@@ -49,6 +49,7 @@
     "uglifyjs-webpack-plugin": "^2.2.0",
     "v-viewer": "^1.6.3",
     "vue-count-to": "^1.0.13",
+    "vue-pdf": "^4.3.0",
     "vue-puzzle-verification": "^1.0.2",
     "vue-quill-editor": "^3.0.6",
     "vue-splitpane": "1.0.4",

+ 2 - 0
src/apis/components/search-stock.js

@@ -3,5 +3,7 @@ const api = "admin/";
 export default {
   // 列表
   list: (data, params) => http(api + "warelist", data, "post", params),
+  //  // 获取仓库  供应商仓/自建仓
+  //  warequery: (data, params) => http(api + "warequery", data, "post", params),
 };
    

+ 1 - 1
src/apis/service/purchaseIn/stockApply/index.js

@@ -20,5 +20,5 @@ export default {
   feeDetail: (data, params) => http(api + "feedinfo", data, "post", params),
   // 反馈状态修改
   feeChange: (data, params) => http(api + "feedchange", data, "post", params),
+ 
 };
-   

+ 2 - 0
src/components/globalComponents/file-upload-pdf/index.js

@@ -0,0 +1,2 @@
+import Main from './main.vue'
+export default Main

+ 125 - 0
src/components/globalComponents/file-upload-pdf/main.vue

@@ -0,0 +1,125 @@
+<template>
+  <div>
+    <input
+      ref="inputer"
+      :accept="accept"
+      :multiple="multiple"
+      class="fileUp"
+      type="file"
+      name="file"
+      @change="handleChange($event)"
+    />
+  </div>
+</template>
+
+<script>
+import urlConfig from "@/apis/url-config";
+import { getToken } from "@/utils/auth";
+//Uploadcondition 用于判断个性化文件 //返回 false 就不会上传文件
+//UploadErrorEvent 上传成功
+//UploadErrorEvent 上传失败
+
+export default {
+  name: "fileUploadPdf",
+  props: {
+    //@reject 默认值
+    accept: String, //上传文件类型
+    multiple: {
+      //是否可以上传多张图片
+      type: Boolean,
+      default: false,
+    },
+    uploadcondition: {
+      type: Function,
+      default: null,
+    },
+  },
+  data() {
+    return {
+      loading: false,
+      imgAPI: urlConfig.baseURL,
+    };
+  },
+  methods: {
+    async handleChange(event) {
+      let that = this;
+      let inputDOM1 = that.$refs.inputer;
+      const files = inputDOM1.files;
+      let length = files.length;
+      if (length === 0) return;
+      that.loading = that.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)",
+      });
+      for (let i = 0; i <= length; i++) {
+        if (i === length) {
+          this.loading.close();
+          that.$refs.inputer.value = "";
+        } else {
+          let str = await that.httpupLoad(files, i);
+          if (str === "error") {
+            that.$emit("UploadErrorEvent",true);
+          } else if (str === "token") {
+            that.$emit("UploadErrorEvent", false);
+          } else {
+            that.$emit("UploadSuccessEvent", {
+              url: str,
+            });
+          }
+        }
+      }
+    },
+    async httpupLoad(files, i) {
+      return new Promise((resolve, reject) => {
+        let that = this;
+        if (!this.uploadcondition(files[i])) {
+          resolve("break");
+        } else {
+          let form = new FormData();
+          form.append("files", files[i]);
+          form.append("token", getToken());
+          axios
+            .post(`${that.imgAPI}admin/uploadfile`, form)
+            .then((res) => {
+              if (res && res.data && res.status === 200) {
+                const { data, code } = res.data;
+                if (code === 0) {
+                  const { url, name } = data[0];
+                  resolve({
+                    url: `${that.imgAPI}storage/${url}`,
+                    name: name,
+                  });
+                } else if (code >= 100 && code <= 104) {
+                  resolve("token");
+                } else {
+                  resolve("error");
+                }
+              } else {
+                reject();
+              }
+            })
+            .catch((error) => {
+              reject();
+            });
+        }
+      });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.fileUp {
+  opacity: 0;
+  width: 100%;
+  height: 100%;
+  outline: none;
+  position: absolute;
+  top: 0;
+  left: 0;
+  &:hover {
+    cursor: pointer;
+  }
+}
+</style>

+ 0 - 0
src/components/globalComponents/file-upload-pdf/文件上传


+ 7 - 4
src/components/globalComponents/search-stock/main.vue

@@ -39,6 +39,7 @@ export default {
     "disabled",
     "isRelation",
     "companyCode",
+    "type",
     "names",
   ],
   /**
@@ -116,11 +117,13 @@ export default {
       this.selectLoading = true;
       if (query !== "") {
         this.options = [];
-        this.formValue.supplierNo = query;
-        let res = await asyncRequest.list(this.formValue);
+        let res = {};
+      this.formValue.supplierNo = query;
+          res = await asyncRequest.list(this.formValue);
+
         if (res && res.code === 0 && res.data) {
-          const { list } = res.data;
-          this.options = list;
+            const { list } = res.data;
+            this.options = list;
         } else if (res && res.code >= 100 && res.code <= 104) {
           await this.logout();
         } else {

+ 89 - 0
src/components/show-pdf-model/index.vue

@@ -0,0 +1,89 @@
+<template>
+  <el-dialog
+    :title="title"
+    :center="true"
+    align="left"
+    top="8vh"
+    width="900px"
+    @close="showModelThis = false"
+    :close-on-click-modal="false"
+    :visible.sync="showModelThis"
+    v-loading="loading"
+    element-loading-text="拼命加载中"
+    element-loading-spinner="el-icon-loading"
+    element-loading-background="rgba(0, 0, 0, 0.8)"
+    append-to-body
+  >
+    <el-card style="margin-top: -20px" >
+      <pdf 
+        ref="pdf"
+        :src="url"
+      />
+      <!-- v-if="src" <pdf ref="pdf" v-for="i in numPages" :key="i" :src="src" :page="i" /> -->
+    </el-card>
+  </el-dialog>
+</template>
+
+<script>
+import pdf from "vue-pdf";
+export default {
+  name: "showPdfModal",
+  props: ["showModel", "name", "url"],
+  components: {
+    pdf,
+  },
+  data() {
+    return {
+      loading: false,
+      title: "预览",
+      src: "",
+      showModelThis: this.showModel,
+      numPages: null, // pdf 总页数
+    };
+  },
+  watch: {
+    showModel: function (val) {
+      this.showModelThis = val;
+      if (val) {
+        this.initForm();
+      }
+    },
+    showModelThis(val) {
+      if (!val) {
+        this.$emit("cancel");
+      }
+    },
+  },
+  methods: {
+    itemidChange(e) {
+      this.ruleForm.itemid = e;
+      this.$refs.ruleForm.validateField("itemid");
+    },
+    async initForm() {
+      this.loading = true;
+      this.title = "预览" + this.name;
+
+      // this.src = pdf.createLoadingTask(this.url);
+      // this.getNumPages();
+      this.loading = false;
+    },
+    // 计算pdf页码总数
+    async getNumPages() {
+      console.log(this.url);
+      console.log(this.src);
+      this.src.promise
+        .then(async (res) => {
+          console.log(res);
+          // this.numPages = pdf.numPages;
+        })
+        .catch((err) => {
+          console.log(err);
+          // console.error("pdf 加载失败", err);
+        });
+    },
+  },
+};
+</script>
+
+  <style>
+</style>

+ 0 - 0
src/components/show-pdf-model/预览PDF


+ 2 - 2
src/views/login/index.vue

@@ -150,8 +150,8 @@ export default {
       ver: "",
       show: false,
       loginForm: {
-        username: "",
-        password: "",
+        username: "17744520491",
+        password: "123asd",
       },
       loginRules: {
         username: [

+ 172 - 130
src/views/purchaseIn/stockApply/components/addEdit.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div class="stockApply-com">
     <el-form
       :model="ruleForm"
       :rules="rulesThis"
@@ -77,35 +77,44 @@
           </el-form-item>
         </el-col>
         <el-col :span="type === '1' ? 12 : 24">
-          <el-form-item label="入库公司" prop="supplier_code">
-            <search-supplier
-              :disabled="
-                !(
+          <el-form-item label="附件" prop="file_url">
+            <div
+              class="file_url"
+              :class="{
+                disabled: !(
                   id === 'add' ||
                   (status === '0' && powers.some((item) => item == '005'))
-                )
-              "
-              :value="ruleForm.supplier_code"
-              :placeholder="'入库公司'"
-              :names="''"
-              @searchChange="selectSupplier"
-            />
-          </el-form-item>
-        </el-col>
-        <el-col :span="type === '1' ? 12 : 24">
-          <el-form-item label="入库仓库" prop="stock_code">
-            <search-stock
-              :disabled="!(id == 'add' || status === '0')"
-              :value="ruleForm.stock_code"
-              :placeholder="'入库仓库'"
-              :isRelation="true"
-              :names="''"
-              :companyCode="companyCode"
-              @searchChange="selectStock"
-            />
+                ),
+              }"
+            >
+              <p v-if="ruleForm.file_url">
+                {{ ruleForm.file_url_name }}
+              </p>
+              <p v-else class="no">附件</p>
+              <file-upload-pdf
+                v-if="
+                  id === 'add' ||
+                  (status === '0' && powers.some((item) => item == '005'))
+                "
+                class="Upload"
+                :accept="'.pdf'"
+                :multiple="false"
+                :uploadcondition="beforeAvatarUpload"
+                @UploadErrorEvent="UploadErrorEvent"
+                @UploadSuccessEvent="UploadSuccessEvent"
+              />
+              <div class="yulan" v-if="ruleForm.file_url" @click="PDFModelShow">
+                查看
+              </div>
+            </div>
+            <!-- <add-edit> -->
           </el-form-item>
         </el-col>
-        <el-col :span="24" style="padding:0 0 15px 0;text-align: right">
+   
+        <el-col
+          :span="type === '1' ? 12 : 24"
+          style="padding: 0 0 15px 0; text-align: right"
+        >
           <el-button
             type="primary"
             @click="submitForm"
@@ -126,6 +135,13 @@
       @cancel="showGoodsModel = false"
       @searchChange="addGoodsRes"
     />
+
+    <show-pdf-model
+      :show-model="showPDF"
+      :name="PDF_name"
+      :url="PDF_url"
+      @closeModel="showPDF = false"
+    />
   </div>
 </template>
    <script>
@@ -133,11 +149,12 @@ import resToken from "@/mixins/resToken";
 import asyncRequest from "@/apis/service/purchaseIn/stockApply";
 import { isnumber } from "@/utils/validate";
 import searchStockGoodModal from "@/components/search-stock-good-modal";
+import showPdfModel from "@/components/show-pdf-model";
 export default {
   name: "stockApply",
   props: ["id", "sitem", "newTime", "type"],
   mixins: [resToken],
-  components: { searchStockGoodModal },
+  components: { searchStockGoodModal, showPdfModel },
   computed: {
     powers() {
       let tran =
@@ -176,11 +193,14 @@ export default {
           return time.getTime() < Date.now();
         },
       },
+      showPDF: false,
+      PDF_name: "",
+      PDF_url: "",
       status: "",
       cat_id: "",
       routerId: "",
       stockCode: "",
-      companyCode: "",
+  
       showGoodsModel: "",
       loading: false,
       ruleForm: {
@@ -190,10 +210,12 @@ export default {
         good_type_code: "",
         goods_name: "",
         goods_num: "",
+        file_url: "",
+        file_url_name: "",
         last_go_stock: "",
-        supplier_code: [],
-        supplier_name: "",
-        stock_code: [],
+        // supplier_code: [],
+        // supplier_name: "",
+        // stock_code: [],
       },
       rulesThis: this.rules,
       rules: {
@@ -227,22 +249,14 @@ export default {
             trigger: "change",
           },
         ],
-        supplier_code: [
+        file_url: [
           {
-            type: "array",
-            required: true,
-            message: "请选择供入库公司",
-            trigger: "change",
-          },
-        ],
-        stock_code: [
-          {
-            type: "array",
-            required: true,
-            message: "请选择入库仓库",
+            required: false,
+            message: "请选择附件",
             trigger: "change",
           },
         ],
+       
       },
     };
   },
@@ -253,10 +267,8 @@ export default {
     async initForm() {
       this.loading = true;
       this.status = this.sitem !== undefined ? this.sitem.status : "";
+      this.status = "";
 
-      if (this.id === "add") {
-        this.status = "";
-      }
       this.rulesThis = this.rules;
       await this.resetForm();
       this.loading = false;
@@ -270,34 +282,17 @@ export default {
       this.ruleForm.goods_num = "";
       this.$refs.ruleForm.validateField("good_type_code");
     },
+    PDFModelShow() {
+      this.PDF_name = this.ruleForm.file_url_name;
+      this.PDF_url = this.ruleForm.file_url;
+      this.showPDF = true;
+      console.log(34567);
+    },
     // 最晚入库时间选择
     selectTime(e) {
       this.ruleForm.expecttime = e;
     },
-    // 选择仓库
-    selectStock(e) {
-      if (e && e.id) {
-        this.ruleForm.stock_code = [e.code];
-        this.stockCode = e.code;
-      } else {
-        this.ruleForm.stock_code = [];
-        this.stockCode = "";
-      }
-      this.$refs.ruleForm.validateField("stock_code");
-    },
-    // 选择供应商
-    selectSupplier(e) {
-      if (e && e.id) {
-        this.ruleForm.supplier_code = [e.code];
-        this.companyCode = e.code;
-      } else {
-        this.ruleForm.supplier_code = [];
-        this.companyCode = "";
-        this.ruleForm.stock_code = [];
-        this.stockCode = "";
-      }
-      this.$refs.ruleForm.validateField("supplier_code");
-    },
+  
     // 执行点击商品名称的抛出事件
     addGoodsRes(e) {
       let { good_code, type_code, good_name } = e[0];
@@ -335,14 +330,14 @@ export default {
               good_name, //商品名
               good_num, //采购数量
               lasttime, //最晚入库时间
-              wsm_code, //仓库名
+              file_url,
+              file_name,
+              // wsm_code, //仓库名
               status,
-              wsm_supplier,
-              wsm_supplierNo,
+             
               can,
               // 缺供应商
             } = this.sitem;
-            this.companyCode = wsm_supplierNo;
 
             this.cat_id = can.length > can ? e[e.length - 1] : "";
             let goods_class = [];
@@ -357,11 +352,9 @@ export default {
               goods_name: good_name,
               goods_num: good_num,
               last_go_stock: lasttime,
-              supplier_code: [],
-              stock_code: wsm_code.split(","),
-              companyCode: wsm_supplierNo,
-              supplier_name: wsm_supplierNo.split(","),
-              supplier_code: wsm_supplier.split(","),
+              file_url: file_url || "",
+              file_url_name: file_name || "",
+          
               status,
             };
           }
@@ -378,7 +371,9 @@ export default {
             good_code,
             good_type_code,
             goods_num,
-            stock_code,
+            file_url,
+            file_name,
+            // stock_code,
             last_go_stock,
           } = this.ruleForm;
           let model = {
@@ -386,8 +381,10 @@ export default {
             good_code,
             good_type_code,
             good_num: goods_num || "",
-            wsm_code:
-              this.id == "add" ? stock_code.toString() : stock_code.toString(),
+            file_url: file_url || "",
+            file_url_name: file_name || "",
+            // wsm_code:
+            //   this.id == "add" ? stock_code.toString() : stock_code.toString(),
 
             lastime: last_go_stock || "",
           };
@@ -418,60 +415,105 @@ export default {
         }
       });
     },
-    // 发起申请
-    async statusConfirm(status, message) {
-      await this.$confirm(`确定要${message}?`, {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(async () => {
-          if (status === "-1") {
-            await this.deleteById(message);
-          } else {
-            await this.setStatus(status, message);
-          }
-        })
-        .catch(() => {
-          console.log("取消");
-        });
-    },
-    // 作废该条信息
-    async deleteById(message) {
-      const res = await asyncRequest.delete({ id: this.routerId });
-      if (res && res.code === 0) {
-        this.$notify.success({
-          title: message + "成功!",
-          message: "",
-        });
-        this.routeGoto("stockApply", {});
-      } else if (res && res.code >= 100 && res.code <= 104) {
-        await this.logout();
+    //图片上传失败
+    async UploadErrorEvent(e) {
+      if (e) {
+        this.$message.error("附件上传失败!");
+        this.$refs.ruleForm.validateField("file_url");
       } else {
-        this.$message.warning(res.message);
+        await this.logout();
       }
     },
-    // 状态修改
-    async setStatus(status, message) {
-      let model = {
-        id: this.routerId,
-        remark: "",
-        status: status,
-      };
-      const res = await asyncRequest.status(model);
-      this.loading = false;
-      if (res && res.code === 0) {
-        this.$notify.success({
-          title: message + "成功!",
-          message: "",
-        });
-      } else if (res && res.code >= 100 && res.code <= 104) {
-        await this.logout();
-      } else {
-        this.$message.warning(res.message);
+    //图片上传成功
+    UploadSuccessEvent(data) {
+      if (data && data.url && data.url !== "break") {
+        const { url, name } = data.url;
+        this.ruleForm.file_url_name = name;
+        this.ruleForm.file_url = url;
+        this.$message.success("附件上传成功!");
+        this.$refs.ruleForm.validateField("file_url");
+      }
+    },
+    //判断图片规格
+    beforeAvatarUpload(file) {
+      let isJPG = false,
+        isLt2M = false;
+      if (file) {
+        if (file.type === "application/pdf") {
+          isJPG = true;
+        }
+        isLt2M = file.size / 1024 / 1024 < 1;
+        if (!isJPG) {
+          this.$message.error("图片格式不正确!");
+        }
+        if (!isLt2M) {
+          this.$message.error("图片大小不能超过 1MB!");
+        }
       }
+
+      return isJPG && isLt2M;
     },
   },
 };
 </script>
+<style lang="scss" scoped>
+.stockApply-com {
+  .demo-ruleForm {
+    .file_url {
+      position: relative;
+      width: 100%;
+      -webkit-appearance: none;
+      background-color: #ffffff;
+      background-image: none;
+      border-radius: 4px;
+      border: 1px solid #dcdfe6;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box;
+      color: #606266;
+      display: inline-block;
+      font-size: inherit;
+      height: 40px;
+      line-height: 40px;
+      outline: none;
+      //
+      -webkit-transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
+      transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
+      width: 100%;
+      p {
+        // width: calc(100% - 100px);
+        width: 100%;
+        padding: 0 15px;
+        overflow: hidden;
+        color: #606266;
+        &.no {
+          color: #c0c4cc;
+        }
+      }
+      &.disabled {
+        p {
+          background-color: #f5f7fa;
+          border-color: #dfe4ed;
+
+          cursor: not-allowed;
+          color: #c0c4cc;
+        }
+      }
+
+      .Upload {
+        z-index: 5;
+        // width: ;
+      }
+      .yulan {
+        position: absolute;
+        width: 50px;
+        text-align: center;
+        right: 0;
+        top: 0;
+        cursor: pointer;
+        // background: chocolate;
+      }
+    }
+  }
+}
+</style>
    

+ 188 - 67
src/views/purchaseIn/stockApply/components/purchaseBack.vue

@@ -5,7 +5,8 @@
       :rules="rules"
       status-icon
       ref="ruleForm"
-      label-width="120px"
+      label-width="100px"
+      :size="'mini'"
       class="demo-ruleForm"
     >
       <el-row>
@@ -18,6 +19,7 @@
               :disabled="
                 !(status == '1' && powers.some((item) => item == '024'))
               "
+              :size="'mini'"
               :value="ruleForm.supplierNo"
               :placeholder="'请选择供应商'"
               :names="supplierName"
@@ -26,8 +28,73 @@
             />
           </el-form-item>
         </el-col>
+        <el-col
+          :span="12"
+          v-if="status === '1' && powers.some((item) => item == '024')"
+        >
+          <el-form-item label="仓库类型" prop="wsm_type">
+            <el-select
+              v-model="ruleForm.wsm_type"
+              placeholder="仓库类型"
+              style="width: 100%"
+            >
+              <el-option
+                v-for="item in options"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col
+          :span="12"
+          v-if="
+            status === '1' &&
+            powers.some((item) => item == '024') &&
+            ruleForm.wsm_type === '1'
+          "
+        >
+          <el-form-item label="入库公司" prop="supplier_code">
+            <search-supplier
+              :disabled="
+                !(status == '1' && powers.some((item) => item == '024'))
+              "
+              :value="ruleForm.supplier_code"
+              :placeholder="'入库公司'"
+              :names="''"
+              :size="'mini'"
+              @searchChange="selectSupplierStock"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col
+          :span="12"
+          v-if="
+            status === '1' &&
+            powers.some((item) => item == '024') &&
+            ruleForm.wsm_type === '1'
+          "
+        >
+          <el-form-item label="入库仓库" prop="stock_code">
+            <search-stock
+              :disabled="
+                !(status == '1' && powers.some((item) => item == '024'))
+              "
+              :value="ruleForm.stock_code"
+              :placeholder="'入库仓库'"
+              :isRelation="true"
+              :names="''"
+              :size="'mini'"
+              :type="'1'"
+              :companyCode="companyCode"
+              @searchChange="selectStock"
+            />
+          </el-form-item>
+        </el-col>
         <el-col :span="12">
-          <el-form-item label="预计入库时间" prop="expecttime">
+          <el-form-item label="入库时间" prop="expecttime">
             <el-date-picker
               :disabled="
                 !(status == '1' && powers.some((item) => item == '024'))
@@ -36,7 +103,7 @@
               type="datetime"
               style="width: 100%"
               value-format="yyyy-MM-dd HH:mm:ss"
-              placeholder="选择日期"
+              placeholder="预计入库时间"
               :picker-options="pickerOptions"
               @change="selectTime"
             >
@@ -51,10 +118,11 @@
           "
           :span="8"
         >
-          <el-form-item label="实时金价" prop="now_god_price">
+          <el-form-item label="实时金价" prop="now_god_price" :size="'mini'">
             <el-input
               placeholder="0"
               disabled
+              :size="'mini'"
               maxlength="100"
               v-model="ruleForm.now_god_price"
             >
@@ -62,43 +130,13 @@
             </el-input>
           </el-form-item>
         </el-col>
-        <el-col
-          :span="
-            status === '1' && powers.some((item) => item == '024') ? 8 : 12
-          "
-        >
-          <el-form-item label="采购数量下限" prop="num">
-              <el-input
-                  :disabled="
-                    !(status == '1' && powers.some((item) => item == '024'))
-                  "
-                  placeholder="0"
-                  v-model="ruleForm.num"
-                />
-            <!-- <ul style="">
-              <li>
-              
-              </li>
-              <li>-</li>
-              <li>
-                <el-input
-                  :disabled="
-                    !(status == '1' && powers.some((item) => item == '024'))
-                  "
-                  placeholder="0"
-                  v-model="ruleForm.num"
-                />
-              </li>
-            </ul> -->
-          </el-form-item>
-        </el-col>
 
         <el-col
           v-if="status === '1' && powers.some((item) => item == '024')"
-          :span="8"
+          :span="6"
         >
-          <el-form-item label="商品重量" prop="weight">
-            <el-input placeholder="0" v-model="ruleForm.weight">
+          <el-form-item label="商品重量" prop="weight" :size="'mini'">
+            <el-input placeholder="0" :size="'mini'" v-model="ruleForm.weight">
               <template slot="append">g</template>
             </el-input>
           </el-form-item>
@@ -106,60 +144,84 @@
 
         <el-col
           v-if="status === '1' && powers.some((item) => item == '024')"
-          :span="8"
+          :span="6"
         >
-          <el-form-item label="工艺费" prop="teach_fee">
-            <el-input placeholder="0" v-model="ruleForm.teach_fee">
+          <el-form-item label="工艺费" prop="teach_fee" :size="'mini'">
+            <el-input
+              placeholder="0"
+              v-model="ruleForm.teach_fee"
+              :size="'mini'"
+            >
               <template slot="append">元</template>
             </el-input>
           </el-form-item>
         </el-col>
         <el-col
           v-if="status === '1' && powers.some((item) => item == '024')"
-          :span="8"
+          :span="6"
         >
-          <el-form-item label="包装费" prop="pakge_fee">
-            <el-input placeholder="0" v-model="ruleForm.pakge_fee">
+          <el-form-item label="包装费" prop="pakge_fee" :size="'mini'">
+            <el-input
+              placeholder="0"
+              v-model="ruleForm.pakge_fee"
+              :size="'mini'"
+            >
               <template slot="append">元</template>
             </el-input>
           </el-form-item>
         </el-col>
         <el-col
           v-if="status === '1' && powers.some((item) => item == '024')"
-          :span="8"
+          :span="6"
         >
-          <el-form-item label="加标费" prop="mark_fee">
-            <el-input placeholder="0" v-model="ruleForm.mark_fee">
+          <el-form-item label="加标费" prop="mark_fee" :size="'mini'">
+            <el-input
+              placeholder="0"
+              v-model="ruleForm.mark_fee"
+              :size="'mini'"
+            >
               <template slot="append">元</template>
             </el-input>
           </el-form-item>
         </el-col>
         <el-col
           v-if="status === '1' && powers.some((item) => item == '024')"
-          :span="8"
+          :span="6"
         >
-          <el-form-item label="证书费" prop="cert_fee">
-            <el-input placeholder="0" v-model="ruleForm.cert_fee">
+          <el-form-item label="证书费" prop="cert_fee" :size="'mini'">
+            <el-input
+              placeholder="0"
+              v-model="ruleForm.cert_fee"
+              :size="'mini'"
+            >
               <template slot="append">元</template>
             </el-input>
           </el-form-item>
         </el-col>
         <el-col
           v-if="status === '1' && powers.some((item) => item == '024')"
-          :span="8"
+          :span="6"
         >
-          <el-form-item label="物流费" prop="delivery_fee">
-            <el-input placeholder="0" v-model="ruleForm.delivery_fee">
+          <el-form-item label="物流费" prop="delivery_fee" :size="'mini'">
+            <el-input
+              placeholder="0"
+              v-model="ruleForm.delivery_fee"
+              :size="'mini'"
+            >
               <template slot="append">元</template>
             </el-input>
           </el-form-item>
         </el-col>
         <el-col
           v-if="status === '1' && powers.some((item) => item == '024')"
-          :span="8"
+          :span="6"
         >
-          <el-form-item label="开模费" prop="open_fee">
-            <el-input placeholder="0" v-model="ruleForm.open_fee">
+          <el-form-item label="开模费" prop="open_fee" :size="'mini'">
+            <el-input
+              placeholder="0"
+              v-model="ruleForm.open_fee"
+              :size="'mini'"
+            >
               <template slot="append">元</template>
             </el-input>
           </el-form-item>
@@ -167,19 +229,23 @@
 
         <el-col
           v-if="status === '1' && powers.some((item) => item == '024')"
-          :span="8"
+          :span="6"
         >
-          <el-form-item label="工差金额" prop="diff_price">
-            <el-input placeholder="0" v-model="ruleForm.diff_price">
+          <el-form-item label="工差金额" prop="diff_price" :size="'mini'">
+            <el-input
+              placeholder="0"
+              v-model="ruleForm.diff_price"
+              :size="'mini'"
+            >
               <template slot="append">元</template>
             </el-input>
           </el-form-item>
         </el-col>
         <el-col
           v-if="status === '1' && powers.some((item) => item == '024')"
-          :span="8"
+          :span="6"
         >
-          <el-form-item label="工差重量" prop="diff_weight">
+          <el-form-item label="工差重量" prop="diff_weight" :size="'mini'">
             <el-input placeholder="0" v-model="ruleForm.diff_weight">
               <template slot="append">g</template>
             </el-input>
@@ -188,30 +254,35 @@
 
         <el-col
           v-if="status === '1' && powers.some((item) => item == '024')"
-          :span="8"
+          :span="6"
         >
-          <el-form-item label="裸价" prop="nake_fee">
-            <el-input v-model="ruleForm.nake_fee" placeholder="0">
+          <el-form-item label="裸价" prop="nake_fee" :size="'mini'">
+            <el-input
+              v-model="ruleForm.nake_fee"
+              placeholder="0"
+              :size="'mini'"
+            >
               <template slot="append">元</template>
             </el-input>
           </el-form-item>
         </el-col>
         <el-col
           :span="
-            status === '1' && powers.some((item) => item == '024') ? 16 : 24
+            status === '1' && powers.some((item) => item == '024') ? 12 : 24
           "
-          ><el-form-item label="备注" prop="remark">
+          ><el-form-item label="备注" prop="remark" :size="'mini'">
             <el-input
               :disabled="
                 !(status == '1' && powers.some((item) => item == '024'))
               "
               type="textarea"
+              :size="'mini'"
               :autosize="{ minRows: 2, maxRows: 4 }"
               v-model="ruleForm.remark"
             /> </el-form-item
         ></el-col>
         <el-col
-          :span="8"
+          :span="12"
           style="text-align: right; padding: 0 0 20px 0"
           v-if="status === '1' && powers.some((item) => item == '024')"
         >
@@ -230,6 +301,7 @@ import rules from "./rules";
 export default {
   name: "stockApply",
   props: ["id", "sitem", "newTime"],
+
   mixins: [resToken],
   computed: {
     powers() {
@@ -251,6 +323,17 @@ export default {
           return time.getTime() < Date.now();
         },
       },
+      options: [
+        {
+          value: "1",
+          label: "自建仓",
+        },
+        {
+          value: "3",
+          label: "供应商仓",
+        },
+      ],
+      companyCode: "",
       goods_class: "",
       lasttime: "",
       supplierName: "",
@@ -259,6 +342,7 @@ export default {
       loading: false,
       ruleForm: {
         id: "",
+        wsm_type: "3",
         good_price: "",
         nake_fee: "",
         wsm_code: "",
@@ -304,6 +388,7 @@ export default {
 
       this.loading = false;
     },
+
     //初始化表单
     async resetForm() {
       await this.$nextTick(() => {
@@ -315,6 +400,7 @@ export default {
           if (can && can.length > 0) {
             this.goods_class = can[0].id;
           }
+          //  this.companyCode = this.sitem.wsm_supplierNo;
           if (this.status !== "1") {
             this.ruleForm.wsm_code = this.sitem.wsm_code;
 
@@ -329,12 +415,13 @@ export default {
           } else {
             this.ruleForm = {
               id: this.id,
+              wsm_type: "3",
               good_price: "0",
               nake_fee: "0",
               wsm_code: this.sitem.wsm_code,
               supplier_code: "",
               supplierNo: [],
-              num: "0",
+              num: this.sitem.good_num,
               expecttime: "",
               weight: "0",
               now_god_price: "0",
@@ -347,6 +434,10 @@ export default {
               diff_weight: "0",
               diff_price: "0",
               remark: "",
+              stock_code: [],
+              companyCode: "",
+              supplier_name: "",
+              supplier_code: [],
             };
           }
         }
@@ -365,6 +456,11 @@ export default {
           this.loading = true;
           const item = JSON.parse(JSON.stringify(this.ruleForm));
           item.supplierNo = item.supplierNo.toString();
+          item.wsm_code = item.stock_code.toString();
+          delete item["companyCode"];
+          delete item["supplier_name"];
+          delete item["supplier_code"];
+          delete item["stock_code"];
           const res = await asyncRequest.addFee(item);
           if (res && res.code === 0) {
             this.$notify.success({
@@ -415,6 +511,31 @@ export default {
       }
       this.$refs.ruleForm.validateField("supplierNo");
     },
+
+    // 选择仓库
+    selectStock(e) {
+      if (e && e.id) {
+        this.ruleForm.stock_code = [e.code];
+        this.stockCode = e.code;
+      } else {
+        this.ruleForm.stock_code = [];
+        this.stockCode = "";
+      }
+      this.$refs.ruleForm.validateField("stock_code");
+    },
+    // 选择供应商
+    selectSupplierStock(e) {
+      if (e && e.id) {
+        this.ruleForm.supplier_code = [e.code];
+        this.companyCode = e.code;
+      } else {
+        this.ruleForm.supplier_code = [];
+        this.companyCode = "";
+        this.ruleForm.stock_code = [];
+        this.stockCode = "";
+      }
+      this.$refs.ruleForm.validateField("supplier_code");
+    },
   },
 };
 </script>

+ 55 - 32
src/views/purchaseIn/stockApply/components/rules.js

@@ -28,85 +28,108 @@ const validateWeight = (rule, value, callback) => {
     }
 };
 export default {
-    good_price: {
+    good_price: [{
         required: true,
         trigger: "blur",
         validator: validatePrice,
-    },
-    nake_fee: {
+    },],
+    nake_fee: [{
         required: true,
         validator: validatePrice,
         trigger: "blur",
-    },
-    supplierNo: {
+    },],
+    supplierNo: [{
         type: "array",
         required: true,
         message: "采购供应商不能为空",
         trigger: "change",
-    },
-    num: {
+    },],
+    num: [{
         required: true,
         validator: validateWeight,
         trigger: "blur",
-    },
-    expecttime: {
+    },],
+    wsm_type: [
+        {
+            required: true,
+            message: "请选择入库仓库类型",
+            trigger: "change"
+        }
+    ],
+    expecttime: [{
         required: true,
         message: "预计入库时间不能为空",
         trigger: 'blur',
-    },
-    weight: {
+    },],
+    weight: [{
         required: true,
         validator: validateWeight,
         trigger: "blur",
-    },
-    now_god_price: {
+    },],
+    now_god_price: [{
         required: true,
         validator: validatePrice,
         trigger: "blur",
-    },
-    teach_fee: {
+    },],
+    teach_fee: [{
         required: true,
         validator: validatePrice,
         trigger: "blur",
-    },
-    pakge_fee: {
+    },],
+    pakge_fee: [{
         required: true,
         validator: validatePrice,
         trigger: "blur",
-    },
-    mark_fee: {
+    },],
+    mark_fee: [{
         required: true,
         validator: validatePrice,
         trigger: "blur",
-    },
-    cert_fee: {
+    },],
+    cert_fee: [{
         required: true,
         validator: validatePrice,
         trigger: "blur",
-    },
-    delivery_fee: {
+    },],
+    delivery_fee: [{
         required: true,
         validator: validatePrice,
         trigger: "blur",
-    },
-    open_fee: {
+    },],
+    open_fee: [{
         required: true,
         validator: validatePrice,
         trigger: "blur",
-    },
-    diff_weight: {
+    },],
+    diff_weight: [{
         required: true,
         validator: validateWeight,
         trigger: "blur",
-    },
-    diff_price: {
+    },],
+    diff_price: [{
         required: true,
         validator: validatePrice,
         trigger: "blur",
-    },
-    remark: {
+    },],
+    remark: [{
         required: true,
         message: "请填写备注",
         trigger: "blur",
-    }
+    }],
+    supplier_code: [
+        {
+            type: "array",
+            required: true,
+            message: "请选择供入库公司",
+            trigger: "change",
+        },
+    ],
+    stock_code: [
+        {
+            type: "array",
+            required: true,
+            message: "请选择入库仓库",
+            trigger: "change",
+        },
+    ],
 }

+ 1 - 30
src/views/purchaseIn/wsmInOrder/components/wsm-in-order-model.vue

@@ -29,7 +29,6 @@
   </el-dialog>
 </template>
    <script>
-import asyncRequest from "@/apis/service/purchaseIn/purchaseOrder";
 import resToken from "@/mixins/resToken";
 import wsmInOrderAddEditForm from "./wsm-in-order-addEdit-form";
 
@@ -64,39 +63,11 @@ export default {
     
     async initForm() {
       this.loading = true;
-      // this.sitem = null;
-      // // btn_code
-      // switch (this.btn_code) {
-      //   case "028":
-      //     this.title = "新建备货入库单";
-      //     break;
-      //   case "007":
-      //     this.title = "备货入库单详情";
-      //     break;
-      //   default:
-      //     this.title = "新建备货入库单";
-      // }
-      // if (this.btn_code !== "028") {
-      //   await this.initData();
-      // } else {
-      //   this.sitem = {};
-      //   this.getNewTime();
-      // }
 
       this.loading = false;
     },
 
-    async initData() {
-      const res = await asyncRequest.orderininfo({ wsm_in_code: this.id });
-      if (res && res.code === 0 && res.data) {
-        this.sitem = res.data;
-        this.getNewTime();
-      } else if (res && res.code >= 100 && res.code <= 104) {
-        await this.logout();
-      } else {
-        this.$message.warning(res.message);
-      }
-    },
+    
     getNewTime() {
       this.newTime = new Date().valueOf();
     },