Переглянути джерело

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

002390 1 рік тому
батько
коміт
4cbba31be9

+ 225 - 0
src/views/business/spd/bo/authority/addmaterial.vue

@@ -0,0 +1,225 @@
+
+<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" 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"/>
+                <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";
+import { saveItems } from "@/api/business/spd/fillin/dailysale_quantity_assess_item";
+export default {
+  name: "dailysaleQuantityAssessDetailAddmaterial",
+  props: ["form"],
+  data() {
+    return {
+      loading: false,
+      //是否打开弹窗
+      open:false,
+      //搜索框参数
+      queryParams:{
+        code: null,
+        name: null,
+      },
+      page:{
+        pageNum:1,
+        pageSize:10,
+      },
+      //总条数
+      total: 0,
+      //列表数据
+      tableData:[],
+      //选择的数据
+      selectionData:[],
+    };
+  },
+  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;
+    },
+    //确认多选
+    async useConfirm(){
+      if(this.selectionData.length < 1){
+        this.$modal.msgError("未选择数据!");
+        return;
+      }
+      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,
+          });
+      }
+      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,
+        });
+        let res = await saveItems(arr);
+        if(res.code == '200'){
+          this.$modal.msgSuccess("添加成功");
+          this.$emit("useReset");
+          this.open = false;
+        }else{
+          this.$modal.msgError("保存失败,请联系管理员!");
+        }
+    },
+    //搜索
+    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>

+ 476 - 0
src/views/business/spd/bo/authority/authority-index.vue

