Эх сурвалжийг харах

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

WuXiaohan 1 жил өмнө
parent
commit
94d1b86408

+ 52 - 0
src/api/business/spd/fillin/dailysale_quantity_assess.js

@@ -0,0 +1,52 @@
+import request from '@/utils/request'
+
+// 查询日预估销售产品数据填充列表
+export function listAssess(query) {
+  return request({
+    url: '/mk/fillin/dailySaleQuantityAssess/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询日预估销售产品数据填充详细
+export function getAssess(id) {
+  return request({
+    url: '/mk/fillin/dailySaleQuantityAssess/' + id,
+    method: 'get'
+  })
+}
+
+// 新增日预估销售产品数据填充
+export function addAssess(data) {
+  return request({
+    url: '/mk/fillin/dailySaleQuantityAssess',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改日预估销售产品数据填充
+export function updateAssess(data) {
+  return request({
+    url: '/mk/fillin/dailySaleQuantityAssess',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除日预估销售产品数据填充
+export function delAssess(id) {
+  return request({
+    url: '/mk/fillin/dailySaleQuantityAssess/' + id,
+    method: 'delete'
+  })
+}
+
+export function getSaleMaterialList(query) {
+  return request({
+    url: '/mk/fillin/dailySaleQuantityAssess/salematerial/list',
+    method: 'get',
+    params: query
+  })
+}

+ 3 - 3
src/assets/styles/index.scss

@@ -203,7 +203,7 @@ aside {
 /**修改全局的滚动条*/
 /**滚动条的宽度*/
 ::-webkit-scrollbar {
-  width: 8px;
+  width: 12px;
 }
 ::-webkit-scrollbar-thumb {
   background-color: #eaecf1;
@@ -211,8 +211,8 @@ aside {
 }
 /*表格*/
 .el-table__body-wrapper::-webkit-scrollbar {
-  width: 8px;
-  height: 8px;
+  width: 12px;
+  height: 12px;
 }
 .el-table__body-wrapper::-webkit-scrollbar-thumb {
   background-color: #a1a3a9;

+ 208 - 0
src/views/business/spd/fillin/dailysale_quantity_assess/addmaterial.vue

@@ -0,0 +1,208 @@
+
+<template>
+    <div>
+        <el-button type="primary" size="mini" @click="openDialog">增行</el-button>
+        <el-dialog title="物料信息查询" :visible.sync="open" :before-close="useClose">
+            <el-form size="mini" label-width="120px" >
+                <el-row :gutter="10">
+                    <el-col :span="1.5">
+                        <el-form-item label="物料编码">
+                        <el-input
+                            v-model="queryParams.code"
+                            clearable
+                            style="width: 200px"
+                        />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="1.5">
+                        <el-form-item label="物料名称">
+                        <el-input
+                            v-model="queryParams.name"
+                            clearable
+                            style="width: 200px"
+                        />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="1.5">
+                        <el-form-item>
+                        <el-button type="primary" icon="el-icon-search" plain @click="useSearch">搜索</el-button>
+                        <el-button icon="el-icon-refresh" plain @click="useReset">重置</el-button>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-form>
+            <el-table :data="tableData" size="mini" @row-dblclick="useDoubleClick" @selection-change="useSelectChange" 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"/>
+                <el-table-column show-overflow-tooltip label="物料分类" align="center" width="150" prop="fourClass" />
+                <el-table-column show-overflow-tooltip label="单位" align="center" width="100" prop="unitIdName"/>
+                <el-table-column show-overflow-tooltip label="规格" align="center" width="200" prop="specification" />
+            </el-table>
+            <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>
+            <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>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import materialApi from "@/api/material/basic";
+
+export default {
+  name: "dailysaleQuantityAssessDetailAddmaterial",
+  data() {
+    return {
+      //是否打开弹窗
+      open:false,
+      //搜索框参数
+      queryParams:{
+        code: null,
+        name: null,
+      },
+      page:{
+        pageNum:1,
+        pageSize:10,
+      },
+      //总条数
+      total: 0,
+      //列表数据
+      tableData:[],
+      //选择的数据
+      selectionData:[],
+    };
+  },
+  watch: {},
+  created() {
+  },
+  methods: {
+    //打开弹窗
+    openDialog(){
+      this.open = true;
+      this.getList();
+    },
+    //关闭弹窗
+    useClose(done){
+        this.selectionData = [];
+        this.queryParams = {
+            code: null,
+            name: null,
+        }
+        this.page = {
+            pageNum:1,
+            pageSize:10,
+        }
+        done();
+    },
+    //获取列表数据
+    async getList() {
+      try {
+        this.loading = true;
+        const { code, data } = await materialApi.materialList(this.queryParams, this.page);
+        if (code === 200) {
+          this.tableData = data.tableBody.rows;
+          this.total = data.tableBody.total;
+        }
+      } catch (err) {
+        // catch
+        console.error(err);
+      } finally {
+        // finally
+        this.loading = false;
+      }
+    },
+    //多选
+    useSelectChange(selection){
+        this.selectionData = selection;
+    },
+    //确认多选
+    useConfirm(){
+      if(this.selectionData.length < 1){
+        this.$modal.msgError("未选择数据!");
+        return;
+      }
+      const arr = [];
+      for(let i in this.selectionData){
+          arr.push({
+              oneClassName:this.selectionData[i].oneClass,
+              twoClassName:this.selectionData[i].twoClass,
+              materialCode:this.selectionData[i].code,
+              materialName:this.selectionData[i].name,
+              unitName:this.selectionData[i].unitIdName,
+          });
+      }
+      this.$emit("addRow",arr);
+      this.open = false;
+    },
+    //双击选择
+    async useDoubleClick(row){
+        const arr = [];
+        arr.push({
+            oneClassName:row.oneClass,
+            twoClassName:row.twoClass,
+            materialCode:row.code,
+            materialName:row.name,
+            unitName:row.unitIdName,
+        });
+        this.$emit("addRow",arr);
+        this.open = false;
+    },
+    //搜索
+    useSearch(){
+      this.getList();
+    },
+    //重置
+    useReset(){
+      this.queryParams = {
+        code: null,
+        name: null,
+      }
+      this.page = {
+        pageNum:1,
+        pageSize:10,
+      }
+      this.getList();
+    },
+    //改变一页显示条数
+    useChangePageSize(val){
+      this.page.pageSize = val
+      this.getList()
+    },
+    //翻页
+    useCurrentChange(val){
+      this.page.pageNum = val
+      this.getList()
+    },
+  },
+  created() {},
+  mounted() {},
+  destroyed() {},
+};
+</script>
+
+<style scoped lang="scss">
+.btn_group {
+  width: 100%;
+  margin: 20px 0;
+  display: flex;
+  justify-content: right;
+}
+.el-pagination {
+  margin-top: 10px;
+  text-align: right;
+}
+</style>

+ 209 - 0
src/views/business/spd/fillin/dailysale_quantity_assess/choosematerial.vue

@@ -0,0 +1,209 @@
+
+<template>
+    <div>
+        <el-button type="primary" size="mini" @click="openDialog">筛选</el-button>
+        <el-dialog title="客户历史销售物料查询" :visible.sync="open" :before-close="useClose">
+            <el-form size="mini" label-width="120px" >
+                <el-row :gutter="10">
+                    <el-col :span="1.5">
+                        <el-form-item label="物料编码">
+                        <el-input
+                            v-model="queryParams.code"
+                            clearable
+                            style="width: 200px"
+                        />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="1.5">
+                        <el-form-item label="物料名称">
+                        <el-input
+                            v-model="queryParams.name"
+                            clearable
+                            style="width: 200px"
+                        />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="1.5">
+                        <el-form-item>
+                        <el-button type="primary" icon="el-icon-search" plain @click="useSearch">搜索</el-button>
+                        <el-button icon="el-icon-refresh" plain @click="useReset">重置</el-button>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-form>
+            <el-table :data="tableData" size="mini" @row-dblclick="useDoubleClick" @selection-change="useSelectChange" 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"/>
+                <el-table-column show-overflow-tooltip label="物料分类" align="center" width="150" prop="fourClass" />
+                <el-table-column show-overflow-tooltip label="单位" align="center" width="100" prop="unitIdName"/>
+                <el-table-column show-overflow-tooltip label="规格" align="center" width="200" prop="specification" />
+                <el-table-column show-overflow-tooltip label="生产厂家" align="center" width="200" prop="manufacturersMaterialName" />
+            </el-table>
+            <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>
+            <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>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import {getSaleMaterialList} from "@/api/business/spd/fillin/dailysale_quantity_assess";
+
+export default {
+  name: "dailysaleQuantityAssessDetailChoosematerial",
+  props: ["form"],
+  data() {
+    return {
+      //是否打开弹窗
+      open:false,
+      //搜索框参数
+      queryParams:{
+        customer: null,
+        materialCode: null,
+        materialName: null,
+        pageNum:1,
+        pageSize:10,
+      },
+      //总条数
+      total: 0,
+      //列表数据
+      tableData:[],
+      //选择的数据
+      selectionData:[],
+    };
+  },
+  watch: {},
+  created() {
+  },
+  methods: {
+    //打开弹窗
+    openDialog(){
+      if(!this.form.customer){
+        this.$modal.msgError("请选择客户!");
+        return;
+      }
+      this.open = true;
+      this.getList();
+    },
+    //关闭弹窗
+    useClose(done){
+        this.selectionData = [];
+        this.queryParams = {
+            customer: null,
+            materialCode: null,
+            materialName: null,
+            pageNum:1,
+            pageSize:10,
+        }
+        done();
+    },
+    //获取列表数据
+    async getList() {
+      try {
+        this.loading = true;
+        this.queryParams.customer = this.form.customer;
+        const { code, rows, total } = await getSaleMaterialList(this.queryParams);
+        if (code === 200) {
+          this.tableData = rows;
+          this.total = total;
+        }
+      } catch (err) {
+        // catch
+        console.error(err);
+      } finally {
+        // finally
+        this.loading = false;
+      }
+    },
+    //多选
+    useSelectChange(selection){
+        this.selectionData = selection;
+    },
+    //确认多选
+    useConfirm(){
+      if(this.selectionData.length < 1){
+        this.$modal.msgError("未选择数据!");
+        return;
+      }
+      const arr = [];
+      for(let i in this.selectionData){
+          arr.push({
+              oneClassName:this.selectionData[i].oneClass,
+              twoClassName:this.selectionData[i].twoClass,
+              materialCode:this.selectionData[i].code,
+              materialName:this.selectionData[i].name,
+              unitName:this.selectionData[i].unitIdName,
+          });
+      }
+      this.$emit("addRow",arr);
+      this.open = false;
+    },
+    //双击选择
+    async useDoubleClick(row){
+        const arr = [];
+        arr.push({
+            oneClassName:row.oneClass,
+            twoClassName:row.twoClass,
+            materialCode:row.code,
+            materialName:row.name,
+            unitName:row.unitIdName,
+        });
+        this.$emit("addRow",arr);
+        this.open = false;
+    },
+    //搜索
+    useSearch(){
+      this.getList();
+    },
+    //重置
+    useReset(){
+      this.queryParams = {
+        customer: null,
+        materialCode: null,
+        materialName: null,
+        pageNum:1,
+        pageSize:10,
+      }
+      this.getList();
+    },
+    //改变一页显示条数
+    useChangePageSize(val){
+      this.page.pageSize = val
+      this.getList()
+    },
+    //翻页
+    useCurrentChange(val){
+      this.page.pageNum = val
+      this.getList()
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.btn_group {
+  width: 100%;
+  margin: 20px 0;
+  display: flex;
+  justify-content: right;
+}
+.el-pagination {
+  margin-top: 10px;
+  text-align: right;
+}
+</style>

+ 883 - 0
src/views/business/spd/fillin/dailysale_quantity_assess/detail.vue

@@ -0,0 +1,883 @@
+
+<template>
+  <div>
+    <el-card>
+      <el-button size="mini" plain @click="useBack">返回</el-button>
+      <el-divider></el-divider>
+      <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
+                v-model="form.month"
+                value-format="yyyy-MM-dd"
+                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
+                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-date-picker
+                v-model="form.createTime"
+                clearable
+                type="date"
+                value-format="yyyy-MM-dd"
+                readonly
+              >
+              </el-date-picker>
+            </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>
+    </el-card>
+    <el-card style="height: 800px">
+      <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-column
+                label="序号"
+                type="index"
+                width="50"
+                align="center"
+                fixed
+              />
+              <el-table-column
+                show-overflow-tooltip
+                label="一级品类"
+                align="center"
+                width="150"
+                prop="oneClassName"
+              />
+              <el-table-column
+                show-overflow-tooltip
+                label="二级品类"
+                align="center"
+                width="150"
+                prop="twoClassName"
+              />
+              <el-table-column
+                show-overflow-tooltip
+                label="物料编号"
+                align="center"
+                width="150"
+                prop="materialCode"
+              />
+              <el-table-column
+                show-overflow-tooltip
+                label="物料名称"
+                align="center"
+                width="150"
+                prop="materialName"
+              />
+              <el-table-column
+                show-overflow-tooltip
+                label="单位"
+                align="center"
+                width="150"
+                prop="unitName"
+              />
+              <el-table-column
+                show-overflow-tooltip
+                label="价格(元)"
+                align="center"
+                width="150"
+                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="日 销 售 数 据 填 报"
+                align="center"
+              >
+                <el-table-column
+                  show-overflow-tooltip
+                  label="1"
+                  align="center"
+                  width="100"
+                  prop="first"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.first"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="2"
+                  align="center"
+                  width="100"
+                  prop="second"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.second"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="3"
+                  align="center"
+                  width="100"
+                  prop="third"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.third"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="4"
+                  align="center"
+                  width="100"
+                  prop="fourth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.fourth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="5"
+                  align="center"
+                  width="100"
+                  prop="fifth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.fifth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="6"
+                  align="center"
+                  width="100"
+                  prop="sixth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.sixth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="7"
+                  align="center"
+                  width="100"
+                  prop="seventh"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.seventh"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="8"
+                  align="center"
+                  width="100"
+                  prop="eighth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.eighth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="9"
+                  align="center"
+                  width="100"
+                  prop="ninth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.ninth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="10"
+                  align="center"
+                  width="100"
+                  prop="tenth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.tenth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="11"
+                  align="center"
+                  width="100"
+                  prop="eleventh"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.eleventh"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="12"
+                  align="center"
+                  width="100"
+                  prop="twelfth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.twelfth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="13"
+                  align="center"
+                  width="100"
+                  prop="thirteenth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.thirteenth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="14"
+                  align="center"
+                  width="100"
+                  prop="fourteenth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.fourteenth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="15"
+                  align="center"
+                  width="100"
+                  prop="fifteenth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.fifteenth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="16"
+                  align="center"
+                  width="100"
+                  prop="sixteenth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.sixteenth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="17"
+                  align="center"
+                  width="100"
+                  prop="seventeenth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.seventeenth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="18"
+                  align="center"
+                  width="100"
+                  prop="eighteenth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.eighteenth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="19"
+                  align="center"
+                  width="100"
+                  prop="nineteenth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.nineteenth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="20"
+                  align="center"
+                  width="100"
+                  prop="twentieth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.twentieth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="21"
+                  align="center"
+                  width="100"
+                  prop="twentyFirst"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.twentyFirst"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="22"
+                  align="center"
+                  width="100"
+                  prop="twentySecond"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.twentySecond"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="23"
+                  align="center"
+                  width="100"
+                  prop="twentyThird"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.twentyThird"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="24"
+                  align="center"
+                  width="100"
+                  prop="twentyFourth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.twentyFourth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="25"
+                  align="center"
+                  width="100"
+                  prop="twentyFifth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.twentyFifth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="26"
+                  align="center"
+                  width="100"
+                  prop="twentySixth"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.twentySixth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="27"
+                  align="center"
+                  width="100"
+                  prop="twentySeventh"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.twentySeventh"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="28"
+                  align="center"
+                  width="100"
+                  prop="twentyEighth"
+                  v-if="numDay > '27'"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.twentyEighth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="29"
+                  align="center"
+                  width="100"
+                  prop="twentyNinth"
+                  v-if="numDay > '28'"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.twentyNinth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="30"
+                  align="center"
+                  width="100"
+                  prop="thirtieth"
+                  v-if="numDay > '29'"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.thirtieth"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  show-overflow-tooltip
+                  label="31"
+                  align="center"
+                  width="100"
+                  prop="thirtyFirst"
+                  v-if="numDay > '30'"
+                >
+                  <template slot-scope="scope">
+                    <el-input
+                      size="mini"
+                      v-model.number="scope.row.thirtyFirst"
+                      class="input-view"
+                      oninput="value=value.replace(/[^0-9]/g,'')"
+                    />
+                  </template>
+                </el-table-column>
+              </el-table-column>
+              <el-table-column
+                fixed="right"
+                label="操作"
+                align="center"
+                width="50"
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    type="text"
+                    size="mini"
+                    @click="useRowRemove(scope.$index, scope.row)"
+                    >删行</el-button
+                  >
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-tab-pane>
+        </el-tabs>
+        <div style="position: absolute; right: 10px; top: 5px; display: flex">
+          <Choosematerial @addRow="addRow" :form="form"></Choosematerial>
+          <Addmaterial @addRow="addRow"></Addmaterial>
+        </div>
+      </div>
+    </el-card>
+    <el-card>
+      <div class="btn_group">
+        <el-col :span="1.5">
+          <el-button size="mini" plain @click="useBack">取消</el-button>
+        </el-col>
+        <el-col :span="1.5" style="margin: 0 10px">
+          <el-button type="primary" size="mini" plain @click="useSave"
+            >保存</el-button
+          >
+        </el-col>
+      </div>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import {
+  addAssess,
+  updateAssess,
+  getAssess,
+} from "@/api/business/spd/fillin/dailysale_quantity_assess";
+import Addmaterial from "./addmaterial";
+import Choosematerial from "./choosematerial";
+export default {
+  name: "dailysaleQuantityAssessDetail",
+  components: { Addmaterial, Choosematerial },
+  props: ["openMode", "row"],
+  data() {
+    return {
+      form: {
+        customer: null,
+        customerName: null,
+        items: [],
+        //所选月份天数
+        numDay:31,
+      },
+      //表单校验
+      rules: {
+        month: [{ required: true, message: "月份不能为空", trigger: "blur" }],
+        customer: [
+          { required: true, message: "客户不能为空", trigger: "blur" },
+        ],
+      },
+      activeName: "item",
+    };
+  },
+  watch: {
+	'form.month': {
+        handler(newVal) {
+            var curDate = new Date(newVal);
+            console.log('curDate',curDate);
+            /* 获取当前月份 */
+            var curMonth = curDate.getMonth();
+            /*  生成实际的月份: 由于curMonth会比实际月份小1, 故需加1 */
+            curDate.setMonth(curMonth + 1);
+            /* 将日期设置为0, 这里为什么要这样设置, 我不知道原因, 这是从网上学来的 */
+            curDate.setDate(0);
+            /* 返回当月的天数 */
+            this.numDay = curDate.getDate();
+        },
+        immediate:true,
+    }
+  },
+  computed: {
+    items() {
+      return this.form.items.filter(({ delFlag }) => delFlag !== "2");
+    },
+  },
+  async created() {
+    switch (this.openMode) {
+      case "add":
+        var now = new Date(); // 当前日期
+        var nowYear = now.getFullYear(); //当前年
+        var nowMonth = now.getMonth() ;
+        this.form.month = new Date(nowYear,nowMonth,1,"00","00");
+        // this.form.createTime = new Date();
+        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);
+        break;
+      case "see":
+        await this.fetchAssess(this.row.id);
+        break;
+    }
+  },
+  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;
+        }
+      });
+    },
+    //保存前校验
+    checkBeforeSave(form) {
+      return true;
+    },
+    //查询详情
+    async fetchAssess(id) {
+      try {
+        // try
+        this.loading = true;
+        const { code, data } = await getAssess(id);
+        if (code === 200) {
+          this.form = data;
+          return true;
+        } else {
+          return false;
+        }
+      } catch (err) {
+        // catch
+        console.error(err);
+      } finally {
+        // finally
+        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 useRowRemove(index, row) {
+      console.log("index", index);
+      console.log("row", row);
+      if (row.id) {
+        this.form.items.forEach((e) => {
+          if (e.id == row.id) {
+            e.delFlag = "2";
+          }
+        });
+      } else {
+        this.form.items.splice(index, 1);
+      }
+    },
+    //切换多页签
+    useSwitchTab() {},
+    //返回
+    useBack() {
+      this.$parent.useOpenDetail();
+      this.$parent.useSearch();
+    },
+    //获取当月天数
+    getCountDays(val) {
+        console.log('val',val);
+        var curDate = new Date(val);
+        console.log('curDate',curDate);
+        /* 获取当前月份 */
+        var curMonth = curDate.getMonth();
+        /*  生成实际的月份: 由于curMonth会比实际月份小1, 故需加1 */
+        curDate.setMonth(curMonth + 1);
+        /* 将日期设置为0, 这里为什么要这样设置, 我不知道原因, 这是从网上学来的 */
+        curDate.setDate(0);
+        /* 返回当月的天数 */
+        return curDate.getDate();
+    }
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.btn_group {
+  width: 100%;
+  margin: 20px 0;
+  display: flex;
+  justify-content: right;
+}
+</style>

+ 223 - 0
src/views/business/spd/fillin/dailysale_quantity_assess/index.vue

@@ -0,0 +1,223 @@
+
+<template>
+  <div>
+    <div v-if="!openDetail">
+      <el-card>
+        <el-form size="mini" class="search_area" label-width="120px">
+          <el-row :gutter="10">
+            <el-col :span="1.5">
+              <el-form-item label="客户名称">
+                <el-input
+                  v-model="queryParams.customerName"
+                  clearable
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="1.5">
+              <el-form-item label="年度">
+                <el-date-picker
+                  v-model="queryParams.month"
+                  type="month"
+                  format="yyyy-MM-dd"
+                  clearable
+                  >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="1.5">
+              <el-form-item label="创建人">
+                <el-input
+                  v-model="queryParams.createByName"
+                  clearable
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="1.5">
+              <el-form-item label="部门">
+                <el-input
+                  v-model="queryParams.deptName"
+                  clearable
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="1.5">
+              <el-form-item label="" label-width="20px">
+                <el-button type="primary" size="mini" icon="el-icon-search" plain @click="useSearch">搜索</el-button>
+                <el-button size="mini" icon="el-icon-refresh" plain @click="useReset">重置</el-button>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <el-divider></el-divider>
+        <div class="btn_grooup">
+          <el-button type="primary" size="mini" @click="useAdd">新增</el-button>
+        </div>
+
+        <el-table
+          :data="tableList"
+          @row-dblclick="useDoubleClick"
+          height="600px"
+        >
+          <el-table-column label="序号" type="index" width="50" align="center" fixed/>
+          <el-table-column show-overflow-tooltip label="编码" align="center" width="200" prop="code"/>
+          <el-table-column show-overflow-tooltip label="客户名称" align="center" width="200" prop="customerName"/>
+          <el-table-column show-overflow-tooltip label="月度" align="center" width="200" prop="month">
+            <template slot-scope="scope">
+              {{scope.row.month.substring(0,7)}}
+            </template>
+          </el-table-column>
+          <el-table-column show-overflow-tooltip label="部门" align="center" width="200" prop="deptName"/>
+          <el-table-column show-overflow-tooltip label="创建人" align="center" width="200" prop="createByName" />
+          <el-table-column show-overflow-tooltip label="创建时间" align="center" width="200" prop="createTime" />
+          <el-table-column show-overflow-tooltip label="修改人" align="center" width="200" prop="updateByName" />
+          <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="useDel(scope.row)">删除</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <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>
+      </el-card>
+    </div>
+    <Detail v-if="openDetail" :openMode="openMode" :row="row"/>
+  </div>
+</template>
+
+<script>
+import Detail from './detail.vue'
+import { listAssess,delAssess, } from "@/api/business/spd/fillin/dailysale_quantity_assess";
+
+export default {
+  name: "dailysaleQuantityAssess",
+  components: {Detail},
+  data() {
+    return {
+      // 搜索框参数
+      queryParams: {
+        customerName:null,
+        month:null,
+        deptName:null,
+        deptName:null,
+        pageNum: 1,
+        pageSize: 10,
+      },
+      //总条数
+      total: 0,
+      //列表数据
+      tableList:[],
+      //是否打开详情页面
+      openDetail:false,
+      //编辑页面打开方式,add或edit或see
+      openMode:'',
+      //行数据
+      row:{},
+    };
+  },
+  created() {
+    this.getList(this.queryParams);
+  },
+  methods: {
+    //是否打开详情页面
+    useOpenDetail(){
+      this.openDetail = !this.openDetail;
+    },
+    //新增
+    useAdd(){
+      this.openMode = 'add';
+      this.openDetail = true;
+    },
+    //编辑
+    async useEdit(row){
+      this.openMode = 'edit';
+      this.row = row;
+      this.openDetail = true;
+    },
+    //删除
+    async useDel(row){
+      this.$modal.confirm('确认删除选择数据').then(() => {
+        delAssess(row.id).then(res => {
+          if (res.code === 200) {
+            this.$modal.msgSuccess("删除成功");
+            this.getList(this.queryParams)
+          }
+        })
+      }).catch(() => {})
+    },
+    //查询列表
+    getList(params){
+      listAssess(params).then(res => {
+        if (res.code === 200) {
+          this.tableList = res.rows
+          this.total = res.total
+        }
+      })
+    },
+    //双击
+    useDoubleClick(row){
+      this.openMode = 'see';
+      this.row = row;
+      this.openDetail = true;
+    },
+    //改变一页显示条数
+    useChangePageSize(val){
+      this.queryParams.pageSize = val
+      this.getList(this.queryParams)
+    },
+    //翻页
+    useCurrentChange(val){
+      this.queryParams.pageNum = val
+      this.getList(this.queryParams)
+    },
+    //搜索
+    useSearch() {
+      console.log(this.queryParams);
+      this.getList(this.queryParams);
+    },
+    //重置
+    useReset(){
+      this.queryParams = {
+        customerName:null,
+        month:null,
+        deptName:null,
+        deptName:null,
+        pageNum: 1,
+        pageSize: 10,
+      }
+      this.getList(this.queryParams);
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.el-card {
+  width: calc(100% - 20px);
+  height: 100%;
+  margin: 10px;
+  padding: 20px;
+}
+.el-button-group + .el-button-group {
+  margin: 0 0 0 10px;
+}
+.btn_grooup {
+  margin-bottom: 10px;
+  display: flex;
+  justify-content: flex-end;
+}
+.el-pagination {
+  margin-top: 10px;
+  text-align: right;
+}
+</style>

+ 0 - 1
src/views/business/spd/target/targetMk/add.vue

@@ -163,7 +163,6 @@ export default {
   watch: {
 	  'form.template': {
       async handler(newVal) {
-        console.log('111');
         this.isItem = false;
         await this.fetchTemplate(newVal);
         await this.fetchHeaderData(newVal);

+ 23 - 57
src/views/purchase/DemandSummary/index.vue

@@ -207,15 +207,9 @@
           <el-button type="primary" size="mini" v-if="lineDisable" @click="audits">审核</el-button>
           <el-button type="primary" size="mini" v-if="lineDisable" @click="closeLine">行关闭</el-button>
 
-          <el-dropdown size="mini" v-if="lineDisable" @command="handleCommand">
-            <el-button size="mini" type="primary" style="margin: 0 10px;">
-              导出<i class="el-icon-arrow-down el-icon--right"></i>
-            </el-button>
-            <el-dropdown-menu slot="dropdown">
-              <el-dropdown-item command="Excel导出">Excel导出</el-dropdown-item>
-              <el-dropdown-item command="导出明细">导出明细</el-dropdown-item>
-            </el-dropdown-menu>
-          </el-dropdown>
+          <el-button size="mini" type="primary" style="margin: 0 10px;" v-if="lineDisable" @click="handleCommand">
+            导出
+          </el-button>
 
           <!-- <el-button type="primary" size="mini">转请购</el-button> -->
         </div>
@@ -587,54 +581,26 @@ export default {
       this.ids = selection.map(item => item.demandItemId)
       console.log('选中数组', this.ids.join())
     },
-    handleCommand(command) {
-      if(command == 'Excel导出') {
-        if(this.allSelection.length == 0) {
-          this.$modal.notifyWarning("请选中至少一条数据");
-        } else {
-          exportList(this.allSelection).then(res => {
-            const blob = new Blob([res], {
-              type: "application/vnd.ms-excel;charset=UTF-8",
-            });// 创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
-            const downloadElement = document.createElement("a"); //创建a标签
-            const href = window.URL.createObjectURL(blob); // 创建下载的链接
-            // var temp = res.headers["content-disposition"]; 
-            // var fileName = decodeURIComponent(temp.split("filename=")[1]); // 中文需要转码 (前端乱码)
-            // var name = fileName.split(";")[0]; //切割成文件名
-            downloadElement.href = href;  //下载地址
-            downloadElement.download = '导出Excel'; // 下载后文件名
-            document.body.appendChild(downloadElement);
-            downloadElement.click(); // 点击下载
-            document.body.removeChild(downloadElement); // 下载完成移除元素
-            window.URL.revokeObjectURL(href); // 释放blob对象
-          })
-        }
-      }
-
-      if (command == '导出明细') {
-        if (this.allSelection.length == 0 || this.allSelection.length > 1) {
-          this.$modal.notifyWarning("明细只能进行单条导出!");
-        } else {
-          let param = this.queryParams
-          param.sumFlag = this.allSelection[0].sumFlag
-          exportItems(param).then(res => {
-            const blob = new Blob([res], {
-              type: "application/vnd.ms-excel;charset=UTF-8",
-            });// 创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
-            const downloadElement = document.createElement("a"); //创建a标签
-            const href = window.URL.createObjectURL(blob); // 创建下载的链接
-            // var temp = res.headers["content-disposition"]; 
-            // var fileName = decodeURIComponent(temp.split("filename=")[1]); // 中文需要转码 (前端乱码)
-            // var name = fileName.split(";")[0]; //切割成文件名
-            downloadElement.href = href;  //下载地址
-            downloadElement.download = '导出明细'; // 下载后文件名
-            document.body.appendChild(downloadElement);
-            downloadElement.click(); // 点击下载
-            document.body.removeChild(downloadElement); // 下载完成移除元素
-            window.URL.revokeObjectURL(href); // 释放blob对象
-          })
-        }
-      }
+    handleCommand() {
+      this.$modal.loading("正在导出数据,请稍后...");
+      let param = this.queryParams
+      exportItems(param).then(res => {
+        this.$modal.closeLoading();
+        const blob = new Blob([res], {
+          type: "application/vnd.ms-excel;charset=UTF-8",
+        });// 创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
+        const downloadElement = document.createElement("a"); //创建a标签
+        const href = window.URL.createObjectURL(blob); // 创建下载的链接
+        // var temp = res.headers["content-disposition"]; 
+        // var fileName = decodeURIComponent(temp.split("filename=")[1]); // 中文需要转码 (前端乱码)
+        // var name = fileName.split(";")[0]; //切割成文件名
+        downloadElement.href = href;  //下载地址
+        downloadElement.download = '采购需求处理导出明细'+ this.parseTime(new Date().getTime()) + ".xlsx"; // 下载后文件名
+        document.body.appendChild(downloadElement);
+        downloadElement.click(); // 点击下载
+        document.body.removeChild(downloadElement); // 下载完成移除元素
+        window.URL.revokeObjectURL(href); // 释放blob对象
+      })
     },
     check(row) {
       this.isList = false

+ 10 - 4
src/views/purchase/PurchaseDemandList/add.vue

@@ -1182,6 +1182,7 @@ export default {
         await getRefer({ type: 'MATERIAL_PARAM', materialCodeList: rows }).then(res => {
           if (res.code === 200) {
             let rowList = res.rows
+            let newLine = []
             for (let i = 0; i<rowList.length; i++) {
             let line = {
               contacts: null,
@@ -1322,9 +1323,11 @@ export default {
               // 物料存储条件和运输条件
               line.transportationCondition = rowList[i].transportationCondition
               line.storageCondition = rowList[i].storageCondition
-              this.basicForm.puDemandItemList.push(line)
-              // console.log('临时数组', line)
+              newLine.push(line)
+              console.log('临时数组', newLine)
             }
+            // 删除指定下标
+            this.basicForm.puDemandItemList.splice(index,1,...newLine)
             this.$modal.notifySuccess("共粘贴" + rowList.length + '条数据');
           }
         }).catch(err => {
@@ -1418,6 +1421,7 @@ export default {
       // 选中骨科耗材时候的物料,需求客户不必填
       } else {
         console.log('xxxxx', selection)
+        let newLine = []
         for (let i = 0;i<selection.length;i++) {
           let line = {
             contacts: null,
@@ -1565,10 +1569,12 @@ export default {
           // 物料存储条件和运输条件
           line.transportationCondition = selection[i].transportationCondition
           line.storageCondition = selection[i].storageCondition
-          this.basicForm.puDemandItemList.push(line)
+          // this.basicForm.puDemandItemList.push(line)
+          newLine.push(line)
         }
         // 删除指定下标
-        this.basicForm.puDemandItemList.splice(this.tableIndex,1)
+        this.basicForm.puDemandItemList.splice(this.tableIndex,1,...newLine)
+        // this.basicForm.puDemandItemList.splice(this.tableIndex,1)
       }
     },
     // 明细行选择业务部门参照带出业务部门数据

+ 6 - 2
src/views/purchase/PurchaseDemandList/index.vue

@@ -536,8 +536,10 @@ export default {
         if (this.ids.length == 0) {
           this.$modal.notifyWarning("请选中至少一条数据");
         } else {
+          this.$modal.loading("正在导出数据,请稍后...");
           let param = {all: false, ids: this.ids}
           exportDemand(param).then(res => {
+            this.$modal.closeLoading();
             const blob = new Blob([res], {
               type: "application/vnd.ms-excel;charset=UTF-8",
             });// 创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
@@ -547,7 +549,7 @@ export default {
             // var fileName = decodeURIComponent(temp.split("filename=")[1]); // 中文需要转码 (前端乱码)
             // var name = fileName.split(";")[0]; //切割成文件名
             downloadElement.href = href;  //下载地址
-            downloadElement.download = '选中导出'; // 下载后文件名
+            downloadElement.download = '采购需求单选中导出' + this.parseTime(new Date().getTime()) + ".xlsx"; // 下载后文件名
             document.body.appendChild(downloadElement);
             downloadElement.click(); // 点击下载
             document.body.removeChild(downloadElement); // 下载完成移除元素
@@ -555,8 +557,10 @@ export default {
           })
         }
       } else {
+        this.$modal.loading("正在导出数据,请稍后...");
         let param2 = {all: true}
         exportDemand(param2).then(res => {
+          this.$modal.closeLoading();
           const blob = new Blob([res], {
             type: "application/vnd.ms-excel;charset=UTF-8",
           });// 创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
@@ -566,7 +570,7 @@ export default {
           // var fileName = decodeURIComponent(temp.split("filename=")[1]); // 中文需要转码 (前端乱码)
           // var name = fileName.split(";")[0]; //切割成文件名
           downloadElement.href = href;  //下载地址
-          downloadElement.download = '全部导出'; // 下载后文件名
+          downloadElement.download = '采购需求单全部导出' + this.parseTime(new Date().getTime()) + ".xlsx"; 
           document.body.appendChild(downloadElement);
           downloadElement.click(); // 点击下载
           document.body.removeChild(downloadElement); // 下载完成移除元素