XiaoRuby
2023-09-24 abba64c23543cd806ed8864a9a976408618a5f45
src/components/view/unqualifiedManagement.vue
@@ -1,300 +1,218 @@
<template>
  <div class="unqualifiedBox">
    <el-row>
      <el-col :span="12" style="line-height: 32px;">不合格管理</el-col>
      <el-col :span="12" style="text-align: right;">
        <el-button icon="el-icon-download" size="mini" @click="() => {}"
          >导出</el-button
        >
      </el-col>
    </el-row>
    <div style="margin-top: 10px;">
      <el-card shadow="hover" class="margin-30" style="height: 80px;">
        <div class="choose">
          <span>处理状态:</span>
          <el-select
            v-model="search.dealState"
            size="small"
            placeholder="请选择"
            style="width: 224px;margin-right: 30px;"
          >
            <el-option label="已处理" :value="1"></el-option>
            <el-option label="待处理" :value="0"></el-option>
          </el-select>
          <span>来料日期:</span>
          <el-date-picker
            v-model="search.formTime"
            size="small"
            placeholder="请输入"
            style="width: 224px;margin-right: 30px;"
            clearable
            value-format="yyyy-MM-dd"
          ></el-date-picker>
          <span>产品大类:</span>
          <el-select
            v-model="search.productCategories"
            size="small"
            placeholder="请选择"
            style="width: 224px;margin-right: 30px;"
          >
            <el-option label="全部" :value="''"></el-option>
            <el-option label="成品" :value="1"></el-option>
            <el-option label="半成品" :value="2"></el-option>
          </el-select>
          <el-button size="mini" @click="clean()"><span>重 置</span></el-button>
          <el-button
            size="mini"
            type="primary"
            style="background: #004EA2;"
            @click="
              unqualifiedTable = [];
              getDetailInfo();
            "
            ><span>查 询</span></el-button
          >
    <div class="unqualifiedBox">
        <el-row>
            <el-col :span="12" style="line-height: 32px;">不合格管理</el-col>
            <el-col :span="12" style="text-align: right;">
                <el-button icon="el-icon-download" size="mini" @click="() => { }">导出</el-button>
            </el-col>
        </el-row>
        <div style="margin-top: 10px;">
            <el-card shadow="hover" style="height: 6em;display: flex;align-items: center;">
                <div class="choose">
                    <span>处理状态:</span>
                    <el-select v-model="search.dealState" size="small" placeholder="请选择" style="width: 13vw;margin-right: 30px;">
                        <el-option label="已处理" :value="1"></el-option>
                        <el-option label="待处理" :value="0"></el-option>
                    </el-select>
                    <span>来料日期:</span>
                    <el-date-picker v-model="search.formTime" size="small" placeholder="请输入" style="width: 13vw;margin-right: 30px;" clearable value-format="yyyy-MM-dd"></el-date-picker>
                    <span>产品大类:</span>
                    <el-select v-model="search.productCategories" size="small" placeholder="请选择" style="width: 13vw;margin-right: 30px;">
                        <el-option label="全部" :value="''"></el-option>
                        <el-option label="成品" :value="1"></el-option>
                        <el-option label="半成品" :value="2"></el-option>
                    </el-select>
                    <el-button size="mini" @click="clean()"><span>重 置</span></el-button>
                    <el-button size="mini" type="primary" style="background: #004EA2;" @click="
                        unqualifiedTable = [];
                    getDetailInfo();
                    "><span>查 询</span></el-button>
                </div>
            </el-card>
        </div>
      </el-card>
        <div class="tableno" style="height:300px">
            <el-card shadow="hover">
                <el-table :data="unqualifiedTable" border ref="multipleTable" tooltip-effect="dark" height="calc(100vh - 340px)" style="width: 100%">
                    <el-table-column type="index" label="序号" width="60">
                        <template slot-scope="scope">
                            {{ (search.pageSize - 1) * search.countSize + scope.$index + 1 }}
                        </template>
                    </el-table-column>
                    <el-table-column prop="dateArrival" label="来料日期" min-width="110">
                    </el-table-column>
                    <el-table-column prop="reason" label="缺陷名称" min-width="100" show-overflow-tooltip>
                    </el-table-column>
                    <el-table-column prop="material_code" label="材料编码" min-width="150" show-overflow-tooltip>
                    </el-table-column>
                    <el-table-column prop="project_name" label="材料名称" min-width="150">
                    </el-table-column>
                    <el-table-column prop="specifications_model" label="规格型号" min-width="100">
                    </el-table-column>
                    <el-table-column prop="unit" label="单位" min-width="60"> </el-table-column>
                    <el-table-column prop="quantity" label="数量" min-width="60"> </el-table-column>
                    <el-table-column prop="inspectionDate" label="报检日期" min-width="110">
                    </el-table-column>
                    <el-table-column prop="name" label="报检人" min-width="80"> </el-table-column>
                    <el-table-column prop="processingDate" label="检验日期" min-width="110">
                    </el-table-column>
                    <el-table-column prop="deal_state" label="处理状态" min-width="100">
                        <template slot-scope="scope">
                            <span style="color:#34BD66;" v-if="scope.row.deal_state == 1">已处理</span>
                            <span style="color:#E84738;" v-else-if="scope.row.deal_state == 0">待处理</span>
                        </template>
                    </el-table-column>
                    <el-table-column prop="deal_reasult" label="评审结果" min-width="100">
                        <template slot-scope="scope">
                            <span style="color:#E84738;" v-if="scope.row.deal_reasult == 0">不通过</span>
                            <span style="color:#34BD66;" v-else-if="scope.row.deal_reasult == 1">通过</span>
                        </template>
                    </el-table-column>
                    <el-table-column label="操作" min-width="100" fixed="right">
                        <template slot-scope="scope">
                            <div style="display: flex;">
                                <el-popover placement="left" width="160" :ref="`popover-${scope.$index}`">
                                    <div style="padding: 6px">评审是否通过?</div>
                                    <div style="text-align: right; margin: 6px;">
                                        <el-button size="mini" type="text" style="color: #E84738;" @click="
                                            scope._self.$refs[`popover-${scope.$index}`].doClose();
                                        rawEvaluate(scope.row, 0);
                                        ">不通过</el-button>
                                        <el-button type="text" style="color: #34bd66;" size="mini" @click="
                                            scope._self.$refs[`popover-${scope.$index}`].doClose();
                                        rawEvaluate(scope.row, 1);
                                        ">通过</el-button>
                                    </div>
                                    <el-button slot="reference" type="text" siae="small" size="mini">评审</el-button>
                                </el-popover>
                                <el-button type="text" siae="small" size="mini" style=" color:87, 138, 193 ;margin-left: 10px;">查看</el-button>
                            </div>
                        </template>
                    </el-table-column>
                </el-table>
                <el-col style="height: 50px;display: flex;align-items: center;justify-content: right;">
                    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="search.pageSize" :page-sizes="[10, 15, 20, 30, 50]" :page-size="search.countSize" layout="total, sizes, prev, pager, next, jumper" :total="total">
                    </el-pagination>
                </el-col>
            </el-card>
        </div>
    </div>
    <div class="tableno" style="height:300px">
      <el-card shadow="hover" class="margin-30">
        <el-table
          :data="unqualifiedTable"
          border
          ref="multipleTable"
          tooltip-effect="dark"
          height="calc(100vh - 340px)"
          style="width: 100%"
        >
          <el-table-column type="selection" width="50"> </el-table-column>
          <el-table-column type="index" label="序号" width="60">
            <template slot-scope="scope">
              {{ (search.pageSize - 1) * search.countSize + scope.$index + 1 }}
            </template>
          </el-table-column>
          <el-table-column prop="dateArrival" label="来料日期">
          </el-table-column>
          <el-table-column
            prop="reason"
            label="缺陷名称"
            min-width="120"
            show-overflow-tooltip
          >
          </el-table-column>
          <el-table-column prop="material_code" label="材料编码">
          </el-table-column>
          <el-table-column prop="project_name" label="材料名称">
          </el-table-column>
          <el-table-column
            prop="specifications_model"
            label="规格型号"
            min-width="120"
          >
          </el-table-column>
          <el-table-column prop="unit" label="单位"> </el-table-column>
          <el-table-column prop="quantity" label="数量"> </el-table-column>
          <el-table-column prop="inspectionDate" label="报检日期">
          </el-table-column>
          <el-table-column prop="name" label="报检人"> </el-table-column>
          <el-table-column prop="processingDate" label="检验日期">
          </el-table-column>
          <el-table-column prop="deal_state" label="处理状态" width="100">
            <template slot-scope="scope">
              <span style="color:#34BD66;" v-if="scope.row.deal_state == 1"
                >已处理</span
              >
              <span style="color:#E84738;" v-else-if="scope.row.deal_state == 0"
                >待处理</span
              >
            </template>
          </el-table-column>
          <el-table-column prop="deal_reasult" label="评审结果" width="100">
            <template slot-scope="scope">
              <span style="color:#E84738;" v-if="scope.row.deal_reasult == 0"
                >不通过</span
              >
              <span
                style="color:#34BD66;"
                v-else-if="scope.row.deal_reasult == 1"
                >通过</span
              >
            </template>
          </el-table-column>
          <el-table-column label="操作" width="100">
            <template slot-scope="scope">
              <div style="display: flex;">
                <el-popover
                  placement="left"
                  width="160"
                  :ref="`popover-${scope.$index}`"
                >
                  <div style="padding: 6px">评审是否通过?</div>
                  <div style="text-align: right; margin: 6px;">
                    <el-button
                      size="mini"
                      type="text"
                      style="color: #E84738;"
                      @click="
                        scope._self.$refs[`popover-${scope.$index}`].doClose();
                        rawEvaluate(scope.row, 0);
                      "
                      >不通过</el-button
                    >
                    <el-button
                      type="text"
                      style="color: #34bd66;"
                      size="mini"
                      @click="
                        scope._self.$refs[`popover-${scope.$index}`].doClose();
                        rawEvaluate(scope.row, 1);
                      "
                      >通过</el-button
                    >
                  </div>
                  <el-button
                    slot="reference"
                    type="text"
                    siae="small"
                    size="mini"
                    >评审</el-button
                  >
                </el-popover>
                <el-button
                  type="text"
                  siae="small"
                  size="mini"
                  style=" color:87, 138, 193 ;margin-left: 10px;"
                  >查看</el-button
                >
              </div>
            </template>
          </el-table-column>
        </el-table>
        <el-col
          style="height: 50px;display: flex;align-items: center;justify-content: right;"
        >
          <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="search.pageSize"
            :page-sizes="[10, 15, 20, 30, 50]"
            :page-size="search.countSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="total"
          >
          </el-pagination>
        </el-col>
      </el-card>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      search: {
        countSize: 10, // 条数/页
        pageSize: 1, // 起始页
        formTime: "", // 来料日期
        productCategories: "", // 产品大类
        dealState: "" // 处理状态
      },
      unqualifiedTable: [], // 页面表格数据
      total: 0
    };
  },
  mounted() {
    this.getDetailInfo();
  },
  methods: {
    handleSizeChange(val) {
      this.search.countSize = val;
      this.getDetailInfo();
    data() {
        return {
            search: {
                countSize: 10, // 条数/页
                pageSize: 1, // 起始页
                formTime: "", // 来料日期
                productCategories: "", // 产品大类
                dealState: "", // 处理状态
            },
            unqualifiedTable: [], // 页面表格数据
            total: 0,
        };
    },
    handleCurrentChange(val) {
      this.search.pageSize = val;
      this.getDetailInfo();
    mounted() {
        this.getDetailInfo();
    },
    getDetailInfo() {
      this.axios
        .get(this.$api.url.inspectUnaccepted, {
          params: this.search
        })
        .then(res => {
          this.unqualifiedTable = res.data.row;
          this.total = res.data.total;
        });
    methods: {
        handleSizeChange(val) {
            this.search.countSize = val;
            this.getDetailInfo();
        },
        handleCurrentChange(val) {
            this.search.pageSize = val;
            this.getDetailInfo();
        },
        getDetailInfo() {
            this.axios
                .get(this.$api.url.inspectUnaccepted, {
                    params: this.search,
                })
                .then((res) => {
                    this.unqualifiedTable = res.data.row;
                    this.total = res.data.total;
                });
        },
        clean() {
            this.search = {
                countSize: 10, // 条数/页
                pageSize: 1, // 起始页
                formTime: "", // 来料日期
                dealState: "", // 处理状态
            };
            this.getDetailInfo();
        },
        rawEvaluate(row, passOrNo) {
            this.$axios
                .post(this.$api.url.evaluatePassOrNo, {
                    rawId: row.id,
                    passOrNo: passOrNo,
                })
                .then((res) => {
                    this.unqualifiedTable = [];
                    this.getDetailInfo();
                    this.$parent.removeAllTab();
                });
        },
    },
    clean() {
      this.search = {
        countSize: 10, // 条数/页
        pageSize: 1, // 起始页
        formTime: "", // 来料日期
        dealState: "" // 处理状态
      };
      this.getDetailInfo();
    },
    rawEvaluate(row, passOrNo) {
      this.$axios
        .post(this.$api.url.evaluatePassOrNo, {
          rawId: row.id,
          passOrNo: passOrNo
        })
        .then(res => {
          this.unqualifiedTable = [];
          this.getDetailInfo();
          this.$parent.removeAllTab()
        });
    }
  }
};
</script>
<style scoped>
.unqualifiedBox {
  width: 100%;
  max-height: 100%;
  display: flex;
  flex-direction: column;
  /* overflow-y: scroll; */
    width: 100%;
    max-height: 100%;
    display: flex;
    flex-direction: column;
    /* overflow-y: scroll; */
}
.unqualifiedBox .title .el-button {
  height: 32px;
  border: 1px solid rgba(190, 190, 190, 0.44);
  box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
  padding: 0 12px;
    height: 32px;
    border: 1px solid rgba(190, 190, 190, 0.44);
    box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
    padding: 0 12px;
}
.unqualifiedBox .title {
  margin-bottom: 10px;
  padding: 0 20px;
}
<!-- /* 条件查询头部样式 */ -->
  .choose {
  padding: 21px 24px;
  display: flex;
  align-items: center;
  background-color: #fff;
  border-bottom: 3px solid rgb(245, 247, 251);
    margin-bottom: 10px;
    padding: 0 20px;
}
.choose {
  font-size: 14px;
    display: flex;
    align-items: center;
    background-color: #fff;
    border-bottom: 3px solid rgb(245, 247, 251);
}
.choose {
    font-size: 14px;
}
.choose .el-button {
  height: 32px;
  border: 1px solid rgba(190, 190, 190, 0.44);
  box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
  padding: 0 12px;
    height: 32px;
    border: 1px solid rgba(190, 190, 190, 0.44);
    box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
    padding: 0 12px;
}
<!-- /* 不合格表格样式 */
  .unqualifiedTable {
  flex: 1;
  background: #fff;
  margin-top: 11px;
  padding: 23px 21px;
.choose span {
    /* span内容强制不换行 */
    white-space: nowrap;
}
/* 不合格表格样式 */
.unqualifiedTable {
    flex: 1;
    background: #fff;
    margin-top: 11px;
    padding: 23px 21px;
}
.tableno {
  margin-top: 10px;
    margin-top: 10px;
}
</style>