@@ -0,0 +1,476 @@
+<template>
+  <div class="app-container">
+    <el-table v-loading="loading" :data="authorityList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="项目岗位" align="center" prop="postName" />
+      <el-table-column label="商机-下一步" align="center" prop="boNext">
+        <template slot-scope="scope">
+          {{scope.row.boNext ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="商机-修改" align="center" prop="boEdit">
+        <template slot-scope="scope">
+          {{scope.row.boEdit ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="商机-关闭" align="center" prop="boClose">
+        <template slot-scope="scope">
+          {{scope.row.boClose ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="商机-赢单" align="center" prop="boWin">
+        <template slot-scope="scope">
+          {{scope.row.boWin ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="商机-丢单" align="center" prop="boLose">
+        <template slot-scope="scope">
+          {{scope.row.boLose ? '√' : '×'}}
+        </template>
+      </el-table-column>
+
+      <el-table-column label="项目成员-新增" align="center" prop="pojpsnAdd" >
+        <template slot-scope="scope">
+          {{scope.row.pojpsnAdd ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="项目成员-删除" align="center" prop="pojpsnDel">
+        <template slot-scope="scope">
+          {{scope.row.pojpsnDel ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="项目成员-编辑" align="center" prop="pojpsnEdit">
+        <template slot-scope="scope">
+          {{scope.row.pojpsnEdit ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="项目成员-查看" align="center" prop="pojpsnView">
+        <template slot-scope="scope">
+          {{scope.row.pojpsnView ? '√' : '×'}}
+        </template>
+      </el-table-column>
+
+      <el-table-column label="任务-新增" align="center" prop="taskAdd" >
+        <template slot-scope="scope">
+          {{scope.row.taskAdd ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="任务-删除" align="center" prop="taskDel">
+        <template slot-scope="scope">
+          {{scope.row.taskDel ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="任务-编辑" align="center" prop="taskEdit">
+        <template slot-scope="scope">
+          {{scope.row.taskEdit ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="任务-查看" align="center" prop="taskView">
+        <template slot-scope="scope">
+          {{scope.row.taskView ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="行动-新增" align="center" prop="behaviorAdd">
+        <template slot-scope="scope">
+          {{scope.row.behaviorAdd ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="行动-删除" align="center" prop="behaviorDel">
+        <template slot-scope="scope">
+          {{scope.row.behaviorDel ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="行动-编辑" align="center" prop="behaviorEdit">
+        <template slot-scope="scope">
+          {{scope.row.behaviorEdit ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="行动-查看" align="center" prop="behaviorView">
+        <template slot-scope="scope">
+          {{scope.row.behaviorView ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="联系人-新增" align="center" prop="contactAdd">
+        <template slot-scope="scope">
+          {{scope.row.contactAdd ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="联系人-删除" align="center" prop="contactDel">
+        <template slot-scope="scope">
+          {{scope.row.contactDel ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="联系人-编辑" align="center" prop="contactEdit">
+        <template slot-scope="scope">
+          {{scope.row.contactEdit ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="联系人-查看" align="center" prop="contactView">
+        <template slot-scope="scope">
+          {{scope.row.contactView ? '√' : '×'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['material:authority:edit']"
+          >修改</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改商机角色权限对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="项目岗位" prop="postName">
+          {{form.postName}}
+          <!-- <el-input v-model="form.postName"/> -->
+        </el-form-item>
+        <el-divider content-position="left">
+          <dev style="width: 50px; height: 40px; font-size: 18px">商机</dev>
+        </el-divider>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item prop="boNext">
+              <el-checkbox v-model="form.boNext">下一步</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="boEdit">
+              <el-checkbox v-model="form.boEdit">修改</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="boClose">
+              <el-checkbox v-model="form.boClose">关闭</el-checkbox>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item prop="boWin">
+              <el-checkbox v-model="form.boWin">赢单</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="boLose">
+              <el-checkbox v-model="form.boLose">丢单</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+          </el-col>
+        </el-row>
+        <el-divider content-position="left">
+          <dev style="width: 50px; height: 40px; font-size: 18px">项目成员</dev>
+        </el-divider>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item prop="taskAdd">
+              <el-checkbox v-model="form.pojpsnAdd">新增</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="pojpsnDel">
+              <el-checkbox v-model="form.pojpsnDel">删除</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="pojpsnEdit">
+              <el-checkbox v-model="form.pojpsnEdit">编辑</el-checkbox>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item prop="pojpsnView">
+              <el-checkbox v-model="form.pojpsnView">查看</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+          </el-col>
+          <el-col :span="8">
+          </el-col>
+        </el-row>
+        <el-divider content-position="left">
+          <dev style="width: 50px; height: 40px; font-size: 18px">任务</dev>
+        </el-divider>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item prop="taskAdd">
+              <el-checkbox v-model="form.taskAdd">新增</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="taskDel">
+              <el-checkbox v-model="form.taskDel">删除</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="taskEdit">
+              <el-checkbox v-model="form.taskEdit">编辑</el-checkbox>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item prop="taskView">
+              <el-checkbox v-model="form.taskView">查看</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+          </el-col>
+          <el-col :span="8">
+          </el-col>
+        </el-row>
+        <el-divider content-position="left">
+          <dev style="width: 50px; height: 40px; font-size: 18px">行动</dev>
+        </el-divider>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item prop="behaviorAdd">
+              <el-checkbox v-model="form.behaviorAdd">新增</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="behaviorDel">
+              <el-checkbox v-model="form.behaviorDel">删除</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="behaviorEdit">
+              <el-checkbox v-model="form.behaviorEdit">编辑</el-checkbox>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item prop="behaviorView">
+              <el-checkbox v-model="form.behaviorView">查看</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+          </el-col>
+          <el-col :span="8">
+          </el-col>
+        </el-row>
+        <el-divider content-position="left">
+          <dev style="width: 50px; height: 40px; font-size: 18px">联系人</dev>
+        </el-divider>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item prop="contactAdd">
+              <el-checkbox v-model="form.contactAdd">新增</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="contactDel">
+              <el-checkbox v-model="form.contactDel">删除</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="contactEdit">
+              <el-checkbox v-model="form.contactEdit">编辑</el-checkbox>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item prop="contactView">
+              <el-checkbox v-model="form.contactView">查看</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+          </el-col>
+          <el-col :span="8">
+          </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 { listAuthority, getAuthority, delAuthority, addAuthority, updateAuthority } from "@/api/business/spd/bo/authority";
+export default {
+  name: "Authority",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 商机角色权限表格数据
+      authorityList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        post: null,
+        boNext: null,
+        boEdit: null,
+        boClose: null,
+        boWin: null,
+        boLose: null,
+        taskAdd: null,
+        taskDel: null,
+        taskEdit: null,
+        taskView: null,
+        behaviorAdd: null,
+        behaviorDel: null,
+        behaviorEdit: null,
+        behaviorView: null,
+        contactAdd: null,
+        contactDel: null,
+        contactEdit: null,
+        contactView: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询商机角色权限列表 */
+    getList() {
+      this.loading = true;
+      listAuthority(this.queryParams).then(response => {
+        this.authorityList = response.rows;
+        console.log('this.authorityList',this.authorityList);
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        post: null,
+        boNext: null,
+        boEdit: null,
+        boClose: null,
+        boWin: null,
+        boLose: null,
+        taskAdd: null,
+        taskDel: null,
+        taskEdit: null,
+        taskView: null,
+        behaviorAdd: null,
+        behaviorDel: null,
+        behaviorEdit: null,
+        behaviorView: null,
+        contactAdd: null,
+        contactDel: null,
+        contactEdit: null,
+        contactView: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加商机角色权限";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getAuthority(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改商机角色权限";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateAuthority(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addAuthority(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除商机角色权限编号为"' + ids + '"的数据项?').then(function() {
+        return delAuthority(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('material/authority/export', {
+        ...this.queryParams
+      }, `authority_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 242 - 0
src/views/business/spd/bo/authority/choosematerial.vue

@@ -0,0 +1,242 @@
+
+<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" 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"/>
+                <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="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,
+      //搜索框参数
+      queryParams:{
+        customer: null,
+        materialCode: null,
+        materialName: null,
+        pageNum:1,
+        pageSize:10,
+      },
+      //总条数
+      total: 0,
+      //列表数据
+      tableData:[],
+      //选择的数据
+      selectionData:[],
+    };
+  },
+  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;
+    },
+    //全选
+    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(() => {})
+    },
+    //确认多选
+    async useConfirm(){
+      if(this.selectionData.length < 1){
+        this.$modal.msgError("未选择数据!");
+        return;
+      }
+      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,
+          });
+      }
+      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,
+        });
+        let res = await saveItems(arr);
+        if(res.code == '200'){
+          this.$modal.msgSuccess("添加成功");
+          this.$emit("useReset");
+          this.open = false;
+        }else{
+          this.$modal.msgError("保存失败,请联系管理员!");
+        }
+    },
+    //搜索
+    useSearch(){
+      this.getList();
+    },
+    //重置
+    useReset(){
+      this.queryParams = {
+        customer: null,
+        materialCode: null,
+        materialName: null,
+        pageNum:1,
+        pageSize:10,
+      }
+      this.getList();
+    },
+    //改变一页显示条数
+    useChangePageSize(val){
+      this.queryParams.pageSize = val
+      this.getList()
+    },
+    //翻页
+    useCurrentChange(val){
+      this.queryParams.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>

+ 868 - 0
src/views/business/spd/bo/authority/detail.vue

@@ -0,0 +1,868 @@
+
+<template>
+  <div>
+    <el-card>
+      <el-button size="mini" plain @click="useBack">返回</el-button>
+      <el-divider></el-divider>
+      <el-form
+        size="mini"
+        :model="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">
+              <el-input
+                placeholder="自动生成"
+                readonly
+                v-model="form.customerName"
+                style="width: 200px"
+                clearable
+              />
+            </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>
+    </el-card>
+    <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="600px" size="size" v-loading="loading">
+              <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="100"
+                prop="unitName"
+              />
+              <el-table-column
+                show-overflow-tooltip
+                label="价格(元)"
+                align="center"
+                width="100"
+                prop="price"
+              />
+              <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
+                  show-overflow-tooltip
+                  label="合计数量"
+                  align="center"
+                  width="100"
+                  prop="amount"
+                />
+                <el-table-column
+                  show-overflow-tooltip
+                  label="合计金额"
+                  align="center"
+                  width="100"
+                  prop="money"
+                />
+              </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.row)"
+                    >删行</el-button
+                  >
+                </template>
+              </el-table-column>
+            </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 @useReset="useReset" :form="form"></Choosematerial>
+          <Addmaterial @useReset="useReset" :form="form"></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 { 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 {
+  name: "dailysaleQuantityAssessDetail",
+  components: { Addmaterial, Choosematerial },
+  props: ["openMode", "row"],
+  data() {
+    return {
+      loading: false,
+      //主表
+      form: {},
+      //所选月份天数
+      numDay:31,
+      //明细
+      items:[],
+      //明细查询条件
+      queryParams:{
+        dailysaleQuantityAssessId: null,
+        pageNum:1,
+        pageSize:10,
+      },
+      //总条数
+      total: 0,
+      activeName: "item",
+    };
+  },
+  async created() {
+    switch (this.openMode) {
+      case "edit":
+        await this.fetchAssess(this.row.id);
+        await this.fetchItem(this.row.id);
+        break;
+      case "see":
+        await this.fetchAssess(this.row.id);
+        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.loading = true;
+      try {
+        let res = null;
+        if (this.openMode === "edit") {
+          res = await saveItems(this.items);
+        }
+        if (res.code === 200) {
+          this.$modal.msgSuccess("保存成功");
+          this.useBack();
+        }
+      } catch (err) {
+        console.error(err);
+      } finally {
+        this.loading = false;
+      };
+    },
+    //查询详情
+    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;
+      }
+    },
+    //查询明细
+    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(row) {
+      let arr = [row.id];
+      delItems(arr).then(res => {
+        if (res.code === 200) {
+           this.fetchItem(this.form.id);
+        }
+      })
+    },
+    //切换多页签
+    useSwitchTab() {},
+    //返回
+    useBack() {
+      this.$parent.useOpenDetail();
+      this.$parent.useSearch();
+    },
+    //获取当前月份天数
+    getDays(year, month){
+      return new Date(year, month, 0).getDate()
+    },
+    //计算合计
+    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.items){
+        let c = 0;
+        for(let j in num){
+          c = (this.items[i][num[j]] || 0) - 0 + c;
+        }
+        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>
+
+<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>

+ 6 - 0
src/views/purchase/transferOrder/add.vue

@@ -408,6 +408,7 @@
                       size="mini"
                       v-model="scope.row.qty"
                       @input="getSL(scope)"
+                      @change="changeQty()"
                     />
                   </el-form-item>
                 </template>
@@ -2098,6 +2099,11 @@ export default {
       this.tableIndex = index;
       this.$refs.materialRefer.init();
     },
+    // 明细行数量失去焦点
+    changeQty(aa,bb){
+      console.log('aa',aa);
+      console.log('bb',bb);
+    },
     selectMaterial(selection) {
       console.log("选中的物料", selection);
       // 先清空通用名,调入调出结算规则明细