spring
2025-03-25 00064cb80d74bb19e499764cb39d499a3e3f08b2
外购件完成80%
已修改2个文件
已添加2个文件
444 ■■■■ 文件已修改
src/api/business/outsourcedParts.js 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/productOrder.js 122 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Table/lims-table.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/outsourcedParts/index.vue 289 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/outsourcedParts.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
// å¤–购件页面相关接口
import request from "@/utils/request";
// åˆ—表
export function selectInspection(query) {
  return request({
    url: "/inspectionPurchased/selectInspection",
    method: "get",
    params: query,
  });
}
// ç¼–辑/新增
export function addOrUpdateInspection(query) {
  return request({
    url: "/inspectionPurchased/addOrUpdateInspection",
    method: "post",
    data: query,
  });
}
// åˆ é™¤
export function delInspection(query) {
  return request({
    url: "/inspectionPurchased/delInspection",
    method: "delete",
    params: query,
  });
}
src/api/business/productOrder.js
@@ -1,124 +1,124 @@
// æˆå“ä¸‹å•页面相关接口
import request from '@/utils/request'
import request from "@/utils/request";
// æŸ¥è¯¢æˆå“ä¸‹å•列表
export function selectInsOrderParameter(query) {
  return request({
    url: '/insOrder/selectInsOrderParameter',
    method: 'get',
    params: query
  })
    url: "/insOrder/selectInsOrderParameter",
    method: "get",
    params: query,
  });
}
// ä¿®æ”¹æˆå“å§”托编号
export function updateOrderEntrustCode(query) {
  return request({
    url: '/insOrder/updateOrderEntrustCode',
    method: 'post',
    data: query
  })
    url: "/insOrder/updateOrderEntrustCode",
    method: "post",
    data: query,
  });
}
// æˆå“æ£€éªŒå•全部信息导出
export function rawAllInsOrderExport(query) {
  return request({
    url: '/insOrder/rawAllInsOrderExport',
    method: 'get',
    url: "/insOrder/rawAllInsOrderExport",
    method: "get",
    params: query,
    responseType: "blob"
  })
    responseType: "blob",
  });
}
// å°†å¾…检验的的撤销进行更改
export function updateInspected(query) {
  return request({
    url: '/insOrder/updateInspected',
    method: 'post',
    data: query
  })
    url: "/insOrder/updateInspected",
    method: "post",
    data: query,
  });
}
// æ’¤é”€å®¡æ ¸é€šè¿‡
export function checkUpdate(query) {
  return request({
    url: '/insOrder/checkUpdate',
    method: 'post',
    data: query
  })
    url: "/insOrder/checkUpdate",
    method: "post",
    data: query,
  });
}
// æŸ¥è¯¢è®¢å•总共预计时间
export function selectOrderManDay(query) {
  return request({
    url: '/insOrder/selectOrderManDay',
    method: 'get',
    params: query
  })
    url: "/insOrder/selectOrderManDay",
    method: "get",
    params: query,
  });
}
// ä»»åŠ¡äº¤æŽ¥
export function upPlanUser2(query) {
  return request({
    url: '/insOrderPlan/upPlanUser2',
    method: 'get',
    params: query
  })
    url: "/insOrderPlan/upPlanUser2",
    method: "get",
    params: query,
  });
}
// æ£€éªŒä¸‹å‘
export function upInsOrder(query) {
  return request({
    url: '/insOrder/upInsOrder',
    method: 'post',
    params: query
  })
    url: "/insOrder/upInsOrder",
    method: "post",
    params: query,
  });
}
// å°†å¾…审核更新成撤销状态
export function updateStatus(query) {
  return request({
    url: '/insOrder/updateStatus',
    method: 'post',
    data: query
  })
    url: "/insOrder/updateStatus",
    method: "post",
    data: query,
  });
}
// å°†å¾…审核更新成撤销状态
export function delInsOrder(query) {
  return request({
    url: '/insOrder/delInsOrder',
    method: 'delete',
    params: query
  })
    url: "/insOrder/delInsOrder",
    method: "delete",
    params: query,
  });
}
// å°†å¾…审核更新成撤销状态
export function selectNoProducts(query) {
  return request({
    url: '/insOrder/selectNoProducts',
    method: 'get',
    params: query
  })
    url: "/insOrder/selectNoProducts",
    method: "get",
    params: query,
  });
}
// æŸ¥è¯¢æˆå“æ ‡ç­¾æ‰“印信息
export function labelOrderPrinting(query) {
  return request({
    url: '/insOrder/labelOrderPrinting',
    method: 'post',
    data: query
  })
    url: "/insOrder/labelOrderPrinting",
    method: "post",
    data: query,
  });
}
// æ ¹æ®è®¢å•id查询样品
export function getSampleByOrderId(query) {
  return request({
    url: '/insOrder/getSampleByOrderId',
    method: 'get',
    params: query
  })
    url: "/insOrder/getSampleByOrderId",
    method: "get",
    params: query,
  });
}
// æ ¹æ®æ ·å“id查询检验项树
export function getProductTreeBySampleId(query) {
  return request({
    url: '/insOrder/getProductTreeBySampleId',
    method: 'get',
    params: query
  })
    url: "/insOrder/getProductTreeBySampleId",
    method: "get",
    params: query,
  });
}
// æ·»åŠ é—æ¼çš„æ£€éªŒé¡¹
export function addOmitOrderProduct(query) {
  return request({
    url: '/insOrder/addOmitOrderProduct',
    method: 'post',
    data: query
  })
    url: "/insOrder/addOmitOrderProduct",
    method: "post",
    data: query,
  });
}
src/components/Table/lims-table.vue
@@ -15,7 +15,7 @@
        :show-overflow-tooltip="item.dataType === 'action' || item.dataType === 'slot' ? false : true"
        :min-width="item.dataType == 'action' ? btnWidth : getTitleWidth(item)" :sortable="item.sortable ? true : false"
        :type="item.type"
        :width="item.dataType == 'action' ? btnWidth : (column.length < 6 ? 'auto' : getTitleWidth(item))"
        :width="item.dataType == 'action' ? btnWidth : (column.length < 10 ? 'auto' : getTitleWidth(item))"
        align="center">
        <!-- <div class="123" v-if="item.type == ''"> -->
        <template v-if="item.hasOwnProperty('colunmTemplate')" :slot="item.colunmTemplate" slot-scope="scope">
