Forráskód Böngészése

Merge branch 'purchaseDev' of http://172.16.100.139/new-business/drp-web into purchaseDev

002201 1 éve
szülő
commit
d7adaf98b9

+ 35 - 0
src/api/business/spd/fillin/dailysale_quantity_assess_item.js

@@ -0,0 +1,35 @@
+import request from '@/utils/request'
+
+// 查询明细
+export function listItem(query) {
+  return request({
+    url: '/mk/fillin/dailySaleQuantityAssessItem/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 批量修改明细
+export function saveItems(data) {
+  return request({
+    url: '/mk/fillin/dailySaleQuantityAssessItem',
+    method: 'put',
+    data: data
+  })
+}
+
+//删除明细
+export function delItems(id) {
+  return request({
+    url: '/mk/fillin/dailySaleQuantityAssessItem/' + id,
+    method: 'delete'
+  })
+}
+
+//全选销售物料
+export function selectAllSaleMat(id) {
+  return request({
+    url: '/mk/fillin/dailySaleQuantityAssessItem/selectAll/' + id,
+    method: 'post',
+  })
+}

+ 10 - 10
src/components/popover-select/index.vue

@@ -109,7 +109,7 @@ export default {
     TableColumnTemp() {
       const { type } = this.$props;
       const documents = require(`./components/${type}`).default;
-      return documents.filter((document) => document.key);
+      return documents.filter((document) => document.item.key);
     },
   },
   watch: {
@@ -303,23 +303,23 @@ export default {
           >
           </el-table-column>
           <el-table-column
-            v-for="(column, index) in TableColumnTemp"
+            v-for="({item,attr}, index) in TableColumnTemp"
             :key="index"
-            :prop="column.key"
-            :label="column.title"
-            :width="column.width"
+            :prop="item.key"
+            :label="item.title"
+            :width="item.width"
             show-overflow-tooltip
           >
             <template slot-scope="scope">
               <dr-computed-input
-                v-if="column.type === 'ComputedInput'"
-                v-model="scope.row[column.key]"
+                v-if="attr.type === 'ComputedInput'"
+                v-model="scope.row[item.key]"
                 :source="scope.row"
-                :computed="column.computed"
-                :placeholder="column.placeholder"
+                :computed="attr.computed"
+                :placeholder="attr.placeholder"
                 style="width: 100%"
               ></dr-computed-input>
-              <span v-else> {{ scope.row[column.key] }}</span>
+              <span v-else> {{ scope.row[item.key] }}</span>
             </template>
           </el-table-column>
         </el-table>

+ 37 - 20
src/views/business/spd/fillin/dailysale_quantity_assess/addmaterial.vue

@@ -31,7 +31,7 @@
                     </el-col>
                 </el-row>
             </el-form>
-            <el-table :data="tableData" size="mini" @row-dblclick="useDoubleClick" @selection-change="useSelectChange" height="450px">
+            <el-table :data="tableData" size="mini" @row-dblclick="useDoubleClick" @selection-change="useSelectChange" v-loading="loading" height="450px">
                 <el-table-column type="selection" width="55"> </el-table-column>
                 <el-table-column show-overflow-tooltip label="编码" align="center" width="150" prop="code"/>
                 <el-table-column show-overflow-tooltip label="名称" align="center" width="200" prop="name"/>
@@ -62,11 +62,13 @@
 
 <script>
 import materialApi from "@/api/material/basic";
-
+import { saveItems } from "@/api/business/spd/fillin/dailysale_quantity_assess_item";
 export default {
   name: "dailysaleQuantityAssessDetailAddmaterial",
+  props: ["form"],
   data() {
     return {
+      loading: false,
       //是否打开弹窗
       open:false,
       //搜索框参数
@@ -86,9 +88,6 @@ export default {
       selectionData:[],
     };
   },
-  watch: {},
-  created() {
-  },
   methods: {
     //打开弹窗
     openDialog(){
@@ -97,16 +96,16 @@ export default {
     },
     //关闭弹窗
     useClose(done){
-        this.selectionData = [];
-        this.queryParams = {
-            code: null,
-            name: null,
-        }
-        this.page = {
-            pageNum:1,
-            pageSize:10,
-        }
-        done();
+      this.selectionData = [];
+      this.queryParams = {
+          code: null,
+          name: null,
+      }
+      this.page = {
+          pageNum:1,
+          pageSize:10,
+      }
+      done();
     },
     //获取列表数据
     async getList() {
@@ -130,7 +129,7 @@ export default {
         this.selectionData = selection;
     },
     //确认多选
-    useConfirm(){
+    async useConfirm(){
       if(this.selectionData.length < 1){
         this.$modal.msgError("未选择数据!");
         return;
@@ -138,28 +137,46 @@ export default {
       const arr = [];
       for(let i in this.selectionData){
           arr.push({
+              dailysaleQuantityAssessId:this.form.id,
               oneClassName:this.selectionData[i].oneClass,
               twoClassName:this.selectionData[i].twoClass,
+              material:this.selectionData[i].id,
               materialCode:this.selectionData[i].code,
               materialName:this.selectionData[i].name,
               unitName:this.selectionData[i].unitIdName,
+              price:this.selectionData[i].price,
           });
       }
-      this.$emit("addRow",arr);
-      this.open = false;
+      let res = await saveItems(arr);
+      if(res.code == '200'){
+        this.$modal.msgSuccess("添加成功");
+        this.$emit("useReset");
+        this.open = false;
+      }else{
+        this.$modal.msgError("保存失败,请联系管理员!");
+      }
     },
     //双击选择
     async useDoubleClick(row){
         const arr = [];
         arr.push({
+            dailysaleQuantityAssessId:this.form.id,
             oneClassName:row.oneClass,
             twoClassName:row.twoClass,
+            material:row.id,
             materialCode:row.code,
             materialName:row.name,
             unitName:row.unitIdName,
+            price:row.price,
         });
-        this.$emit("addRow",arr);
-        this.open = false;
+        let res = await saveItems(arr);
+        if(res.code == '200'){
+          this.$modal.msgSuccess("添加成功");
+          this.$emit("useReset");
+          this.open = false;
+        }else{
+          this.$modal.msgError("保存失败,请联系管理员!");
+        }
     },
     //搜索
     useSearch(){

+ 60 - 27
src/views/business/spd/fillin/dailysale_quantity_assess/choosematerial.vue

@@ -31,7 +31,7 @@
                     </el-col>
                 </el-row>
             </el-form>
-            <el-table :data="tableData" size="mini" @row-dblclick="useDoubleClick" @selection-change="useSelectChange" height="450px">
+            <el-table :data="tableData" size="mini" @row-dblclick="useDoubleClick" @selection-change="useSelectChange" v-loading="loading" height="450px">
                 <el-table-column type="selection" width="55"> </el-table-column>
                 <el-table-column show-overflow-tooltip label="编码" align="center" width="150" prop="code"/>
                 <el-table-column show-overflow-tooltip label="名称" align="center" width="200" prop="name"/>
@@ -51,24 +51,28 @@
                 :total=total>
             </el-pagination>
             <el-card>
-            <div class="btn_group">
-                <el-col :span="1.5" style="margin: 0 10px;">
-                    <el-button type="primary" size="mini" plain @click="useConfirm">确认</el-button>
-                </el-col>
-            </div>
-        </el-card>
+              <div class="btn_group">
+                  <el-col :span="1.5" style="margin: 0 10px;">
+                      <el-button type="primary" size="mini" plain @click="selectAll">全选</el-button>
+                  </el-col>
+                  <el-col :span="1.5" style="margin: 0 10px;">
+                      <el-button type="primary" size="mini" plain @click="useConfirm">确认</el-button>
+                  </el-col>
+              </div>
+          </el-card>
         </el-dialog>
     </div>
 </template>
 
 <script>
 import {getSaleMaterialList} from "@/api/business/spd/fillin/dailysale_quantity_assess";
-
+import { saveItems,selectAllSaleMat } from "@/api/business/spd/fillin/dailysale_quantity_assess_item";
 export default {
   name: "dailysaleQuantityAssessDetailChoosematerial",
   props: ["form"],
   data() {
     return {
+      loading: false,
       //是否打开弹窗
       open:false,
       //搜索框参数
@@ -87,9 +91,6 @@ export default {
       selectionData:[],
     };
   },
-  watch: {},
-  created() {
-  },
   methods: {
     //打开弹窗
     openDialog(){
@@ -102,15 +103,15 @@ export default {
     },
     //关闭弹窗
     useClose(done){
-        this.selectionData = [];
-        this.queryParams = {
-            customer: null,
-            materialCode: null,
-            materialName: null,
-            pageNum:1,
-            pageSize:10,
-        }
-        done();
+      this.selectionData = [];
+      this.queryParams = {
+        customer: null,
+        materialCode: null,
+        materialName: null,
+        pageNum:1,
+        pageSize:10,
+      }
+      done();
     },
     //获取列表数据
     async getList() {
@@ -134,8 +135,22 @@ export default {
     useSelectChange(selection){
         this.selectionData = selection;
     },
+    //全选
+    selectAll(){
+      this.$modal.confirm('您确定要全选销售给当前客户的所有物料吗').then(() => {
+        selectAllSaleMat(this.form.id).then(res => {
+          if(res.code == '200'){
+            this.$modal.msgSuccess("全选成功");
+            this.$emit("useReset");
+            this.open = false;
+          }else{
+            this.$modal.msgError("全选失败,请联系管理员!");
+          }
+        })
+      }).catch(() => {})
+    },
     //确认多选
-    useConfirm(){
+    async useConfirm(){
       if(this.selectionData.length < 1){
         this.$modal.msgError("未选择数据!");
         return;
@@ -143,28 +158,46 @@ export default {
       const arr = [];
       for(let i in this.selectionData){
           arr.push({
+              dailysaleQuantityAssessId:this.form.id,
               oneClassName:this.selectionData[i].oneClass,
               twoClassName:this.selectionData[i].twoClass,
+              material:this.selectionData[i].id,
               materialCode:this.selectionData[i].code,
               materialName:this.selectionData[i].name,
               unitName:this.selectionData[i].unitIdName,
+              price:this.selectionData[i].price,
           });
       }
-      this.$emit("addRow",arr);
-      this.open = false;
+      let res = await saveItems(arr);
+      if(res.code == '200'){
+        this.$modal.msgSuccess("添加成功");
+        this.$emit("useReset");
+        this.open = false;
+      }else{
+        this.$modal.msgError("保存失败,请联系管理员!");
+      }
     },
     //双击选择
     async useDoubleClick(row){
         const arr = [];
         arr.push({
+            dailysaleQuantityAssessId:this.form.id,
             oneClassName:row.oneClass,
             twoClassName:row.twoClass,
+            material:row.id,
             materialCode:row.code,
             materialName:row.name,
             unitName:row.unitIdName,
+            price:row.price,
         });
-        this.$emit("addRow",arr);
-        this.open = false;
+        let res = await saveItems(arr);
+        if(res.code == '200'){
+          this.$modal.msgSuccess("添加成功");
+          this.$emit("useReset");
+          this.open = false;
+        }else{
+          this.$modal.msgError("保存失败,请联系管理员!");
+        }
     },
     //搜索
     useSearch(){
@@ -183,12 +216,12 @@ export default {
     },
     //改变一页显示条数
     useChangePageSize(val){
-      this.page.pageSize = val
+      this.queryParams.pageSize = val
       this.getList()
     },
     //翻页
     useCurrentChange(val){
-      this.page.pageNum = val
+      this.queryParams.pageNum = val
       this.getList()
     },
   },

+ 110 - 161
src/views/business/spd/fillin/dailysale_quantity_assess/detail.vue

@@ -7,8 +7,6 @@
       <el-form
         size="mini"
         :model="form"
-        :rules="rules"
-        ref="form"
         label-width="auto"
       >
         <el-row :gutter="10">
@@ -37,19 +35,13 @@
           </el-col>
           <el-col :span="1.5">
             <el-form-item label="客户" prop="customer">
-              <dr-popover-select
-                :readonly="this.openMode == 'edit' || this.openMode == 'see'"
-                size="mini"
+              <el-input
+                placeholder="自动生成"
+                readonly
                 v-model="form.customerName"
-                title="客户选择"
-                type="CUSTOMER_PARAM_ZT"
-                :dataMapping="{
-                  customer: 'id',
-                  customerName: 'name',
-                }"
-                :source.sync="form"
-              >
-              </dr-popover-select>
+                style="width: 200px"
+                clearable
+              />
             </el-form-item>
           </el-col>
           <el-col :span="1.5">
@@ -85,11 +77,11 @@
         </el-row>
       </el-form>
     </el-card>
-    <el-card style="height: 800px">
+    <el-card style="height: 750px">
       <div style="position: relative">
         <el-tabs v-model="activeName" @tab-click="useSwitchTab">
           <el-tab-pane label="明细" name="item">
-            <el-table :data="items" height="700px" size="size">
+            <el-table :data="items" height="600px" size="size" v-loading="loading">
               <el-table-column
                 label="序号"
                 type="index"
@@ -129,26 +121,16 @@
                 show-overflow-tooltip
                 label="单位"
                 align="center"
-                width="150"
+                width="100"
                 prop="unitName"
               />
               <el-table-column
                 show-overflow-tooltip
                 label="价格(元)"
                 align="center"
-                width="150"
+                width="100"
                 prop="price"
-              >
-                <template slot-scope="scope">
-                  <el-input-number
-                    size="mini"
-                    style="width: 130px"
-                    v-model="scope.row.price"
-                    :controls="false"
-                  >
-                  </el-input-number>
-                </template>
-              </el-table-column>
+              />
               <el-table-column
                 show-overflow-tooltip
                 label="日 销 售 数 据 填 报"
@@ -679,7 +661,7 @@
                   <el-button
                     type="text"
                     size="mini"
-                    @click="useRowRemove(scope.$index, scope.row)"
+                    @click="useRowRemove(scope.row)"
                     >删行</el-button
                   >
                 </template>
@@ -687,9 +669,19 @@
             </el-table>
           </el-tab-pane>
         </el-tabs>
+        <el-pagination
+            background
+            @size-change="useChangePageSize"
+            @current-change="useCurrentChange"
+            :current-page="queryParams.pageNum"
+            :page-sizes="[10, 15, 20]"
+            :page-size="100"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total=total>
+        </el-pagination>
         <div style="position: absolute; right: 10px; top: 5px; display: flex">
-          <Choosematerial @addRow="addRow" :form="form"></Choosematerial>
-          <Addmaterial @addRow="addRow"></Addmaterial>
+          <Choosematerial @useReset="useReset" :form="form"></Choosematerial>
+          <Addmaterial @useReset="useReset" :form="form"></Addmaterial>
         </div>
       </div>
     </el-card>
@@ -709,11 +701,8 @@
 </template>
 
 <script>
-import {
-  addAssess,
-  updateAssess,
-  getAssess,
-} from "@/api/business/spd/fillin/dailysale_quantity_assess";
+import { getAssess } from "@/api/business/spd/fillin/dailysale_quantity_assess";
+import { listItem,saveItems,delItems } from "@/api/business/spd/fillin/dailysale_quantity_assess_item";
 import Addmaterial from "./addmaterial";
 import Choosematerial from "./choosematerial";
 export default {
@@ -722,93 +711,56 @@ export default {
   props: ["openMode", "row"],
   data() {
     return {
-      form: {
-        month: null,
-        customer: null,
-        customerName: null,
-        items: [],
-        //所选月份天数
-        numDay:31,
-      },
-      //表单校验
-      rules: {
-        month: [{ required: true, message: "月份不能为空", trigger: "blur" }],
-        customer: [
-          { required: true, message: "客户不能为空", trigger: "blur" },
-        ],
+      loading: false,
+      //主表
+      form: {},
+      //所选月份天数
+      numDay:31,
+      //明细
+      items:[],
+      //明细查询条件
+      queryParams:{
+        dailysaleQuantityAssessId: null,
+        pageNum:1,
+        pageSize:10,
       },
+      //总条数
+      total: 0,
       activeName: "item",
     };
   },
-  watch: {
-    'form.month': {
-      handler(newVal) {
-          let arr = newVal.split('-');
-          this.numDay = this.getDays(arr[0],arr[1]);
-      },
-      immediate:true,
-    }
-  },
-  computed: {
-    items() {
-      return this.form.items.filter(({ delFlag }) => delFlag !== "2");
-    },
-  },
   async created() {
     switch (this.openMode) {
-      case "add":
-        this.form.createTime = this.getCurrentTime();
-        this.form.month = this.getCurrentMonth();
-        this.form.createByName = this.$store.state.user.nickName;
-        this.form.dept = this.$store.state.user.deptId;
-        this.form.deptName = this.$store.state.user.deptName;
-        break;
       case "edit":
         await this.fetchAssess(this.row.id);
-        this.total();
-        console.log('this.form.items',this.form.items);
+        await this.fetchItem(this.row.id);
         break;
       case "see":
         await this.fetchAssess(this.row.id);
-        this.total();
+        await this.fetchItem(this.row.id);
         break;
     }
+    let arr = this.form.month.split('-');
+    this.numDay = this.getDays(arr[0],arr[1]);
   },
   methods: {
     //保存
     async useSave() {
-      this.$refs["form"].validate(async (valid) => {
-        if (valid) {
-          try {
-            let checkRes = this.checkBeforeSave(this.form);
-            if (!checkRes) {
-              return;
-            }
-            this.loading = true;
-            let res = null;
-            if (this.openMode === "add") {
-              res = await addAssess(this.form);
-            }
-            if (this.openMode === "edit") {
-              res = await updateAssess(this.form);
-            }
-            if (res.code === 200) {
-              this.$modal.msgSuccess("保存成功");
-              this.useBack();
-            }
-          } catch (err) {
-            console.error(err);
-          } finally {
-            this.loading = false;
-          }
-        } else {
-          return false;
+      this.loading = true;
+      try {
+        let res = null;
+        if (this.openMode === "edit") {
+          res = await saveItems(this.items);
         }
-      });
-    },
-    //保存前校验
-    checkBeforeSave(form) {
-      return true;
+        if (res.code === 200) {
+          this.$modal.msgSuccess("保存成功");
+          this.useBack();
+        }
+      } catch (err) {
+        console.error(err);
+      } finally {
+        this.loading = false;
+      };
     },
     //查询详情
     async fetchAssess(id) {
@@ -830,28 +782,27 @@ export default {
         this.loading = false;
       }
     },
-    //增行
-    addRow(rows) {
-      console.log("rows", rows);
-      for (let i in rows) {
-        this.form.items.push({
-          delFlag: "0",
-          $index: new Date().getTime(),
-          ...rows[i],
-        });
-      }
+    //查询明细
+    async fetchItem(pid){
+      this.loading = true;
+      this.queryParams.dailysaleQuantityAssessId = pid;
+      await listItem(this.queryParams).then(res => {
+        if (res.code === 200) {
+          this.items = res.rows
+          this.total = res.total
+          this.aggregate();
+        }
+        this.loading = false;
+      })
     },
     //删行
-    async useRowRemove(index, row) {
-      if (row.id) {
-        this.form.items.forEach((e) => {
-          if (e.id == row.id) {
-            e.delFlag = "2";
-          }
-        });
-      } else {
-        this.form.items.splice(index, 1);
-      }
+    async useRowRemove(row) {
+      let arr = [row.id];
+      delItems(arr).then(res => {
+        if (res.code === 200) {
+           this.fetchItem(this.form.id);
+        }
+      })
     },
     //切换多页签
     useSwitchTab() {},
@@ -860,51 +811,45 @@ export default {
       this.$parent.useOpenDetail();
       this.$parent.useSearch();
     },
-    //获取当月
-    getCurrentMonth () {
-      const date = new Date()
-      let year = date.getFullYear()
-      let month = date.getMonth() + 1
-      month = month > 9 ? month : '0' + month
-      return `${year}-${month}`
-    },
+    //获取当前月份天数
     getDays(year, month){
       return new Date(year, month, 0).getDate()
     },
-    getCurrentTime() {
-      var date = new Date();//当前时间
-      var year = date.getFullYear() //年
-      var month = this.repair(date.getMonth() + 1);//月
-      var day = this.repair(date.getDate());//日
-      var hour = this.repair(date.getHours());//时
-      var minute = this.repair(date.getMinutes());//分
-      var second = this.repair(date.getSeconds());//秒
-      //当前时间 
-      var curTime = year + "-" + month + "-" + day
-              + " " + hour + ":" + minute + ":" + second;
-      return curTime;
-    },
-    repair(i){
-      if (i >= 0 && i <= 9) {
-          return "0" + i;
-      } else {
-          return i;
-      }
-    },
     //计算合计
-    total(){
+    aggregate(){
       let num = ["first","second","third","fourth","fifth","sixth","seventh","eighth","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"
 				,"twentyFirst","seventeenth","eighteenth","nineteenth","twentieth","twentyFirst","twentySecond","twentyThird","twentyFourth","twentyFifth","twentySixth","twentySeventh","twentyEighth","twentyNinth","thirtieth","thirtyFirst"];
-      for(let i in this.form.items){
+      for(let i in this.items){
         let c = 0;
         for(let j in num){
-          c = (this.form.items[i][num[j]] || 0) - 0 + c;
+          c = (this.items[i][num[j]] || 0) - 0 + c;
         }
-        console.log('c',c);
-        this.form.items[i].amount = c;
-        this.form.items[i].money = c * (this.form.items[i].price || 0);
+        this.items[i].amount = c;
+        this.items[i].money = c * (this.items[i].price || 0);
       }
-    }
+      console.log('this.items222',this.items);
+    },
+    //改变一页显示条数
+    async useChangePageSize(val){
+      this.queryParams.pageSize = val
+      await saveItems(this.items);
+      await this.fetchItem(this.form.id);
+    },
+    //翻页
+    async useCurrentChange(val){
+      this.queryParams.pageNum = val
+      await saveItems(this.items);
+      await this.fetchItem(this.form.id);
+    },
+    //重置
+    useReset(){
+      this.queryParams = {
+        pageNum: 1,
+        pageSize: 10,
+      }
+      this.fetchItem(this.form.id);
+      this.aggregate();
+    },
   },
 };
 </script>
@@ -916,4 +861,8 @@ export default {
   display: flex;
   justify-content: right;
 }
+.el-pagination {
+  margin-top: 10px;
+  text-align: right;
+}
 </style>

+ 185 - 6
src/views/business/spd/fillin/dailysale_quantity_assess/index.vue

@@ -56,6 +56,7 @@
         <el-table
           :data="tableList"
           @row-dblclick="useDoubleClick"
+          v-loading="loading"
           height="600px"
         >
           <el-table-column label="序号" type="index" width="50" align="center" fixed/>
@@ -69,7 +70,7 @@
           <el-table-column show-overflow-tooltip label="修改时间" align="center" width="200" prop="updateTime" />
           <el-table-column fixed="right" label="操作" align="center" width="150">
             <template slot-scope="scope">
-              <el-button type="text" size="mini" @click="useEdit(scope.row)">编辑</el-button>
+              <el-button type="text" size="mini" @click="useEdit(scope.row)">填报</el-button>
               <el-button type="text" size="mini" @click="useDel(scope.row)">删除</el-button>
             </template>
           </el-table-column>
@@ -88,18 +89,127 @@
       </el-card>
     </div>
     <Detail v-if="openDetail" :openMode="openMode" :row="row"/>
+
+    <!-- 新增填报对话框 -->
+    <el-dialog
+      title="新增"
+      :visible.sync="open"
+      width="1000px"
+      append-to-body
+    >
+      <el-form
+        size="mini"
+        :model="form"
+        :rules="rules"
+        ref="form"
+        label-width="auto"
+      >
+        <el-row :gutter="10">
+          <el-col :span="1.5">
+            <el-form-item label="编码" prop="code">
+              <el-input
+                placeholder="自动生成"
+                readonly
+                v-model="form.code"
+                style="width: 200px"
+                clearable
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="1.5">
+            <el-form-item label="月份" prop="month">
+              <el-date-picker
+                :readonly="this.openMode == 'edit' || this.openMode == 'see'"
+                v-model="form.month"
+                value-format="yyyy-MM"
+                type="month"
+                clearable
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="1.5">
+            <el-form-item label="客户" prop="customer">
+              <dr-popover-select
+                :readonly="this.openMode == 'edit' || this.openMode == 'see'"
+                size="mini"
+                v-model="form.customerName"
+                title="客户选择"
+                type="CUSTOMER_PARAM_ZT"
+                :dataMapping="{
+                  customer: 'id',
+                  customerName: 'name',
+                }"
+                :source.sync="form"
+              >
+              </dr-popover-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="1.5">
+            <el-form-item label="创建日期" prop="createTime">
+              <el-input
+                v-model="form.createTime"
+                style="width: 200px"
+                clearable
+                readonly
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="1.5">
+            <el-form-item label="创建人" prop="createByName">
+              <el-input
+                v-model="form.createByName"
+                style="width: 200px"
+                clearable
+                readonly
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="1.5">
+            <el-form-item label="部门" prop="deptName">
+              <el-input
+                v-model="form.deptName"
+                style="width: 200px"
+                clearable
+                readonly
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import Detail from './detail.vue'
-import { listAssess,delAssess, } from "@/api/business/spd/fillin/dailysale_quantity_assess";
+import { addAssess,listAssess,delAssess, } from "@/api/business/spd/fillin/dailysale_quantity_assess";
 
 export default {
   name: "dailysaleQuantityAssess",
   components: {Detail},
   data() {
     return {
+      loading: false,
+      // 是否显示弹出层
+      open: false,
+      //新增表单
+      form: {
+        month: "",
+        customer: "",
+        customerName: "",
+      },
+      //表单校验
+      rules: {
+        month: [{ required: true, message: "月份不能为空", trigger: "blur" }],
+        customer: [
+          { required: true, message: "客户不能为空", trigger: "blur" },
+        ],
+      },
       // 搜索框参数
       queryParams: {
         customerName:null,
@@ -131,8 +241,13 @@ export default {
     },
     //新增
     useAdd(){
-      this.openMode = 'add';
-      this.openDetail = true;
+      this.reset();
+      this.form.createTime = this.getCurrentTime();
+      this.form.month = this.getCurrentMonth();
+      this.form.createByName = this.$store.state.user.nickName;
+      this.form.dept = this.$store.state.user.deptId;
+      this.form.deptName = this.$store.state.user.deptName;
+      this.open = true;
     },
     //编辑
     async useEdit(row){
@@ -146,19 +261,20 @@ export default {
         delAssess(row.id).then(res => {
           if (res.code === 200) {
             this.$modal.msgSuccess("删除成功");
-            this.getList(this.queryParams)
+            this.getList(this.queryParams);
           }
         })
       }).catch(() => {})
     },
     //查询列表
     getList(params){
-      console.log('params',params);
+      this.loading = true;
       listAssess(params).then(res => {
         if (res.code === 200) {
           this.tableList = res.rows
           this.total = res.total
         }
+        this.loading = false;
       })
     },
     //双击
@@ -194,6 +310,69 @@ export default {
       }
       this.getList(this.queryParams);
     },
+    //重置表单
+    reset(){
+      this.form = {
+        month: "",
+        customer: "",
+        customerName: "",
+      }
+    },
+    // 确认
+    async submitForm() {
+      this.$refs["form"].validate(async (valid) => {
+        if (valid) {
+          this.loading = true;
+          try {
+            let res = await addAssess(this.form);
+            if (res.code === 200) {
+              this.$modal.msgSuccess("保存成功");
+              this.cancel();
+              this.getList(this.queryParams);
+            }
+          } catch (err) {
+            console.error(err);
+          } finally {
+            this.loading = false;
+          }
+        } else {
+          return false;
+        }
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    getCurrentTime() {
+      var date = new Date();//当前时间
+      var year = date.getFullYear() //年
+      var month = this.repair(date.getMonth() + 1);//月
+      var day = this.repair(date.getDate());//日
+      var hour = this.repair(date.getHours());//时
+      var minute = this.repair(date.getMinutes());//分
+      var second = this.repair(date.getSeconds());//秒
+      //当前时间 
+      var curTime = year + "-" + month + "-" + day
+              + " " + hour + ":" + minute + ":" + second;
+      return curTime;
+    },
+    repair(i){
+      if (i >= 0 && i <= 9) {
+          return "0" + i;
+      } else {
+          return i;
+      }
+    },
+     //获取当月
+    getCurrentMonth(){
+      const date = new Date()
+      let year = date.getFullYear()
+      let month = date.getMonth() + 1
+      month = month > 9 ? month : '0' + month
+      return `${year}-${month}`
+    },
   },
 };
 </script>

+ 12 - 0
src/views/business/spd/fillin/test/index.vue

@@ -0,0 +1,12 @@
+
+<template>
+  <div>
+    测试
+  </div>
+</template>
+
+<script>
+export default {
+  
+};
+</script>

+ 49 - 38
src/views/material/basicFile/columns.js

@@ -1,5 +1,19 @@
 export const SearchColumns = [
-
+  {
+    item: {
+      key: "classifyIdName",
+      title: "物料分类",
+    },
+    attr: {
+      is: "el-popover-tree-select",
+      referName: "MATERIALCLASSIFY_PARAM",
+      valueKey: "name",
+      clearable:true,
+      dataMapping: {
+        classifyId: "id",
+      },
+    },
+  },
   {
     item:{
       key: "code",
@@ -7,38 +21,56 @@ export const SearchColumns = [
     },
     attr:{
       clearable:true,
-      is: "el-popover-select-v2",
+      is: "el-popover-multiple-select-v2",
       valueKey: "code",
       referName: "MATERIAL_PARAM",
     },
   },
   {
     item:{
-      key: "name",
-      title: "物料名称",  
+      key: "manufacturerIdName",
+      title: "生产厂家/代理人",  
     },
     attr:{
       clearable:true,
       is: "el-popover-select-v2",
       valueKey: "name",
-      referName: "MATERIAL_PARAM",
+      referName: "MANUFACTURER_PARAM",
+      dataMapping: {
+        manufacturerId: "id",
+      },
     },
   },
   {
-    item: {
-      key: "classifyIdName",
-      title: "物料分类",
+    item:{
+      key: "isMedicine",
+      title: "医药物料",  
     },
-    attr: {
-      is: "el-popover-tree-select",
-      referName: "MATERIALCLASSIFY_PARAM",
-      valueKey: "name",
+    attr:{
       clearable:true,
-      dataMapping: {
-        classifyId: "id",
-      },
+      is: "el-select",
+      dictName: "sys_number_yes_no",
     },
   },
+
+
+
+
+
+
+  {
+    item:{
+      key: "name",
+      title: "物料名称",  
+    },
+    attr:{
+      clearable:true,
+      is: "el-popover-select-v2",
+      valueKey: "name",
+      referName: "MATERIAL_PARAM",
+    },
+  },
+  
   {
     item:{
       key: "isEnable",
@@ -86,18 +118,7 @@ export const SearchColumns = [
       dictName: "sys_number_yes_no",
     },
   },
-  {
-    item:{
-      key: "registrant",
-      title: "生产厂家/代理人",  
-    },
-    attr:{
-      clearable:true,
-      is: "el-popover-select-v2",
-      valueKey: "name",
-      referName: "MANUFACTURER_PARAM",
-    },
-  },
+ 
   {
     item:{
       key: "storageCondition",
@@ -120,17 +141,7 @@ export const SearchColumns = [
       dictName: "sys_conditions_carriage",
     },
   },
-  {
-    item:{
-      key: "isMedicine",
-      title: "是否医药物料",  
-    },
-    attr:{
-      clearable:true,
-      is: "el-select",
-      dictName: "sys_number_yes_no",
-    },
-  },
+  
   {
     item:{
       key:'classifyAbc',

+ 930 - 0
src/views/material/requisition/add/columns.js

@@ -0,0 +1,930 @@
+export default function useColumns(){
+
+  const TableColumns = [
+    {
+      item:{
+        key:'billCode',
+        title:'单据编码',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+    },
+    {
+      item:{
+        key:'orgName',
+        title:'所属组织',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "name",
+        referName: "ORG_PARAM",
+        dataMapping: {
+          orgId:'id'
+        },
+        disabled:true,
+      },
+    },
+    {
+      item:{
+        key:'classifyId',
+        title:'四级分类',
+      },
+      attr:{
+        is: "el-popover-tree-select",
+        referName: "MATERIALCLASSIFY_PARAM",
+        valueKey: "id",
+        dataMapping: {
+          // dosageFrom:'id'
+        }
+      },
+    },
+    {
+      item:{
+        key:'isMedicine',
+        title:'医药物料',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_number_yes_no", // 字典名
+      },
+      
+    },
+    {
+      item:{
+        key:'diCode',
+        title:'DI',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'name',
+        title:'物料名称',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'enName',
+        title:'英文名称',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'commonName',
+        title:'简称',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'specification',
+        title:'规格',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'model',
+        title:'型号',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'unitId',
+        title:'计量单位',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "id",
+        referName: "UNIT_PARAM",
+      },
+  
+    },
+    {
+      item:{
+        key:'manufacturerId',
+        title:'生产厂家/代理人',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "id",
+        referName: "MANUFACTURER_PARAM",
+      },
+  
+    },
+    {
+      item:{
+        key:'registrant',
+        title:'注册人/上市许可持有人',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'originPlace',
+        title:'产地',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "name",
+        referName: "ORIGINPLACE_PARAM",
+      },
+  
+    },
+    {
+      item:{
+        key:'manufacturersMaterialName',
+        title:'厂家物料名称',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'manufacturersMaterialCode',
+        title:'厂家物料编码',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'classifyAbc',
+        title:'ABC分类',
+      },
+      attr:{
+        is: "el-select",
+      dictName: "abc_type",
+      },
+  
+    },
+    {
+      item:{
+        key:'safeStock',
+        title:'安全库存',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'isB2c',
+        title:'B2C物料',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_number_yes_no",
+      },
+  
+    },
+    {
+      item:{
+        key:'assembly',
+        title:'成套件',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_number_yes_no",
+      },
+  
+    },
+    {
+      item:{
+        key:'isInventoryStatus',
+        title:'批号及库存状态管理',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_number_yes_no",
+      },
+  
+    },
+    {
+      item:{
+        key:'serialNoManager',
+        title:'序列号管理',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_number_yes_no",
+      },
+  
+    },
+    {
+      item:{
+        key:'transportationCondition',
+        title:'运输条件',
+      },
+      attr:{
+        is: "el-select",
+      dictName: "sys_conditions_carriage",
+      },
+  
+    },
+    {
+      item:{
+        key:'mediumPackageUnitId',
+        title:'中包装单位',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "id",
+        referName: "UNIT_PARAM",
+      },
+  
+    },
+    {
+      item:{
+        key:'expiryDateManagerment',
+        title:'效期管理',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_number_yes_no",
+      },
+  
+    },
+    {
+      item:{
+        key:'nearOnsetManagerment',
+        title:'近效期管理',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_number_yes_no",
+      },
+  
+    },
+    {
+      item:{
+        key:'usefulLife',
+        title:'有效期',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'expiryUnitId',
+        title:'效期单位',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "period_unit",
+      },
+  
+    },
+    {
+      item:{
+        key:'usefulLifeUnitId',
+        title:'有效期至单位',
+      },
+      attr:{
+        is: "el-select",
+      dictName: "expiry_date",
+      },
+  
+    },
+    {
+      item:{
+        key:'recentWarningPeriod',
+        title:'近效期预警天数',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'storageCondition',
+        title:'存储条件',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_storage_condition",
+      },
+  
+    },
+    {
+      item:{
+        key:'materialRate',
+        title:'物料税类',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "name",
+        referName: "MATERIALTAX_PARAM",
+        dataMapping: {
+          rateCode: "code",
+        },
+      },
+  
+    },
+    {
+      item:{
+        key:'rateCode',
+        title:'税类编码',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'deliveryPeriod',
+        title:'交货周期',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'minOrderQty',
+        title:'最小起定量',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'minPackQty',
+        title:'最小包装量',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'puPersonnelId',
+        title:'采购员',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        referName: "CONTACTS_PARAM",
+        valueKey: "name",
+        // dataMapping: {
+        //   puPersonnelId: "code",
+        // },
+      },
+  
+    },
+    {
+      item:{
+        key:'minBatchQty',
+        title:'最小批量',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'length',
+        title:'长度(MM)',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'height',
+        title:'高度(MM)',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'width',
+        title:'宽度(MM)',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'boxPackaingQty',
+        title:'箱包装数',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'mediumPackageQty',
+        title:'中包装数',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'packExplain',
+        title:'包装说明',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    // {
+    //   item:{
+    //     key:'businessLine',
+    //     title:'业务线',
+    //   },
+    //   attr:{
+    //     is: "el-input",
+    //   },
+    // },
+    {
+      item:{
+        key:'proposerId',
+        title:'物料申请人',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'barCode',
+        title:'条形码',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'serviceLife',
+        title:'使用期限/次数',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'healthCode',
+        title:'医保代码',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'oriMaterialCode',
+        title:'原系统物料编码',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'productionPermit',
+        title:'生产许可证',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'oneClass',
+        title:'一级分类',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'twoClass',
+        title:'二级分类',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'threeClass',
+        title:'三级分类',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'purchasingOrganization',
+        title:'默认采购组织',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "name",
+        referName: "ORG_PARAM",
+        // dataMapping: {
+        //   orgId:'id'
+        // },
+      },
+  
+    },
+    // {
+    //   item:{
+    //     key:'businessDepartment',
+    //     title:'业务部门',
+    //   },
+    //   attr:{
+    //     is: "el-input",
+    //     disabled:true,
+    //   },
+  
+    // },
+    {
+      item:{
+        key:'isEnable',
+        title:'启用状态',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "material_enable",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'importsManufacturer',
+        title:'进口产品生产厂家',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'serviceClass',
+        title:'服务类',
+      },
+      attr:{
+        is: "el-input-number",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'innerPackingUnit',
+        title:'内包装单位',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "id",
+        referName: "UNIT_PARAM",
+      },
+  
+    },
+    {
+      item:{
+        key:'innerPackingQty',
+        title:'内包装数',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'remark',
+        title:'备注',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'isDrug',
+        title:'药品',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_medicine", // 字典名
+      },
+  
+    },
+    {
+      item:{
+        key:'registrationNo',
+        title:'注册证号/备案凭证编号',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'medicalInstruments',
+        title:'医疗器械',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "medical_instruments", // 字典名
+      },
+  
+    },
+    {
+      item:{
+        key:'commonName',
+        title:'通用名称',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'ratifyBatchNo',
+        title:'批准文号',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'dosageFrom',
+        title:'剂型',
+      },
+      attr:{
+        is: "el-popover-tree-select",
+        referName: "DOSAGEFORM_PARAM",
+        valueKey: "name",
+        // dataMapping: {
+        //   dosageFrom:'id'
+        // }
+      },
+  
+    },
+    {
+      item:{
+        key:'oriRegistrationNo',
+        title:'旧注册证号',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'curingType',
+        title:'养护类型',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "curing_type", // 字典名
+      },
+  
+    },
+    {
+      item:{
+        key:'createName',
+        title:'申请人',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'createTime',
+        title:'申请时间',
+      },
+      attr:{
+        is: "el-date-picker",
+        valueFormat: "yyyy-MM-dd HH:mm:ss",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'createName',
+        title:'创建人',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'createTime',
+        title:'创建时间',
+      },
+      attr:{
+        is: "el-date-picker",
+        valueFormat: "yyyy-MM-dd HH:mm:ss",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'updateName',
+        title:'最后修改人',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'updateTime',
+        title:'最后修改时间',
+      },
+      attr:{
+        is: "el-date-picker",
+        valueFormat: "yyyy-MM-dd HH:mm:ss",
+        disabled:true,
+      },
+  
+    },
+    // {
+    //   item:{
+    //     key:'reviewedByName',
+    //     title:'最后审核人',
+    //   },
+    //   attr:{
+    //     is: "el-input",
+    //     disabled:true,
+    //   },
+  
+    // },
+    // {
+    //   item:{
+    //     key:'approvalTime',
+    //     title:'最后审核时间',
+    //   },
+    //   attr:{
+    //     is: "el-date-picker",
+    //     valueFormat: "yyyy-MM-dd HH:mm:ss",
+    //     disabled:true,
+    //   },
+  
+    // },
+    {
+      item:{
+        key:'status',
+        title:'单据状态',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "documents_status", // 字典名
+        disabled:true,
+      },
+  
+    },
+    
+    
+  ].map(({ item, attr }) => ({
+    attr,
+    item: { ...item, hidden: true, span: item.span || 6 },
+  }));
+  
+  const TabColumns = [
+    {
+      item:{
+        key:'maintainMaterialType',
+        title:'维护物料类别',
+      },
+      attr:{
+        value:[]
+      },
+      TableColumns:[
+        {
+          item:{
+            key:'drugId',
+            title:'ID',
+          },
+          attr:{
+            is: "el-select",
+            dictName: "sys_number_yes_no", // 字典名
+          },
+         
+        },
+        {
+          item:{
+            key:'drugCode',
+            title:'药品类别编码',
+            require: true,
+          },
+          attr:{
+            is: "el-popover-select-v2",
+            valueKey: "code",
+          },
+         
+        },
+        {
+          item:{
+            key:'drugName',
+            title:'药品类别名称',
+            require: true,
+          },
+          attr:{
+            is: "el-input",
+            // disabled:true,
+          },
+         
+        },
+        
+      
+  
+      ]
+    }, 
+  ]
+
+  return {TableColumns,TabColumns}
+}
+

+ 336 - 0
src/views/material/requisition/add/index.vue

@@ -0,0 +1,336 @@
+<script>
+export default {
+  name:'AddRequsition',
+  props: {
+    dict: {
+      type: Object,
+    },
+    addType: {
+      type: String,
+      default: "add",
+    },
+  },
+  components:{
+    ElSuperForm: () => import("@/components/super-form/index.vue"),
+    ElSuperTable: () => import("@/components/super-table/index.vue"),
+    ElPopoverSelectV2: () => import("@/components/popover-select-v2/index.vue"),
+    ElPopoverTreeSelect: () =>
+      import("@/components/popover-tree-select/index.vue"),
+  
+  },
+  data(){
+    const {
+      TabColumns,
+      TableColumns,
+      TabColumns: [
+        {
+          item: { key: tabName },
+        },
+      ],
+    } = useColumns();
+
+    const rules = this.$init.rules([...TabColumns, ...TableColumns]);
+    const params = this.$init.params([...TabColumns, ...TableColumns]);
+    return{
+      width: "100%",
+      visible: false,
+      loading:false,
+      rules,
+      params,
+      tabName: tabName,
+      TabColumns: TabColumns,
+      TableColumns: TableColumns,
+    } 
+  },
+  computed: {
+    title: {
+      get() {
+        const { addType } = this;
+        if (addType === "add") {
+          return "新 增";
+        }
+        if (addType === "edit") {
+          return "编 辑";
+        }
+      },
+      set() {},
+    },
+    materialInfo:{
+      get(){
+        const { materialBasic } = this.params;
+        this.params.materialBasic = materialBasic.map((item, index) => ({
+          ...item,
+          $index: index,
+        }));
+
+        return {
+          materialBasic: this.params.materialBasic.filter(
+            ({ delFlag }) => delFlag !== "2"
+          ),
+        }
+      },
+      set(){},
+    }
+  },
+  methods: {
+    setVisible(prop){
+      this.visible = prop;
+    },
+    beforeOpen(){
+      if(this.addType === 'add'){
+        let {name,nickName} = this.$store.state.user;
+        this.params.createBy = name;
+        this.params.createByName = nickName;
+        this.params.createTime =  new Date().Format('yyyy-MM-dd HH:mm:ss');
+        this.params.updateBy = name;
+        this.params.updateByName = nickName;
+        this.params.updateTime =  new Date().Format('yyyy-MM-dd HH:mm:ss');
+        // this.params.approver = name;
+        this.params.applicationTime =  new Date().Format('yyyy-MM-dd HH:mm:ss');
+        this.params.status = '0';
+        console.log(this.$store.state.user,'user');
+        this.params.orgName = '德荣集团';
+        this.useRowAdd(this.tabName);
+      }
+    },
+
+    //
+    async fetchItem(prop) {
+      console.log(prop,'prop----------------');
+      try {
+        // try
+        this.loading = true;
+
+        let { code, data } = await getChangeDetails(prop.id);
+
+        if(code == 200){
+          this.params = data;
+        }
+        
+      } catch (err) {
+        // catch
+        console.error(err);
+      } finally {
+        // finally
+        this.loading = false;
+      }
+    },
+    
+    //
+    async hide() {
+      const {
+        TabColumns,
+        TableColumns,
+        TabColumns: [
+          {
+            item: { key: tabName },
+          },
+        ],
+      } = useColumns();
+      this.visible = false;
+      this.$emit('success');
+      this.tabName = tabName;
+      this.params = this.$init.params([...TabColumns, ...TableColumns]);
+    },
+    //
+    async useRowAdd(prop) {
+      
+      const { TableColumns } = this.TabColumns.find(
+        ({ item: { key } }) => key === prop
+      );
+      this.params[prop].push({
+        delFlag: "0",
+        materialClassifyId:null,
+        ...this.$init.params(TableColumns),
+      });
+    },
+    //
+    async useRowRemove(prop, scope) {
+      const { addType } = this.$props;
+      const {
+        row: { $index },
+      } = scope;
+      if (addType === "add") {
+        this.params[prop].splice($index, 1);
+      }
+      if (addType === "edit") {
+        this.params[prop] = this.params[prop].map((item, index) => ({
+          ...item,
+          delFlag: index === $index ? "2" : item.delFlag,
+        })).filter(item =>( item.id  || (!item.id && item.delFlag === '0')) )
+        ;
+      }
+    },
+    handleSubmitValidate(prop,cb){
+
+      this.$refs[prop].$refs[prop].validate(async (valid) => {
+        if (valid) {
+          try {
+            this.loading = true;
+
+            let validList = this.params['materialBasic'].filter(item => item.delFlag === '0');
+
+            if(validList.length){
+              await cb();
+            }else{
+              this.$notify.error({
+                message:'物料信息不能不为空!'
+              })
+            }
+            
+          } catch (err) {
+            // catch
+            console.error(err);
+          } finally {
+            // finally
+            this.loading = false;
+          }
+        } else {
+          return false;
+        }
+      });
+    },
+    //
+    async useSubmit(prop) {
+      console.log(this.params,'this.params');
+      this.handleSubmitValidate(prop,async()=>{
+
+        try {
+          this.loading = true;
+          const {code,msg} = await addChangeList(this.params);
+
+          if(code == 200){
+
+            this.hide();
+            this.$notify.success({
+              title: msg,
+            });
+          }
+          
+        } catch (error) {}
+        finally{
+          this.loading = false;
+        }
+
+        
+        // await;
+      })
+    },
+  },
+  created() {
+  },
+  mounted() {},
+  destroyed() {},
+}
+</script>
+
+<template>
+ <el-drawer
+      v-bind="$attrs"
+      v-on="$listeners"
+      :size="width"
+      :visible.sync="visible"
+      destroy-on-close
+      :show-close="false"
+      @close="hide"
+      @open="beforeOpen"
+      v-loading="loading"
+    >
+      <div 
+        slot="title" 
+        style="display: flex;
+            justify-content: space-between;
+            align-items: center;"
+      >
+        <h3>{{title}}</h3>
+        <div>
+          <el-button
+          type="primary"
+          :size="$attrs.size"
+          :loading="loading"
+          @click="useSubmit('superForm')"
+          >确 认</el-button
+        >
+        <el-button :size="$attrs.size" :loading="loading" @click="hide"
+          >取 消</el-button
+        >
+        </div>
+      </div>
+      <el-super-form
+        v-model="params"
+        :dict="dict"
+        :rules="rules"
+        :size="$attrs.size"
+        :columns="TableColumns"
+        ref="superForm"
+        label-width="auto"
+        label-position="right"
+        style="padding: 20px"
+      >
+        <!-- <template slot="puOrgName" slot-scope="scope">
+          <component
+            v-bind="scope.attr"
+            v-model="scope.row[scope.item.key]"
+            :size="$attrs.size"
+            :source.sync="scope.row"
+          >
+          </component
+        ></template> -->
+      </el-super-form>
+      
+  
+      <el-tabs v-model="tabName" style="padding: 0 20px 20px">
+        <el-tab-pane
+          v-for="({ item, TableColumns: columns }, index) in TabColumns"
+          :key="index"
+          :label="item.title"
+          :name="item.key"
+          lazy
+        >
+          <div style="height: 420px;display:flex">
+            <el-super-table
+              v-model="materialInfo[item.key]"
+              :dict="dict"
+              :ref="tabName"
+              :columns="columns"
+              :size="$attrs.size"
+            >
+              <el-table-column fixed="right" label="操作" width="120" align="center">
+                <template slot="header" slot-scope="scope">
+                  <el-button
+                    type="text"
+                    :size="$attrs.size"
+                    @click="useRowAdd(tabName)"
+                  >
+                    增行
+                  </el-button>
+                </template>
+                <template slot-scope="scope">
+                  <el-button
+                    type="text"
+                    :size="$attrs.size"
+                    @click.native.prevent="useRowRemove(tabName, scope)"
+                  >
+                  删除
+                  </el-button>
+                  <AmendantRecord
+                    v-if=" tabName ==='materialBasic' && addType === 'edit' && scope.row.id"
+                    v-model="scope.row"
+                  ></AmendantRecord>
+                </template>
+              </el-table-column>
+            </el-super-table>
+          </div>
+        </el-tab-pane>
+      </el-tabs>
+
+      
+     
+    </el-drawer>
+</template>
+
+<style scoped>
+::v-deep .el-table__row.is-hidden {
+  display: none;
+}
+</style>

+ 3 - 3
src/views/purchase/PurchaseDemandList/add.vue

@@ -983,7 +983,7 @@ export default {
               addDemand(this.basicForm).then(res => {
                 console.log(333)
                 if (res.code === 200) {
-                  this.$modal.notifySuccess("保存成功");
+                  this.$modal.notifySuccess(res.msg);
                   this.$modal.closeLoading();
                   this.back()
                 }
@@ -1000,7 +1000,7 @@ export default {
               // this.basicForm.puDemandItemList.push(...this.delDemandItemList)
               editDemand(param).then(res => {
                 if (res.code === 200) {
-                  this.$modal.notifySuccess("编辑成功");
+                  this.$modal.notifySuccess(res.msg);
                   this.$modal.closeLoading();
                   this.back()
                 }
@@ -1105,7 +1105,7 @@ export default {
     },
     // 单元格标红
     cellClassName({row, column, rowIndex, columnIndex}) {
-      if(this.basicForm.isCustomerSpecified == 'N' && column.label == '需求可用周期' && Number(row.demandPeriod) > 1.5 && Number(row.demandPeriod) > Number(row.minOrderQty)) {
+      if(this.basicForm.isCustomerSpecified == 'N' && column.label == '需求可用周期' && Number(row.demandPeriod) > 1.5 && Number(row.qty) > Number(row.minOrderQty)) {
         return 'success-row';
       }
     },

+ 24 - 10
src/views/purchase/purchase-order/column.js

@@ -501,13 +501,13 @@ export const TabColumns = [
         },
         
       },
-      { 
-        item:{key: "material", title: "物料ID",width:10, },
-        attr:{
-          isHidden:true,
-        },
+      // { 
+      //   item:{key: "material", title: "物料ID",width:120, },
+      //   attr:{
+      //     isHidden:true,
+      //   },
         
-      },
+      // },
       { 
         item:{key: "materialName", title: "物料名称",width:150,  },
         attr:{
@@ -1097,12 +1097,13 @@ export const SearchColumns = [
   },
   {
     item:{
-      key: "code",
+      key: "orderCode",
       title: "订单编号",  
     },
     attr: {
       clearable:true,
       is: "el-input",
+      placeholder:'请输入订单编号,多个使用,隔开',
     },
   },
   {
@@ -1165,9 +1166,11 @@ export const SearchColumns = [
     },
     attr: {
       clearable:true,
-      is: "el-popover-select-v2",
-      valueKey: "code",
-      referName: "MATERIAL_PARAM",
+      is: "el-input",
+      placeholder:'请输入物料编码,多个使用,隔开',
+      // is: "el-popover-multiple-select-v2",
+      // valueKey: "code",
+      // referName: "MATERIAL_PARAM",
     },
   },
   {
@@ -1248,6 +1251,7 @@ export const SearchColumns = [
     attr: {
       clearable:true,
       is: "el-input",
+      placeholder:'请输入采购需求单号,多个使用,隔开',
     },
   },
   { 
@@ -1261,6 +1265,16 @@ export const SearchColumns = [
       dictName: "sys_yes_no",
     },
   },
+  { 
+    item:{
+      key: "erpOrderCode",
+      title: "NC订单号", 
+    },
+    attr: {
+      clearable:true,
+      is: "el-input",
+    },
+  },
 ].map(({ item, attr }) => ({
   attr,
   item: { ...item, hidden: true, span: item.span || 6 },

+ 0 - 1
src/views/purchase/purchase-order/edit/index.vue

@@ -544,7 +544,6 @@ export default {
               <el-input-number v-if="column.inputType === 'InputNumber'" 
                 v-model="params[column.key]"
                 :precision="column.precision"
-                :max="handleIsRevise() ? params[column.key] : Infinity"
                 :controls-position="column.controlsPosition" 
                 :placeholder="column.placeholder"
                 :clearable="column.clearable" 

+ 73 - 75
src/views/purchase/purchase-order/index.vue

@@ -604,62 +604,64 @@ export default {
       </el-col>
     </el-row>
 
-    <el-super-table
-      class="purchaseTable"
-      v-model="tableData"
-      ref="purchaseTable"
-      :dict="dict"
-      :columns="tableColumns"
-      :selectable="setSelectable"
-      index
-      checkbox
-      pagination
-      :page="page"
-      convenitentOperation
-      @pagination="fetchList(params, page)"
-      @row-dblclick="handleOpenSeeDrawer" 
-      @row-click="handleDetailsData" 
-      @selection-change="handleSelectionChange"
-      @select="handleSelect"
-    >
+    <div style="display: flex;height:420px;">
+      <el-super-table
+        class="purchaseTable"
+        v-model="tableData"
+        ref="purchaseTable"
+        :dict="dict"
+        :columns="tableColumns"
+        :selectable="setSelectable"
+        index
+        checkbox
+        pagination
+        :page="page"
+        convenitentOperation
+        @pagination="fetchList(params, page)"
+        @row-dblclick="handleOpenSeeDrawer" 
+        @row-click="handleDetailsData" 
+        @selection-change="handleSelectionChange"
+        @select="handleSelect"
+      >
+        
+        <el-table-column fixed="right" label="操作" width="120">
+            <template slot-scope="scope">
+              <el-button 
+                v-if="judgeIsOption('revise',scope.row)"
+                type="text" 
+                size="small" 
+                @click.stop="handleOpenEditDrawer(scope.row)"
+                v-hasPermi="['material:order:edit']">
+              修订
+              </el-button>
+              <el-button 
+                v-if="judgeIsOption('edit',scope.row)"
+                type="text" 
+                size="small" 
+                @click.stop="handleOpenEditDrawer(scope.row)"
+                v-hasPermi="['material:order:edit']">
+              编辑
+              </el-button>
+              <!-- 0=自由态,1=审批中,2=已审核,3=已驳回 4=提交中-->
+              <el-button 
+                v-if="judgeIsOption('del',scope.row)" 
+                type="text" 
+                size="small" 
+                @click.stop="handleDeleteList(scope.row)"
+                v-hasPermi="['material:order:remove']"
+              >删除</el-button>
+              <el-button 
+                v-if="judgeIsOption('submit',scope.row)" 
+                type="text" 
+                size="mini"
+                v-hasPermi="['material:order:toOa']" 
+                @click.stop="handleSubmit(scope.row)"
+              >提交</el-button>
+            </template>
+        </el-table-column>
       
-      <el-table-column fixed="right" label="操作" width="120">
-          <template slot-scope="scope">
-            <el-button 
-              v-if="judgeIsOption('revise',scope.row)"
-              type="text" 
-              size="small" 
-              @click.stop="handleOpenEditDrawer(scope.row)"
-              v-hasPermi="['material:order:edit']">
-            修订
-            </el-button>
-            <el-button 
-              v-if="judgeIsOption('edit',scope.row)"
-              type="text" 
-              size="small" 
-              @click.stop="handleOpenEditDrawer(scope.row)"
-              v-hasPermi="['material:order:edit']">
-            编辑
-            </el-button>
-            <!-- 0=自由态,1=审批中,2=已审核,3=已驳回 4=提交中-->
-            <el-button 
-              v-if="judgeIsOption('del',scope.row)" 
-              type="text" 
-              size="small" 
-              @click.stop="handleDeleteList(scope.row)"
-              v-hasPermi="['material:order:remove']"
-            >删除</el-button>
-            <el-button 
-              v-if="judgeIsOption('submit',scope.row)" 
-              type="text" 
-              size="mini"
-              v-hasPermi="['material:order:toOa']" 
-              @click.stop="handleSubmit(scope.row)"
-            >提交</el-button>
-          </template>
-      </el-table-column>
-    
-    </el-super-table>
+      </el-super-table>
+    </div>
 
     <div style="position: relative; padding-top: 10px;" v-loading="tabLoading">
       <el-row style="position: absolute; top: 30px; right: 20px;z-index: 10;">
@@ -679,21 +681,22 @@ export default {
           :label="column.title" 
           :name="column.key"
         >
-          <el-super-table
-            style="height: 300px;"
-            v-model="tabTableDatas[column.key]"
-            :ref="column.key"
-            :dict="dict"
-            :columns="column.tableColumns"
-            :selectable="setTabSelectable"
-            :checkbox="setTabSelectable()"
-            convenitentOperation
-            @select="handleTabSelect"
-            @selection-change="handleTabSelectionChange"
-
-          >
-          </el-super-table>
-         
+          <div style="height:580px;display:flex">
+            <el-super-table
+              v-model="tabTableDatas[column.key]"
+              :ref="column.key"
+              :dict="dict"
+              :columns="column.tableColumns"
+              :selectable="setTabSelectable"
+              :checkbox="setTabSelectable()"
+              convenitentOperation
+              @select="handleTabSelect"
+              @selection-change="handleTabSelectionChange"
+
+            >
+            </el-super-table>
+          </div>
+          
         </el-tab-pane>
         
       </el-tabs>
@@ -703,9 +706,4 @@ export default {
 </template>
 
 <style lang="scss">
-.purchaseTable{
-  .el-table__body-wrapper{
-    height: 480px;
-  }
-}
 </style>