叶松
2023-11-20 f35aefec0991c6b787a47e4a5309450655f48524
料仓界面完成
已修改3个文件
已添加1个文件
405 ■■■■■ 文件已修改
web/src/api/modules/materials.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/GoodManage/StockManage.vue 377 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/MixingInfo/messageInfo.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/SecureManage/NipCheck/components/ScoreMarket.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/api/modules/materials.js
@@ -134,6 +134,25 @@
 */
  mixingExpendLists: (params) =>
  axios.post('/materials/materialRelease/materialRew', params),
  /**
   * 料仓屏管理
   */
  // 料仓屏列表
  searchStockInfoLists: (params) =>
    axios.post('/materials/suMaterialWarehouse/selectPageList', params),
  //料仓屏添加/修改
  addStockInfos: (params) =>
    axios.post('/materials/suMaterialWarehouse/insertAndUpdate', params),
  // 删除料仓屏信息
  deleteStockInfos: params =>
      axios.get('/materials/suMaterialWarehouse/delete', {params}),
  // 料仓屏信息
  detailStockInfos: params =>
    axios.get('/materials/suMaterialWarehouse/selectInfo', {params}),
  
  /* 预埋件管理 */
  embedded: {
web/src/views/GoodManage/StockManage.vue
对比新文件
@@ -0,0 +1,377 @@
<template>
  <div class="main">
    <div class="main_header">
      <div class="header_item">
        <span class="header_label">料仓屏号码:</span>
        <el-select v-model="search.tableNum" placeholder="请选择料仓屏号码" clearable>
            <el-option
            v-for="item in 12"
            :key="item"
            :label="item"
            :value="item">
            </el-option>
        </el-select>
      </div>
      <div class="header_item">
        <span class="header_label">录入方式:</span>
        <el-select v-model="search.type" placeholder="请选择录入方式" clearable>
            <el-option
            v-for="item in optionsIncome"
            :key="item.value"
            :label="item.label"
            :value="item.value">
            </el-option>
        </el-select>
      </div>
      <div class="header_item">
        <span class="header_label">创建时间:</span>
        <el-date-picker
            v-model="search.time"
            type="daterange"
            value-format="yyyy-MM-dd HH:mm:ss"
            :default-time="['00:00:00','23:59:59']"
            range-separator="-"
            start-placeholder="起始时间"
            end-placeholder="结束时间">
        </el-date-picker>
      </div>
      <div class="header_item">
        <el-button  icon="el-icon-search" v-if="showButton('search')" @click="searchButtonInfo(true)">查询</el-button>
        <el-button class="search_btn" icon="el-icon-plus" v-if="showButton('insert')" @click="insertProp">新增</el-button>
      </div>
    </div>
    <div class="main_content">
      <el-table
        v-loading="loading"
        :data="dataList"
        height="100%">
        <el-table-column align="center" label="序号" width="60">
          <template #default="scope">
            <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="tableNum" label="料仓屏号码" align="center" width="120"></el-table-column>
        <el-table-column prop="materialName" label="原料类型" align="center" width="120"></el-table-column>
        <el-table-column prop="nameOfOrigin" label="产地名称" align="center" width="120"></el-table-column>
        <el-table-column prop="incomingQuantity" label="进场数量" align="center" width="150"></el-table-column>
        <el-table-column prop="inTime" label="进场日期" align="center" width="150"></el-table-column>
        <el-table-column prop="inspectionDate" label="检验日期" align="center" width="120"></el-table-column>
        <el-table-column prop="status" label="检验状态" align="center" width="150">
            <template #default="{row}">
                {{optionsCheckstatus&&optionsCheckstatus[row.status - 1].label}}
            </template>
        </el-table-column>
        <el-table-column prop="reportNumber" label="报告编号" align="center" width="150"></el-table-column>
        <el-table-column prop="type" label="录入方式" align="center">
            <template #default="{row}">
                {{optionsIncome&&optionsIncome[row.type - 1].label}}
            </template>
        </el-table-column>
        <el-table-column prop="createTime" label="创建时间" align="center"></el-table-column>
        <el-table-column label="操作" align="center" width="200">
          <template #default="{ row }">
            <el-button class="table_btn" size="mini" v-if="showButton('update')" @click="updateProp(row)">修改</el-button>
            <el-button class="delete_btn" size="mini" v-if="showButton('delete')" @click="deleteInfo(row)">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
    <div class="main_footer">
      <el-pagination
        background
        @current-change="changePageNum"
        @size-change="changePageSize"
        :current-page="pageNum"
        :page-sizes="[10, 20, 50, 100]"
        :page-size="pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="total">
      </el-pagination>
    </div>
    <el-dialog
      class="prop_dialog"
      :title="asyncTitle ? '添加' : '修改'"
      :close-on-click-modal="false"
      :visible.sync="asyncVisible"
      width="35%">
      <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="auto" class="rule_form">
        <el-form-item label="料仓屏号码:" prop="tableNum">
          <el-select v-model="ruleForm.tableNum" placeholder="请选择料仓屏号码">
                <el-option
                v-for="item in 12"
                :key="item"
                :label="item"
                :value="item">
                </el-option>
            </el-select>
        </el-form-item>
        <el-form-item label="原料类型:" prop="materialName">
          <el-input v-model="ruleForm.materialName" :size="size" clearable placeholder="请输入原料类型"></el-input>
        </el-form-item>
        <el-form-item label="产地名称:" prop="nameOfOrigin">
          <el-input v-model="ruleForm.nameOfOrigin" :size="size" clearable placeholder="请输入产地名称"></el-input>
        </el-form-item>
        <el-form-item label="进场数量:" prop="incomingQuantity">
          <el-input v-model="ruleForm.incomingQuantity" :size="size" type="number" clearable placeholder="请输入进场数量"></el-input>
        </el-form-item>
        <el-form-item label="进场日期:" prop="inTime">
            <el-date-picker
                v-model="ruleForm.inTime"
                type="date"
                :size="size"
                clearable
                value-format="yyyy-MM-dd"
                placeholder="请选择进场日期">
            </el-date-picker>
        </el-form-item>
        <el-form-item label="检验日期:" prop="inspectionDate">
          <el-date-picker
                v-model="ruleForm.inspectionDate"
                type="date"
                :size="size"
                clearable
                value-format="yyyy-MM-dd"
                placeholder="请选择检验日期">
            </el-date-picker>
        </el-form-item>
        <el-form-item label="检验状态:" prop="status">
          <el-select v-model="ruleForm.status" placeholder="请选择检验状态">
                <el-option
                v-for="item in optionsCheckstatus"
                :key="item.value"
                :label="item.label"
                :value="item.value">
                </el-option>
            </el-select>
        </el-form-item>
        <el-form-item label="报告编号:" prop="reportNumber">
          <el-input v-model="ruleForm.reportNumber" :size="size" clearable placeholder="请输入报告编号"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer">
        <el-button @click="asyncVisible = false">取 消</el-button>
        <el-button class="submit_btn" @click="asyncTitle ? submitInsert() : submitUpdate()">提 交</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import { buttonPinia } from '../../pinia/index';
import { throttle, changeSize } from '../../plugins/public'; // 导入节流、动态切换组件尺寸方法
  export default {
    data() {
      return {
        size: changeSize(), // 组件尺寸
        pageNum: 1,
        pageSize: 10,
        search:{},//查询条件
        total: 0,
        loading: false,
        dataList: [], //料仓屏管理信息列表
        asyncTitle: true, // 对话框title 新增:true  修改:false
        asyncVisible: false, // 添加 修改对话框
        ruleForm: {
        }, // 按钮表单
        rules: {
          reportNumber: [{
            required: true,
            message: '请输入报告编号',
            trigger: 'blur'
          }],
          status: [{
            required: true,
            message: '请选择检验类型',
            trigger: 'change'
          }],
          tableNum: [{
            required: true,
            message: '请选择料仓屏号码',
            trigger: 'change'
          }],
          inspectionDate: [{
            required: true,
            message: '请选择检验日期',
            trigger:  'change'
          }],
          inTime: [{
            required: true,
            message: '请选择进场日期',
            trigger:  'change'
          }],
          incomingQuantity: [{
            required: true,
            message: '请输入进场数量',
            trigger: 'blur'
          }],
          nameOfOrigin: [{
            required: true,
            message: '请输入产地名称',
            trigger: 'blur'
          }],
          materialName: [{
            required: true,
            message: '请输入原料类型',
            trigger: 'blur'
          }],
        },
        optionsIncome:[
            {
                label:'手动',
                value:1
            },
            {
                label:'自动',
                value:2
            }
        ],
        optionsCheckstatus:[
            {
                label:'合格',
                value:1
            },
            {
                label:'待检',
                value:2
            }
        ],
      }
    },
    watch: {
      asyncVisible(bol) {
        if(!bol) {
          this.ruleForm = {};
          this.$refs.ruleForm.resetFields();
        }
      }
    },
    mounted() {
      const that = this;
      // 根据窗口大小动态修改组件尺寸
      window.onresize = () => {
        that.size = changeSize();
      }
      that.searchButtonInfo(true);
    },
    methods: {
      // 查询按钮列表信息
      searchButtonInfo(bol) {
        if(bol) {
          this.pageNum = 1;
        }
        let params = Object.assign({},this.search,{
          pageNum: this.pageNum,
          pageSize: this.pageSize
        })
        params.startTime=this.search.time&&this.search.time[0],
        params.endTime=this.search.time&&this.search.time[1]
        delete params.time
        this.loading = true;
        this.$api.Materials.searchStockInfoLists(params).then((res) => {
          if(res.statusMsg === 'ok') {
            this.total = res.data.total;
            this.dataList = res.data.list;
          }
          this.loading = false;
        })
      },
      // 新增按钮信息
      insertProp() {
        this.asyncTitle = true;
        this.asyncVisible = true;
      },
      // 修改按钮信息
      updateProp(row) {
        this.asyncTitle = false;
        this.asyncVisible = true;
        this.$api.Materials.detailStockInfos({id: row.id}).then(res=>{
            if(res.statusMsg === 'ok'){
                this.ruleForm = res.data
                let projectArr = []
                res.data.supplierPros.forEach(item=>{
                    projectArr.push(item.proId)
                })
                this.$set(this.ruleForm,'proIds',projectArr)
            }else{
                this.$message.warning(res.statusMsg)
            }
        })
      },
      // 删除按钮信息
      deleteInfo(row) {
        this.$confirm("该操作将删除该信息,是否继续删除?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
       })
       .then(() => {
         this.$api.Materials.deleteStockInfos({id: row.id})
        .then(res => {
          if(res.statusMsg === 'ok') {
            this.searchButtonInfo(true);
            this.$message.success("删除成功!");
          } else {
            this.$message.warning(res.statusMsg);
          }
        })
       })
       .catch(() => {
         this.$message.warning("您已取消");
       })
      },
      // 提交添加按钮信息
      submitInsert: throttle(function() {
        this.$refs.ruleForm.validate((valid) => {
          if(valid) {
            const params = Object.assign({}, this.ruleForm);
            this.$api.Materials.addStockInfos(params).then((res) => {
              if(res.statusMsg === 'ok') {
                this.asyncVisible = false;
                this.searchButtonInfo(true);
                this.$message.success('添加成功!');
              } else {
                this.$message.warning(res.statusMsg);
              }
            })
          }
        })
      }, 3000),
      // 提交修改按钮信息
      submitUpdate: throttle(function() {
        this.$refs.ruleForm.validate((valid) => {
          if(valid) {
            const params = Object.assign({}, this.ruleForm);
            this.$api.Materials.addStockInfos(params).then((res) => {
              if(res.statusMsg === 'ok') {
                this.asyncVisible = false;
                this.searchButtonInfo(true);
                this.$message.success('修改成功!');
              } else {
                this.$message.warning(res.statusMsg);
              }
            })
          }
        })
      }, 3000),
      // 判断按钮权限信息
      showButton(str) {
        const pinia = buttonPinia();
        return pinia.$state.buttonInfo.includes(str);
      },
      // 切换页数
      changePageNum(page) {
        this.pageNum = page;
        this.searchButtonInfo();
      },
      // 切换每页条数
      changePageSize(size) {
        this.pageSize = size;
        this.searchButtonInfo();
      }
    }
  }