@@ -305,7 +305,7 @@
      return count * 15 + 50 + "px";
    },
    getTitleWidth(row) {
      if (row.label.includes('时间') || row.label.includes('编号') || row.label.includes('样品名称') || row.label.includes('零件')) {
      if (row.label.includes('时间') || row.label.includes('号') || row.label.includes('样品名称') || row.label.includes('零件')) {
        return 160
      } else if (row.label.includes('产品') || row.label.includes('模板名称')) {
        return 200
src/views/business/outsourcedParts/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,289 @@
<template>
  <div class="app-container">
    <div class="search">
      <el-form :model="queryParams" ref="queryParams" size="small" :inline="true">
        <el-row>
          <el-form-item label="产品名称" prop="name">
            <el-input v-model="queryParams.name" clearable placeholder="请输入" size="small"
              @keyup.enter.native="refreshTable"></el-input>
          </el-form-item>
          <el-form-item label="SP号" prop="spNum">
            <el-input v-model="queryParams.spNum" clearable placeholder="请输入" size="small"
              @keyup.enter.native="refreshTable">
            </el-input>
          </el-form-item>
          <el-form-item>
            <el-button size="mini" type="primary" @click="refreshTable()">查 è¯¢</el-button>
            <el-button size="mini" @click="refresh()">重 ç½®</el-button>
          </el-form-item>
        </el-row>
      </el-form>
      <div>
        <el-button size="mini" type="primary">获取订单</el-button>
        <el-button size="mini" type="primary" @click="openAdd('新增')">新增</el-button>
      </div>
    </div>
    <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 220px)'"
      :page="page" @pagination="pagination"></lims-table>
    <!-- æ–°å¢ž/编辑 -->
    <el-dialog :title="title" :visible.sync="addDia" width="500px">
      <el-form :model="addForm" v-if="addDia" ref="addForm" :rules="addRules" label-position="right"
        label-width="120px">
        <el-form-item label="产品" prop="name">
          <el-input size="small" placeholder="请输入" clearable v-model="addForm.name"
            :disabled="title == '检验'"></el-input>
        </el-form-item>
        <el-form-item label="来料数量" prop="num">
          <el-input size="small" placeholder="请输入" clearable v-model="addForm.num" :disabled="title == '检验'">
          </el-input>
        </el-form-item>
        <el-form-item label="供货厂家" prop="supplier">
          <el-input size="small" placeholder="请输入" clearable v-model="addForm.supplier" :disabled="title == '检验'">
          </el-input>
        </el-form-item>
        <el-form-item label="订单号" prop="orderNum">
          <el-input size="small" placeholder="请输入" clearable v-model="addForm.orderNum" :disabled="title == '检验'">
          </el-input>
        </el-form-item>
        <el-form-item label="SP号" prop="spNum">
          <el-input size="small" placeholder="请输入" clearable v-model="addForm.spNum" :disabled="title == '检验'">
          </el-input>
        </el-form-item>
        <el-form-item label="备注" prop="remark">
          <el-input size="small" placeholder="请输入" type="textarea" :rows="2" clearable v-model="addForm.remark"
            :disabled="title == '检验'">
          </el-input>
        </el-form-item>
        <el-form-item label="外观" prop="inspectionItems" v-if="title == '检验'">
          <el-input size="small" placeholder="请输入" clearable v-model="addForm.inspectionItems">
          </el-input>
        </el-form-item>
        <el-form-item label="检测结果" prop="result" v-if="title == '检验'">
          <el-switch v-model="addForm.result" active-text="合格" inactive-text="不合格" active-value="合格"
            inactive-value="不合格">
          </el-switch>
        </el-form-item>
        <el-form-item label="测试文件" prop="file" v-if="title == '检验'">
          <el-upload action="#" :auto-upload="false" :multiple="false"
            accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.pdf,' :on-change="handleChangeUpload">
            <el-button size="mini" type="primary">上传附件</el-button>
          </el-upload>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addDia = false">取 æ¶ˆ</el-button>
        <el-button :loading="uploading" type="primary" @click="submitProduct('addForm')">ç¡® è®¤</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import limsTable from "@/components/Table/lims-table.vue";
import { selectInspection, addOrUpdateInspection, delInspection } from '@/api/business/outsourcedParts.js'
export default {
  components: { limsTable },
  data() {
    return {
      queryParams: {},
      tableData: [],
      column: [
        { label: "委托编号", prop: "entrustmentNo" },
        { label: "产品", prop: "name" },
        { label: "来料数量", prop: "num" },
        {
          label: "供货厂家",
          prop: "supplier"
        },
        { label: "订单号", prop: "orderNum" },
        { label: "SP号", prop: "spNum" },
        {
          label: "检验状态", prop: "inspectionStatus", dataType: 'tag',
          formatData: (params) => {
            let obj = this.inspectionTaskState.find(m => m.value == params)
            if (obj) {
              return obj.label
            } else {
              return ''
            }
          },
          formatType: (params) => {
            if (params == 0) {
              return 'danger'
            } else {
              return 'success'
            }
          }
        },
        { label: "备注", prop: "remark" },
        {
          dataType: "action",
          label: "操作",
          operation: [
            {
              name: "编辑",
              type: "text",
              clickFun: (row) => {
                this.openAdd("编辑", row);
              },
            },
            {
              name: "删除",
              type: "text",
              clickFun: (row) => {
                this.handleDelete(row);
              },
              disabled: (row) => {
                return !!row.ratifyUser
              },
            },
            {
              name: "检验",
              type: "text",
              clickFun: (row) => {
                this.openAdd('检验', row);
              },
            },
          ],
        },
      ],
      page: {
        total: 0,
        size: 20,
        current: 0,
      },
      tableLoading: false,
      title: "新增",
      addDia: false,
      addForm: {},
      addRules: {
        name: [{ required: true, message: "请输入产品名称", trigger: "blur" }],
        num: [
          { required: true, message: "请输入来料数量", trigger: "blur" },
        ],
        supplier: [
          { required: true, message: "请输入供货厂家", trigger: "blur" },
        ],
        orderNum: [{ required: true, message: "请输入订单号", trigger: "blur" }],
        spNum: [
          { required: true, message: "请输入SP号", trigger: "blur" },
        ],
        inspectionItems: [
          { required: true, message: "请输入外观", trigger: "blur" },
        ],
      },
      uploading: false,
      inspectionTaskState: []
    }
  },
  mounted() {
    this.getDicts("inspection_task_state").then((response) => {
      this.inspectionTaskState = this.dictToValue(response.data);
    });
  },
  methods: {
    getList() {
      this.tableLoading = true;
      let param = { ...this.queryParams, ...this.page };
      delete param.total;
      selectInspection({ ...param })
        .then((res) => {
          this.tableLoading = false;
          if (res.code === 200) {
            this.tableData = res.data.records;
            this.page.total = res.data.total;
          }
        })
        .catch((err) => {
          this.tableLoading = false;
        });
    },
    pagination({ page, limit }) {
      this.page.current = page;
      this.page.size = limit;
      this.getList();
    },
    refresh() {
      this.queryParams = {};
      this.page.current = 1;
      this.getList();
    },
    refreshTable() {
      this.page.current = 1;
      this.getList();
    },
    // æ–°å¢ž/编辑/检验
    openAdd(title, row) {
      this.title = title;
      this.file = null;
      if (row) {
        this.addForm = row;
      } else {
        this.addForm = {};
      }
      this.addDia = true;
    },
    // æ–°å¢ž/编辑/检验--提交
    submitProduct(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          this.uploading = true;
          if (this.title == "新增" || this.title == "编辑") {
            addOrUpdateInspection(this.addForm)
              .then((res) => {
                this.uploading = false;
                if (res.code != 200) {
                  return;
                }
                this.$message.success("提交成功");
                this.refresh();
                this.addDia = false;
              })
              .catch((err) => {
                this.uploading = false;
              });
          } else {
            // æ£€éªŒ
            let fd = new FormData();
            //文件信息中raw才是真的文件
            if (this.file) {
              fd.append("file", this.file.raw);
            }
          }
        } else {
          return false;
        }
      });
    },
    // åˆ é™¤
    handleDelete(row) {
      this.$confirm("是否删除该条数据?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          delInspection({ id: row.id }).then((res) => {
            if (res.code == 200) {
              this.$message.success("删除成功");
              this.refresh();
            }
          });
        })
        .catch(() => { });
    },
    handleChangeUpload(file, fileLists) {
      this.addForm.file = file
    },
  }
}
</script>
<style scoped>
.search {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
</style>