</script>
<style lang="sass" scoped>
@import '../../style/layout-main.scss';
</style>
web/src/views/MixingInfo/messageInfo.vue
@@ -20,14 +20,14 @@
                        <div class="mixing_rows_datas">{{mixingList&&mixingList.inTime}}</div>
                    </div>
                    <div class="mixing_rows">
                        <div class="mixing_rows_titles">检验状态:</div>
                        <div class="mixing_rows_datas"  :class="{'standardStyle':mixingList.status===1,'notStandardStyle':mixingList.status!==1}">{{mixingList&&mixingList.status===1?'合格':'待检'}}</div>
                    </div>
                    <div class="mixing_rows">
                        <div class="mixing_rows_titles">检验日期:</div>
                        <div class="mixing_rows_datas">{{mixingList&&mixingList.inspectionDate}}</div>
                    </div>
                    <div class="mixing_rows">
                        <div class="mixing_rows_titles">检验状态:</div>
                        <div class="mixing_rows_datas"  :class="{'standardStyle':mixingList.status===1,'notStandardStyle':mixingList.status!==1}">{{mixingList&&mixingList.status===1?'合格':'待检'}}</div>
                    </div>
                    <div class="mixing_rows">
                        <div class="mixing_rows_titles">报告编号:</div>
                        <div class="mixing_rows_datas">{{mixingList&&mixingList.reportNumber}}</div>
                    </div>
web/src/views/SecureManage/NipCheck/components/ScoreMarket.vue
@@ -81,7 +81,6 @@
      window.onresize = () => {
        that.size = changeSize();
      }
      that.searchButtonInfo(true);
    },
    methods: {
      // 查询按钮列表信息