客户质量模块
This commit is contained in:
		
							
								
								
									
										152
									
								
								src/views/modules/basic/components/process-add.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								src/views/modules/basic/components/process-add.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,152 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-07-13 11:18:36
 | 
			
		||||
 * @LastEditTime: 2023-07-13 13:49:00
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-07-12 14:04:19
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
 | 
			
		||||
    label-width="120px">
 | 
			
		||||
    <el-form-item prop="processCode" :label="$t('basic.code')">
 | 
			
		||||
      <el-input v-model="dataForm.processCode" :placeholder="$t('basic.code')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="processName" :label="$t('basic.name')">
 | 
			
		||||
      <el-input v-model="dataForm.processName" :placeholder="$t('basic.name')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="remark" :label="$t('basic.remark')">
 | 
			
		||||
      <el-input v-model="dataForm.remark" :placeholder="$t('basic.remark')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import debounce from "lodash/debounce";
 | 
			
		||||
import basicAdd from "@/mixins/basic-add";
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicAdd],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        submitURL: "/basic/qmsProcess",
 | 
			
		||||
        infoURL: "/basic/qmsProcess/{id}",
 | 
			
		||||
        getCodeURL: '/basic/qmsProcess/getCode'
 | 
			
		||||
      },
 | 
			
		||||
      options: [{
 | 
			
		||||
        value: 0,
 | 
			
		||||
        label: '不可用'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        value: 1,
 | 
			
		||||
        label: '可用'
 | 
			
		||||
      }],
 | 
			
		||||
      visible: false,
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        id: "",
 | 
			
		||||
        processCode:null,
 | 
			
		||||
        processName:null,
 | 
			
		||||
        remark:null
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        processName: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        processCode: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ]
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id, ) {
 | 
			
		||||
      this.dataForm.id = id || "";
 | 
			
		||||
      // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields();
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.getInfo();
 | 
			
		||||
        } else {
 | 
			
		||||
          this.getCode()
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    getCode() {
 | 
			
		||||
      // console.log(111111);
 | 
			
		||||
      this.$http
 | 
			
		||||
        .post(this.urlOptions.getCodeURL)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res);
 | 
			
		||||
            this.dataForm.processCode = res.data
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        });
 | 
			
		||||
    },
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    getInfo() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(`/basic/qmsProcess/${this.dataForm.id}`)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
          }
 | 
			
		||||
          this.dataForm = {
 | 
			
		||||
            ...this.dataForm,
 | 
			
		||||
            ...res.data,
 | 
			
		||||
          };
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    dataFormSubmitHandle: debounce(
 | 
			
		||||
      function () {
 | 
			
		||||
        this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
          if (!valid) {
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
          this.$http[!this.dataForm.id ? "post" : "put"](this.urlOptions.submitURL, this.dataForm)
 | 
			
		||||
            .then(({ data: res }) => {
 | 
			
		||||
              if (res.code !== 0) {
 | 
			
		||||
                return this.$message.error(res.msg);
 | 
			
		||||
              }
 | 
			
		||||
              this.$message({
 | 
			
		||||
                message: this.$t("prompt.success"),
 | 
			
		||||
                type: "success",
 | 
			
		||||
                duration: 500,
 | 
			
		||||
                onClose: () => {
 | 
			
		||||
                  console.log(1111);
 | 
			
		||||
                  this.visible = false;
 | 
			
		||||
                  this.$emit("successSubmit");
 | 
			
		||||
                },
 | 
			
		||||
              });
 | 
			
		||||
            })
 | 
			
		||||
            .catch(() => {});
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      1000,
 | 
			
		||||
      { leading: true, trailing: false }
 | 
			
		||||
    ),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										314
									
								
								src/views/modules/basic/process.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										314
									
								
								src/views/modules/basic/process.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,314 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-21 14:30:17
 | 
			
		||||
 * @LastEditTime: 2023-07-13 13:49:10
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-card shadow="never" class="aui-card--fill">
 | 
			
		||||
    <div class="mod-sys__user">
 | 
			
		||||
      <SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
 | 
			
		||||
        <!-- <el-badge :value="3" class="item">
 | 
			
		||||
          <el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button>
 | 
			
		||||
        </el-badge> -->
 | 
			
		||||
      </SearchBar>
 | 
			
		||||
      <base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
 | 
			
		||||
        :limit="listQuery.limit" :table-data="tableData">
 | 
			
		||||
        <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
          @clickBtn="handleClick" />
 | 
			
		||||
      </base-table>
 | 
			
		||||
      <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
 | 
			
		||||
        @pagination="getDataList" />
 | 
			
		||||
      <!-- 弹窗, 新增 / 修改 -->
 | 
			
		||||
      <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel"
 | 
			
		||||
        @confirm="handleConfirm" :before-close="handleCancel">
 | 
			
		||||
        <process-add ref="addOrUpdate" @refreshDataList="successSubmit">
 | 
			
		||||
          </process-add>
 | 
			
		||||
          <!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
 | 
			
		||||
      </base-dialog>
 | 
			
		||||
      <!-- <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
 | 
			
		||||
        @confirm="handleSearchConfirm" :before-close="handleSearchCancel">
 | 
			
		||||
        <productType-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit"></productType-search>
 | 
			
		||||
        <el-row slot="footer" type="flex" justify="end">
 | 
			
		||||
          <el-col :span="12">
 | 
			
		||||
            <el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">
 | 
			
		||||
              {{ $t("close") }}
 | 
			
		||||
            </el-button>
 | 
			
		||||
            <el-button size="small" class="btnTextStyle" type="primary" plain @click="handleSearchReset">{{ $t("reset")
 | 
			
		||||
              }}</el-button>
 | 
			
		||||
            <el-button type="primary" size="small" class="btnTextStyle" @click="handleSearchConfirm">
 | 
			
		||||
              {{ $t("search") }}
 | 
			
		||||
            </el-button>
 | 
			
		||||
          </el-col>
 | 
			
		||||
        </el-row>
 | 
			
		||||
      </base-dialog> -->
 | 
			
		||||
    </div>
 | 
			
		||||
  </el-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicPage from "@/mixins/basic-page";
 | 
			
		||||
// import basicSearch from "@/mixins/basic-search";
 | 
			
		||||
import processAdd from "./components/process-add";
 | 
			
		||||
// import productTypeSearch from "./components/productTypeSearch.vue";
 | 
			
		||||
import available from "./components/available.vue";
 | 
			
		||||
import Cookies from 'js-cookie'
 | 
			
		||||
import qs from 'qs'
 | 
			
		||||
// import radio from "./components/radio.vue";
 | 
			
		||||
import i18n from "@/i18n";
 | 
			
		||||
// import i18n from "@/i18n";
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: "processCode",
 | 
			
		||||
    label: '编码'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "processName",
 | 
			
		||||
    label: "名称"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "remark",
 | 
			
		||||
    label: "备注"
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
const tableBtn = [
 | 
			
		||||
  {
 | 
			
		||||
    type: "edit",
 | 
			
		||||
    btnName: "修改"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "delete",
 | 
			
		||||
    btnName: "删除"
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicPage],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        getDataListURL: "/basic/qmsProcess/page",
 | 
			
		||||
        deleteURL: "/basic/qmsProcess",
 | 
			
		||||
        exportURL: "/basic/qmsProcess/export",
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableBtn,
 | 
			
		||||
      productData: {},
 | 
			
		||||
      addOrUpdateVisible:false,
 | 
			
		||||
      searchOrEditTitle: "",
 | 
			
		||||
      addOrEditTitle:'',
 | 
			
		||||
      searchOrUpdateVisible: false,
 | 
			
		||||
      productOrEditTitle: "",
 | 
			
		||||
      productOrUpdateVisible: false,
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: i18n.t('basic.name'),
 | 
			
		||||
          placeholder: i18n.t('basic.name'),
 | 
			
		||||
          param: 'name',
 | 
			
		||||
          clearable: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: i18n.t('basic.code'),
 | 
			
		||||
          placeholder: i18n.t('basic.code'),
 | 
			
		||||
          param: 'code',
 | 
			
		||||
          clearable: true
 | 
			
		||||
        },
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: 'select',
 | 
			
		||||
        //   label: i18n.t('basic.status'),
 | 
			
		||||
        //   placeholder: i18n.t('basic.status'),
 | 
			
		||||
        //   param: 'status',
 | 
			
		||||
        //   selectOptions: [
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: '0',
 | 
			
		||||
        //       name: '不可用'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 1,
 | 
			
		||||
        //       name: '可用'
 | 
			
		||||
        //     }
 | 
			
		||||
        //   ],
 | 
			
		||||
        //   clearable: true,
 | 
			
		||||
        //   filterable: true
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: "搜索",
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          // plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: "新增",
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: 'success',
 | 
			
		||||
          plain: true
 | 
			
		||||
          // plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: "导出",
 | 
			
		||||
          name: "export",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          plain: true
 | 
			
		||||
          // plain: true,
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  components: {
 | 
			
		||||
    processAdd
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    //search-bar点击
 | 
			
		||||
    handleProductCancel() {
 | 
			
		||||
      this.productOrUpdateVisible = false;
 | 
			
		||||
      this.productOrEditTitle = "";
 | 
			
		||||
    },
 | 
			
		||||
    // handleSearchCancel() {
 | 
			
		||||
    //   this.searchOrEditTitle = "";
 | 
			
		||||
    //   this.searchOrUpdateVisible = false;
 | 
			
		||||
    // },
 | 
			
		||||
    conditionSearch() {
 | 
			
		||||
      this.searchOrEditTitle = "搜索";
 | 
			
		||||
      this.searchOrUpdateVisible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.searchOrUpdate.init();
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // handleConfirm() {
 | 
			
		||||
    //   this.$refs.addOrUpdate.dataFormSubmitHandle();
 | 
			
		||||
    // },
 | 
			
		||||
    // conditionSearchSubmit() {},
 | 
			
		||||
    conditionSearchSubmit(dataForm) {
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      this.listQuery.name = dataForm.name
 | 
			
		||||
      this.listQuery.code = dataForm.code
 | 
			
		||||
      this.listQuery.status = dataForm.status
 | 
			
		||||
      this.listQuery.page = 1;
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
      this.searchOrUpdateVisible = false;
 | 
			
		||||
      // console.log(11111);
 | 
			
		||||
      // this.conditionSearchSubmit();
 | 
			
		||||
    },
 | 
			
		||||
    // handleCancel() {
 | 
			
		||||
    
 | 
			
		||||
    // },
 | 
			
		||||
    // handleConfirm() {
 | 
			
		||||
    //   this.$refs.addOrUpdate.dataFormSubmit()
 | 
			
		||||
    // },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      console.log(11111);
 | 
			
		||||
      this.$refs.addOrUpdate.formClear()
 | 
			
		||||
      this.addOrUpdateVisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
    },
 | 
			
		||||
    exportHandle() {
 | 
			
		||||
      this.$http.get(this.urlOptions.exportURL, { responseType: 'blob' }, {
 | 
			
		||||
        ...this.dataForm
 | 
			
		||||
      }).then((res) => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        // if (res !== 0) {
 | 
			
		||||
        //   return this.$message.error(res.msg) 
 | 
			
		||||
        // }
 | 
			
		||||
        let fileName = ''
 | 
			
		||||
        const contentDisposition = res.headers['content-disposition']
 | 
			
		||||
        if (contentDisposition) {
 | 
			
		||||
          const temp = res.headers['content-disposition']
 | 
			
		||||
            .split(';')[1]
 | 
			
		||||
            .split('=')[1]
 | 
			
		||||
          // 对文件名乱码转义--【Node.js】使用iconv-lite解决中文乱码
 | 
			
		||||
          fileName = decodeURI(temp)
 | 
			
		||||
          console.log(temp)
 | 
			
		||||
        }
 | 
			
		||||
        const blob = new Blob([res.data])
 | 
			
		||||
        const reader = new FileReader()
 | 
			
		||||
        reader.readAsDataURL(blob)
 | 
			
		||||
        reader.onload = (e) => {
 | 
			
		||||
          const a = document.createElement('a')
 | 
			
		||||
          a.download = fileName
 | 
			
		||||
          a.href = e.target.result
 | 
			
		||||
          document.body.appendChild(a)
 | 
			
		||||
          a.click()
 | 
			
		||||
          document.body.removeChild(a)
 | 
			
		||||
        }
 | 
			
		||||
      }).catch(() => { })
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      if (val.type === "delete") {
 | 
			
		||||
        this.$confirm(`确定对[名称=${val.data.productTypeName}]进行删除操作?`, "提示", {
 | 
			
		||||
          confirmButtonText: "确定",
 | 
			
		||||
          cancelButtonText: "取消",
 | 
			
		||||
          type: "warning",
 | 
			
		||||
        })
 | 
			
		||||
          .then(() => {
 | 
			
		||||
            console.log(val);
 | 
			
		||||
            this.$http.delete(this.urlOptions.deleteURL, { data: [val.data.id] }).then(({ data }) => {
 | 
			
		||||
              if (data && data.code === 0) {
 | 
			
		||||
                this.$message({
 | 
			
		||||
                  message: "操作成功",
 | 
			
		||||
                  type: "success",
 | 
			
		||||
                  duration: 1500,
 | 
			
		||||
                  onClose: () => {
 | 
			
		||||
                    this.getDataList();
 | 
			
		||||
                  },
 | 
			
		||||
                });
 | 
			
		||||
              } else {
 | 
			
		||||
                this.$message.error(data.msg);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          })
 | 
			
		||||
          .catch(() => { });
 | 
			
		||||
      } else if (val.type === 'edit') {
 | 
			
		||||
        this.addOrUpdateVisible = true
 | 
			
		||||
        this.addOrEditTitle = this.$t('edit')
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.addOrUpdate.init(val.data.id);
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case "search":
 | 
			
		||||
          // this.listQuery.paramCode = val.paramCode;
 | 
			
		||||
          this.listQuery.name = val.name ?val.name : null
 | 
			
		||||
          this.listQuery.code = val.code ? val.code : null
 | 
			
		||||
          // this.listQuery.status = val.status ? val.status : null
 | 
			
		||||
          // console.log(i18n);
 | 
			
		||||
          this.listQuery.page = 1
 | 
			
		||||
          // console.log(basicPage)
 | 
			
		||||
          this.getDataList();
 | 
			
		||||
          break;
 | 
			
		||||
        case "export":
 | 
			
		||||
          this.exportHandle();
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = "新增";
 | 
			
		||||
          this.addOrUpdateVisible = true;
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.addOrUpdate.init();
 | 
			
		||||
          });
 | 
			
		||||
          break;
 | 
			
		||||
        // case "correlation":
 | 
			
		||||
        //   this.productOrEditTitle = "产品";
 | 
			
		||||
        //   this.productOrUpdateVisible = true;
 | 
			
		||||
        //   this.addOrUpdateHandle(this.productData);
 | 
			
		||||
        //   console.log(this.productId);
 | 
			
		||||
        //   break;
 | 
			
		||||
        // case "cancel":
 | 
			
		||||
        //   this.$refs.palletTable1.setCurrent("palletTable", -1);
 | 
			
		||||
        //   break;
 | 
			
		||||
        default:
 | 
			
		||||
          console.log(val);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -92,6 +92,7 @@ export default {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        getDataListURL: "/basic/qmsProduct/page",
 | 
			
		||||
        deleteURL: "/basic/qmsProduct",
 | 
			
		||||
        exportURL: '/basic/qmsProduct/export',
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableBtn,
 | 
			
		||||
@@ -131,6 +132,13 @@ export default {
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          // plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: "导出",
 | 
			
		||||
          name: "export",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
@@ -238,11 +246,11 @@ export default {
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.addOrUpdateVisible = true;
 | 
			
		||||
          this.addOrUpdateVisible = true
 | 
			
		||||
          this.addOrUpdateHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        case "cancel":
 | 
			
		||||
          this.$refs.palletTable1.setCurrent("palletTable", -1);
 | 
			
		||||
        case "export":
 | 
			
		||||
          this.exportHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
          console.log(val);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										41
									
								
								src/views/modules/customerquality/components/available.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/views/modules/customerquality/components/available.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-31 09:49:36
 | 
			
		||||
 * @LastEditTime: 2023-07-11 14:31:18
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <span>
 | 
			
		||||
    <el-tag v-if="injectData.supplierTypeStatus === 1" type="success">可用</el-tag>
 | 
			
		||||
    <el-tag v-else type="warning">不可用</el-tag>
 | 
			
		||||
  </span>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
// import { addDynamicRoute } from '@/router'
 | 
			
		||||
export default {
 | 
			
		||||
  props: {
 | 
			
		||||
    injectData: {
 | 
			
		||||
      type: Object,
 | 
			
		||||
      default: () => ({})
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    // 子级
 | 
			
		||||
    // emitClick () {
 | 
			
		||||
    //   // 路由参数
 | 
			
		||||
    //   const routeParams = {
 | 
			
		||||
    //     routeName: `${this.$route.name}__${this.injectData.id}`,
 | 
			
		||||
    //     title: `${this.$route.meta.title} - ${this.injectData.dictType}`,
 | 
			
		||||
    //     path: 'sys/dict-data',
 | 
			
		||||
    //     params: {
 | 
			
		||||
    //       dictTypeId: this.injectData.id
 | 
			
		||||
    //     }
 | 
			
		||||
    //   }
 | 
			
		||||
    //   // 动态路由
 | 
			
		||||
    //   addDynamicRoute(routeParams, this.$router)
 | 
			
		||||
    // }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										97
									
								
								src/views/modules/customerquality/components/baseConfig.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								src/views/modules/customerquality/components/baseConfig.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,97 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-07-14 13:44:46
 | 
			
		||||
 * @LastEditTime: 2023-07-14 13:59:46
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <div>
 | 
			
		||||
    <el-drawer :title="$t('customerquality.knowledgeBase')" :visible.sync="drawer" size="50%">
 | 
			
		||||
      <div>
 | 
			
		||||
        <base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
 | 
			
		||||
          :limit="listQuery.limit" :table-data="tableData">
 | 
			
		||||
          <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
            @clickBtn="handleClick" />
 | 
			
		||||
        </base-table>
 | 
			
		||||
        <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
 | 
			
		||||
          @pagination="getDataList" />
 | 
			
		||||
      </div>
 | 
			
		||||
    </el-drawer>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicPage from "@/mixins/basic-page"
 | 
			
		||||
// import basicSearch from "@/mixins/basic-search"
 | 
			
		||||
// import projectTypeSearch from "./components/projectTypeSearch.vue"
 | 
			
		||||
import customerquality from '@/filters/customerquality'
 | 
			
		||||
// import qmsKnowledgeBaseAdd from "./components/qmsKnowledgeBase-add.vue"
 | 
			
		||||
import i18n from "@/i18n"
 | 
			
		||||
// import i18n from "@/i18n";
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: "requirementListName",
 | 
			
		||||
    label: i18n.t('customerquality.requirementListName'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "uploadFiles",
 | 
			
		||||
    label: i18n.t('customerquality.uploadFiles'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "categoryName",
 | 
			
		||||
    label: i18n.t('customerquality.category'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
const tableBtn = [
 | 
			
		||||
  {
 | 
			
		||||
    type: "edit",
 | 
			
		||||
    btnName: i18n.t('edit'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "delete",
 | 
			
		||||
    btnName: i18n.t('delete'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "configuration",
 | 
			
		||||
    btnName: i18n.t('delete'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicPage],
 | 
			
		||||
    data() {
 | 
			
		||||
      return {
 | 
			
		||||
        urlOptions: {
 | 
			
		||||
          getDataListURL: "/customerquality/qmsKnowledgeBaseRequirementList/page",
 | 
			
		||||
          deleteURL: "/customerquality/qmsKnowledgeBase",
 | 
			
		||||
          exportURL: '/customerquality/qmsKnowledgeBase/export'
 | 
			
		||||
        },
 | 
			
		||||
        tableBtn,
 | 
			
		||||
        
 | 
			
		||||
        tableProps,
 | 
			
		||||
        tableData: [],
 | 
			
		||||
        drawer: false,
 | 
			
		||||
        listQuery: {
 | 
			
		||||
          limit: 10,
 | 
			
		||||
          page:1,
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
  },
 | 
			
		||||
    methods: {
 | 
			
		||||
      init(id) {
 | 
			
		||||
        this.listQuery.knowledgeBaseId = id || ""
 | 
			
		||||
        // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
        this.drawer = true
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      handleClick(){
 | 
			
		||||
        
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
@@ -0,0 +1,171 @@
 | 
			
		||||
    <!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-07-14 14:28:32
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
 | 
			
		||||
    label-width="120px">
 | 
			
		||||
    <el-form-item prop="code" :label="$t('customerquality.code')">
 | 
			
		||||
      <el-input v-model="dataForm.code" :placeholder="$t('customerquality.code')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="knowledgeBaseName" :label="$t('customerquality.knowledgeBaseName')">
 | 
			
		||||
      <el-input v-model="dataForm.knowledgeBaseName" :placeholder="$t('customerquality.knowledgeBaseName')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <!-- <el-form-item prop="knowledgeBaseName" :label="$t('basic.status')">
 | 
			
		||||
      <el-select v-model="dataForm.currentStage" :placeholder="$t('basic.status')">
 | 
			
		||||
        <el-option v-for="item in currentStageList" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="serialNumber" :label="$t('customerquality.serialNumber')">
 | 
			
		||||
      <el-input v-model="dataForm.serialNumber" :placeholder="$t('customerquality.serialNumber')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="description" :label="$t('customerquality.description')">
 | 
			
		||||
      <el-input v-model="dataForm.description" :placeholder="$t('customerquality.description')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="questionType" :label="$t('customerquality.questionType')">
 | 
			
		||||
      <el-select v-model="dataForm.questionType" :placeholder="$t('customerquality.questionType')">
 | 
			
		||||
        <el-option v-for="item in questionTypeList" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item> -->
 | 
			
		||||
    <el-form-item prop="category" :label="$t('customerquality.category')">
 | 
			
		||||
      <el-select v-model="dataForm.category" :placeholder="$t('customerquality.category')">
 | 
			
		||||
        <el-option v-for="item in categoryList" :key="item.id" :label="item.dataDictionaryDetailName"
 | 
			
		||||
          :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import debounce from "lodash/debounce";
 | 
			
		||||
import basicAdd from "@/mixins/basic-add";
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicAdd],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        submitURL: "/customerquality/qmsCustomerQualityProjectList",
 | 
			
		||||
        infoURL: "/customerquality/qmsCustomerQualityProjectList//{id}",
 | 
			
		||||
        getDictDataDetail: '/mutual/qmsCustomerQualityProjectList/page'
 | 
			
		||||
      },
 | 
			
		||||
      categoryList:[],
 | 
			
		||||
      typeList:[],
 | 
			
		||||
      visible: false,
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        id: "",
 | 
			
		||||
        code: null,
 | 
			
		||||
        category: null,
 | 
			
		||||
        knowledgeBaseName:null
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        code: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        knowledgeBaseName: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ]
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  mounted () {
 | 
			
		||||
    this.getDict()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id) {
 | 
			
		||||
      this.dataForm.id = id || ""
 | 
			
		||||
      // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields()
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.getInfo();
 | 
			
		||||
        } else {
 | 
			
		||||
          // this.getCode()
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    getInfo() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(`/customerquality/qmsCustomerQualityProjectList/${this.dataForm.id}`)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
          }
 | 
			
		||||
          this.dataForm = {
 | 
			
		||||
            ...this.dataForm,
 | 
			
		||||
            ...res.data,
 | 
			
		||||
          };
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    getDict() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getDictDataDetail, {
 | 
			
		||||
          params: {
 | 
			
		||||
            limit: 999,
 | 
			
		||||
            page: 1,
 | 
			
		||||
            dataDictionaryId:'1679670942635122690',
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          this.dataListLoading = false;
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            this.categoryList = res.data.list 
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
    },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    dataFormSubmitHandle: debounce(
 | 
			
		||||
      function () {
 | 
			
		||||
        this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
          if (!valid) {
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
          this.$http[!this.dataForm.id ? "post" : "put"](this.urlOptions.submitURL, this.dataForm)
 | 
			
		||||
            .then(({ data: res }) => {
 | 
			
		||||
              if (res.code !== 0) {
 | 
			
		||||
                return this.$message.error(res.msg);
 | 
			
		||||
              }
 | 
			
		||||
              this.$message({
 | 
			
		||||
                message: this.$t("prompt.success"),
 | 
			
		||||
                type: "success",
 | 
			
		||||
                duration: 500,
 | 
			
		||||
                onClose: () => {
 | 
			
		||||
                  console.log(1111);
 | 
			
		||||
                  this.visible = false;
 | 
			
		||||
                  this.$emit("successSubmit");
 | 
			
		||||
                },
 | 
			
		||||
              });
 | 
			
		||||
            })
 | 
			
		||||
            .catch(() => {});
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      1000,
 | 
			
		||||
      { leading: true, trailing: false }
 | 
			
		||||
    ),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,197 @@
 | 
			
		||||
  <!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-07-14 10:06:36
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
 | 
			
		||||
    label-width="120px">
 | 
			
		||||
    <el-form-item prop="code" :label="$t('customerquality.code')">
 | 
			
		||||
      <el-input v-model="dataForm.code" :placeholder="$t('customerquality.code')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="requirementListName" :label="$t('customerquality.requirementListName')">
 | 
			
		||||
      <el-input v-model="dataForm.requirementListName" :placeholder="$t('customerquality.requirementListName')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="uploadFiles" :label="$t('customerquality.uploadFiles')">
 | 
			
		||||
      <el-radio-group v-model="dataForm.uploadFiles">
 | 
			
		||||
        <el-radio :label="0">否</el-radio>
 | 
			
		||||
        <el-radio :label="1">是</el-radio>
 | 
			
		||||
      </el-radio-group>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <!-- <el-form-item prop="knowledgeBaseName" :label="$t('basic.status')">
 | 
			
		||||
      <el-select v-model="dataForm.currentStage" :placeholder="$t('basic.status')">
 | 
			
		||||
        <el-option v-for="item in currentStageList" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="serialNumber" :label="$t('customerquality.serialNumber')">
 | 
			
		||||
      <el-input v-model="dataForm.serialNumber" :placeholder="$t('customerquality.serialNumber')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="description" :label="$t('customerquality.description')">
 | 
			
		||||
      <el-input v-model="dataForm.description" :placeholder="$t('customerquality.description')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="questionType" :label="$t('customerquality.questionType')">
 | 
			
		||||
      <el-select v-model="dataForm.questionType" :placeholder="$t('customerquality.questionType')">
 | 
			
		||||
        <el-option v-for="item in questionTypeList" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item> -->
 | 
			
		||||
    <el-form-item prop="category" :label="$t('customerquality.category')">
 | 
			
		||||
      <el-select v-model="dataForm.category" :placeholder="$t('customerquality.category')">
 | 
			
		||||
        <el-option v-for="item in categoryList" :key="item.id" :label="item.dataDictionaryDetailName" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import debounce from "lodash/debounce";
 | 
			
		||||
import basicAdd from "@/mixins/basic-add";
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicAdd],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        submitURL: "/customerquality/qmsCustomerQualityRequirementList",
 | 
			
		||||
        infoURL: "/customerquality/qmsCustomerQualityRequirementList//{id}",
 | 
			
		||||
        getCodeURL: '/customerquality/qmsCustomerQualityRequirementList/getCode',
 | 
			
		||||
        getDictDataDetail: '/mutual/qmsDataDictionaryDetail/page'
 | 
			
		||||
      },
 | 
			
		||||
      categoryList:[],
 | 
			
		||||
      visible: false,
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        id: "",
 | 
			
		||||
        code: null,
 | 
			
		||||
        category: null,
 | 
			
		||||
        requirementListName: null,
 | 
			
		||||
        uploadFiles: null,
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        code: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        requirementListName: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        uploadFiles: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "change",
 | 
			
		||||
          },
 | 
			
		||||
        ]
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.getDict()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id) {
 | 
			
		||||
      this.dataForm.id = id || ""
 | 
			
		||||
      // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields()
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.getInfo();
 | 
			
		||||
        } else {
 | 
			
		||||
          this.getCode()
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    getCode() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .post(this.urlOptions.getCodeURL)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res);
 | 
			
		||||
            this.dataForm.code = res.data
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
    },
 | 
			
		||||
    getDict() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getDictDataDetail, {
 | 
			
		||||
          params: {
 | 
			
		||||
            limit: 999,
 | 
			
		||||
            page: 1,
 | 
			
		||||
            dataDictionaryId: '1679670942635122690',
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          this.dataListLoading = false;
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            this.categoryList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
    },
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    getInfo() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(`/customerquality/qmsCustomerQualityRequirementList/${this.dataForm.id}`)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
          }
 | 
			
		||||
          this.dataForm = {
 | 
			
		||||
            ...this.dataForm,
 | 
			
		||||
            ...res.data,
 | 
			
		||||
          };
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    dataFormSubmitHandle: debounce(
 | 
			
		||||
      function () {
 | 
			
		||||
        this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
          if (!valid) {
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
          this.$http[!this.dataForm.id ? "post" : "put"](this.urlOptions.submitURL, this.dataForm)
 | 
			
		||||
            .then(({ data: res }) => {
 | 
			
		||||
              if (res.code !== 0) {
 | 
			
		||||
                return this.$message.error(res.msg);
 | 
			
		||||
              }
 | 
			
		||||
              this.$message({
 | 
			
		||||
                message: this.$t("prompt.success"),
 | 
			
		||||
                type: "success",
 | 
			
		||||
                duration: 500,
 | 
			
		||||
                onClose: () => {
 | 
			
		||||
                  console.log(1111);
 | 
			
		||||
                  this.visible = false;
 | 
			
		||||
                  this.$emit("successSubmit");
 | 
			
		||||
                },
 | 
			
		||||
              });
 | 
			
		||||
            })
 | 
			
		||||
            .catch(() => {});
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      1000,
 | 
			
		||||
      { leading: true, trailing: false }
 | 
			
		||||
    ),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,198 @@
 | 
			
		||||
  <!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-07-14 10:28:15
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
 | 
			
		||||
    label-width="120px">
 | 
			
		||||
    <el-form-item prop="title" :label="$t('customerquality.title')">
 | 
			
		||||
      <el-input :disabled="isDetail" v-model="dataForm.title" :placeholder="$t('customerquality.title')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="accessPath" :label="$t('customerquality.accessPath')">
 | 
			
		||||
      <el-input :disabled="isDetail" v-model="dataForm.accessPath" :placeholder="$t('customerquality.accessPath')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <!-- <el-form-item prop="knowledgeBaseName" :label="$t('basic.status')">
 | 
			
		||||
      <el-select v-model="dataForm.currentStage" :placeholder="$t('basic.status')">
 | 
			
		||||
        <el-option v-for="item in currentStageList" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="serialNumber" :label="$t('customerquality.serialNumber')">
 | 
			
		||||
      <el-input v-model="dataForm.serialNumber" :placeholder="$t('customerquality.serialNumber')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="description" :label="$t('customerquality.description')">
 | 
			
		||||
      <el-input v-model="dataForm.description" :placeholder="$t('customerquality.description')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="questionType" :label="$t('customerquality.questionType')">
 | 
			
		||||
      <el-select v-model="dataForm.questionType" :placeholder="$t('customerquality.questionType')">
 | 
			
		||||
        <el-option v-for="item in questionTypeList" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item> -->
 | 
			
		||||
    <el-form-item prop="knowledgeBaseFileId" :label="$t('customerquality.knowledgeBaseFileId')">
 | 
			
		||||
      <el-select :disabled="isDetail" v-model="dataForm.knowledgeBaseFileId"
 | 
			
		||||
        :placeholder="$t('customerquality.knowledgeBaseFileId')">
 | 
			
		||||
        <el-option v-for="item in categoryList" :key="item.id" :label="item.dataDictionaryDetailName" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import debounce from "lodash/debounce";
 | 
			
		||||
import basicAdd from "@/mixins/basic-add";
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicAdd],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        submitURL: "/customerquality/qmsPublicDocuments",
 | 
			
		||||
        infoURL: "/customerquality/qmsPublicDocuments//{id}",
 | 
			
		||||
        getCodeURL: '/customerquality/qmsPublicDocuments/getCode',
 | 
			
		||||
        getDictDataDetail: '/mutual/qmsDataDictionaryDetail/page'
 | 
			
		||||
      },
 | 
			
		||||
      categoryList:[],
 | 
			
		||||
      visible: false,
 | 
			
		||||
      isDetail:false,
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        id: "",
 | 
			
		||||
        title: null,
 | 
			
		||||
        accessPath: null,
 | 
			
		||||
        knowledgeBaseFileId: null
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        title: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        accessPath: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        knowledgeBaseFileId: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "change",
 | 
			
		||||
          },
 | 
			
		||||
        ]
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.getDict()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(obj) {
 | 
			
		||||
      if (obj) {
 | 
			
		||||
        this.dataForm.id = obj.id
 | 
			
		||||
        this.isDetail = obj.detail
 | 
			
		||||
      } else {
 | 
			
		||||
        this.dataForm.id = null
 | 
			
		||||
        this.isDetail = false
 | 
			
		||||
      }
 | 
			
		||||
      // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields()
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.getInfo();
 | 
			
		||||
        } else {
 | 
			
		||||
          // this.getCode()
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // getCode() {
 | 
			
		||||
    //   this.$http
 | 
			
		||||
    //     .post(this.urlOptions.getCodeURL)
 | 
			
		||||
    //     .then(({ data: res }) => {
 | 
			
		||||
    //       if (res.code === 0) {
 | 
			
		||||
    //         console.log(res);
 | 
			
		||||
    //         this.dataForm.code = res.data
 | 
			
		||||
    //       }
 | 
			
		||||
    //     })
 | 
			
		||||
    //     .catch(() => {
 | 
			
		||||
    //     })
 | 
			
		||||
    // },
 | 
			
		||||
    getDict() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getDictDataDetail, {
 | 
			
		||||
          params: {
 | 
			
		||||
            limit: 999,
 | 
			
		||||
            page: 1,
 | 
			
		||||
            dataDictionaryId: '1679668845256630274',
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          this.dataListLoading = false;
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            this.categoryList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
    },
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    getInfo() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(`/customerquality/qmsPublicDocuments/${this.dataForm.id}`)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
          }
 | 
			
		||||
          this.dataForm = {
 | 
			
		||||
            ...this.dataForm,
 | 
			
		||||
            ...res.data,
 | 
			
		||||
          };
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    dataFormSubmitHandle: debounce(
 | 
			
		||||
      function () {
 | 
			
		||||
        this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
          if (!valid) {
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
          this.$http[!this.dataForm.id ? "post" : "put"](this.urlOptions.submitURL, this.dataForm)
 | 
			
		||||
            .then(({ data: res }) => {
 | 
			
		||||
              if (res.code !== 0) {
 | 
			
		||||
                return this.$message.error(res.msg);
 | 
			
		||||
              }
 | 
			
		||||
              this.$message({
 | 
			
		||||
                message: this.$t("prompt.success"),
 | 
			
		||||
                type: "success",
 | 
			
		||||
                duration: 500,
 | 
			
		||||
                onClose: () => {
 | 
			
		||||
                  console.log(1111);
 | 
			
		||||
                  this.visible = false;
 | 
			
		||||
                  this.$emit("successSubmit");
 | 
			
		||||
                },
 | 
			
		||||
              });
 | 
			
		||||
            })
 | 
			
		||||
            .catch(() => {});
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      1000,
 | 
			
		||||
      { leading: true, trailing: false }
 | 
			
		||||
    ),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,200 @@
 | 
			
		||||
  <!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-07-13 15:35:17
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
 | 
			
		||||
    label-width="120px">
 | 
			
		||||
    <el-form-item prop="customerName" :label="$t('customerquality.customerName')">
 | 
			
		||||
      <el-input v-model="dataForm.customerName" :placeholder="$t('customerquality.customerName')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="currentStage" :label="$t('basic.status')">
 | 
			
		||||
      <el-select v-model="dataForm.currentStage" :placeholder="$t('basic.status')">
 | 
			
		||||
        <el-option v-for="item in currentStageList" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="serialNumber" :label="$t('customerquality.serialNumber')">
 | 
			
		||||
      <el-input v-model="dataForm.serialNumber" :placeholder="$t('customerquality.serialNumber')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="description" :label="$t('customerquality.description')">
 | 
			
		||||
      <el-input v-model="dataForm.description" :placeholder="$t('customerquality.description')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="questionType" :label="$t('customerquality.questionType')">
 | 
			
		||||
      <el-select v-model="dataForm.questionType" :placeholder="$t('customerquality.questionType')">
 | 
			
		||||
        <el-option v-for="item in questionTypeList" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="status" :label="$t('basic.status')">
 | 
			
		||||
      <el-select v-model="dataForm.status" :placeholder="$t('basic.status')">
 | 
			
		||||
        <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import debounce from "lodash/debounce";
 | 
			
		||||
import basicAdd from "@/mixins/basic-add";
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicAdd],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        submitURL: "/customerquality/qmsCustomerComplaintManagement/",
 | 
			
		||||
        infoURL: "/customerquality/qmsCustomerComplaintManagement//{id}"
 | 
			
		||||
        // getTypeListURL: '/basic/qmsProductType/page'
 | 
			
		||||
      },
 | 
			
		||||
      currentStageList: [
 | 
			
		||||
        {
 | 
			
		||||
          value: 0,
 | 
			
		||||
          label: '接受投诉阶段'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          value: 1,
 | 
			
		||||
          label: '解释澄清阶段'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          value: 2,
 | 
			
		||||
          label: '提出解决方案阶段'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          value: 3,
 | 
			
		||||
          label: '回访阶段'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      questionTypeList: [
 | 
			
		||||
        {
 | 
			
		||||
          value: 0,
 | 
			
		||||
          label: '产品质量题'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          value: 1,
 | 
			
		||||
          label: '售后服务题'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          value: 2,
 | 
			
		||||
          label: '物流配送问题'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          value: 3,
 | 
			
		||||
          label: '单关问题'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          value: 4,
 | 
			
		||||
          label: '4系统故问题'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      options: [
 | 
			
		||||
        {
 | 
			
		||||
        value: 0,
 | 
			
		||||
        label: '不可用'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        value: 1,
 | 
			
		||||
        label: '可用'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      typeList:[],
 | 
			
		||||
      visible: false,
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        id: "",
 | 
			
		||||
        currentStage:null,
 | 
			
		||||
        customerName: null,
 | 
			
		||||
        description: null,
 | 
			
		||||
        questionType: null,
 | 
			
		||||
        serialNumber: null,
 | 
			
		||||
        status: null,
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        code: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        name: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ]
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id) {
 | 
			
		||||
      this.dataForm.id = id || ""
 | 
			
		||||
      // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields()
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.getInfo();
 | 
			
		||||
        } else {
 | 
			
		||||
          // this.getCode()
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    getInfo() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(`/customerquality/qmsCustomerComplaintManagement/${this.dataForm.id}`)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
          }
 | 
			
		||||
          this.dataForm = {
 | 
			
		||||
            ...this.dataForm,
 | 
			
		||||
            ...res.data,
 | 
			
		||||
          };
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    dataFormSubmitHandle: debounce(
 | 
			
		||||
      function () {
 | 
			
		||||
        this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
          if (!valid) {
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
          this.$http[!this.dataForm.id ? "post" : "put"](this.urlOptions.submitURL, this.dataForm)
 | 
			
		||||
            .then(({ data: res }) => {
 | 
			
		||||
              if (res.code !== 0) {
 | 
			
		||||
                return this.$message.error(res.msg);
 | 
			
		||||
              }
 | 
			
		||||
              this.$message({
 | 
			
		||||
                message: this.$t("prompt.success"),
 | 
			
		||||
                type: "success",
 | 
			
		||||
                duration: 500,
 | 
			
		||||
                onClose: () => {
 | 
			
		||||
                  console.log(1111);
 | 
			
		||||
                  this.visible = false;
 | 
			
		||||
                  this.$emit("successSubmit");
 | 
			
		||||
                },
 | 
			
		||||
              });
 | 
			
		||||
            })
 | 
			
		||||
            .catch(() => {});
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      1000,
 | 
			
		||||
      { leading: true, trailing: false }
 | 
			
		||||
    ),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,171 @@
 | 
			
		||||
  <!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-07-14 10:06:39
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
 | 
			
		||||
    label-width="120px">
 | 
			
		||||
    <el-form-item prop="code" :label="$t('customerquality.code')">
 | 
			
		||||
      <el-input v-model="dataForm.code" :placeholder="$t('customerquality.code')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="knowledgeBaseName" :label="$t('customerquality.knowledgeBaseName')">
 | 
			
		||||
      <el-input v-model="dataForm.knowledgeBaseName" :placeholder="$t('customerquality.knowledgeBaseName')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <!-- <el-form-item prop="knowledgeBaseName" :label="$t('basic.status')">
 | 
			
		||||
      <el-select v-model="dataForm.currentStage" :placeholder="$t('basic.status')">
 | 
			
		||||
        <el-option v-for="item in currentStageList" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="serialNumber" :label="$t('customerquality.serialNumber')">
 | 
			
		||||
      <el-input v-model="dataForm.serialNumber" :placeholder="$t('customerquality.serialNumber')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="description" :label="$t('customerquality.description')">
 | 
			
		||||
      <el-input v-model="dataForm.description" :placeholder="$t('customerquality.description')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="questionType" :label="$t('customerquality.questionType')">
 | 
			
		||||
      <el-select v-model="dataForm.questionType" :placeholder="$t('customerquality.questionType')">
 | 
			
		||||
        <el-option v-for="item in questionTypeList" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item> -->
 | 
			
		||||
    <el-form-item prop="category" :label="$t('customerquality.category')">
 | 
			
		||||
      <el-select v-model="dataForm.category" :placeholder="$t('customerquality.category')">
 | 
			
		||||
        <el-option v-for="item in categoryList" :key="item.id" :label="item.dataDictionaryDetailName"
 | 
			
		||||
          :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import debounce from "lodash/debounce";
 | 
			
		||||
import basicAdd from "@/mixins/basic-add";
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicAdd],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        submitURL: "/customerquality/qmsKnowledgeBase",
 | 
			
		||||
        infoURL: "/customerquality/qmsKnowledgeBase//{id}",
 | 
			
		||||
        getDictDataDetail: '/mutual/qmsDataDictionaryDetail/page'
 | 
			
		||||
      },
 | 
			
		||||
      categoryList:[],
 | 
			
		||||
      typeList:[],
 | 
			
		||||
      visible: false,
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        id: "",
 | 
			
		||||
        code: null,
 | 
			
		||||
        category: null,
 | 
			
		||||
        knowledgeBaseName:null
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        code: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        knowledgeBaseName: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ]
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  mounted () {
 | 
			
		||||
    this.getDict()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id) {
 | 
			
		||||
      this.dataForm.id = id || ""
 | 
			
		||||
      // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields()
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.getInfo();
 | 
			
		||||
        } else {
 | 
			
		||||
          // this.getCode()
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    getInfo() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(`/customerquality/qmsKnowledgeBase/${this.dataForm.id}`)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
          }
 | 
			
		||||
          this.dataForm = {
 | 
			
		||||
            ...this.dataForm,
 | 
			
		||||
            ...res.data,
 | 
			
		||||
          };
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    getDict() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getDictDataDetail, {
 | 
			
		||||
          params: {
 | 
			
		||||
            limit: 999,
 | 
			
		||||
            page: 1,
 | 
			
		||||
            dataDictionaryId:'1679670942635122690',
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          this.dataListLoading = false;
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            this.categoryList = res.data.list 
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
    },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    dataFormSubmitHandle: debounce(
 | 
			
		||||
      function () {
 | 
			
		||||
        this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
          if (!valid) {
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
          this.$http[!this.dataForm.id ? "post" : "put"](this.urlOptions.submitURL, this.dataForm)
 | 
			
		||||
            .then(({ data: res }) => {
 | 
			
		||||
              if (res.code !== 0) {
 | 
			
		||||
                return this.$message.error(res.msg);
 | 
			
		||||
              }
 | 
			
		||||
              this.$message({
 | 
			
		||||
                message: this.$t("prompt.success"),
 | 
			
		||||
                type: "success",
 | 
			
		||||
                duration: 500,
 | 
			
		||||
                onClose: () => {
 | 
			
		||||
                  console.log(1111);
 | 
			
		||||
                  this.visible = false;
 | 
			
		||||
                  this.$emit("successSubmit");
 | 
			
		||||
                },
 | 
			
		||||
              });
 | 
			
		||||
            })
 | 
			
		||||
            .catch(() => {});
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      1000,
 | 
			
		||||
      { leading: true, trailing: false }
 | 
			
		||||
    ),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,336 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-07-13 14:49:30
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
 | 
			
		||||
    label-width="120px">
 | 
			
		||||
    <el-form-item prop="registrationDate" :label="$t('researchquality.registrationDate')">
 | 
			
		||||
      <el-date-picker v-model="dataForm.registrationDate" type="datetime"
 | 
			
		||||
        :placeholder="$t('researchquality.registrationDate')">
 | 
			
		||||
      </el-date-picker>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="changeSource" :label="$t('researchquality.changeSource')">
 | 
			
		||||
      <el-select v-model="dataForm.changeSource" :placeholder="$t('researchquality.changeSource')">
 | 
			
		||||
        <el-option v-for="item in changeSourceList" :key="item.id" :label="item.name" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="sourceRemark" :label="$t('researchquality.sourceRemark')">
 | 
			
		||||
      <el-input v-model="dataForm.sourceRemark" :placeholder="$t('researchquality.sourceRemark')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="owner" :label="$t('researchquality.owner')">
 | 
			
		||||
      <el-select v-model="dataForm.owner" :placeholder="$t('researchquality.owner')">
 | 
			
		||||
        <el-option v-for="item in userList" :key="item.id" :label="item.realName" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="title" :label="$t('researchquality.title')">
 | 
			
		||||
      <el-input v-model="dataForm.title" :placeholder="$t('researchquality.title')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="processId" :label="$t('researchquality.processName')">
 | 
			
		||||
      <el-select v-model="dataForm.processId" :placeholder="$t('researchquality.processName')">
 | 
			
		||||
        <el-option v-for="item in processList" :key="item.id" :label="item.processName" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="productId" :label="$t('researchquality.productName')">
 | 
			
		||||
      <el-select v-model="dataForm.productId" :placeholder="$t('researchquality.productName')">
 | 
			
		||||
        <el-option v-for="item in productList" :key="item.id" :label="item.productName" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="processId" :label="$t('researchquality.productTypeName')">
 | 
			
		||||
      <el-select v-model="dataForm.processId" :placeholder="$t('researchquality.productTypeName')">
 | 
			
		||||
        <el-option v-for="item in productTypeList" :key="item.id" :label="item.productTypeName" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="temporaryChange" :label="$t('researchquality.temporaryChange')">
 | 
			
		||||
      <el-switch v-model="dataForm.temporaryChange" :active-value="1" :inactive-value="0"></el-switch>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <!-- <el-row :gutter="20">
 | 
			
		||||
      <el-col :span="12"> {{ this.$t('researchquality.planPhase') }} </el-col>
 | 
			
		||||
      <el-col :span="12"> {{ this.$t('researchquality.planTime') }} </el-col>
 | 
			
		||||
    </el-row> -->
 | 
			
		||||
    <el-row :gutter="24">
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageOneName" :label="$t('researchquality.stageOneName')">
 | 
			
		||||
          <el-input v-model="dataForm.stageOneName" :placeholder="$t('researchquality.stageOneName')">
 | 
			
		||||
          </el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageOneDate" :label="$t('researchquality.stageOneDate')">
 | 
			
		||||
          <el-date-picker v-model="dataForm.stageOneDate" type="datetime"
 | 
			
		||||
            :placeholder="$t('researchquality.stageOneDate')">
 | 
			
		||||
          </el-date-picker>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <el-row :gutter="24">
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageTwoName" :label="$t('researchquality.stageTwoName')">
 | 
			
		||||
          <el-input v-model="dataForm.stageTwoName" :placeholder="$t('researchquality.stageTwoName')">
 | 
			
		||||
          </el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageTwoDate" :label="$t('researchquality.stageTwoDate')">
 | 
			
		||||
          <el-date-picker v-model="dataForm.stageTwoDate" type="datetime"
 | 
			
		||||
            :placeholder="$t('researchquality.stageTwoDate')">
 | 
			
		||||
          </el-date-picker>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <el-row :gutter="24">
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageThreeName" :label="$t('researchquality.stageThreeName')">
 | 
			
		||||
          <el-input v-model="dataForm.stageThreeName" :placeholder="$t('researchquality.stageThreeName')">
 | 
			
		||||
          </el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageThreeDate" :label="$t('researchquality.stageThreeDate')">
 | 
			
		||||
          <el-date-picker v-model="dataForm.stageThreeDate" type="datetime"
 | 
			
		||||
            :placeholder="$t('researchquality.stageThreeDate')">
 | 
			
		||||
          </el-date-picker>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <el-row :gutter="24">
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageFourName" :label="$t('researchquality.stageFourName')">
 | 
			
		||||
          <el-input v-model="dataForm.stageFourName" :placeholder="$t('researchquality.stageFourName')">
 | 
			
		||||
          </el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageFourDate" :label="$t('researchquality.stageFourDate')">
 | 
			
		||||
          <el-date-picker v-model="dataForm.stageFourDate" type="datetime"
 | 
			
		||||
            :placeholder="$t('researchquality.stageFourDate')">
 | 
			
		||||
          </el-date-picker>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <!-- <el-form-item prop="productTypeStatus" :label="$t('basic.status')">
 | 
			
		||||
      <el-select v-model="dataForm.productTypeStatus" :placeholder="$t('basic.status')">
 | 
			
		||||
        <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item> -->
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import debounce from "lodash/debounce";
 | 
			
		||||
import basicAdd from "@/mixins/basic-add";
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicAdd],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        submitURL: "/supplier/qmsSupplier",
 | 
			
		||||
        infoURL: "/supplier/qmsSupplier/{id}",
 | 
			
		||||
        getUserURL: '/sys/user/page',
 | 
			
		||||
        getProcessURL: '/basic/qmsProcess/page',
 | 
			
		||||
        getProductURL: '/basic/qmsProduct/page',
 | 
			
		||||
        getProductTypeURL: '/basic/qmsProductType/page',
 | 
			
		||||
        getSupplierTypeListURL: '/supplier/qmsSupplierType/page'
 | 
			
		||||
      },
 | 
			
		||||
      userList: [],
 | 
			
		||||
      processList: [],
 | 
			
		||||
      productTypeList: [],
 | 
			
		||||
      productList: [],
 | 
			
		||||
      changeSourceList: [
 | 
			
		||||
        {
 | 
			
		||||
          id: 0,
 | 
			
		||||
          name: '工程变更'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 1,
 | 
			
		||||
          name: '设计变更'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 2,
 | 
			
		||||
          name: 'CCB'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      visible: false,
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        id: "",
 | 
			
		||||
        changeSource:null,
 | 
			
		||||
        currentStage: null,
 | 
			
		||||
        owner: null,
 | 
			
		||||
        productId: null,
 | 
			
		||||
        productName: null,
 | 
			
		||||
        qualityChangeStatus: null,
 | 
			
		||||
        registrationDate: null,
 | 
			
		||||
        sourceRemark: null,
 | 
			
		||||
        stageFourDate: null,
 | 
			
		||||
        stageFourName: null,
 | 
			
		||||
        stageOneDate: null,
 | 
			
		||||
        stageOneName: null,
 | 
			
		||||
        stageThreeDate: null,
 | 
			
		||||
        stageThreeName: null,
 | 
			
		||||
        stageTwoDate: null,
 | 
			
		||||
        stageTwoName: null,
 | 
			
		||||
        temporaryChange: null,
 | 
			
		||||
        title: null,
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        code: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        name: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        ment: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "change",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        supplierStatus: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "change",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id, ) {
 | 
			
		||||
      this.dataForm.id = id || ""
 | 
			
		||||
      // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields();
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.getInfo();
 | 
			
		||||
        } else {
 | 
			
		||||
          this.getCode()
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    getCode() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getUserURL, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res);
 | 
			
		||||
            this.userList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getProcessURL, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res);
 | 
			
		||||
            this.processList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getProductURL, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res);
 | 
			
		||||
            this.productList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getProductTypeURL, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res);
 | 
			
		||||
            this.productTypeList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
    },
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    getInfo() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(`/supplier/qmsSupplier/${this.dataForm.id}`)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
          }
 | 
			
		||||
          this.dataForm = {
 | 
			
		||||
            ...this.dataForm,
 | 
			
		||||
            ...res.data,
 | 
			
		||||
          };
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    dataFormSubmitHandle: debounce(
 | 
			
		||||
      function () {
 | 
			
		||||
        this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
          if (!valid) {
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
          this.$http[!this.dataForm.id ? "post" : "put"](this.urlOptions.submitURL, this.dataForm)
 | 
			
		||||
            .then(({ data: res }) => {
 | 
			
		||||
              if (res.code !== 0) {
 | 
			
		||||
                return this.$message.error(res.msg);
 | 
			
		||||
              }
 | 
			
		||||
              this.$message({
 | 
			
		||||
                message: this.$t("prompt.success"),
 | 
			
		||||
                type: "success",
 | 
			
		||||
                duration: 500,
 | 
			
		||||
                onClose: () => {
 | 
			
		||||
                  console.log(1111);
 | 
			
		||||
                  this.visible = false;
 | 
			
		||||
                  this.$emit("successSubmit");
 | 
			
		||||
                },
 | 
			
		||||
              });
 | 
			
		||||
            })
 | 
			
		||||
            .catch(() => {});
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      1000,
 | 
			
		||||
      { leading: true, trailing: false }
 | 
			
		||||
    ),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,125 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-21 14:44:31
 | 
			
		||||
 * @LastEditTime: 2023-04-14 16:29:53
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="120px">
 | 
			
		||||
    <el-form-item prop="supplierName" :label="$t('supplier.supplierName')">
 | 
			
		||||
      <el-input v-model="dataForm.supplierName" :placeholder="$t('supplier.supplierName')" clearable></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import debounce from "lodash/debounce";
 | 
			
		||||
import basicAdd from "@/mixins/basic-add";
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicAdd],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      // urlOptions: {
 | 
			
		||||
      //   submitURL: "/sys/params/",
 | 
			
		||||
      //   infoURL: "/sys/params",
 | 
			
		||||
      // },
 | 
			
		||||
      visible: false,
 | 
			
		||||
      options: [{
 | 
			
		||||
        value: '0',
 | 
			
		||||
        label: '不可用'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        value: '1',
 | 
			
		||||
        label: '可用'
 | 
			
		||||
      }],
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        supplierName: null
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    // dataRule() {
 | 
			
		||||
    //   return {
 | 
			
		||||
    //     paramCode: [
 | 
			
		||||
    //       {
 | 
			
		||||
    //         required: true,
 | 
			
		||||
    //         message: this.$t("validate.required"),
 | 
			
		||||
    //         trigger: "blur",
 | 
			
		||||
    //       },
 | 
			
		||||
    //     ],
 | 
			
		||||
    //     paramValue: [
 | 
			
		||||
    //       {
 | 
			
		||||
    //         required: true,
 | 
			
		||||
    //         message: this.$t("validate.required"),
 | 
			
		||||
    //         trigger: "blur",
 | 
			
		||||
    //       },
 | 
			
		||||
    //     ],
 | 
			
		||||
    //   };
 | 
			
		||||
    // },
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    // init(id) {
 | 
			
		||||
    //   this.dataForm.id = id || "";
 | 
			
		||||
    //   this.visible = true;
 | 
			
		||||
    //   this.$nextTick(() => {
 | 
			
		||||
    //     this.$refs["dataForm"].resetFields();
 | 
			
		||||
    //     if (this.dataForm.id) {
 | 
			
		||||
    //       this.getInfo();
 | 
			
		||||
    //     }
 | 
			
		||||
    //   });
 | 
			
		||||
    // },
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    // getInfo() {
 | 
			
		||||
    //   this.$http
 | 
			
		||||
    //     .get(`/sys/params/${this.dataForm.id}`)
 | 
			
		||||
    //     .then(({ data: res }) => {
 | 
			
		||||
    //       if (res.code !== 0) {
 | 
			
		||||
    //         return this.$message.error(res.msg);
 | 
			
		||||
    //       }
 | 
			
		||||
    //       this.dataForm = {
 | 
			
		||||
    //         ...this.dataForm,
 | 
			
		||||
    //         ...res.data,
 | 
			
		||||
    //       };
 | 
			
		||||
    //     })
 | 
			
		||||
    //     .catch(() => {});
 | 
			
		||||
    // },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    handleConditionSearch() {
 | 
			
		||||
      this.$emit("successSubmit", this.dataForm);
 | 
			
		||||
    },
 | 
			
		||||
    // dataFormSubmitHandle: debounce(
 | 
			
		||||
    //   function () {
 | 
			
		||||
    //     // console.log(1111);
 | 
			
		||||
    //     // this.visible = false;
 | 
			
		||||
    //     this.$emit("successSubmit", this.dataForm.key);
 | 
			
		||||
    //     // this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
    //     //   if (!valid) {
 | 
			
		||||
    //     //     return false;
 | 
			
		||||
    //     //   }
 | 
			
		||||
    //     //   this.$http[!this.dataForm.id ? "post" : "put"](
 | 
			
		||||
    //     //     "/sys/params",
 | 
			
		||||
    //     //     this.dataForm
 | 
			
		||||
    //     //   )
 | 
			
		||||
    //     //     .then(({ data: res }) => {
 | 
			
		||||
    //     //       if (res.code !== 0) {
 | 
			
		||||
    //     //         return this.$message.error(res.msg);
 | 
			
		||||
    //     //       }
 | 
			
		||||
    //     //       this.$message({
 | 
			
		||||
    //     //         message: this.$t("prompt.success"),
 | 
			
		||||
    //     //         type: "success",
 | 
			
		||||
    //     //         duration: 500,
 | 
			
		||||
    //     //         onClose: () => {
 | 
			
		||||
 | 
			
		||||
    //     //         },
 | 
			
		||||
    //     //       });
 | 
			
		||||
    //     //     })
 | 
			
		||||
    //     //     .catch(() => {});
 | 
			
		||||
    //     // });
 | 
			
		||||
    //   },
 | 
			
		||||
    //   1000,
 | 
			
		||||
    //   { leading: true, trailing: false }
 | 
			
		||||
    // ),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,193 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-07-13 11:01:20
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="120px">
 | 
			
		||||
    <el-form-item prop="title" :label="$t('researchquality.title')">
 | 
			
		||||
      <el-input v-model="dataForm.title" :placeholder="$t('researchquality.title')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="requirementListGroupId" :label="$t('researchquality.requirementListGroupId')">
 | 
			
		||||
      <el-select v-model="dataForm.requirementListGroupId" :placeholder="$t('researchquality.requirementListGroupId')">
 | 
			
		||||
        <el-option v-for="item in projectTypeList" :key="item.id" :label="item.name" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="description" :label="$t('researchquality.description')">
 | 
			
		||||
      <el-input v-model="dataForm.description" :placeholder="$t('researchquality.description')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import debounce from "lodash/debounce";
 | 
			
		||||
import basicAdd from "@/mixins/basic-add";
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicAdd],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        submitURL: "/researchquality/qmsQualityRequirementList",
 | 
			
		||||
        infoURL: "/researchquality/qmsQualityRequirementList/{id}",
 | 
			
		||||
        getProjectTypeURL: '/researchquality/qmsQualityRequirementListGroup/page',
 | 
			
		||||
        // getCodeURL: '/supplier/qmsEvaluationItemList/getCode'
 | 
			
		||||
      },
 | 
			
		||||
      options: [{
 | 
			
		||||
        value: 0,
 | 
			
		||||
        label: '不可用'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        value: 1,
 | 
			
		||||
        label: '可用'
 | 
			
		||||
        }],
 | 
			
		||||
      supplierList:null,
 | 
			
		||||
      enterpriseNatureList: [
 | 
			
		||||
        {
 | 
			
		||||
          value: 0,
 | 
			
		||||
          label: '私营'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          value: 1,
 | 
			
		||||
          label: '国有'
 | 
			
		||||
        },
 | 
			
		||||
           {
 | 
			
		||||
          value: 2,
 | 
			
		||||
          label: '外资'
 | 
			
		||||
        },
 | 
			
		||||
           {
 | 
			
		||||
          value: 3,
 | 
			
		||||
          label: '其他'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      projectTypeList:[],
 | 
			
		||||
      visible: false,
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        id: "",
 | 
			
		||||
        title:null,
 | 
			
		||||
        requirementListGroupId: undefined,
 | 
			
		||||
        description: null
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        // dictLabel: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // dictValue: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // sort: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(data,) {
 | 
			
		||||
      console.log(data)
 | 
			
		||||
      console.log(this.dataForm.projectTypeId)
 | 
			
		||||
      // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields()
 | 
			
		||||
        if (data) {
 | 
			
		||||
          this.dataForm.id = data.id ? data.id : ''
 | 
			
		||||
          this.dataForm.projectTypeId = data.projectTypeId ? data.projectTypeId : ''
 | 
			
		||||
        }
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.getInfo()
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    getCode() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getProjectTypeURL, { params: this.listQuery })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
            this.projectTypeList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
      this.$http
 | 
			
		||||
        .post(this.urlOptions.getCodeURL)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res);
 | 
			
		||||
            this.dataForm.code = res.data
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
    },
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    getInfo() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(`/supplier/qmsEvaluationItemList/${this.dataForm.id}`)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
          }
 | 
			
		||||
          this.dataForm = {
 | 
			
		||||
            ...this.dataForm,
 | 
			
		||||
            ...res.data,
 | 
			
		||||
          };
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    dataFormSubmitHandle: debounce(
 | 
			
		||||
      function () {
 | 
			
		||||
        this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
          if (!valid) {
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
          this.$http[!this.dataForm.id ? "post" : "put"](this.urlOptions.submitURL, this.dataForm)
 | 
			
		||||
            .then(({ data: res }) => {
 | 
			
		||||
              if (res.code !== 0) {
 | 
			
		||||
                return this.$message.error(res.msg);
 | 
			
		||||
              }
 | 
			
		||||
              this.$message({
 | 
			
		||||
                message: this.$t("prompt.success"),
 | 
			
		||||
                type: "success",
 | 
			
		||||
                duration: 500,
 | 
			
		||||
                onClose: () => {
 | 
			
		||||
                  console.log(1111);
 | 
			
		||||
                  this.visible = false;
 | 
			
		||||
                  this.$emit("successSubmit");
 | 
			
		||||
                },
 | 
			
		||||
              });
 | 
			
		||||
            })
 | 
			
		||||
            .catch(() => {});
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      1000,
 | 
			
		||||
      { leading: true, trailing: false }
 | 
			
		||||
    ),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										49
									
								
								src/views/modules/customerquality/components/radio.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								src/views/modules/customerquality/components/radio.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-31 14:12:10
 | 
			
		||||
 * @LastEditTime: 2023-01-31 16:47:32
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <span>
 | 
			
		||||
    <el-radio v-model="injectData.incomingInspection" :label="1"
 | 
			
		||||
      >进货检验</el-radio
 | 
			
		||||
    >
 | 
			
		||||
    <el-radio v-model="injectData.processInspection" :label="1"
 | 
			
		||||
      >过程检验</el-radio
 | 
			
		||||
    >
 | 
			
		||||
    <el-radio v-model="injectData.finishInspection" :label="1"
 | 
			
		||||
      >成品检验</el-radio
 | 
			
		||||
    >
 | 
			
		||||
    <el-radio v-model="injectData.outInspection" :label="1">出货检验</el-radio>
 | 
			
		||||
  </span>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
// import { addDynamicRoute } from '@/router'
 | 
			
		||||
export default {
 | 
			
		||||
  props: {
 | 
			
		||||
    injectData: {
 | 
			
		||||
      type: Object,
 | 
			
		||||
      default: () => ({}),
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    // 子级
 | 
			
		||||
    // emitClick () {
 | 
			
		||||
    //   // 路由参数
 | 
			
		||||
    //   const routeParams = {
 | 
			
		||||
    //     routeName: `${this.$route.name}__${this.injectData.id}`,
 | 
			
		||||
    //     title: `${this.$route.meta.title} - ${this.injectData.dictType}`,
 | 
			
		||||
    //     path: 'sys/dict-data',
 | 
			
		||||
    //     params: {
 | 
			
		||||
    //       dictTypeId: this.injectData.id
 | 
			
		||||
    //     }
 | 
			
		||||
    //   }
 | 
			
		||||
    //   // 动态路由
 | 
			
		||||
    //   addDynamicRoute(routeParams, this.$router)
 | 
			
		||||
    // }
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,344 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-06-08 14:29:46
 | 
			
		||||
 * @LastEditTime: 2023-07-13 16:49:24
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-card shadow="never" class="aui-card--fill">
 | 
			
		||||
    <div class="mod-sys__user">
 | 
			
		||||
      <SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
 | 
			
		||||
        <!-- <el-badge :value="2" class="item">
 | 
			
		||||
          <el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button>
 | 
			
		||||
        </el-badge> -->
 | 
			
		||||
      </SearchBar>
 | 
			
		||||
      <base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
 | 
			
		||||
        :limit="listQuery.limit" :table-data="tableData">
 | 
			
		||||
        <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
          @clickBtn="handleClick" />
 | 
			
		||||
      </base-table>
 | 
			
		||||
      <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
 | 
			
		||||
        @pagination="getDataList" />
 | 
			
		||||
      <!-- 弹窗, 新增 / 修改 -->
 | 
			
		||||
      <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel"
 | 
			
		||||
        @confirm="handleConfirm" :before-close="handleCancel">
 | 
			
		||||
        <qmsCustomerComplaintManagement-add ref="addOrUpdate" @refreshDataList="successSubmit">
 | 
			
		||||
          </qmsCustomerComplaintManagement-add>
 | 
			
		||||
          <!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
 | 
			
		||||
      </base-dialog>
 | 
			
		||||
      <!-- <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
 | 
			
		||||
        @confirm="handleSearchConfirm" :before-close="handleSearchCancel">
 | 
			
		||||
        <projectType-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit">
 | 
			
		||||
          </projectType-search>
 | 
			
		||||
          <el-row slot="footer" type="flex" justify="end">
 | 
			
		||||
            <el-col :span="12">
 | 
			
		||||
              <el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">
 | 
			
		||||
                {{ $t("close") }}
 | 
			
		||||
              </el-button>
 | 
			
		||||
              <el-button size="small" class="btnTextStyle" type="primary" plain @click="handleSearchReset">{{
 | 
			
		||||
                $t("reset")
 | 
			
		||||
                }}</el-button>
 | 
			
		||||
              <el-button type="primary" size="small" class="btnTextStyle" @click="handleSearchConfirm">
 | 
			
		||||
                {{ $t("search") }}
 | 
			
		||||
              </el-button>
 | 
			
		||||
            </el-col>
 | 
			
		||||
          </el-row>
 | 
			
		||||
      </base-dialog> -->
 | 
			
		||||
    </div>
 | 
			
		||||
  </el-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicPage from "@/mixins/basic-page"
 | 
			
		||||
// import basicSearch from "@/mixins/basic-search"
 | 
			
		||||
// import projectTypeSearch from "./components/projectTypeSearch.vue"
 | 
			
		||||
import customerquality from '@/filters/customerquality'
 | 
			
		||||
import qmsCustomerComplaintManagementAdd from "./components/qmsCustomerComplaintManagement-add.vue"
 | 
			
		||||
import i18n from "@/i18n"
 | 
			
		||||
// import i18n from "@/i18n";
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: "questionType",
 | 
			
		||||
    label: i18n.t('customerquality.questionType'),
 | 
			
		||||
    filter: customerquality('questionType')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "customerName",
 | 
			
		||||
    label: i18n.t('customerquality.customerName'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "currentStage",
 | 
			
		||||
    label: i18n.t('customerquality.currentStage'),
 | 
			
		||||
    filter: customerquality('currentStage')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "serialNumber",
 | 
			
		||||
    label: i18n.t('customerquality.serialNumber'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "status",
 | 
			
		||||
    label: i18n.t('basic.status'),
 | 
			
		||||
    filter: customerquality('status'),
 | 
			
		||||
  },
 | 
			
		||||
];
 | 
			
		||||
const tableBtn = [
 | 
			
		||||
  {
 | 
			
		||||
    type: "edit",
 | 
			
		||||
    btnName: i18n.t('edit'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "delete",
 | 
			
		||||
    btnName: i18n.t('delete'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicPage],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        getDataListURL: "/customerquality/qmsCustomerComplaintManagement/page",
 | 
			
		||||
        deleteURL: "/customerquality/qmsCustomerComplaintManagement",
 | 
			
		||||
        exportURL: '/customerquality/qmsCustomerComplaintManagement/export'
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableBtn,
 | 
			
		||||
      productData: {},
 | 
			
		||||
      dataForm:{
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      searchOrEditTitle: "",
 | 
			
		||||
      searchOrUpdateVisible: false,
 | 
			
		||||
      productOrEditTitle: "",
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      addOrUpdateVisible: false,
 | 
			
		||||
      productOrUpdateVisible: false,
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: i18n.t('customerquality.customerName'),
 | 
			
		||||
          placeholder: i18n.t('customerquality.customerName'),
 | 
			
		||||
          param: 'customerName'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: i18n.t('customerquality.questionType'),
 | 
			
		||||
          placeholder: i18n.t('customerquality.questionType'),
 | 
			
		||||
          selectOptions: [
 | 
			
		||||
            {
 | 
			
		||||
              id: 0,
 | 
			
		||||
              name: '产品质量题'
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              id: 1,
 | 
			
		||||
              name: '售后服务题'
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              id: 2,
 | 
			
		||||
              name: '物流配送问题'
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              id: 3,
 | 
			
		||||
              name: '单关问题'
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              id: 4,
 | 
			
		||||
              name: '4系统故问题'
 | 
			
		||||
            }
 | 
			
		||||
          ],
 | 
			
		||||
          param: 'questionType'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: i18n.t('customerquality.currentStage'),
 | 
			
		||||
          placeholder: i18n.t('customerquality.currentStage'),
 | 
			
		||||
          selectOptions: [
 | 
			
		||||
            {
 | 
			
		||||
              id: 0,
 | 
			
		||||
              name: '接受投诉阶段'
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              id: 1,
 | 
			
		||||
              name: '解释澄清阶段'
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              id: 2,
 | 
			
		||||
              name: '提出解决方案阶段'
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              id: 3,
 | 
			
		||||
              name: '回访阶段'
 | 
			
		||||
            }
 | 
			
		||||
          ],
 | 
			
		||||
          param: 'currentStage'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: i18n.t('basic.status'),
 | 
			
		||||
          placeholder: i18n.t('basic.status'),
 | 
			
		||||
          selectOptions: [
 | 
			
		||||
            {
 | 
			
		||||
              id: 0,
 | 
			
		||||
              name: '不可用'
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              id: 1,
 | 
			
		||||
              name: '可用'
 | 
			
		||||
            }
 | 
			
		||||
          ],
 | 
			
		||||
          param: 'status'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          // plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain:true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  components: {
 | 
			
		||||
    qmsCustomerComplaintManagementAdd
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    //search-bar点击
 | 
			
		||||
    handleProductCancel() {
 | 
			
		||||
      this.productOrUpdateVisible = false;
 | 
			
		||||
      this.productOrEditTitle = "";
 | 
			
		||||
    },
 | 
			
		||||
    handleCurrentChange(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      this.productData = val.newVal ? val.newVal : {}
 | 
			
		||||
    },
 | 
			
		||||
    setCurrent(index) {
 | 
			
		||||
      this.$refs.palletTable1.setCurrent("palletTable", index);
 | 
			
		||||
    },
 | 
			
		||||
    // handleSearchCancel() {
 | 
			
		||||
    //   this.searchOrEditTitle = "";
 | 
			
		||||
    //   this.searchOrUpdateVisible = false;
 | 
			
		||||
    // },
 | 
			
		||||
    conditionSearch() {
 | 
			
		||||
      this.searchOrEditTitle = "搜索";
 | 
			
		||||
      this.searchOrUpdateVisible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.searchOrUpdate.init();
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // handleConfirm() {
 | 
			
		||||
    //   this.$refs.addOrUpdate.dataFormSubmitHandle();
 | 
			
		||||
    // },
 | 
			
		||||
    // conditionSearchSubmit() {},
 | 
			
		||||
    conditionSearchSubmit(dataForm) {
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      this.listQuery.page = 1;
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
      this.searchOrUpdateVisible = false;
 | 
			
		||||
      // console.log(11111);
 | 
			
		||||
      // this.conditionSearchSubmit();
 | 
			
		||||
    },
 | 
			
		||||
    exportHandle() {
 | 
			
		||||
      this.$http.get(this.urlOptions.exportURL, { responseType: 'blob' }, {
 | 
			
		||||
        ...this.dataForm
 | 
			
		||||
      }).then((res) => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        // if (res !== 0) {
 | 
			
		||||
        //   return this.$message.error(res.msg) 
 | 
			
		||||
        // }
 | 
			
		||||
        let fileName = ''
 | 
			
		||||
        const contentDisposition = res.headers['content-disposition']
 | 
			
		||||
        if (contentDisposition) {
 | 
			
		||||
          const temp = res.headers['content-disposition']
 | 
			
		||||
            .split(';')[1]
 | 
			
		||||
            .split('=')[1]
 | 
			
		||||
          // 对文件名乱码转义--【Node.js】使用iconv-lite解决中文乱码
 | 
			
		||||
          fileName = decodeURI(temp)
 | 
			
		||||
          console.log(temp)
 | 
			
		||||
        }
 | 
			
		||||
        const blob = new Blob([res.data])
 | 
			
		||||
        const reader = new FileReader()
 | 
			
		||||
        reader.readAsDataURL(blob)
 | 
			
		||||
        reader.onload = (e) => {
 | 
			
		||||
          const a = document.createElement('a')
 | 
			
		||||
          a.download = fileName
 | 
			
		||||
          a.href = e.target.result
 | 
			
		||||
          document.body.appendChild(a)
 | 
			
		||||
          a.click()
 | 
			
		||||
          document.body.removeChild(a)
 | 
			
		||||
        }
 | 
			
		||||
      }).catch(() => { })
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      if (val.type === "delete") {
 | 
			
		||||
        this.$confirm(`确定对[名称=${val.data.customerTypeName}]进行删除操作?`, "提示", {
 | 
			
		||||
          confirmButtonText: "确定",
 | 
			
		||||
          cancelButtonText: "取消",
 | 
			
		||||
          type: "warning",
 | 
			
		||||
        })
 | 
			
		||||
          .then(() => {
 | 
			
		||||
            this.$http.delete(this.urlOptions.deleteURL, { data: [val.data.id] }).then(({ data }) => {
 | 
			
		||||
              if (data && data.code === 0) {
 | 
			
		||||
                this.$message({
 | 
			
		||||
                  message: "操作成功",
 | 
			
		||||
                  type: "success",
 | 
			
		||||
                  duration: 1500,
 | 
			
		||||
                  onClose: () => {
 | 
			
		||||
                    this.getDataList();
 | 
			
		||||
                  },
 | 
			
		||||
                });
 | 
			
		||||
              } else {
 | 
			
		||||
                this.$message.error(data.msg);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          })
 | 
			
		||||
          .catch(() => { });
 | 
			
		||||
      } else if (val.type === 'edit') {
 | 
			
		||||
        this.addOrUpdateVisible = true
 | 
			
		||||
        this.addOrEditTitle = this.$t('edit')
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.addOrUpdate.init(val.data.id);
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // addOrUpdateHandle(productData) {
 | 
			
		||||
    //   this.addOrUpdateVisible = true;
 | 
			
		||||
    //   this.$nextTick(() => {
 | 
			
		||||
    //     this.$refs.addOrUpdate.init(productData);
 | 
			
		||||
    //   });
 | 
			
		||||
    // },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case "search":
 | 
			
		||||
          // this.listQuery.paramCode = val.paramCode;
 | 
			
		||||
          // console.log(i18n);
 | 
			
		||||
          this.listQuery.currentStage = val.currentStage ? val.currentStage : null
 | 
			
		||||
          this.listQuery.customerName = val.customerName ? val.customerName : null
 | 
			
		||||
          this.listQuery.questionType = val.name ? val.questionType : null
 | 
			
		||||
          this.listQuery.status = val.code ? val.status : null
 | 
			
		||||
          this.listQuery.page = 1
 | 
			
		||||
          this.getDataList()
 | 
			
		||||
          break;
 | 
			
		||||
        case "export":
 | 
			
		||||
         this.exportHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.addOrUpdateVisible = true;
 | 
			
		||||
          this.addOrUpdateHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,332 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-06-08 14:29:46
 | 
			
		||||
 * @LastEditTime: 2023-07-14 14:28:20
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-card shadow="never" class="aui-card--fill">
 | 
			
		||||
    <div class="mod-sys__user">
 | 
			
		||||
      <SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
 | 
			
		||||
        <!-- <el-badge :value="2" class="item">
 | 
			
		||||
          <el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button>
 | 
			
		||||
        </el-badge> -->
 | 
			
		||||
      </SearchBar>
 | 
			
		||||
      <base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
 | 
			
		||||
        :limit="listQuery.limit" :table-data="tableData">
 | 
			
		||||
        <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
          @clickBtn="handleClick" />
 | 
			
		||||
      </base-table>
 | 
			
		||||
      <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
 | 
			
		||||
        @pagination="getDataList" />
 | 
			
		||||
      <!-- 弹窗, 新增 / 修改 -->
 | 
			
		||||
      <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel"
 | 
			
		||||
        @confirm="handleConfirm" :before-close="handleCancel">
 | 
			
		||||
        <qmsKnowledgeBase-add ref="addOrUpdate" @refreshDataList="successSubmit">
 | 
			
		||||
        </qmsKnowledgeBase-add>
 | 
			
		||||
        <!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
 | 
			
		||||
      </base-dialog>
 | 
			
		||||
      <baseConfig ref="baseConfigOrList" v-if="baseConfigShow"></baseConfig>
 | 
			
		||||
      <!-- <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
 | 
			
		||||
        @confirm="handleSearchConfirm" :before-close="handleSearchCancel">
 | 
			
		||||
        <projectType-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit">
 | 
			
		||||
          </projectType-search>
 | 
			
		||||
          <el-row slot="footer" type="flex" justify="end">
 | 
			
		||||
            <el-col :span="12">
 | 
			
		||||
              <el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">
 | 
			
		||||
                {{ $t("close") }}
 | 
			
		||||
              </el-button>
 | 
			
		||||
              <el-button size="small" class="btnTextStyle" type="primary" plain @click="handleSearchReset">{{
 | 
			
		||||
                $t("reset")
 | 
			
		||||
                }}</el-button>
 | 
			
		||||
              <el-button type="primary" size="small" class="btnTextStyle" @click="handleSearchConfirm">
 | 
			
		||||
                {{ $t("search") }}
 | 
			
		||||
              </el-button>
 | 
			
		||||
            </el-col>
 | 
			
		||||
          </el-row>
 | 
			
		||||
      </base-dialog> -->
 | 
			
		||||
    </div>
 | 
			
		||||
  </el-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicPage from "@/mixins/basic-page"
 | 
			
		||||
// import basicSearch from "@/mixins/basic-search"
 | 
			
		||||
// import projectTypeSearch from "./components/projectTypeSearch.vue"
 | 
			
		||||
import customerquality from '@/filters/customerquality'
 | 
			
		||||
import qmsKnowledgeBaseAdd from "./components/qmsKnowledgeBase-add.vue"
 | 
			
		||||
import baseConfig from "./components/baseConfig"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import i18n from "@/i18n"
 | 
			
		||||
// import i18n from "@/i18n";
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: "productName",
 | 
			
		||||
    label: i18n.t('customerquality.productName'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "customerName",
 | 
			
		||||
    label: i18n.t('customerquality.customerName'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "qualityAcceptanceDate",
 | 
			
		||||
    label: i18n.t('customerquality.qualityAcceptanceDate'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "confirmDeliveryDate",
 | 
			
		||||
    label: i18n.t('customerquality.confirmDeliveryDate'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "deliveryRequiredDate",
 | 
			
		||||
    label: i18n.t('customerquality.deliveryRequiredDate'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "status",
 | 
			
		||||
    label: i18n.t('customerquality.status'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
const tableBtn = [
 | 
			
		||||
  {
 | 
			
		||||
    type: "edit",
 | 
			
		||||
    btnName: i18n.t('edit'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "delete",
 | 
			
		||||
    btnName: i18n.t('delete'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "configuration",
 | 
			
		||||
    btnName: i18n.t('configuration'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicPage],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        getDataListURL: "/customerquality/qmsCustomerQualityProjectList/page",
 | 
			
		||||
        deleteURL: "/customerquality/qmsCustomerQualityProjectList",
 | 
			
		||||
        exportURL: '/customerquality/qmsCustomerQualityProjectList/export'
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableBtn,
 | 
			
		||||
      productData: {},
 | 
			
		||||
      dataForm:{
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      baseConfigShow:false,
 | 
			
		||||
      searchOrEditTitle: "",
 | 
			
		||||
      searchOrUpdateVisible: false,
 | 
			
		||||
      productOrEditTitle: "",
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      addOrUpdateVisible: false,
 | 
			
		||||
      productOrUpdateVisible: false,
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: 'input',
 | 
			
		||||
        //   label: i18n.t('customerquality.customerName'),
 | 
			
		||||
        //   placeholder: i18n.t('customerquality.customerName'),
 | 
			
		||||
        //   param: 'customerName'
 | 
			
		||||
        // },
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: 'select',
 | 
			
		||||
        //   label: i18n.t('customerquality.questionType'),
 | 
			
		||||
        //   placeholder: i18n.t('customerquality.questionType'),
 | 
			
		||||
        //   selectOptions: [
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 0,
 | 
			
		||||
        //       name: '产品质量题'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 1,
 | 
			
		||||
        //       name: '售后服务题'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 2,
 | 
			
		||||
        //       name: '物流配送问题'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 3,
 | 
			
		||||
        //       name: '单关问题'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 4,
 | 
			
		||||
        //       name: '4系统故问题'
 | 
			
		||||
        //     }
 | 
			
		||||
        //   ],
 | 
			
		||||
        //   param: 'questionType'
 | 
			
		||||
        // },
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: 'select',
 | 
			
		||||
        //   label: i18n.t('basic.status'),
 | 
			
		||||
        //   placeholder: i18n.t('basic.status'),
 | 
			
		||||
        //   selectOptions: [
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 0,
 | 
			
		||||
        //       name: '不可用'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 1,
 | 
			
		||||
        //       name: '可用'
 | 
			
		||||
        //     }
 | 
			
		||||
        //   ],
 | 
			
		||||
        //   param: 'status'
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          // plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain:true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  components: {
 | 
			
		||||
    qmsKnowledgeBaseAdd,
 | 
			
		||||
    baseConfig
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    //search-bar点击
 | 
			
		||||
    handleProductCancel() {
 | 
			
		||||
      this.productOrUpdateVisible = false;
 | 
			
		||||
      this.productOrEditTitle = "";
 | 
			
		||||
    },
 | 
			
		||||
    handleCurrentChange(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      this.productData = val.newVal ? val.newVal : {}
 | 
			
		||||
    },
 | 
			
		||||
    setCurrent(index) {
 | 
			
		||||
      this.$refs.palletTable1.setCurrent("palletTable", index);
 | 
			
		||||
    },
 | 
			
		||||
    // handleSearchCancel() {
 | 
			
		||||
    //   this.searchOrEditTitle = "";
 | 
			
		||||
    //   this.searchOrUpdateVisible = false;
 | 
			
		||||
    // },
 | 
			
		||||
    conditionSearch() {
 | 
			
		||||
      this.searchOrEditTitle = "搜索";
 | 
			
		||||
      this.searchOrUpdateVisible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.searchOrUpdate.init();
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // handleConfirm() {
 | 
			
		||||
    //   this.$refs.addOrUpdate.dataFormSubmitHandle();
 | 
			
		||||
    // },
 | 
			
		||||
    // conditionSearchSubmit() {},
 | 
			
		||||
    conditionSearchSubmit(dataForm) {
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      this.listQuery.page = 1;
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
      this.searchOrUpdateVisible = false;
 | 
			
		||||
      // console.log(11111);
 | 
			
		||||
      // this.conditionSearchSubmit();
 | 
			
		||||
    },
 | 
			
		||||
    exportHandle() {
 | 
			
		||||
      this.$http.get(this.urlOptions.exportURL, { responseType: 'blob' }, {
 | 
			
		||||
        ...this.dataForm
 | 
			
		||||
      }).then((res) => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        // if (res !== 0) {
 | 
			
		||||
        //   return this.$message.error(res.msg) 
 | 
			
		||||
        // }
 | 
			
		||||
        let fileName = ''
 | 
			
		||||
        const contentDisposition = res.headers['content-disposition']
 | 
			
		||||
        if (contentDisposition) {
 | 
			
		||||
          const temp = res.headers['content-disposition']
 | 
			
		||||
            .split(';')[1]
 | 
			
		||||
            .split('=')[1]
 | 
			
		||||
          // 对文件名乱码转义--【Node.js】使用iconv-lite解决中文乱码
 | 
			
		||||
          fileName = decodeURI(temp)
 | 
			
		||||
          console.log(temp)
 | 
			
		||||
        }
 | 
			
		||||
        const blob = new Blob([res.data])
 | 
			
		||||
        const reader = new FileReader()
 | 
			
		||||
        reader.readAsDataURL(blob)
 | 
			
		||||
        reader.onload = (e) => {
 | 
			
		||||
          const a = document.createElement('a')
 | 
			
		||||
          a.download = fileName
 | 
			
		||||
          a.href = e.target.result
 | 
			
		||||
          document.body.appendChild(a)
 | 
			
		||||
          a.click()
 | 
			
		||||
          document.body.removeChild(a)
 | 
			
		||||
        }
 | 
			
		||||
      }).catch(() => { })
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      if (val.type === "delete") {
 | 
			
		||||
        this.$confirm(`确定对[名称=${val.data.customerTypeName}]进行删除操作?`, "提示", {
 | 
			
		||||
          confirmButtonText: "确定",
 | 
			
		||||
          cancelButtonText: "取消",
 | 
			
		||||
          type: "warning",
 | 
			
		||||
        })
 | 
			
		||||
          .then(() => {
 | 
			
		||||
            this.$http.delete(this.urlOptions.deleteURL, { data: [val.data.id] }).then(({ data }) => {
 | 
			
		||||
              if (data && data.code === 0) {
 | 
			
		||||
                this.$message({
 | 
			
		||||
                  message: "操作成功",
 | 
			
		||||
                  type: "success",
 | 
			
		||||
                  duration: 1500,
 | 
			
		||||
                  onClose: () => {
 | 
			
		||||
                    this.getDataList();
 | 
			
		||||
                  },
 | 
			
		||||
                });
 | 
			
		||||
              } else {
 | 
			
		||||
                this.$message.error(data.msg);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          })
 | 
			
		||||
          .catch(() => { });
 | 
			
		||||
      } else if (val.type === 'edit') {
 | 
			
		||||
        this.addOrUpdateVisible = true
 | 
			
		||||
        this.addOrEditTitle = this.$t('edit')
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.addOrUpdate.init(val.data.id);
 | 
			
		||||
        })
 | 
			
		||||
      } else if (val.type === 'configuration') {
 | 
			
		||||
        this.baseConfigShow = true
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.baseConfigOrList.init(val.data.id)
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // addOrUpdateHandle(productData) {
 | 
			
		||||
    //   this.addOrUpdateVisible = true;
 | 
			
		||||
    //   this.$nextTick(() => {
 | 
			
		||||
    //     this.$refs.addOrUpdate.init(productData);
 | 
			
		||||
    //   });
 | 
			
		||||
    // },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case "search":
 | 
			
		||||
          // this.listQuery.paramCode = val.paramCode;
 | 
			
		||||
          // console.log(i18n);
 | 
			
		||||
          this.listQuery.page = 1
 | 
			
		||||
          this.getDataList()
 | 
			
		||||
          break;
 | 
			
		||||
        case "export":
 | 
			
		||||
         this.exportHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.addOrUpdateVisible = true;
 | 
			
		||||
          this.addOrUpdateHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,301 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-06-08 14:29:46
 | 
			
		||||
 * @LastEditTime: 2023-07-14 10:08:05
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-card shadow="never" class="aui-card--fill">
 | 
			
		||||
    <div class="mod-sys__user">
 | 
			
		||||
      <SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
 | 
			
		||||
        <!-- <el-badge :value="2" class="item">
 | 
			
		||||
          <el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button>
 | 
			
		||||
        </el-badge> -->
 | 
			
		||||
      </SearchBar>
 | 
			
		||||
      <base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
 | 
			
		||||
        :limit="listQuery.limit" :table-data="tableData">
 | 
			
		||||
        <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
          @clickBtn="handleClick" />
 | 
			
		||||
      </base-table>
 | 
			
		||||
      <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
 | 
			
		||||
        @pagination="getDataList" />
 | 
			
		||||
      <!-- 弹窗, 新增 / 修改 -->
 | 
			
		||||
      <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel"
 | 
			
		||||
        @confirm="handleConfirm" :before-close="handleCancel">
 | 
			
		||||
        <customerQualityRequirementList-add ref="addOrUpdate" @refreshDataList="successSubmit">
 | 
			
		||||
          </customerQualityRequirementList-add>
 | 
			
		||||
          <!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
 | 
			
		||||
      </base-dialog>
 | 
			
		||||
      <!-- <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
 | 
			
		||||
        @confirm="handleSearchConfirm" :before-close="handleSearchCancel">
 | 
			
		||||
        <projectType-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit">
 | 
			
		||||
          </projectType-search>
 | 
			
		||||
          <el-row slot="footer" type="flex" justify="end">
 | 
			
		||||
            <el-col :span="12">
 | 
			
		||||
              <el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">
 | 
			
		||||
                {{ $t("close") }}
 | 
			
		||||
              </el-button>
 | 
			
		||||
              <el-button size="small" class="btnTextStyle" type="primary" plain @click="handleSearchReset">{{
 | 
			
		||||
                $t("reset")
 | 
			
		||||
                }}</el-button>
 | 
			
		||||
              <el-button type="primary" size="small" class="btnTextStyle" @click="handleSearchConfirm">
 | 
			
		||||
                {{ $t("search") }}
 | 
			
		||||
              </el-button>
 | 
			
		||||
            </el-col>
 | 
			
		||||
          </el-row>
 | 
			
		||||
      </base-dialog> -->
 | 
			
		||||
    </div>
 | 
			
		||||
  </el-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicPage from "@/mixins/basic-page"
 | 
			
		||||
// import basicSearch from "@/mixins/basic-search"
 | 
			
		||||
// import projectTypeSearch from "./components/projectTypeSearch.vue"
 | 
			
		||||
import customerquality from '@/filters/customerquality'
 | 
			
		||||
import customerQualityRequirementListAdd from "./components/customerQualityRequirementList-add.vue"
 | 
			
		||||
import i18n from "@/i18n"
 | 
			
		||||
// import i18n from "@/i18n";
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: "code",
 | 
			
		||||
    label: i18n.t('customerquality.code'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "requirementListName",
 | 
			
		||||
    label: i18n.t('customerquality.requirementListName'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "uploadFiles",
 | 
			
		||||
    label: i18n.t('customerquality.uploadFiles'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "categoryName",
 | 
			
		||||
    label: i18n.t('customerquality.category'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
const tableBtn = [
 | 
			
		||||
  {
 | 
			
		||||
    type: "edit",
 | 
			
		||||
    btnName: i18n.t('edit'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "delete",
 | 
			
		||||
    btnName: i18n.t('delete'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicPage],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        getDataListURL: "/customerquality/qmsCustomerQualityRequirementList/page",
 | 
			
		||||
        deleteURL: "/customerquality/qmsCustomerQualityRequirementList",
 | 
			
		||||
        exportURL: '/customerquality/qmsCustomerQualityRequirementList/export'
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableBtn,
 | 
			
		||||
      productData: {},
 | 
			
		||||
      dataForm:{
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      searchOrEditTitle: "",
 | 
			
		||||
      searchOrUpdateVisible: false,
 | 
			
		||||
      productOrEditTitle: "",
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      addOrUpdateVisible: false,
 | 
			
		||||
      productOrUpdateVisible: false,
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: i18n.t('customerquality.requirementListName'),
 | 
			
		||||
          placeholder: i18n.t('customerquality.requirementListName'),
 | 
			
		||||
          param: 'name'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: i18n.t('customerquality.code'),
 | 
			
		||||
          placeholder: i18n.t('customerquality.code'),
 | 
			
		||||
          param: 'code'
 | 
			
		||||
        },
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: 'select',
 | 
			
		||||
        //   label: i18n.t('customerquality.questionType'),
 | 
			
		||||
        //   placeholder: i18n.t('customerquality.questionType'),
 | 
			
		||||
        //   selectOptions: [
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 0,
 | 
			
		||||
        //       name: '产品质量题'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 1,
 | 
			
		||||
        //       name: '售后服务题'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 2,
 | 
			
		||||
        //       name: '物流配送问题'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 3,
 | 
			
		||||
        //       name: '单关问题'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 4,
 | 
			
		||||
        //       name: '4系统故问题'
 | 
			
		||||
        //     }
 | 
			
		||||
        //   ],
 | 
			
		||||
        //   param: 'questionType'
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          // plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain:true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  components: {
 | 
			
		||||
    customerQualityRequirementListAdd
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    //search-bar点击
 | 
			
		||||
    handleProductCancel() {
 | 
			
		||||
      this.productOrUpdateVisible = false;
 | 
			
		||||
      this.productOrEditTitle = "";
 | 
			
		||||
    },
 | 
			
		||||
    handleCurrentChange(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      this.productData = val.newVal ? val.newVal : {}
 | 
			
		||||
    },
 | 
			
		||||
    setCurrent(index) {
 | 
			
		||||
      this.$refs.palletTable1.setCurrent("palletTable", index);
 | 
			
		||||
    },
 | 
			
		||||
    // handleSearchCancel() {
 | 
			
		||||
    //   this.searchOrEditTitle = "";
 | 
			
		||||
    //   this.searchOrUpdateVisible = false;
 | 
			
		||||
    // },
 | 
			
		||||
    conditionSearch() {
 | 
			
		||||
      this.searchOrEditTitle = "搜索";
 | 
			
		||||
      this.searchOrUpdateVisible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.searchOrUpdate.init();
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // handleConfirm() {
 | 
			
		||||
    //   this.$refs.addOrUpdate.dataFormSubmitHandle();
 | 
			
		||||
    // },
 | 
			
		||||
    // conditionSearchSubmit() {},
 | 
			
		||||
    conditionSearchSubmit(dataForm) {
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      this.listQuery.page = 1;
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
      this.searchOrUpdateVisible = false;
 | 
			
		||||
      // console.log(11111);
 | 
			
		||||
      // this.conditionSearchSubmit();
 | 
			
		||||
    },
 | 
			
		||||
    exportHandle() {
 | 
			
		||||
      this.$http.get(this.urlOptions.exportURL, { responseType: 'blob' }, {
 | 
			
		||||
        ...this.dataForm
 | 
			
		||||
      }).then((res) => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        // if (res !== 0) {
 | 
			
		||||
        //   return this.$message.error(res.msg) 
 | 
			
		||||
        // }
 | 
			
		||||
        let fileName = ''
 | 
			
		||||
        const contentDisposition = res.headers['content-disposition']
 | 
			
		||||
        if (contentDisposition) {
 | 
			
		||||
          const temp = res.headers['content-disposition']
 | 
			
		||||
            .split(';')[1]
 | 
			
		||||
            .split('=')[1]
 | 
			
		||||
          // 对文件名乱码转义--【Node.js】使用iconv-lite解决中文乱码
 | 
			
		||||
          fileName = decodeURI(temp)
 | 
			
		||||
          console.log(temp)
 | 
			
		||||
        }
 | 
			
		||||
        const blob = new Blob([res.data])
 | 
			
		||||
        const reader = new FileReader()
 | 
			
		||||
        reader.readAsDataURL(blob)
 | 
			
		||||
        reader.onload = (e) => {
 | 
			
		||||
          const a = document.createElement('a')
 | 
			
		||||
          a.download = fileName
 | 
			
		||||
          a.href = e.target.result
 | 
			
		||||
          document.body.appendChild(a)
 | 
			
		||||
          a.click()
 | 
			
		||||
          document.body.removeChild(a)
 | 
			
		||||
        }
 | 
			
		||||
      }).catch(() => { })
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      if (val.type === "delete") {
 | 
			
		||||
        this.$confirm(`确定对[名称=${val.data.customerTypeName}]进行删除操作?`, "提示", {
 | 
			
		||||
          confirmButtonText: "确定",
 | 
			
		||||
          cancelButtonText: "取消",
 | 
			
		||||
          type: "warning",
 | 
			
		||||
        })
 | 
			
		||||
          .then(() => {
 | 
			
		||||
            this.$http.delete(this.urlOptions.deleteURL, { data: [val.data.id] }).then(({ data }) => {
 | 
			
		||||
              if (data && data.code === 0) {
 | 
			
		||||
                this.$message({
 | 
			
		||||
                  message: "操作成功",
 | 
			
		||||
                  type: "success",
 | 
			
		||||
                  duration: 1500,
 | 
			
		||||
                  onClose: () => {
 | 
			
		||||
                    this.getDataList();
 | 
			
		||||
                  },
 | 
			
		||||
                });
 | 
			
		||||
              } else {
 | 
			
		||||
                this.$message.error(data.msg);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          })
 | 
			
		||||
          .catch(() => { });
 | 
			
		||||
      } else if (val.type === 'edit') {
 | 
			
		||||
        this.addOrUpdateVisible = true
 | 
			
		||||
        this.addOrEditTitle = this.$t('edit')
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.addOrUpdate.init(val.data.id);
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // addOrUpdateHandle(productData) {
 | 
			
		||||
    //   this.addOrUpdateVisible = true;
 | 
			
		||||
    //   this.$nextTick(() => {
 | 
			
		||||
    //     this.$refs.addOrUpdate.init(productData);
 | 
			
		||||
    //   });
 | 
			
		||||
    // },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case "search":
 | 
			
		||||
          // this.listQuery.paramCode = val.paramCode;
 | 
			
		||||
          // console.log(i18n);
 | 
			
		||||
          this.listQuery.code = val.code ? val.code : null
 | 
			
		||||
          this.listQuery.name = val.name ? val.name : null
 | 
			
		||||
          this.listQuery.page = 1
 | 
			
		||||
          this.getDataList()
 | 
			
		||||
          break;
 | 
			
		||||
        case "export":
 | 
			
		||||
         this.exportHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.addOrUpdateVisible = true;
 | 
			
		||||
          this.addOrUpdateHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										320
									
								
								src/views/modules/customerquality/qmsKnowledgeBase.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										320
									
								
								src/views/modules/customerquality/qmsKnowledgeBase.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,320 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-06-08 14:29:46
 | 
			
		||||
 * @LastEditTime: 2023-07-14 13:58:32
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-card shadow="never" class="aui-card--fill">
 | 
			
		||||
    <div class="mod-sys__user">
 | 
			
		||||
      <SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
 | 
			
		||||
        <!-- <el-badge :value="2" class="item">
 | 
			
		||||
          <el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button>
 | 
			
		||||
        </el-badge> -->
 | 
			
		||||
      </SearchBar>
 | 
			
		||||
      <base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
 | 
			
		||||
        :limit="listQuery.limit" :table-data="tableData">
 | 
			
		||||
        <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
          @clickBtn="handleClick" />
 | 
			
		||||
      </base-table>
 | 
			
		||||
      <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
 | 
			
		||||
        @pagination="getDataList" />
 | 
			
		||||
      <!-- 弹窗, 新增 / 修改 -->
 | 
			
		||||
      <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel"
 | 
			
		||||
        @confirm="handleConfirm" :before-close="handleCancel">
 | 
			
		||||
        <qmsKnowledgeBase-add ref="addOrUpdate" @refreshDataList="successSubmit">
 | 
			
		||||
        </qmsKnowledgeBase-add>
 | 
			
		||||
        <!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
 | 
			
		||||
      </base-dialog>
 | 
			
		||||
      <baseConfig ref="baseConfigOrList" v-if="baseConfigShow"></baseConfig>
 | 
			
		||||
      <!-- <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
 | 
			
		||||
        @confirm="handleSearchConfirm" :before-close="handleSearchCancel">
 | 
			
		||||
        <projectType-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit">
 | 
			
		||||
          </projectType-search>
 | 
			
		||||
          <el-row slot="footer" type="flex" justify="end">
 | 
			
		||||
            <el-col :span="12">
 | 
			
		||||
              <el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">
 | 
			
		||||
                {{ $t("close") }}
 | 
			
		||||
              </el-button>
 | 
			
		||||
              <el-button size="small" class="btnTextStyle" type="primary" plain @click="handleSearchReset">{{
 | 
			
		||||
                $t("reset")
 | 
			
		||||
                }}</el-button>
 | 
			
		||||
              <el-button type="primary" size="small" class="btnTextStyle" @click="handleSearchConfirm">
 | 
			
		||||
                {{ $t("search") }}
 | 
			
		||||
              </el-button>
 | 
			
		||||
            </el-col>
 | 
			
		||||
          </el-row>
 | 
			
		||||
      </base-dialog> -->
 | 
			
		||||
    </div>
 | 
			
		||||
  </el-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicPage from "@/mixins/basic-page"
 | 
			
		||||
// import basicSearch from "@/mixins/basic-search"
 | 
			
		||||
// import projectTypeSearch from "./components/projectTypeSearch.vue"
 | 
			
		||||
import customerquality from '@/filters/customerquality'
 | 
			
		||||
import qmsKnowledgeBaseAdd from "./components/qmsKnowledgeBase-add.vue"
 | 
			
		||||
import baseConfig from "./components/baseConfig"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import i18n from "@/i18n"
 | 
			
		||||
// import i18n from "@/i18n";
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: "code",
 | 
			
		||||
    label: i18n.t('customerquality.code'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "knowledgeBaseName",
 | 
			
		||||
    label: i18n.t('customerquality.knowledgeBaseName'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "categoryName",
 | 
			
		||||
    label: i18n.t('customerquality.category'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
const tableBtn = [
 | 
			
		||||
  {
 | 
			
		||||
    type: "edit",
 | 
			
		||||
    btnName: i18n.t('edit'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "delete",
 | 
			
		||||
    btnName: i18n.t('delete'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "configuration",
 | 
			
		||||
    btnName: i18n.t('configuration'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicPage],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        getDataListURL: "/customerquality/qmsKnowledgeBase/page",
 | 
			
		||||
        deleteURL: "/customerquality/qmsKnowledgeBase",
 | 
			
		||||
        exportURL: '/customerquality/qmsKnowledgeBase/export'
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableBtn,
 | 
			
		||||
      productData: {},
 | 
			
		||||
      dataForm:{
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      baseConfigShow:false,
 | 
			
		||||
      searchOrEditTitle: "",
 | 
			
		||||
      searchOrUpdateVisible: false,
 | 
			
		||||
      productOrEditTitle: "",
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      addOrUpdateVisible: false,
 | 
			
		||||
      productOrUpdateVisible: false,
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: 'input',
 | 
			
		||||
        //   label: i18n.t('customerquality.customerName'),
 | 
			
		||||
        //   placeholder: i18n.t('customerquality.customerName'),
 | 
			
		||||
        //   param: 'customerName'
 | 
			
		||||
        // },
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: 'select',
 | 
			
		||||
        //   label: i18n.t('customerquality.questionType'),
 | 
			
		||||
        //   placeholder: i18n.t('customerquality.questionType'),
 | 
			
		||||
        //   selectOptions: [
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 0,
 | 
			
		||||
        //       name: '产品质量题'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 1,
 | 
			
		||||
        //       name: '售后服务题'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 2,
 | 
			
		||||
        //       name: '物流配送问题'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 3,
 | 
			
		||||
        //       name: '单关问题'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 4,
 | 
			
		||||
        //       name: '4系统故问题'
 | 
			
		||||
        //     }
 | 
			
		||||
        //   ],
 | 
			
		||||
        //   param: 'questionType'
 | 
			
		||||
        // },
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: 'select',
 | 
			
		||||
        //   label: i18n.t('basic.status'),
 | 
			
		||||
        //   placeholder: i18n.t('basic.status'),
 | 
			
		||||
        //   selectOptions: [
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 0,
 | 
			
		||||
        //       name: '不可用'
 | 
			
		||||
        //     },
 | 
			
		||||
        //     {
 | 
			
		||||
        //       id: 1,
 | 
			
		||||
        //       name: '可用'
 | 
			
		||||
        //     }
 | 
			
		||||
        //   ],
 | 
			
		||||
        //   param: 'status'
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          // plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain:true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  components: {
 | 
			
		||||
    qmsKnowledgeBaseAdd,
 | 
			
		||||
    baseConfig
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    //search-bar点击
 | 
			
		||||
    handleProductCancel() {
 | 
			
		||||
      this.productOrUpdateVisible = false;
 | 
			
		||||
      this.productOrEditTitle = "";
 | 
			
		||||
    },
 | 
			
		||||
    handleCurrentChange(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      this.productData = val.newVal ? val.newVal : {}
 | 
			
		||||
    },
 | 
			
		||||
    setCurrent(index) {
 | 
			
		||||
      this.$refs.palletTable1.setCurrent("palletTable", index);
 | 
			
		||||
    },
 | 
			
		||||
    // handleSearchCancel() {
 | 
			
		||||
    //   this.searchOrEditTitle = "";
 | 
			
		||||
    //   this.searchOrUpdateVisible = false;
 | 
			
		||||
    // },
 | 
			
		||||
    conditionSearch() {
 | 
			
		||||
      this.searchOrEditTitle = "搜索";
 | 
			
		||||
      this.searchOrUpdateVisible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.searchOrUpdate.init();
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // handleConfirm() {
 | 
			
		||||
    //   this.$refs.addOrUpdate.dataFormSubmitHandle();
 | 
			
		||||
    // },
 | 
			
		||||
    // conditionSearchSubmit() {},
 | 
			
		||||
    conditionSearchSubmit(dataForm) {
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      this.listQuery.page = 1;
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
      this.searchOrUpdateVisible = false;
 | 
			
		||||
      // console.log(11111);
 | 
			
		||||
      // this.conditionSearchSubmit();
 | 
			
		||||
    },
 | 
			
		||||
    exportHandle() {
 | 
			
		||||
      this.$http.get(this.urlOptions.exportURL, { responseType: 'blob' }, {
 | 
			
		||||
        ...this.dataForm
 | 
			
		||||
      }).then((res) => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        // if (res !== 0) {
 | 
			
		||||
        //   return this.$message.error(res.msg) 
 | 
			
		||||
        // }
 | 
			
		||||
        let fileName = ''
 | 
			
		||||
        const contentDisposition = res.headers['content-disposition']
 | 
			
		||||
        if (contentDisposition) {
 | 
			
		||||
          const temp = res.headers['content-disposition']
 | 
			
		||||
            .split(';')[1]
 | 
			
		||||
            .split('=')[1]
 | 
			
		||||
          // 对文件名乱码转义--【Node.js】使用iconv-lite解决中文乱码
 | 
			
		||||
          fileName = decodeURI(temp)
 | 
			
		||||
          console.log(temp)
 | 
			
		||||
        }
 | 
			
		||||
        const blob = new Blob([res.data])
 | 
			
		||||
        const reader = new FileReader()
 | 
			
		||||
        reader.readAsDataURL(blob)
 | 
			
		||||
        reader.onload = (e) => {
 | 
			
		||||
          const a = document.createElement('a')
 | 
			
		||||
          a.download = fileName
 | 
			
		||||
          a.href = e.target.result
 | 
			
		||||
          document.body.appendChild(a)
 | 
			
		||||
          a.click()
 | 
			
		||||
          document.body.removeChild(a)
 | 
			
		||||
        }
 | 
			
		||||
      }).catch(() => { })
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      if (val.type === "delete") {
 | 
			
		||||
        this.$confirm(`确定对[名称=${val.data.customerTypeName}]进行删除操作?`, "提示", {
 | 
			
		||||
          confirmButtonText: "确定",
 | 
			
		||||
          cancelButtonText: "取消",
 | 
			
		||||
          type: "warning",
 | 
			
		||||
        })
 | 
			
		||||
          .then(() => {
 | 
			
		||||
            this.$http.delete(this.urlOptions.deleteURL, { data: [val.data.id] }).then(({ data }) => {
 | 
			
		||||
              if (data && data.code === 0) {
 | 
			
		||||
                this.$message({
 | 
			
		||||
                  message: "操作成功",
 | 
			
		||||
                  type: "success",
 | 
			
		||||
                  duration: 1500,
 | 
			
		||||
                  onClose: () => {
 | 
			
		||||
                    this.getDataList();
 | 
			
		||||
                  },
 | 
			
		||||
                });
 | 
			
		||||
              } else {
 | 
			
		||||
                this.$message.error(data.msg);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          })
 | 
			
		||||
          .catch(() => { });
 | 
			
		||||
      } else if (val.type === 'edit') {
 | 
			
		||||
        this.addOrUpdateVisible = true
 | 
			
		||||
        this.addOrEditTitle = this.$t('edit')
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.addOrUpdate.init(val.data.id);
 | 
			
		||||
        })
 | 
			
		||||
      } else if (val.type === 'configuration') {
 | 
			
		||||
        this.baseConfigShow = true
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.baseConfigOrList.init(val.data.id)
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // addOrUpdateHandle(productData) {
 | 
			
		||||
    //   this.addOrUpdateVisible = true;
 | 
			
		||||
    //   this.$nextTick(() => {
 | 
			
		||||
    //     this.$refs.addOrUpdate.init(productData);
 | 
			
		||||
    //   });
 | 
			
		||||
    // },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case "search":
 | 
			
		||||
          // this.listQuery.paramCode = val.paramCode;
 | 
			
		||||
          // console.log(i18n);
 | 
			
		||||
          this.listQuery.page = 1
 | 
			
		||||
          this.getDataList()
 | 
			
		||||
          break;
 | 
			
		||||
        case "export":
 | 
			
		||||
         this.exportHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.addOrUpdateVisible = true;
 | 
			
		||||
          this.addOrUpdateHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										277
									
								
								src/views/modules/customerquality/qmsPublicDocuments.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										277
									
								
								src/views/modules/customerquality/qmsPublicDocuments.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,277 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-06-08 14:29:46
 | 
			
		||||
 * @LastEditTime: 2023-07-14 10:23:53
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-card shadow="never" class="aui-card--fill">
 | 
			
		||||
    <div class="mod-sys__user">
 | 
			
		||||
      <SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
 | 
			
		||||
        <!-- <el-badge :value="2" class="item">
 | 
			
		||||
          <el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button>
 | 
			
		||||
        </el-badge> -->
 | 
			
		||||
      </SearchBar>
 | 
			
		||||
      <base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
 | 
			
		||||
        :limit="listQuery.limit" :table-data="tableData">
 | 
			
		||||
        <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
          @clickBtn="handleClick" />
 | 
			
		||||
      </base-table>
 | 
			
		||||
      <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
 | 
			
		||||
        @pagination="getDataList" />
 | 
			
		||||
      <!-- 弹窗, 新增 / 修改 -->
 | 
			
		||||
      <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel"
 | 
			
		||||
        @confirm="handleConfirm" :before-close="handleCancel">
 | 
			
		||||
        <publicDocuments-add ref="addOrUpdate" @refreshDataList="successSubmit">
 | 
			
		||||
          </publicDocuments-add>
 | 
			
		||||
          <!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
 | 
			
		||||
      </base-dialog>
 | 
			
		||||
      <!-- <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
 | 
			
		||||
        @confirm="handleSearchConfirm" :before-close="handleSearchCancel">
 | 
			
		||||
        <projectType-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit">
 | 
			
		||||
          </projectType-search>
 | 
			
		||||
          <el-row slot="footer" type="flex" justify="end">
 | 
			
		||||
            <el-col :span="12">
 | 
			
		||||
              <el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">
 | 
			
		||||
                {{ $t("close") }}
 | 
			
		||||
              </el-button>
 | 
			
		||||
              <el-button size="small" class="btnTextStyle" type="primary" plain @click="handleSearchReset">{{
 | 
			
		||||
                $t("reset")
 | 
			
		||||
                }}</el-button>
 | 
			
		||||
              <el-button type="primary" size="small" class="btnTextStyle" @click="handleSearchConfirm">
 | 
			
		||||
                {{ $t("search") }}
 | 
			
		||||
              </el-button>
 | 
			
		||||
            </el-col>
 | 
			
		||||
          </el-row>
 | 
			
		||||
      </base-dialog> -->
 | 
			
		||||
    </div>
 | 
			
		||||
  </el-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicPage from "@/mixins/basic-page"
 | 
			
		||||
// import basicSearch from "@/mixins/basic-search"
 | 
			
		||||
// import projectTypeSearch from "./components/projectTypeSearch.vue"
 | 
			
		||||
import customerquality from '@/filters/customerquality'
 | 
			
		||||
import publicDocumentsAdd from "./components/publicDocuments-add.vue"
 | 
			
		||||
import i18n from "@/i18n"
 | 
			
		||||
// import i18n from "@/i18n";
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: "title",
 | 
			
		||||
    label: i18n.t('customerquality.title'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "accessPath",
 | 
			
		||||
    label: i18n.t('customerquality.accessPath'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "knowledgeBaseFileId",
 | 
			
		||||
    label: i18n.t('customerquality.knowledgeBaseFileId'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
const tableBtn = [
 | 
			
		||||
  {
 | 
			
		||||
    type: "edit",
 | 
			
		||||
    btnName: i18n.t('edit'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "delete",
 | 
			
		||||
    btnName: i18n.t('delete'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "detail",
 | 
			
		||||
    btnName: i18n.t('detail'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicPage],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        getDataListURL: "/customerquality/qmsPublicDocuments/page",
 | 
			
		||||
        deleteURL: "/customerquality/qmsPublicDocuments",
 | 
			
		||||
        exportURL: '/customerquality/qmsPublicDocuments/export'
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableBtn,
 | 
			
		||||
      productData: {},
 | 
			
		||||
      dataForm:{
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      searchOrEditTitle: "",
 | 
			
		||||
      searchOrUpdateVisible: false,
 | 
			
		||||
      productOrEditTitle: "",
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      addOrUpdateVisible: false,
 | 
			
		||||
      productOrUpdateVisible: false,
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          // plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain:true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  components: {
 | 
			
		||||
    publicDocumentsAdd
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    //search-bar点击
 | 
			
		||||
    handleProductCancel() {
 | 
			
		||||
      this.productOrUpdateVisible = false;
 | 
			
		||||
      this.productOrEditTitle = "";
 | 
			
		||||
    },
 | 
			
		||||
    handleCurrentChange(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      this.productData = val.newVal ? val.newVal : {}
 | 
			
		||||
    },
 | 
			
		||||
    setCurrent(index) {
 | 
			
		||||
      this.$refs.palletTable1.setCurrent("palletTable", index);
 | 
			
		||||
    },
 | 
			
		||||
    // handleSearchCancel() {
 | 
			
		||||
    //   this.searchOrEditTitle = "";
 | 
			
		||||
    //   this.searchOrUpdateVisible = false;
 | 
			
		||||
    // },
 | 
			
		||||
    conditionSearch() {
 | 
			
		||||
      this.searchOrEditTitle = this.$t('t.search');
 | 
			
		||||
      this.searchOrUpdateVisible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.searchOrUpdate.init();
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // handleConfirm() {
 | 
			
		||||
    //   this.$refs.addOrUpdate.dataFormSubmitHandle();
 | 
			
		||||
    // },
 | 
			
		||||
    // conditionSearchSubmit() {},
 | 
			
		||||
    conditionSearchSubmit(dataForm) {
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      this.listQuery.page = 1;
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
      this.searchOrUpdateVisible = false;
 | 
			
		||||
      // console.log(11111);
 | 
			
		||||
      // this.conditionSearchSubmit();
 | 
			
		||||
    },
 | 
			
		||||
    exportHandle() {
 | 
			
		||||
      this.$http.get(this.urlOptions.exportURL, { responseType: 'blob' }, {
 | 
			
		||||
        ...this.dataForm
 | 
			
		||||
      }).then((res) => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        // if (res !== 0) {
 | 
			
		||||
        //   return this.$message.error(res.msg) 
 | 
			
		||||
        // }
 | 
			
		||||
        let fileName = ''
 | 
			
		||||
        const contentDisposition = res.headers['content-disposition']
 | 
			
		||||
        if (contentDisposition) {
 | 
			
		||||
          const temp = res.headers['content-disposition']
 | 
			
		||||
            .split(';')[1]
 | 
			
		||||
            .split('=')[1]
 | 
			
		||||
          // 对文件名乱码转义--【Node.js】使用iconv-lite解决中文乱码
 | 
			
		||||
          fileName = decodeURI(temp)
 | 
			
		||||
          console.log(temp)
 | 
			
		||||
        }
 | 
			
		||||
        const blob = new Blob([res.data])
 | 
			
		||||
        const reader = new FileReader()
 | 
			
		||||
        reader.readAsDataURL(blob)
 | 
			
		||||
        reader.onload = (e) => {
 | 
			
		||||
          const a = document.createElement('a')
 | 
			
		||||
          a.download = fileName
 | 
			
		||||
          a.href = e.target.result
 | 
			
		||||
          document.body.appendChild(a)
 | 
			
		||||
          a.click()
 | 
			
		||||
          document.body.removeChild(a)
 | 
			
		||||
        }
 | 
			
		||||
      }).catch(() => { })
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      if (val.type === "delete") {
 | 
			
		||||
        this.$confirm(`确定对[名称=${val.data.customerTypeName}]进行删除操作?`, "提示", {
 | 
			
		||||
          confirmButtonText: "确定",
 | 
			
		||||
          cancelButtonText: "取消",
 | 
			
		||||
          type: "warning",
 | 
			
		||||
        })
 | 
			
		||||
          .then(() => {
 | 
			
		||||
            this.$http.delete(this.urlOptions.deleteURL, { data: [val.data.id] }).then(({ data }) => {
 | 
			
		||||
              if (data && data.code === 0) {
 | 
			
		||||
                this.$message({
 | 
			
		||||
                  message: "操作成功",
 | 
			
		||||
                  type: "success",
 | 
			
		||||
                  duration: 1500,
 | 
			
		||||
                  onClose: () => {
 | 
			
		||||
                    this.getDataList();
 | 
			
		||||
                  },
 | 
			
		||||
                });
 | 
			
		||||
              } else {
 | 
			
		||||
                this.$message.error(data.msg);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          })
 | 
			
		||||
          .catch(() => { });
 | 
			
		||||
      } else if (val.type === 'edit') {
 | 
			
		||||
        this.addOrUpdateVisible = true
 | 
			
		||||
        this.addOrEditTitle = this.$t('edit')
 | 
			
		||||
        const obj = {
 | 
			
		||||
          id: val.data.id,
 | 
			
		||||
          detail:false
 | 
			
		||||
        }
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.addOrUpdate.init(obj)
 | 
			
		||||
        })
 | 
			
		||||
      } else if (val.type === 'detail') {
 | 
			
		||||
        this.addOrUpdateVisible = true
 | 
			
		||||
        this.addOrEditTitle = this.$t('detail')
 | 
			
		||||
        const obj = {
 | 
			
		||||
          id: val.data.id,
 | 
			
		||||
          detail: true
 | 
			
		||||
        }
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.addOrUpdate.init(obj)
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // addOrUpdateHandle(productData) {
 | 
			
		||||
    //   this.addOrUpdateVisible = true;
 | 
			
		||||
    //   this.$nextTick(() => {
 | 
			
		||||
    //     this.$refs.addOrUpdate.init(productData);
 | 
			
		||||
    //   });
 | 
			
		||||
    // },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case "search":
 | 
			
		||||
          // this.listQuery.paramCode = val.paramCode;
 | 
			
		||||
          // console.log(i18n);
 | 
			
		||||
          // this.listQuery.code = val.code ? val.code : null
 | 
			
		||||
          // this.listQuery.name = val.name ? val.name : null
 | 
			
		||||
          this.listQuery.page = 1
 | 
			
		||||
          this.getDataList()
 | 
			
		||||
          break;
 | 
			
		||||
        case "export":
 | 
			
		||||
         this.exportHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = this.$t('t.add')
 | 
			
		||||
          this.addOrUpdateVisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.addOrUpdate.init();
 | 
			
		||||
          });
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										281
									
								
								src/views/modules/customerquality/qmsQualityChange.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										281
									
								
								src/views/modules/customerquality/qmsQualityChange.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,281 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-04-17 14:23:17
 | 
			
		||||
 * @LastEditTime: 2023-07-13 14:06:42
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-card shadow="never" class="aui-card--fill">
 | 
			
		||||
    <div class="mod-sys__user">
 | 
			
		||||
      <SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
 | 
			
		||||
        <el-badge :value="5" class="item">
 | 
			
		||||
          <el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button>
 | 
			
		||||
        </el-badge>
 | 
			
		||||
      </SearchBar>
 | 
			
		||||
      <base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
 | 
			
		||||
        :limit="listQuery.limit" :table-data="tableData">
 | 
			
		||||
        <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
          @clickBtn="handleClick" />
 | 
			
		||||
      </base-table>
 | 
			
		||||
      <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
 | 
			
		||||
        @pagination="getDataList" />
 | 
			
		||||
      <!-- 弹窗, 新增 / 修改 -->
 | 
			
		||||
      <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel"
 | 
			
		||||
        @confirm="handleConfirm" :before-close="handleCancel">
 | 
			
		||||
        <qualityChange-add ref="addOrUpdate" @refreshDataList="successSubmit">
 | 
			
		||||
        </qualityChange-add>
 | 
			
		||||
        <!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
 | 
			
		||||
      </base-dialog>
 | 
			
		||||
      <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
 | 
			
		||||
        @confirm="handleSearchConfirm" :before-close="handleSearchCancel">
 | 
			
		||||
        <qualityChange-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit">
 | 
			
		||||
          </qualityChange-search>
 | 
			
		||||
          <el-row slot="footer" type="flex" justify="end">
 | 
			
		||||
            <el-col :span="12">
 | 
			
		||||
              <el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">
 | 
			
		||||
                {{ $t("close") }}
 | 
			
		||||
              </el-button>
 | 
			
		||||
              <el-button size="small" class="btnTextStyle" type="primary" plain @click="handleSearchReset">{{
 | 
			
		||||
                $t("reset")
 | 
			
		||||
                }}</el-button>
 | 
			
		||||
              <el-button type="primary" size="small" class="btnTextStyle" @click="handleSearchConfirm">
 | 
			
		||||
                {{ $t("search") }}
 | 
			
		||||
              </el-button>
 | 
			
		||||
            </el-col>
 | 
			
		||||
          </el-row>
 | 
			
		||||
      </base-dialog>
 | 
			
		||||
    </div>
 | 
			
		||||
  </el-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicPage from "@/mixins/basic-page"
 | 
			
		||||
import basicSearch from "@/mixins/basic-search"
 | 
			
		||||
import qualityChangeSearch from "./components/qualityChangeSearch.vue"
 | 
			
		||||
import qualityChangeAdd from "./components/qualityChange-add.vue"
 | 
			
		||||
import i18n from "@/i18n"
 | 
			
		||||
// import supplier from '@/filters/supplier'
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: "code",
 | 
			
		||||
    label: i18n.t('researchquality.code'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "registrationDate",
 | 
			
		||||
    label: i18n.t('researchquality.registrationDate'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "changeSource",
 | 
			
		||||
    label: i18n.t('researchquality.changeSource'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "owner",
 | 
			
		||||
    label: i18n.t('researchquality.owner'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "category",
 | 
			
		||||
    label: i18n.t('researchquality.category'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "title",
 | 
			
		||||
    label: i18n.t('researchquality.title'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "currentStage",
 | 
			
		||||
    label: i18n.t('researchquality.currentStage'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "productName",
 | 
			
		||||
    label: i18n.t('researchquality.productName'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "qualityChangeStatus",
 | 
			
		||||
    label: i18n.t('researchquality.qualityChangeStatus'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "temporaryChange",
 | 
			
		||||
    label: i18n.t('researchquality.temporaryChange'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
const tableBtn = [
 | 
			
		||||
  {
 | 
			
		||||
    type: "edit",
 | 
			
		||||
    btnName: i18n.t('t.edit'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "delete",
 | 
			
		||||
    btnName: i18n.t('t.delete'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicPage, basicSearch],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        getDataListURL: "/researchquality/qmsQualityChange/page",
 | 
			
		||||
        deleteURL: "/researchquality/qmsQualityChange",
 | 
			
		||||
        exportURL: '/researchquality/qmsQualityChange',
 | 
			
		||||
        // getSupplierTypeListURL: '/supplier/qmsSupplierType/page'
 | 
			
		||||
        // submitURL: '/supplier/qmsSupplierType'
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      ment: '',
 | 
			
		||||
      tableBtn,
 | 
			
		||||
      productData: {},
 | 
			
		||||
      dataForm:{
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      searchOrEditTitle: "",
 | 
			
		||||
      searchOrUpdateVisible: false,
 | 
			
		||||
      productOrEditTitle: "",
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      addOrUpdateVisible: false,
 | 
			
		||||
      productOrUpdateVisible: false,
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: "",
 | 
			
		||||
        //   label: i18n.t("params.paramCode"),
 | 
			
		||||
        //   placeholder: i18n.t("params.paramCode"),
 | 
			
		||||
        //   param: "paramCode",
 | 
			
		||||
        // },
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: "separate",
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          // plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('export'),
 | 
			
		||||
          name: "export",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  components: {
 | 
			
		||||
    qualityChangeSearch,
 | 
			
		||||
    // supplierProduct,
 | 
			
		||||
    qualityChangeAdd
 | 
			
		||||
  },
 | 
			
		||||
  // mounted () {
 | 
			
		||||
  //   this.getData();
 | 
			
		||||
  // },
 | 
			
		||||
  methods: {
 | 
			
		||||
    //search-bar点击
 | 
			
		||||
    handleProductCancel() {
 | 
			
		||||
      this.productOrUpdateVisible = false;
 | 
			
		||||
      this.productOrEditTitle = "";
 | 
			
		||||
    },
 | 
			
		||||
    handleCurrentChange(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      this.productData = val.newVal ? val.newVal : {}
 | 
			
		||||
    },
 | 
			
		||||
    setCurrent(index) {
 | 
			
		||||
      this.$refs.palletTable1.setCurrent("palletTable", index);
 | 
			
		||||
    },
 | 
			
		||||
    // handleSearchCancel() {
 | 
			
		||||
    //   this.searchOrEditTitle = "";
 | 
			
		||||
    //   this.searchOrUpdateVisible = false;
 | 
			
		||||
    // },
 | 
			
		||||
    conditionSearch() {
 | 
			
		||||
      this.searchOrEditTitle = "搜索";
 | 
			
		||||
      this.searchOrUpdateVisible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.searchOrUpdate.init();
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // handleConfirm() {
 | 
			
		||||
    //   this.$refs.addOrUpdate.dataFormSubmitHandle();
 | 
			
		||||
    // },
 | 
			
		||||
    // conditionSearchSubmit() {},
 | 
			
		||||
    conditionSearchSubmit(dataForm) {
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      this.listQuery.supplierName = dataForm.supplierName
 | 
			
		||||
      this.listQuery.page = 1;
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
      this.searchOrUpdateVisible = false;
 | 
			
		||||
      // console.log(11111);
 | 
			
		||||
      // this.conditionSearchSubmit();
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      if (val.type === "delete") {
 | 
			
		||||
        this.$confirm(`确定对[名称=${val.data.customerTypeName}]进行删除操作?`, "提示", {
 | 
			
		||||
          confirmButtonText: "确定",
 | 
			
		||||
          cancelButtonText: "取消",
 | 
			
		||||
          type: "warning",
 | 
			
		||||
        })
 | 
			
		||||
          .then(() => {
 | 
			
		||||
            this.$http.delete(this.urlOptions.deleteURL, { data: [val.data.id] }).then(({ data }) => {
 | 
			
		||||
              if (data && data.code === 0) {
 | 
			
		||||
                this.$message({
 | 
			
		||||
                  message: "操作成功",
 | 
			
		||||
                  type: "success",
 | 
			
		||||
                  duration: 1500,
 | 
			
		||||
                  onClose: () => {
 | 
			
		||||
                    this.getDataList()
 | 
			
		||||
                  },
 | 
			
		||||
                });
 | 
			
		||||
              } else {
 | 
			
		||||
                this.$message.error(data.msg);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          })
 | 
			
		||||
          .catch(() => { });
 | 
			
		||||
      } else if (val.type === 'edit') {
 | 
			
		||||
        this.addOrUpdateVisible = true
 | 
			
		||||
        this.addOrEditTitle = this.$t('edit')
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.addOrUpdate.init(val.data.id);
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // addOrUpdateHandle(productData) {
 | 
			
		||||
    //   this.addOrUpdateVisible = true;
 | 
			
		||||
    //   this.$nextTick(() => {
 | 
			
		||||
    //     this.$refs.addOrUpdate.init(productData);
 | 
			
		||||
    //   });
 | 
			
		||||
    // },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case "search":
 | 
			
		||||
          // this.listQuery.paramCode = val.paramCode;
 | 
			
		||||
          this.listQuery.supplierName = val.supplierName ? val.supplierName : undefined
 | 
			
		||||
          this.listQuery.supplierStatus = val.supplierStatus ? val.supplierStatus : undefined
 | 
			
		||||
          this.listQuery.supplierTypeId = val.supplierTypeId ? val.supplierTypeId : undefined
 | 
			
		||||
          this.listQuery.ment = this.ment ? this.ment : undefined
 | 
			
		||||
          // console.log(i18n);
 | 
			
		||||
          this.listQuery.page = 1;
 | 
			
		||||
          this.getDataList();
 | 
			
		||||
          break;
 | 
			
		||||
        case "export":
 | 
			
		||||
          // this.listQuery.paramCode = val.paramCode;
 | 
			
		||||
          this.exportHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.addOrUpdateVisible = true;
 | 
			
		||||
          this.addOrUpdateHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										292
									
								
								src/views/modules/customerquality/qmsQualityRequirementList.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										292
									
								
								src/views/modules/customerquality/qmsQualityRequirementList.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,292 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-04-17 14:23:17
 | 
			
		||||
 * @LastEditTime: 2023-07-13 11:00:21
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-card shadow="never" class="aui-card--fill">
 | 
			
		||||
    <div class="mod-sys__user">
 | 
			
		||||
      <el-tabs @tab-click="clickTabs" tab-position="left">
 | 
			
		||||
        <el-tab-pane v-for="(item,index) in projectTypeList" :name="item.id" :key="index" :label="item.name">
 | 
			
		||||
          <SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
 | 
			
		||||
          </SearchBar>
 | 
			
		||||
          <base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
 | 
			
		||||
            :limit="listQuery.limit" :table-data="tableData">
 | 
			
		||||
            <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
              @clickBtn="handleClick" />
 | 
			
		||||
          </base-table>
 | 
			
		||||
          <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
 | 
			
		||||
            @pagination="getDataList" />
 | 
			
		||||
        </el-tab-pane>
 | 
			
		||||
      </el-tabs>
 | 
			
		||||
      <!-- 弹窗, 新增 / 修改 -->
 | 
			
		||||
      <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel"
 | 
			
		||||
        @confirm="handleConfirm" :before-close="handleCancel">
 | 
			
		||||
        <qualityRequirementList-add ref="addOrUpdate" @refreshDataList="successSubmit">
 | 
			
		||||
          </qualityRequirementList-add>
 | 
			
		||||
          <!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
 | 
			
		||||
      </base-dialog>
 | 
			
		||||
      <!-- <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
 | 
			
		||||
        @confirm="handleSearchConfirm" :before-close="handleSearchCancel">
 | 
			
		||||
        <supplierProduct-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit">
 | 
			
		||||
        </supplierProduct-search>
 | 
			
		||||
        <el-row slot="footer" type="flex" justify="end">
 | 
			
		||||
          <el-col :span="12">
 | 
			
		||||
            <el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">
 | 
			
		||||
              {{ $t("close") }}
 | 
			
		||||
            </el-button>
 | 
			
		||||
            <el-button size="small" class="btnTextStyle" type="primary" plain @click="handleSearchReset">{{
 | 
			
		||||
              $t("reset")
 | 
			
		||||
              }}</el-button>
 | 
			
		||||
            <el-button type="primary" size="small" class="btnTextStyle" @click="handleSearchConfirm">
 | 
			
		||||
              {{ $t("search") }}
 | 
			
		||||
            </el-button>
 | 
			
		||||
          </el-col>
 | 
			
		||||
        </el-row>
 | 
			
		||||
      </base-dialog> -->
 | 
			
		||||
    </div>
 | 
			
		||||
  </el-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicPage from "@/mixins/basic-page"
 | 
			
		||||
// import basicSearch from "@/mixins/basic-search"
 | 
			
		||||
// import supplierProductSearch from "./components/supplierProductSearch.vue"
 | 
			
		||||
import qualityRequirementListAdd from "./components/qualityRequirementList-add.vue"
 | 
			
		||||
import { timeFormatter } from '@/filters'
 | 
			
		||||
import i18n from "@/i18n"
 | 
			
		||||
// import i18n from "@/i18n";
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: "title",
 | 
			
		||||
    label: i18n.t('researchquality.title')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "description",
 | 
			
		||||
    label: i18n.t('researchquality.description')
 | 
			
		||||
  },
 | 
			
		||||
];
 | 
			
		||||
const tableBtn = [
 | 
			
		||||
  {
 | 
			
		||||
    type: "edit",
 | 
			
		||||
    btnName: i18n.t('t.edit'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "delete",
 | 
			
		||||
    btnName: i18n.t('t.delete'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicPage],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        getDataListURL: "/researchquality/qmsQualityRequirementList/page",
 | 
			
		||||
        deleteURL: "/researchquality/qmsQualityRequirementList",
 | 
			
		||||
        getProjectTypeList: '/researchquality/qmsQualityRequirementListGroup/page'
 | 
			
		||||
        // submitURL: '/supplier/qmsSupplierType'
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      ment: '',
 | 
			
		||||
      tableBtn,
 | 
			
		||||
      productData: {},
 | 
			
		||||
      dataForm:{
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      projectTypeId:null,
 | 
			
		||||
      projectTypeList:[],
 | 
			
		||||
      searchOrEditTitle: "",
 | 
			
		||||
      searchOrUpdateVisible: false,
 | 
			
		||||
      productOrEditTitle: "",
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      addOrUpdateVisible: false,
 | 
			
		||||
      productOrUpdateVisible: false,
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: i18n.t('supplier.name'),
 | 
			
		||||
          placeholder: i18n.t('supplier.name'),
 | 
			
		||||
          param: 'title'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: i18n.t('supplier.code'),
 | 
			
		||||
          placeholder: i18n.t('supplier.code'),
 | 
			
		||||
          param: 'code'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          // plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain: true,
 | 
			
		||||
        },
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  components: {
 | 
			
		||||
    // supplierProductSearch,
 | 
			
		||||
    // supplierProduct,
 | 
			
		||||
    qualityRequirementListAdd
 | 
			
		||||
  },
 | 
			
		||||
  mounted () {
 | 
			
		||||
    this.getData()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    clickTabs(e) {
 | 
			
		||||
      console.log(e)
 | 
			
		||||
      this.requirementListGroupId = e.name
 | 
			
		||||
      this.listQuery.requirementListGroupId = e.name
 | 
			
		||||
      this.getDataList()
 | 
			
		||||
    },
 | 
			
		||||
    getData() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getProjectTypeList, { params: this.listQuery })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
            this.projectTypeList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
    },
 | 
			
		||||
    //search-bar点击
 | 
			
		||||
    handleProductCancel() {
 | 
			
		||||
      this.productOrUpdateVisible = false;
 | 
			
		||||
      this.productOrEditTitle = ""
 | 
			
		||||
    },
 | 
			
		||||
    // handleSearchCancel() {
 | 
			
		||||
    //   this.searchOrEditTitle = "";
 | 
			
		||||
    //   this.searchOrUpdateVisible = false;
 | 
			
		||||
    // },
 | 
			
		||||
    conditionSearch() {
 | 
			
		||||
      this.searchOrEditTitle = "搜索";
 | 
			
		||||
      this.searchOrUpdateVisible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.searchOrUpdate.init();
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    exportHandle() {
 | 
			
		||||
      this.$http.get(this.urlOptions.exportURL, { responseType: 'blob' }, {
 | 
			
		||||
        ...this.dataForm
 | 
			
		||||
      }).then((res) => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        // if (res !== 0) {
 | 
			
		||||
        //   return this.$message.error(res.msg) 
 | 
			
		||||
        // }
 | 
			
		||||
        let fileName = ''
 | 
			
		||||
        const contentDisposition = res.headers['content-disposition']
 | 
			
		||||
        if (contentDisposition) {
 | 
			
		||||
          const temp = res.headers['content-disposition']
 | 
			
		||||
            .split(';')[1]
 | 
			
		||||
            .split('=')[1]
 | 
			
		||||
          // 对文件名乱码转义--【Node.js】使用iconv-lite解决中文乱码
 | 
			
		||||
          fileName = decodeURI(temp)
 | 
			
		||||
          console.log(temp)
 | 
			
		||||
        }
 | 
			
		||||
        const blob = new Blob([res.data])
 | 
			
		||||
        const reader = new FileReader()
 | 
			
		||||
        reader.readAsDataURL(blob)
 | 
			
		||||
        reader.onload = (e) => {
 | 
			
		||||
          const a = document.createElement('a')
 | 
			
		||||
          a.download = fileName
 | 
			
		||||
          a.href = e.target.result
 | 
			
		||||
          document.body.appendChild(a)
 | 
			
		||||
          a.click()
 | 
			
		||||
          document.body.removeChild(a)
 | 
			
		||||
        }
 | 
			
		||||
      }).catch(() => { })
 | 
			
		||||
    },
 | 
			
		||||
    // handleConfirm() {
 | 
			
		||||
    //   this.$refs.addOrUpdate.dataFormSubmitHandle();
 | 
			
		||||
    // },
 | 
			
		||||
    // conditionSearchSubmit() {},
 | 
			
		||||
    conditionSearchSubmit(dataForm) {
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      this.listQuery.supplierName = dataForm.supplierName
 | 
			
		||||
      this.listQuery.page = 1;
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
      this.searchOrUpdateVisible = false;
 | 
			
		||||
      // console.log(11111);
 | 
			
		||||
      // this.conditionSearchSubmit();
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      if (val.type === "delete") {
 | 
			
		||||
        this.$confirm(`确定对[名称=${val.data.customerTypeName}]进行删除操作?`, "提示", {
 | 
			
		||||
          confirmButtonText: "确定",
 | 
			
		||||
          cancelButtonText: "取消",
 | 
			
		||||
          type: "warning",
 | 
			
		||||
        })
 | 
			
		||||
          .then(() => {
 | 
			
		||||
            this.$http.delete(this.urlOptions.deleteURL, { data: [val.data.id] }).then(({ data }) => {
 | 
			
		||||
              if (data && data.code === 0) {
 | 
			
		||||
                this.$message({
 | 
			
		||||
                  message: "操作成功",
 | 
			
		||||
                  type: "success",
 | 
			
		||||
                  duration: 1500,
 | 
			
		||||
                  onClose: () => {
 | 
			
		||||
                    this.getDataList();
 | 
			
		||||
                  },
 | 
			
		||||
                });
 | 
			
		||||
              } else {
 | 
			
		||||
                this.$message.error(data.msg);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          })
 | 
			
		||||
          .catch(() => { });
 | 
			
		||||
      } else if (val.type === 'edit') {
 | 
			
		||||
        this.addOrUpdateVisible = true
 | 
			
		||||
        this.addOrEditTitle = this.$t('edit')
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          const data ={
 | 
			
		||||
            id: val.data.id, 
 | 
			
		||||
            projectTypeId: this.projectTypeId
 | 
			
		||||
          }
 | 
			
		||||
          this.$refs.addOrUpdate.init(data)
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    addOrUpdateHandle() {
 | 
			
		||||
      console.log(this.projectTypeId)
 | 
			
		||||
      this.addOrUpdateVisible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        const data = {
 | 
			
		||||
          projectTypeId: this.projectTypeId
 | 
			
		||||
        }
 | 
			
		||||
        this.$refs.addOrUpdate.init(data)
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case "search":
 | 
			
		||||
          // this.listQuery.paramCode = val.paramCode;
 | 
			
		||||
          this.listQuery.title = val.title ? val.title : undefined
 | 
			
		||||
          this.listQuery.code = val.code ? val.code : undefined
 | 
			
		||||
          // console.log(i18n);
 | 
			
		||||
          this.listQuery.page = 1;
 | 
			
		||||
          this.getDataList();
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.addOrUpdateVisible = true
 | 
			
		||||
          this.addOrUpdateHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -1,12 +1,12 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-05-17 14:21:45
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:11:55
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="150px">
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()" label-width="150px">
 | 
			
		||||
    <el-form-item prop="client" :label="$t('gage.client')">
 | 
			
		||||
      <el-input v-model="dataForm.client" :placeholder="$t('gage.client')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
@@ -241,27 +241,20 @@ export default {
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        // dictLabel: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // dictValue: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // sort: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        name: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        code: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ]
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
@@ -285,7 +278,9 @@ export default {
 | 
			
		||||
    },
 | 
			
		||||
    getData() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getUserList, this.listQuery)
 | 
			
		||||
        .get(this.urlOptions.getUserList, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
@@ -295,7 +290,9 @@ export default {
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        });
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.dictionaryDetailList, this.listQuery)
 | 
			
		||||
        .get(this.urlOptions.dictionaryDetailList, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
@@ -305,7 +302,9 @@ export default {
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getGageTypeList, this.listQuery)
 | 
			
		||||
        .get(this.urlOptions.getGageTypeList, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										374
									
								
								src/views/modules/gage/components/gageGrr-add.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										374
									
								
								src/views/modules/gage/components/gageGrr-add.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,374 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:22:24
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()" label-width="150px">
 | 
			
		||||
    <el-form-item prop="client" :label="$t('gage.client')">
 | 
			
		||||
      <el-input v-model="dataForm.client" :placeholder="$t('gage.client')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="code" :label="$t('gage.code')">
 | 
			
		||||
      <el-input v-model="dataForm.code" :placeholder="$t('gage.code')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="name" :label="$t('gage.name')">
 | 
			
		||||
      <el-input v-model="dataForm.name" :placeholder="$t('gage.name')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="certificateType" :label="$t('gage.certificateType')">
 | 
			
		||||
      <el-select v-model="dataForm.certificateType" :placeholder="$t('gage.certificateType')">
 | 
			
		||||
        <el-option v-for="item in certificateTypeList" :key="item.id" :label="item.name" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="certificateCodeBh" :label="$t('gage.certificateCodeBh')">
 | 
			
		||||
      <el-input v-model="dataForm.certificateCodeBh" :placeholder="$t('gage.certificateCodeBh')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="certificateCode" :label="$t('gage.certificateCode')">
 | 
			
		||||
      <el-input v-model="dataForm.certificateCode" :placeholder="$t('gage.certificateCode')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="gageTypeId" :label="$t('gage.gageTypeName')">
 | 
			
		||||
      <el-select v-model="dataForm.gageTypeId" :placeholder="$t('gage.gageTypeName')">
 | 
			
		||||
        <el-option v-for="item in gageTypeList" :key="item.id" :label="item.name" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="measuringToolSpecification" :label="$t('gage.measuringToolSpecification')">
 | 
			
		||||
      <el-input v-model="dataForm.measuringToolSpecification" :placeholder="$t('gage.measuringToolSpecification')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="measuringToolAccuracy" :label="$t('gage.measuringToolAccuracy')">
 | 
			
		||||
      <el-input v-model="dataForm.measuringToolAccuracy" :placeholder="$t('gage.measuringToolAccuracy')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="description" :label="$t('gage.description')">
 | 
			
		||||
      <el-input v-model="dataForm.description" :placeholder="$t('gage.description')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="equipmentSupplier" :label="$t('gage.supplierName')">
 | 
			
		||||
      <el-input v-model="dataForm.equipmentSupplier" :placeholder="$t('gage.supplierName')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="internalInspectionCycle" :label="$t('gage.internalInspectionCycle')">
 | 
			
		||||
      <el-input v-model="dataForm.internalInspectionCycle" :placeholder="$t('gage.internalInspectionCycle')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="externalInspectionCycle" :label="$t('gage.externalInspectionCycle')">
 | 
			
		||||
      <el-input v-model="dataForm.externalInspectionCycle" :placeholder="$t('gage.externalInspectionCycle')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="internalInspectionTime" :label="$t('gage.internalInspectionTime')">
 | 
			
		||||
      <el-date-picker v-model="dataForm.internalInspectionTime" type="datetime"
 | 
			
		||||
        :placeholder="$t('gage.internalInspectionTime')" format='yyyy-MM-dd HH:mm:ss' valueFormat='yyyy-MM-ddTHH:mm:ss'>
 | 
			
		||||
      </el-date-picker>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="externalInspectionTime" :label="$t('gage.externalInspectionTime')">
 | 
			
		||||
      <el-date-picker v-model="dataForm.externalInspectionTime" type="datetime"
 | 
			
		||||
        :placeholder="$t('gage.externalInspectionTime')" format='yyyy-MM-dd HH:mm:ss' valueFormat='yyyy-MM-ddTHH:mm:ss'>
 | 
			
		||||
      </el-date-picker>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="nextInternalInspectionTime" :label="$t('gage.nextInternalInspectionTime')">
 | 
			
		||||
      <el-date-picker v-model="dataForm.nextInternalInspectionTime" type="datetime"
 | 
			
		||||
        :placeholder="$t('gage.nextInternalInspectionTime')" format='yyyy-MM-dd HH:mm:ss'
 | 
			
		||||
        valueFormat='yyyy-MM-ddTHH:mm:ss'>
 | 
			
		||||
      </el-date-picker>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="nextExternalInspectionTime" :label="$t('gage.nextExternalInspectionTime')">
 | 
			
		||||
      <el-date-picker v-model="dataForm.nextExternalInspectionTime" type="datetime"
 | 
			
		||||
        :placeholder="$t('gage.nextExternalInspectionTime')" format='yyyy-MM-dd HH:mm:ss'
 | 
			
		||||
        valueFormat='yyyy-MM-ddTHH:mm:ss'>
 | 
			
		||||
      </el-date-picker>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="userDepartment" :label="$t('gage.userDepartment')">
 | 
			
		||||
      <el-select v-model="dataForm.userDepartment" :placeholder="$t('gage.userDepartment')">
 | 
			
		||||
        <el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="useLocation" :label="$t('gage.useLocation')">
 | 
			
		||||
      <el-input v-model="dataForm.useLocation" :placeholder="$t('gage.useLocation')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="recipient" :label="$t('gage.recipientName')">
 | 
			
		||||
      <el-select v-model="dataForm.recipient" :placeholder="$t('gage.recipientName')">
 | 
			
		||||
        <el-option v-for="item in userList" :key="item.id" :label="item.realName" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="benchmarkMeasurTool" :label="$t('gage.benchmarkMeasurTool')">
 | 
			
		||||
      <el-radio-group v-model="dataForm.benchmarkMeasurTool">
 | 
			
		||||
        <el-radio :label="0">否</el-radio>
 | 
			
		||||
        <el-radio :label="1">是</el-radio>
 | 
			
		||||
      </el-radio-group>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="belongPerson" :label="$t('gage.belongPersonName')">
 | 
			
		||||
      <el-select v-model="dataForm.belongPerson" :placeholder="$t('gage.belongPersonName')">
 | 
			
		||||
        <el-option v-for="item in userList" :key="item.id" :label="item.realName" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="gageStatus" :label="$t('gage.gageStatus')">
 | 
			
		||||
      <el-select v-model="dataForm.gageStatus" :placeholder="$t('gage.gageStatus')">
 | 
			
		||||
        <el-option v-for="item in gageStatusList" :key="item.id" :label="item.name" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="remark" :label="$t('gage.remark')">
 | 
			
		||||
      <el-input v-model="dataForm.remark" :placeholder="$t('gage.remark')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import debounce from "lodash/debounce";
 | 
			
		||||
import basicAdd from "@/mixins/basic-add";
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicAdd],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        submitURL: "/gage/qmsGage",
 | 
			
		||||
        infoURL: "/gage/qmsGage/{ id }",
 | 
			
		||||
        dictionaryDetailList: '/mutual/qmsDataDictionaryDetail/page',
 | 
			
		||||
        getUserList: '/sys/user/page',
 | 
			
		||||
        getGageTypeList: '/gage/qmsGageType/page',
 | 
			
		||||
      },
 | 
			
		||||
      gageList: [],
 | 
			
		||||
      userList: [],
 | 
			
		||||
      gageTypeList:[],
 | 
			
		||||
      departmentList: [],
 | 
			
		||||
      processList: [
 | 
			
		||||
        {
 | 
			
		||||
          id: 0,
 | 
			
		||||
          name: '未审核'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 1,
 | 
			
		||||
          name: '不同意'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 2,
 | 
			
		||||
          name: '同意'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        gape: 1
 | 
			
		||||
      },
 | 
			
		||||
      gageStatusList: [
 | 
			
		||||
        {
 | 
			
		||||
          id: 0,
 | 
			
		||||
          name:'在用'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 1,
 | 
			
		||||
          name: '备用'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 2,
 | 
			
		||||
          name: '停用'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 3,
 | 
			
		||||
          name: '封存'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 4,
 | 
			
		||||
          name: '报废'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 5,
 | 
			
		||||
          name: '降级使用'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      certificateTypeList: [
 | 
			
		||||
        {
 | 
			
		||||
          id: 0,
 | 
			
		||||
          name: '检定证书'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 1,
 | 
			
		||||
          name: '校准证书'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 2,
 | 
			
		||||
          name: '检测报告'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 3,
 | 
			
		||||
          name: '自校报告'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      visible: false,
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        belongPerson:'1067246875800000001',
 | 
			
		||||
        benchmarkMeasurTool: null,
 | 
			
		||||
        certificateCode: null,
 | 
			
		||||
        certificateCodeBh: null,
 | 
			
		||||
        certificateType: null,
 | 
			
		||||
        client: null,
 | 
			
		||||
        code: null,
 | 
			
		||||
        createDate: null,
 | 
			
		||||
        description: null,
 | 
			
		||||
        equipmentSupplier: null,
 | 
			
		||||
        externalInspectionCycle: null,
 | 
			
		||||
        externalInspectionTime: null,
 | 
			
		||||
        gageStatus: null,
 | 
			
		||||
        gageTypeId: null,
 | 
			
		||||
        id: null,
 | 
			
		||||
        internalInspectionCycle: null,
 | 
			
		||||
        internalInspectionTime: null,
 | 
			
		||||
        measuringToolAccuracy: null,
 | 
			
		||||
        measuringToolSpecification: null,
 | 
			
		||||
        name: null,
 | 
			
		||||
        nextExternalInspectionTime: null,
 | 
			
		||||
        nextInternalInspectionTime: null,
 | 
			
		||||
        recipient: '1067246875800000001',
 | 
			
		||||
        remark: null,
 | 
			
		||||
        updateDate: null,
 | 
			
		||||
        useLocation: null,
 | 
			
		||||
        userDepartment: null,
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        name: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        code: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ]
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  mounted () {
 | 
			
		||||
    this.getData();
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id, ) {
 | 
			
		||||
      this.dataForm.id = id || ""
 | 
			
		||||
      // console.log(11111)
 | 
			
		||||
      // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
      this.visible = true
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields();
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.getInfo()
 | 
			
		||||
        } else {
 | 
			
		||||
          // this.getCode()
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    getData() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getUserList, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
            this.userList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        });
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.dictionaryDetailList, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
            this.departmentList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getGageTypeList, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
            this.gageTypeList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
    },
 | 
			
		||||
    // getCode() {
 | 
			
		||||
    //   this.$http.post(this.urlOptions.getCodeURL)
 | 
			
		||||
    //     .then(({ data: res }) => {
 | 
			
		||||
    //       if (res.code === 0) {
 | 
			
		||||
    //         console.log(res);
 | 
			
		||||
    //         this.dataForm.customSamplingCode = res.data
 | 
			
		||||
    //       }
 | 
			
		||||
    //     })
 | 
			
		||||
    //     .catch(() => {
 | 
			
		||||
    //     });
 | 
			
		||||
    // },
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    getInfo() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(`/gage/qmsGage/${this.dataForm.id}`)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
          }
 | 
			
		||||
          this.dataForm = {
 | 
			
		||||
            ...this.dataForm,
 | 
			
		||||
            ...res.data,
 | 
			
		||||
          };
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => { })
 | 
			
		||||
    },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    dataFormSubmitHandle: debounce(
 | 
			
		||||
      function () {
 | 
			
		||||
        this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
          if (!valid) {
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
          this.$http[!this.dataForm.id ? "post" : "put"](this.urlOptions.submitURL, this.dataForm)
 | 
			
		||||
            .then(({ data: res }) => {
 | 
			
		||||
              if (res.code !== 0) {
 | 
			
		||||
                return this.$message.error(res.msg);
 | 
			
		||||
              }
 | 
			
		||||
              this.$message({
 | 
			
		||||
                message: this.$t("prompt.success"),
 | 
			
		||||
                type: "success",
 | 
			
		||||
                duration: 500,
 | 
			
		||||
                onClose: () => {
 | 
			
		||||
                  console.log(1111);
 | 
			
		||||
                  this.visible = false;
 | 
			
		||||
                  this.$emit("successSubmit");
 | 
			
		||||
                },
 | 
			
		||||
              });
 | 
			
		||||
            })
 | 
			
		||||
            .catch(() => {});
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      1000,
 | 
			
		||||
      { leading: true, trailing: false }
 | 
			
		||||
    ),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -1,12 +1,13 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-07-06 14:59:27
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:42:39
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="150px">
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm"  :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
 | 
			
		||||
    label-width="150px">
 | 
			
		||||
    <el-row>
 | 
			
		||||
      <el-col :span="8">
 | 
			
		||||
        <el-form-item prop="partName" :label="$t('gage.partName')">
 | 
			
		||||
@@ -333,27 +334,34 @@ export default {
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        // dictLabel: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // dictValue: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // sort: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        publicErrand: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        gageId: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "change",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        measurementNumber: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        partNumber: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ]
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2023-01-04 10:29:40
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2023-05-10 16:18:12
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:19:08
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -151,7 +151,9 @@ export default {
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    getDict() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getGageTypeList, this.listQuery)
 | 
			
		||||
        .get(this.urlOptions.getGageTypeList, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2023-01-04 10:29:40
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2023-05-10 16:17:59
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:13:44
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -126,6 +126,9 @@ export default {
 | 
			
		||||
    //   };
 | 
			
		||||
    // },
 | 
			
		||||
  },
 | 
			
		||||
  mounted () {
 | 
			
		||||
    this.getDict();
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    // init(id) {
 | 
			
		||||
    //   this.dataForm.id = id || "";
 | 
			
		||||
@@ -155,7 +158,9 @@ export default {
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    getDict() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getGageTypeList, this.listQuery)
 | 
			
		||||
        .get(this.urlOptions.getGageTypeList, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
@@ -165,7 +170,9 @@ export default {
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getUserList, this.listQuery)
 | 
			
		||||
        .get(this.urlOptions.getUserList, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,12 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-05-30 14:39:38
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:01:54
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="150px">
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()" label-width="150px">
 | 
			
		||||
    <el-form-item prop="code" :label="$t('gage.code')">
 | 
			
		||||
      <el-input v-model="dataForm.code" :placeholder="$t('gage.code')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
@@ -75,27 +75,20 @@ export default {
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        // dictLabel: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // dictValue: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // sort: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        code: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        name: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ]
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,13 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-05-17 14:50:02
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:03:49
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="150px">
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
 | 
			
		||||
    label-width="150px">
 | 
			
		||||
    <el-form-item prop="code" :label="$t('gage.code')">
 | 
			
		||||
      <el-input v-model="dataForm.code" :placeholder="$t('gage.code')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
@@ -88,34 +89,28 @@ export default {
 | 
			
		||||
        serialNo: null,
 | 
			
		||||
        sl: null,
 | 
			
		||||
        updateDate: null,
 | 
			
		||||
        usl: null,	
 | 
			
		||||
        usl: null,
 | 
			
		||||
        code:null
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        // dictLabel: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // dictValue: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // sort: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        name: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        code: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ]
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,13 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-05-11 09:50:14
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:42:52
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="150px">
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
 | 
			
		||||
    label-width="150px">
 | 
			
		||||
    <el-form-item prop="client" :label="$t('gage.client')">
 | 
			
		||||
      <el-input v-model="dataForm.client" :placeholder="$t('gage.client')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
@@ -118,7 +119,7 @@ export default {
 | 
			
		||||
      ],
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        gape: 1
 | 
			
		||||
        page: 1
 | 
			
		||||
      },
 | 
			
		||||
      gageStatusList: [
 | 
			
		||||
        {
 | 
			
		||||
@@ -190,32 +191,18 @@ export default {
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        // dictLabel: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // dictValue: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // sort: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        gageId: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ]
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  mounted () {
 | 
			
		||||
    this.getData();
 | 
			
		||||
    this.getData()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id, ) {
 | 
			
		||||
@@ -234,7 +221,9 @@ export default {
 | 
			
		||||
    },
 | 
			
		||||
    getData() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getUserList, this.listQuery)
 | 
			
		||||
        .get(this.urlOptions.getUserList, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
@@ -244,7 +233,9 @@ export default {
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        });
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.dictionaryDetailList, this.listQuery)
 | 
			
		||||
        .get(this.urlOptions.dictionaryDetailList, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
@@ -254,7 +245,9 @@ export default {
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getGageList, this.listQuery)
 | 
			
		||||
        .get(this.urlOptions.getGageList, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2023-01-04 10:29:40
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2023-05-11 10:13:33
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:14:34
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -83,7 +83,7 @@ export default {
 | 
			
		||||
        gageId: null,
 | 
			
		||||
        startTime: null,
 | 
			
		||||
        endTime: null,
 | 
			
		||||
 | 
			
		||||
        parityBit:null
 | 
			
		||||
      },
 | 
			
		||||
      options: [{
 | 
			
		||||
        value: 0,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +1,14 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-05-18 15:30:28
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:50:25
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <div>
 | 
			
		||||
    <el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="150px">
 | 
			
		||||
    <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
 | 
			
		||||
      label-width="150px">
 | 
			
		||||
      <el-form-item prop="gageId" :label="$t('gage.gageName')">
 | 
			
		||||
        <el-select v-model="dataForm.gageId" :placeholder="$t('gage.gageName')">
 | 
			
		||||
          <el-option v-for="item in gageList" :key="item.id" :label="item.name" :value="item.id">
 | 
			
		||||
@@ -76,7 +77,8 @@
 | 
			
		||||
        </el-input>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
    </el-form>
 | 
			
		||||
    <el-form v-if="detectionShow && showForm" :model="parameterData" ref="parameterData" label-width="150px">
 | 
			
		||||
    <el-form v-if="detectionShow && showForm"  :model="parameterData" ref="parameterData"
 | 
			
		||||
      label-width="150px">
 | 
			
		||||
      <el-form-item prop="parameter" :label="$t('gage.parameter')">
 | 
			
		||||
        <el-select v-model="dataForm.parameter" :placeholder="$t('gage.parameter')">
 | 
			
		||||
          <el-option v-for="item in parameterList" :key="item.id" :label="item.name" :value="item.id">
 | 
			
		||||
@@ -201,7 +203,7 @@ export default {
 | 
			
		||||
        id: null,
 | 
			
		||||
        expectedReturnDate:null,
 | 
			
		||||
        gageCode: null,
 | 
			
		||||
        gageId: '',
 | 
			
		||||
        gageId: null,
 | 
			
		||||
        measuringToolSpecification:null,
 | 
			
		||||
        measurToolEvent: null,
 | 
			
		||||
        process: null,
 | 
			
		||||
@@ -218,27 +220,27 @@ export default {
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        // dictLabel: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // dictValue: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // sort: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        gageId: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        measurToolEvent: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "change",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        process: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-11 09:24:58
 | 
			
		||||
 * @LastEditTime: 2023-06-20 15:36:34
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:10:22
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -189,13 +189,15 @@ export default {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain:true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('export'),
 | 
			
		||||
          name: "export",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          plain: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-11 09:24:58
 | 
			
		||||
 * @LastEditTime: 2023-06-28 14:27:57
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:31:24
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -9,9 +9,9 @@
 | 
			
		||||
  <el-card shadow="never" class="aui-card--fill">
 | 
			
		||||
    <div class="mod-sys__user">
 | 
			
		||||
      <SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
 | 
			
		||||
        <el-badge :value="6" class="item">
 | 
			
		||||
        <!-- <el-badge :value="6" class="item">
 | 
			
		||||
          <el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button>
 | 
			
		||||
        </el-badge>
 | 
			
		||||
        </el-badge> -->
 | 
			
		||||
      </SearchBar>
 | 
			
		||||
      <base-table :table-props="tableProps" :page="listQuery.page" :limit="listQuery.limit" :table-data="tableData">
 | 
			
		||||
        <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
@@ -169,33 +169,51 @@ export default {
 | 
			
		||||
      searchOrEditTitle: '',
 | 
			
		||||
      searchOrUpdateVisible: false,
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: "",
 | 
			
		||||
        //   label: i18n.t("params.paramCode"),
 | 
			
		||||
        //   placeholder: i18n.t("params.paramCode"),
 | 
			
		||||
        //   param: "paramCode",
 | 
			
		||||
        // },
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: "separate",
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: i18n.t('gage.gageName'),
 | 
			
		||||
          placeholder: i18n.t('gage.gageName'),
 | 
			
		||||
          param: 'gageName'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('export'),
 | 
			
		||||
          name: "export",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: i18n.t('gage.partName'),
 | 
			
		||||
          placeholder: i18n.t('gage.partName'),
 | 
			
		||||
          param: 'partName'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'datePicker',
 | 
			
		||||
          label: i18n.t('time'),
 | 
			
		||||
          dateType: 'datetimerange',
 | 
			
		||||
          format: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
          valueFormat: 'yyyy-MM-ddTHH:mm:ss',
 | 
			
		||||
          rangeSeparator: '-',
 | 
			
		||||
          startPlaceholder: '开始时间',
 | 
			
		||||
          endPlaceholder: '结束时间',
 | 
			
		||||
          param: 'timeSlot',
 | 
			
		||||
          width: 350
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
        }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain:true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('export'),
 | 
			
		||||
          name: "export",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          plain: true
 | 
			
		||||
        },
 | 
			
		||||
       
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
@@ -245,12 +263,6 @@ export default {
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    conditionSearchSubmit(dataForm) {
 | 
			
		||||
      this.listQuery.code = dataForm.code
 | 
			
		||||
      this.listQuery.name = dataForm.name
 | 
			
		||||
      this.listQuery.measuringToolAccuracy = dataForm.measuringToolAccuracy
 | 
			
		||||
      this.listQuery.gageStatus = dataForm.gageStatus
 | 
			
		||||
      this.listQuery.belongPerson = dataForm.belongPerson
 | 
			
		||||
      this.listQuery.gageTypeId = dataForm.gageTypeId
 | 
			
		||||
      this.listQuery.page = 1;
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
      this.searchOrUpdateVisible = false;
 | 
			
		||||
@@ -308,6 +320,10 @@ export default {
 | 
			
		||||
        case "search":
 | 
			
		||||
          // this.listQuery.paramCode = val.paramCode;
 | 
			
		||||
          this.listQuery.page = 1
 | 
			
		||||
          this.listQuery.gageName = val.gageName ? val.gageName : null
 | 
			
		||||
          this.listQuery.partName = val.partName ? val.partName : null
 | 
			
		||||
          this.listQuery.endTime = val.timeSlot ? val.timeSlot[1] : null 
 | 
			
		||||
          this.listQuery.startTime = val.timeSlot ? val.timeSlot[0] : null
 | 
			
		||||
          this.getDataList();
 | 
			
		||||
          break; 
 | 
			
		||||
        case "export":
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-05-08 11:11:06
 | 
			
		||||
 * @LastEditTime: 2023-06-20 15:36:23
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:18:15
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
  <el-card shadow="never" class="aui-card--fill">
 | 
			
		||||
    <div class="mod-sys__user">
 | 
			
		||||
      <SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
 | 
			
		||||
        <el-badge :value="1" class="item">
 | 
			
		||||
        <el-badge :value="6" class="item">
 | 
			
		||||
          <el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button>
 | 
			
		||||
        </el-badge>
 | 
			
		||||
      </SearchBar>
 | 
			
		||||
@@ -160,13 +160,14 @@ export default {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain:true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          color: "primary"
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-11 09:24:58
 | 
			
		||||
 * @LastEditTime: 2023-06-20 15:36:19
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:04:50
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -130,7 +130,8 @@ export default {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain:true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-05-08 10:31:11
 | 
			
		||||
 * @LastEditTime: 2023-06-20 15:36:15
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:05:15
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -135,7 +135,8 @@ export default {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain:true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-11 09:24:58
 | 
			
		||||
 * @LastEditTime: 2023-06-20 15:36:10
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:16:52
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -185,24 +185,26 @@ export default {
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: "separate",
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain:true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('export'),
 | 
			
		||||
          name: "export",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          plain: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-11 09:24:58
 | 
			
		||||
 * @LastEditTime: 2023-06-12 13:49:44
 | 
			
		||||
 * @LastEditTime: 2023-07-13 09:31:48
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -108,16 +108,17 @@ export default {
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('export'),
 | 
			
		||||
          name: "export",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          btnName: i18n.t('export'),
 | 
			
		||||
          name: "export",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
        }
 | 
			
		||||
          plain:true
 | 
			
		||||
        } 
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +1,13 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-31 14:12:10
 | 
			
		||||
 * @LastEditTime: 2023-05-15 14:28:35
 | 
			
		||||
 * @LastEditTime: 2023-07-13 10:00:19
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <span>
 | 
			
		||||
    <el-button type="text" @click="getExperienceDetail">{{ $t('oss.type1') }}} </el-button>
 | 
			
		||||
    <el-button type="text" @click="getExperienceDetail">{{ $t('oss.type1') }} </el-button>
 | 
			
		||||
  </span>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-05-15 14:27:30
 | 
			
		||||
 * @LastEditTime: 2023-05-15 14:27:31
 | 
			
		||||
 * @LastEditTime: 2023-07-13 10:00:09
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <span>
 | 
			
		||||
    <el-button type="text" @click="getInspectionDetail">{{ $t('oss.type1') }}} </el-button>
 | 
			
		||||
    <el-button type="text" @click="getInspectionDetail">{{ $t('oss.type1') }} </el-button>
 | 
			
		||||
  </span>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +1,13 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-31 14:12:10
 | 
			
		||||
 * @LastEditTime: 2023-05-15 14:09:30
 | 
			
		||||
 * @LastEditTime: 2023-07-13 10:00:12
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <span>
 | 
			
		||||
    <el-button type="text" @click="getInspectionDetail">{{ $t('oss.type1') }}} </el-button>
 | 
			
		||||
    <el-button type="text" @click="getInspectionDetail">{{ $t('oss.type1') }} </el-button>
 | 
			
		||||
  </span>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-05-08 11:11:06
 | 
			
		||||
 * @LastEditTime: 2023-06-20 15:35:38
 | 
			
		||||
 * @LastEditTime: 2023-07-13 10:00:36
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -123,15 +123,16 @@ export default {
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain:true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-11 09:24:58
 | 
			
		||||
 * @LastEditTime: 2023-06-20 15:35:33
 | 
			
		||||
 * @LastEditTime: 2023-07-13 10:01:15
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -127,23 +127,25 @@ export default {
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: "separate",
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('export'),
 | 
			
		||||
          name: "export",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-11 09:24:58
 | 
			
		||||
 * @LastEditTime: 2023-06-20 15:35:30
 | 
			
		||||
 * @LastEditTime: 2023-07-13 10:01:40
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -126,15 +126,16 @@ export default {
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-11 09:24:58
 | 
			
		||||
 * @LastEditTime: 2023-06-20 15:35:25
 | 
			
		||||
 * @LastEditTime: 2023-07-13 10:11:46
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -124,23 +124,25 @@ export default {
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: "separate",
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain:true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('export'),
 | 
			
		||||
          name: "export",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-05-09 13:56:57
 | 
			
		||||
 * @LastEditTime: 2023-07-14 09:45:40
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -76,9 +76,9 @@ export default {
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id, moduleDataDictionaryId ) {
 | 
			
		||||
      this.dataForm.id = id || ""
 | 
			
		||||
      this.dataForm.moduleDataDictionaryId = moduleDataDictionaryId || ""
 | 
			
		||||
    init(obj) {
 | 
			
		||||
      this.dataForm.id = obj.id || ""
 | 
			
		||||
      this.dataForm.moduleDataDictionaryId = obj.moduleDataDictionaryId || ""
 | 
			
		||||
      // console.log(11111)
 | 
			
		||||
      // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
      this.visible = true
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-05-09 13:56:28
 | 
			
		||||
 * @LastEditTime: 2023-07-14 09:54:18
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -39,8 +39,8 @@ export default {
 | 
			
		||||
      addButtonShow:'新增',
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        id: null,
 | 
			
		||||
        dataDictionaryCode: null,
 | 
			
		||||
        dataDictionaryName: null,
 | 
			
		||||
        dataDictionaryDetailName: null,
 | 
			
		||||
        dataDictionaryDetailCode: null,
 | 
			
		||||
        dataDictionaryId:null
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
@@ -76,9 +76,9 @@ export default {
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id, dataDictionaryId ) {
 | 
			
		||||
      this.dataForm.id = id || ""
 | 
			
		||||
      this.dataForm.dataDictionaryId = dataDictionaryId || ""
 | 
			
		||||
    init(obj) {
 | 
			
		||||
      this.dataForm.id = obj.id || ""
 | 
			
		||||
      this.dataForm.dataDictionaryId = obj.dataDictionaryId || ""
 | 
			
		||||
      // console.log(11111)
 | 
			
		||||
      // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
      this.visible = true
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-11 09:24:58
 | 
			
		||||
 * @LastEditTime: 2023-06-20 15:34:26
 | 
			
		||||
 * @LastEditTime: 2023-07-14 09:53:37
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -143,7 +143,7 @@ export default {
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    //search-bar点击
 | 
			
		||||
    // search-bar点击
 | 
			
		||||
    handleProductCancel() {
 | 
			
		||||
      this.productOrUpdateVisible = false;
 | 
			
		||||
      this.productOrEditTitle = "";
 | 
			
		||||
@@ -195,10 +195,14 @@ export default {
 | 
			
		||||
          .catch(() => { });
 | 
			
		||||
      } else if (val.type === 'edit') {
 | 
			
		||||
        this.addOrEditTitle = this.$t('edit')
 | 
			
		||||
        this.addOrUpdateVisible = true;
 | 
			
		||||
        this.addOrUpdateVisible = true
 | 
			
		||||
        const obj = {
 | 
			
		||||
          id: val.data.id,
 | 
			
		||||
          moduleDataDictionaryId: this.listQuery.moduleDataDictionaryId
 | 
			
		||||
        }
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.addOrUpdate.init(val.data.id, this.listQuery.moduleDataDictionaryId);
 | 
			
		||||
        });
 | 
			
		||||
          this.$refs.addOrUpdate.init(obj)
 | 
			
		||||
        })
 | 
			
		||||
      } else if (val.type === 'detail') {
 | 
			
		||||
        this.$router.push({
 | 
			
		||||
          name: 'mutual-qmsDataDictionaryDetail',
 | 
			
		||||
@@ -222,8 +226,13 @@ export default {
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.addOrUpdateVisible = true;
 | 
			
		||||
          this.addOrUpdateHandle()
 | 
			
		||||
          this.addOrUpdateVisible = true
 | 
			
		||||
          const obj = {
 | 
			
		||||
            moduleDataDictionaryId: this.listQuery.moduleDataDictionaryId
 | 
			
		||||
          }
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.addOrUpdate.init(obj)
 | 
			
		||||
          })
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
          console.log(val)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-11 09:24:58
 | 
			
		||||
 * @LastEditTime: 2023-06-20 15:35:08
 | 
			
		||||
 * @LastEditTime: 2023-07-14 09:53:46
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -191,9 +191,13 @@ export default {
 | 
			
		||||
      } else if (val.type === 'edit') {
 | 
			
		||||
        this.addOrUpdateVisible = true
 | 
			
		||||
        this.addOrEditTitle = this.$t('edit')
 | 
			
		||||
        const obj = {
 | 
			
		||||
          id: val.data.id,
 | 
			
		||||
          dataDictionaryId: this.listQuery.dataDictionaryId
 | 
			
		||||
        }
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.addOrUpdate.init(val.data.id, this.listQuery.dataDictionaryId);
 | 
			
		||||
        });
 | 
			
		||||
          this.$refs.addOrUpdate.init(obj)
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
@@ -209,9 +213,14 @@ export default {
 | 
			
		||||
          this.exportHandle();
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.addOrUpdateVisible = true;
 | 
			
		||||
          this.addOrUpdateHandle()
 | 
			
		||||
          this.addOrEditTitle = this.$t('add')
 | 
			
		||||
          const obj = {
 | 
			
		||||
            dataDictionaryId: this.listQuery.dataDictionaryId
 | 
			
		||||
          }
 | 
			
		||||
          this.addOrUpdateVisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.addOrUpdate.init(obj)
 | 
			
		||||
          })
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
          console.log(val)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										41
									
								
								src/views/modules/researchquality/components/available.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/views/modules/researchquality/components/available.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-31 09:49:36
 | 
			
		||||
 * @LastEditTime: 2023-07-11 14:31:18
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <span>
 | 
			
		||||
    <el-tag v-if="injectData.supplierTypeStatus === 1" type="success">可用</el-tag>
 | 
			
		||||
    <el-tag v-else type="warning">不可用</el-tag>
 | 
			
		||||
  </span>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
// import { addDynamicRoute } from '@/router'
 | 
			
		||||
export default {
 | 
			
		||||
  props: {
 | 
			
		||||
    injectData: {
 | 
			
		||||
      type: Object,
 | 
			
		||||
      default: () => ({})
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    // 子级
 | 
			
		||||
    // emitClick () {
 | 
			
		||||
    //   // 路由参数
 | 
			
		||||
    //   const routeParams = {
 | 
			
		||||
    //     routeName: `${this.$route.name}__${this.injectData.id}`,
 | 
			
		||||
    //     title: `${this.$route.meta.title} - ${this.injectData.dictType}`,
 | 
			
		||||
    //     path: 'sys/dict-data',
 | 
			
		||||
    //     params: {
 | 
			
		||||
    //       dictTypeId: this.injectData.id
 | 
			
		||||
    //     }
 | 
			
		||||
    //   }
 | 
			
		||||
    //   // 动态路由
 | 
			
		||||
    //   addDynamicRoute(routeParams, this.$router)
 | 
			
		||||
    // }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										78
									
								
								src/views/modules/researchquality/components/innerTable.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								src/views/modules/researchquality/components/innerTable.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-04-18 09:19:02
 | 
			
		||||
 * @LastEditTime: 2023-04-18 14:24:53
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-popover placement="right" width="400" trigger="click">
 | 
			
		||||
    <base-table id="palletTable" :table-props="tableProps" ref="palletTable1"
 | 
			
		||||
      :table-data="tableData" >
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <i slot="reference" class="el-icon-plus" @click="showInnerTable(injectData.id)"/>
 | 
			
		||||
  </el-popover>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import i18n from "@/i18n"
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: "contact",
 | 
			
		||||
    label: i18n.t('supplier.contact'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "contactEmail",
 | 
			
		||||
    label: i18n.t('supplier.contactEmail')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "contactPhone",
 | 
			
		||||
    label: i18n.t('supplier.contactPhone')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "enterpriseNature",
 | 
			
		||||
    label: i18n.t('supplier.enterpriseNature')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "industry",
 | 
			
		||||
    label: i18n.t('supplier.industry')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "productService",
 | 
			
		||||
    label: i18n.t('supplier.productService')
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'InnerTable',
 | 
			
		||||
  props: {
 | 
			
		||||
    injectData: {
 | 
			
		||||
      type: Object,
 | 
			
		||||
      default: () => ({})
 | 
			
		||||
    },
 | 
			
		||||
    itemProp: {
 | 
			
		||||
      type: String
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      tableProps,
 | 
			
		||||
      list: this.injectData,
 | 
			
		||||
      tableData: []
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    showInnerTable(id) {
 | 
			
		||||
      console.log(id)
 | 
			
		||||
      this.tableData = [
 | 
			
		||||
        {
 | 
			
		||||
          contact: this.injectData.contact,
 | 
			
		||||
          contactEmail: this.injectData.contactEmail,
 | 
			
		||||
          contactPhone: this.injectData.contactPhone,
 | 
			
		||||
          enterpriseNature: this.injectData.enterpriseNature,
 | 
			
		||||
          industry: this.injectData.industry,
 | 
			
		||||
          productService: this.injectData.productService
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,357 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-07-14 15:21:15
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
 | 
			
		||||
    label-width="120px">
 | 
			
		||||
    <el-form-item prop="registrationDate" :label="$t('researchquality.registrationDate')">
 | 
			
		||||
      <el-date-picker v-model="dataForm.registrationDate" type="datetime"
 | 
			
		||||
        :placeholder="$t('researchquality.registrationDate')">
 | 
			
		||||
      </el-date-picker>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="changeSource" :label="$t('researchquality.changeSource')">
 | 
			
		||||
      <el-select v-model="dataForm.changeSource" :placeholder="$t('researchquality.changeSource')">
 | 
			
		||||
        <el-option v-for="item in changeSourceList" :key="item.id" :label="item.name" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="sourceRemark" :label="$t('researchquality.sourceRemark')">
 | 
			
		||||
      <el-input v-model="dataForm.sourceRemark" :placeholder="$t('researchquality.sourceRemark')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="owner" :label="$t('researchquality.owner')">
 | 
			
		||||
      <el-select v-model="dataForm.owner" :placeholder="$t('researchquality.owner')">
 | 
			
		||||
        <el-option v-for="item in userList" :key="item.id" :label="item.realName" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="title" :label="$t('researchquality.title')">
 | 
			
		||||
      <el-input v-model="dataForm.title" :placeholder="$t('researchquality.title')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="processList" :label="$t('researchquality.processName')">
 | 
			
		||||
      <el-select @change="getProcessList" v-model="dataForm.processList" multiple :placeholder="$t('researchquality.processName')">
 | 
			
		||||
        <el-option v-for="item in processList" :key="item.id" :label="item.processName" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="productId" :label="$t('researchquality.productName')">
 | 
			
		||||
      <el-select v-model="dataForm.productId" :placeholder="$t('researchquality.productName')">
 | 
			
		||||
        <el-option v-for="item in productList" :key="item.id" :label="item.productName" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="productTypeList" :label="$t('researchquality.productTypeName')">
 | 
			
		||||
      <el-select v-model="dataForm.productTypeList" multiple :placeholder="$t('researchquality.productTypeName')">
 | 
			
		||||
        <el-option v-for="item in productTypeList" :key="item.id" :label="item.productTypeName" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="temporaryChange" :label="$t('researchquality.temporaryChange')">
 | 
			
		||||
      <el-switch v-model="dataForm.temporaryChange" :active-value="1" :inactive-value="0"></el-switch>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <!-- <el-row :gutter="20">
 | 
			
		||||
      <el-col :span="12"> {{ this.$t('researchquality.planPhase') }} </el-col>
 | 
			
		||||
      <el-col :span="12"> {{ this.$t('researchquality.planTime') }} </el-col>
 | 
			
		||||
    </el-row> -->
 | 
			
		||||
    <el-row :gutter="24">
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageOneName" :label="$t('researchquality.stageOneName')">
 | 
			
		||||
          <el-input v-model="dataForm.stageOneName" :placeholder="$t('researchquality.stageOneName')">
 | 
			
		||||
          </el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageOneDate" :label="$t('researchquality.stageOneDate')">
 | 
			
		||||
          <el-date-picker v-model="dataForm.stageOneDate" type="datetime"
 | 
			
		||||
            :placeholder="$t('researchquality.stageOneDate')">
 | 
			
		||||
          </el-date-picker>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <el-row :gutter="24">
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageTwoName" :label="$t('researchquality.stageTwoName')">
 | 
			
		||||
          <el-input v-model="dataForm.stageTwoName" :placeholder="$t('researchquality.stageTwoName')">
 | 
			
		||||
          </el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageTwoDate" :label="$t('researchquality.stageTwoDate')">
 | 
			
		||||
          <el-date-picker v-model="dataForm.stageTwoDate" type="datetime"
 | 
			
		||||
            :placeholder="$t('researchquality.stageTwoDate')">
 | 
			
		||||
          </el-date-picker>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <el-row :gutter="24">
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageThreeName" :label="$t('researchquality.stageThreeName')">
 | 
			
		||||
          <el-input v-model="dataForm.stageThreeName" :placeholder="$t('researchquality.stageThreeName')">
 | 
			
		||||
          </el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageThreeDate" :label="$t('researchquality.stageThreeDate')">
 | 
			
		||||
          <el-date-picker v-model="dataForm.stageThreeDate" type="datetime"
 | 
			
		||||
            :placeholder="$t('researchquality.stageThreeDate')">
 | 
			
		||||
          </el-date-picker>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <el-row :gutter="24">
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageFourName" :label="$t('researchquality.stageFourName')">
 | 
			
		||||
          <el-input v-model="dataForm.stageFourName" :placeholder="$t('researchquality.stageFourName')">
 | 
			
		||||
          </el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item prop="stageFourDate" :label="$t('researchquality.stageFourDate')">
 | 
			
		||||
          <el-date-picker v-model="dataForm.stageFourDate" type="datetime"
 | 
			
		||||
            :placeholder="$t('researchquality.stageFourDate')">
 | 
			
		||||
          </el-date-picker>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <!-- <el-form-item prop="productTypeStatus" :label="$t('basic.status')">
 | 
			
		||||
      <el-select v-model="dataForm.productTypeStatus" :placeholder="$t('basic.status')">
 | 
			
		||||
        <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item> -->
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import debounce from "lodash/debounce";
 | 
			
		||||
import basicAdd from "@/mixins/basic-add";
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicAdd],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        submitURL: "/researchquality/qmsQualityChange",
 | 
			
		||||
        infoURL: "/researchquality/qmsQualityChange/{id}",
 | 
			
		||||
        getUserURL: '/sys/user/page',
 | 
			
		||||
        getProcessURL: '/basic/qmsProcess/page',
 | 
			
		||||
        getProductURL: '/basic/qmsProduct/page',
 | 
			
		||||
        getProductTypeURL: '/basic/qmsProductType/page',
 | 
			
		||||
        getSupplierTypeListURL: '/supplier/qmsSupplierType/page'
 | 
			
		||||
      },
 | 
			
		||||
      userList: [],
 | 
			
		||||
      processList: [],
 | 
			
		||||
      productTypeList: [],
 | 
			
		||||
      productList: [],
 | 
			
		||||
      changeSourceList: [
 | 
			
		||||
        {
 | 
			
		||||
          id: 0,
 | 
			
		||||
          name: '工程变更'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 1,
 | 
			
		||||
          name: '设计变更'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id: 2,
 | 
			
		||||
          name: 'CCB'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      visible: false,
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        id: "",
 | 
			
		||||
        changeSource:null,
 | 
			
		||||
        currentStage: null,
 | 
			
		||||
        owner: null,
 | 
			
		||||
        productId: null,
 | 
			
		||||
        productName: null,
 | 
			
		||||
        qualityChangeStatus: null,
 | 
			
		||||
        registrationDate: null,
 | 
			
		||||
        sourceRemark: null,
 | 
			
		||||
        stageFourDate: null,
 | 
			
		||||
        stageFourName: null,
 | 
			
		||||
        stageOneDate: null,
 | 
			
		||||
        stageOneName: null,
 | 
			
		||||
        stageThreeDate: null,
 | 
			
		||||
        stageThreeName: null,
 | 
			
		||||
        productTypeList: [],
 | 
			
		||||
        processList: [],
 | 
			
		||||
        stageTwoDate: null,
 | 
			
		||||
        stageTwoName: null,
 | 
			
		||||
        temporaryChange: null,
 | 
			
		||||
        title: null,
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        registrationDate: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "change",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        changeSource: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "change",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        title: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "change",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        processList: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "change",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        productTypeList: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "change",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        productId: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "change",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  mounted () {
 | 
			
		||||
    this.getDict();
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id, ) {
 | 
			
		||||
      this.dataForm.id = id || ""
 | 
			
		||||
      // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields();
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.getInfo();
 | 
			
		||||
        } else {
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    getDict() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getUserURL, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res);
 | 
			
		||||
            this.userList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getProcessURL, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res);
 | 
			
		||||
            this.processList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getProductURL, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res);
 | 
			
		||||
            this.productList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getProductTypeURL, {
 | 
			
		||||
          params: this.listQuery
 | 
			
		||||
        })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res);
 | 
			
		||||
            this.productTypeList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
    },
 | 
			
		||||
    getProcessList(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
    },
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    getInfo() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(`/researchquality/qmsQualityChange/${this.dataForm.id}`)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
          }
 | 
			
		||||
          this.dataForm = {
 | 
			
		||||
            ...this.dataForm,
 | 
			
		||||
            ...res.data,
 | 
			
		||||
          };
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    dataFormSubmitHandle: debounce(
 | 
			
		||||
      function () {
 | 
			
		||||
        this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
          if (!valid) {
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
          this.$http[!this.dataForm.id ? "post" : "put"](this.urlOptions.submitURL, this.dataForm)
 | 
			
		||||
            .then(({ data: res }) => {
 | 
			
		||||
              if (res.code !== 0) {
 | 
			
		||||
                return this.$message.error(res.msg);
 | 
			
		||||
              }
 | 
			
		||||
              this.$message({
 | 
			
		||||
                message: this.$t("prompt.success"),
 | 
			
		||||
                type: "success",
 | 
			
		||||
                duration: 500,
 | 
			
		||||
                onClose: () => {
 | 
			
		||||
                  console.log(1111);
 | 
			
		||||
                  this.visible = false;
 | 
			
		||||
                  this.$emit("successSubmit");
 | 
			
		||||
                },
 | 
			
		||||
              });
 | 
			
		||||
            })
 | 
			
		||||
            .catch(() => {});
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      1000,
 | 
			
		||||
      { leading: true, trailing: false }
 | 
			
		||||
    ),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,125 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-21 14:44:31
 | 
			
		||||
 * @LastEditTime: 2023-04-14 16:29:53
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="120px">
 | 
			
		||||
    <el-form-item prop="supplierName" :label="$t('supplier.supplierName')">
 | 
			
		||||
      <el-input v-model="dataForm.supplierName" :placeholder="$t('supplier.supplierName')" clearable></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import debounce from "lodash/debounce";
 | 
			
		||||
import basicAdd from "@/mixins/basic-add";
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicAdd],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      // urlOptions: {
 | 
			
		||||
      //   submitURL: "/sys/params/",
 | 
			
		||||
      //   infoURL: "/sys/params",
 | 
			
		||||
      // },
 | 
			
		||||
      visible: false,
 | 
			
		||||
      options: [{
 | 
			
		||||
        value: '0',
 | 
			
		||||
        label: '不可用'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        value: '1',
 | 
			
		||||
        label: '可用'
 | 
			
		||||
      }],
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        supplierName: null
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    // dataRule() {
 | 
			
		||||
    //   return {
 | 
			
		||||
    //     paramCode: [
 | 
			
		||||
    //       {
 | 
			
		||||
    //         required: true,
 | 
			
		||||
    //         message: this.$t("validate.required"),
 | 
			
		||||
    //         trigger: "blur",
 | 
			
		||||
    //       },
 | 
			
		||||
    //     ],
 | 
			
		||||
    //     paramValue: [
 | 
			
		||||
    //       {
 | 
			
		||||
    //         required: true,
 | 
			
		||||
    //         message: this.$t("validate.required"),
 | 
			
		||||
    //         trigger: "blur",
 | 
			
		||||
    //       },
 | 
			
		||||
    //     ],
 | 
			
		||||
    //   };
 | 
			
		||||
    // },
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    // init(id) {
 | 
			
		||||
    //   this.dataForm.id = id || "";
 | 
			
		||||
    //   this.visible = true;
 | 
			
		||||
    //   this.$nextTick(() => {
 | 
			
		||||
    //     this.$refs["dataForm"].resetFields();
 | 
			
		||||
    //     if (this.dataForm.id) {
 | 
			
		||||
    //       this.getInfo();
 | 
			
		||||
    //     }
 | 
			
		||||
    //   });
 | 
			
		||||
    // },
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    // getInfo() {
 | 
			
		||||
    //   this.$http
 | 
			
		||||
    //     .get(`/sys/params/${this.dataForm.id}`)
 | 
			
		||||
    //     .then(({ data: res }) => {
 | 
			
		||||
    //       if (res.code !== 0) {
 | 
			
		||||
    //         return this.$message.error(res.msg);
 | 
			
		||||
    //       }
 | 
			
		||||
    //       this.dataForm = {
 | 
			
		||||
    //         ...this.dataForm,
 | 
			
		||||
    //         ...res.data,
 | 
			
		||||
    //       };
 | 
			
		||||
    //     })
 | 
			
		||||
    //     .catch(() => {});
 | 
			
		||||
    // },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    handleConditionSearch() {
 | 
			
		||||
      this.$emit("successSubmit", this.dataForm);
 | 
			
		||||
    },
 | 
			
		||||
    // dataFormSubmitHandle: debounce(
 | 
			
		||||
    //   function () {
 | 
			
		||||
    //     // console.log(1111);
 | 
			
		||||
    //     // this.visible = false;
 | 
			
		||||
    //     this.$emit("successSubmit", this.dataForm.key);
 | 
			
		||||
    //     // this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
    //     //   if (!valid) {
 | 
			
		||||
    //     //     return false;
 | 
			
		||||
    //     //   }
 | 
			
		||||
    //     //   this.$http[!this.dataForm.id ? "post" : "put"](
 | 
			
		||||
    //     //     "/sys/params",
 | 
			
		||||
    //     //     this.dataForm
 | 
			
		||||
    //     //   )
 | 
			
		||||
    //     //     .then(({ data: res }) => {
 | 
			
		||||
    //     //       if (res.code !== 0) {
 | 
			
		||||
    //     //         return this.$message.error(res.msg);
 | 
			
		||||
    //     //       }
 | 
			
		||||
    //     //       this.$message({
 | 
			
		||||
    //     //         message: this.$t("prompt.success"),
 | 
			
		||||
    //     //         type: "success",
 | 
			
		||||
    //     //         duration: 500,
 | 
			
		||||
    //     //         onClose: () => {
 | 
			
		||||
 | 
			
		||||
    //     //         },
 | 
			
		||||
    //     //       });
 | 
			
		||||
    //     //     })
 | 
			
		||||
    //     //     .catch(() => {});
 | 
			
		||||
    //     // });
 | 
			
		||||
    //   },
 | 
			
		||||
    //   1000,
 | 
			
		||||
    //   { leading: true, trailing: false }
 | 
			
		||||
    // ),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,193 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-07-13 11:01:20
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="120px">
 | 
			
		||||
    <el-form-item prop="title" :label="$t('researchquality.title')">
 | 
			
		||||
      <el-input v-model="dataForm.title" :placeholder="$t('researchquality.title')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="requirementListGroupId" :label="$t('researchquality.requirementListGroupId')">
 | 
			
		||||
      <el-select v-model="dataForm.requirementListGroupId" :placeholder="$t('researchquality.requirementListGroupId')">
 | 
			
		||||
        <el-option v-for="item in projectTypeList" :key="item.id" :label="item.name" :value="item.id">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <el-form-item prop="description" :label="$t('researchquality.description')">
 | 
			
		||||
      <el-input v-model="dataForm.description" :placeholder="$t('researchquality.description')">
 | 
			
		||||
      </el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import debounce from "lodash/debounce";
 | 
			
		||||
import basicAdd from "@/mixins/basic-add";
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicAdd],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        submitURL: "/researchquality/qmsQualityRequirementList",
 | 
			
		||||
        infoURL: "/researchquality/qmsQualityRequirementList/{id}",
 | 
			
		||||
        getProjectTypeURL: '/researchquality/qmsQualityRequirementListGroup/page',
 | 
			
		||||
        // getCodeURL: '/supplier/qmsEvaluationItemList/getCode'
 | 
			
		||||
      },
 | 
			
		||||
      options: [{
 | 
			
		||||
        value: 0,
 | 
			
		||||
        label: '不可用'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        value: 1,
 | 
			
		||||
        label: '可用'
 | 
			
		||||
        }],
 | 
			
		||||
      supplierList:null,
 | 
			
		||||
      enterpriseNatureList: [
 | 
			
		||||
        {
 | 
			
		||||
          value: 0,
 | 
			
		||||
          label: '私营'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          value: 1,
 | 
			
		||||
          label: '国有'
 | 
			
		||||
        },
 | 
			
		||||
           {
 | 
			
		||||
          value: 2,
 | 
			
		||||
          label: '外资'
 | 
			
		||||
        },
 | 
			
		||||
           {
 | 
			
		||||
          value: 3,
 | 
			
		||||
          label: '其他'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      projectTypeList:[],
 | 
			
		||||
      visible: false,
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        id: "",
 | 
			
		||||
        title:null,
 | 
			
		||||
        requirementListGroupId: undefined,
 | 
			
		||||
        description: null
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        // dictLabel: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // dictValue: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
        // sort: [
 | 
			
		||||
        //   {
 | 
			
		||||
        //     required: true,
 | 
			
		||||
        //     message: this.$t("validate.required"),
 | 
			
		||||
        //     trigger: "blur",
 | 
			
		||||
        //   },
 | 
			
		||||
        // ],
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(data,) {
 | 
			
		||||
      console.log(data)
 | 
			
		||||
      console.log(this.dataForm.projectTypeId)
 | 
			
		||||
      // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields()
 | 
			
		||||
        if (data) {
 | 
			
		||||
          this.dataForm.id = data.id ? data.id : ''
 | 
			
		||||
          this.dataForm.projectTypeId = data.projectTypeId ? data.projectTypeId : ''
 | 
			
		||||
        }
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.getInfo()
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    getCode() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getProjectTypeURL, { params: this.listQuery })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
            this.projectTypeList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
      this.$http
 | 
			
		||||
        .post(this.urlOptions.getCodeURL)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res);
 | 
			
		||||
            this.dataForm.code = res.data
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
    },
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    getInfo() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(`/supplier/qmsEvaluationItemList/${this.dataForm.id}`)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
          }
 | 
			
		||||
          this.dataForm = {
 | 
			
		||||
            ...this.dataForm,
 | 
			
		||||
            ...res.data,
 | 
			
		||||
          };
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    dataFormSubmitHandle: debounce(
 | 
			
		||||
      function () {
 | 
			
		||||
        this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
          if (!valid) {
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
          this.$http[!this.dataForm.id ? "post" : "put"](this.urlOptions.submitURL, this.dataForm)
 | 
			
		||||
            .then(({ data: res }) => {
 | 
			
		||||
              if (res.code !== 0) {
 | 
			
		||||
                return this.$message.error(res.msg);
 | 
			
		||||
              }
 | 
			
		||||
              this.$message({
 | 
			
		||||
                message: this.$t("prompt.success"),
 | 
			
		||||
                type: "success",
 | 
			
		||||
                duration: 500,
 | 
			
		||||
                onClose: () => {
 | 
			
		||||
                  console.log(1111);
 | 
			
		||||
                  this.visible = false;
 | 
			
		||||
                  this.$emit("successSubmit");
 | 
			
		||||
                },
 | 
			
		||||
              });
 | 
			
		||||
            })
 | 
			
		||||
            .catch(() => {});
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      1000,
 | 
			
		||||
      { leading: true, trailing: false }
 | 
			
		||||
    ),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,136 @@
 | 
			
		||||
  <!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-07-13 10:13:40
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()" label-width="120px">
 | 
			
		||||
    <el-form-item prop="name" :label="$t('basic.name')">
 | 
			
		||||
      <el-input v-model="dataForm.name" :placeholder="$t('basic.name')"></el-input>
 | 
			
		||||
    </el-form-item>
 | 
			
		||||
    <!-- <el-form-item prop="productTypeStatus" :label="$t('basic.status')">
 | 
			
		||||
      <el-select v-model="dataForm.productTypeStatus" :placeholder="$t('basic.status')">
 | 
			
		||||
        <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
 | 
			
		||||
        </el-option>
 | 
			
		||||
      </el-select>
 | 
			
		||||
    </el-form-item> -->
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import debounce from "lodash/debounce";
 | 
			
		||||
import basicAdd from "@/mixins/basic-add";
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicAdd],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        submitURL: "/researchquality/qmsQualityRequirementListGroup",
 | 
			
		||||
        infoURL: "/researchquality/qmsQualityRequirementListGroup/{id}"
 | 
			
		||||
        // getTypeListURL: '/basic/qmsProductType/page'
 | 
			
		||||
      },
 | 
			
		||||
      options: [{
 | 
			
		||||
        value: 0,
 | 
			
		||||
        label: '不可用'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        value: 1,
 | 
			
		||||
        label: '可用'
 | 
			
		||||
      }],
 | 
			
		||||
      typeList:[],
 | 
			
		||||
      visible: false,
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      dataForm: {
 | 
			
		||||
        id: "",
 | 
			
		||||
        code:null,
 | 
			
		||||
        name: null,
 | 
			
		||||
        supplierTypeStatus:null,
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    dataRule() {
 | 
			
		||||
      return {
 | 
			
		||||
        code: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        name: [
 | 
			
		||||
          {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: this.$t("validate.required"),
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        ]
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id) {
 | 
			
		||||
      this.dataForm.id = id || ""
 | 
			
		||||
      // this.dataForm.dictTypeId = dictTypeId || "";
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields()
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.getInfo();
 | 
			
		||||
        } else {
 | 
			
		||||
          // this.getCode()
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    getInfo() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(`/researchquality/qmsQualityRequirementListGroup/${this.dataForm.id}`)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
          }
 | 
			
		||||
          this.dataForm = {
 | 
			
		||||
            ...this.dataForm,
 | 
			
		||||
            ...res.data,
 | 
			
		||||
          };
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    // 表单提交
 | 
			
		||||
    dataFormSubmitHandle: debounce(
 | 
			
		||||
      function () {
 | 
			
		||||
        this.$refs["dataForm"].validate((valid) => {
 | 
			
		||||
          if (!valid) {
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
          this.$http[!this.dataForm.id ? "post" : "put"](this.urlOptions.submitURL, this.dataForm)
 | 
			
		||||
            .then(({ data: res }) => {
 | 
			
		||||
              if (res.code !== 0) {
 | 
			
		||||
                return this.$message.error(res.msg);
 | 
			
		||||
              }
 | 
			
		||||
              this.$message({
 | 
			
		||||
                message: this.$t("prompt.success"),
 | 
			
		||||
                type: "success",
 | 
			
		||||
                duration: 500,
 | 
			
		||||
                onClose: () => {
 | 
			
		||||
                  console.log(1111);
 | 
			
		||||
                  this.visible = false;
 | 
			
		||||
                  this.$emit("successSubmit");
 | 
			
		||||
                },
 | 
			
		||||
              });
 | 
			
		||||
            })
 | 
			
		||||
            .catch(() => {});
 | 
			
		||||
        });
 | 
			
		||||
      },
 | 
			
		||||
      1000,
 | 
			
		||||
      { leading: true, trailing: false }
 | 
			
		||||
    ),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										49
									
								
								src/views/modules/researchquality/components/radio.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								src/views/modules/researchquality/components/radio.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-01-31 14:12:10
 | 
			
		||||
 * @LastEditTime: 2023-01-31 16:47:32
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <span>
 | 
			
		||||
    <el-radio v-model="injectData.incomingInspection" :label="1"
 | 
			
		||||
      >进货检验</el-radio
 | 
			
		||||
    >
 | 
			
		||||
    <el-radio v-model="injectData.processInspection" :label="1"
 | 
			
		||||
      >过程检验</el-radio
 | 
			
		||||
    >
 | 
			
		||||
    <el-radio v-model="injectData.finishInspection" :label="1"
 | 
			
		||||
      >成品检验</el-radio
 | 
			
		||||
    >
 | 
			
		||||
    <el-radio v-model="injectData.outInspection" :label="1">出货检验</el-radio>
 | 
			
		||||
  </span>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
// import { addDynamicRoute } from '@/router'
 | 
			
		||||
export default {
 | 
			
		||||
  props: {
 | 
			
		||||
    injectData: {
 | 
			
		||||
      type: Object,
 | 
			
		||||
      default: () => ({}),
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    // 子级
 | 
			
		||||
    // emitClick () {
 | 
			
		||||
    //   // 路由参数
 | 
			
		||||
    //   const routeParams = {
 | 
			
		||||
    //     routeName: `${this.$route.name}__${this.injectData.id}`,
 | 
			
		||||
    //     title: `${this.$route.meta.title} - ${this.injectData.dictType}`,
 | 
			
		||||
    //     path: 'sys/dict-data',
 | 
			
		||||
    //     params: {
 | 
			
		||||
    //       dictTypeId: this.injectData.id
 | 
			
		||||
    //     }
 | 
			
		||||
    //   }
 | 
			
		||||
    //   // 动态路由
 | 
			
		||||
    //   addDynamicRoute(routeParams, this.$router)
 | 
			
		||||
    // }
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										288
									
								
								src/views/modules/researchquality/qmsQualityChange.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										288
									
								
								src/views/modules/researchquality/qmsQualityChange.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,288 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-04-17 14:23:17
 | 
			
		||||
 * @LastEditTime: 2023-07-14 15:02:29
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-card shadow="never" class="aui-card--fill">
 | 
			
		||||
    <div class="mod-sys__user">
 | 
			
		||||
      <SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
 | 
			
		||||
        <el-badge :value="5" class="item">
 | 
			
		||||
          <el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button>
 | 
			
		||||
        </el-badge>
 | 
			
		||||
      </SearchBar>
 | 
			
		||||
      <base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
 | 
			
		||||
        :limit="listQuery.limit" :table-data="tableData">
 | 
			
		||||
        <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
          @clickBtn="handleClick" />
 | 
			
		||||
      </base-table>
 | 
			
		||||
      <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
 | 
			
		||||
        @pagination="getDataList" />
 | 
			
		||||
      <!-- 弹窗, 新增 / 修改 -->
 | 
			
		||||
      <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel"
 | 
			
		||||
        @confirm="handleConfirm" :before-close="handleCancel">
 | 
			
		||||
        <qualityChange-add ref="addOrUpdate" @refreshDataList="successSubmit">
 | 
			
		||||
        </qualityChange-add>
 | 
			
		||||
        <!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
 | 
			
		||||
      </base-dialog>
 | 
			
		||||
      <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
 | 
			
		||||
        @confirm="handleSearchConfirm" :before-close="handleSearchCancel">
 | 
			
		||||
        <qualityChange-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit">
 | 
			
		||||
        </qualityChange-search>
 | 
			
		||||
        <el-row slot="footer" type="flex" justify="end">
 | 
			
		||||
          <el-col :span="12">
 | 
			
		||||
            <el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">
 | 
			
		||||
              {{ $t("close") }}
 | 
			
		||||
            </el-button>
 | 
			
		||||
            <el-button size="small" class="btnTextStyle" type="primary" plain @click="handleSearchReset">{{
 | 
			
		||||
              $t("reset")
 | 
			
		||||
              }}</el-button>
 | 
			
		||||
            <el-button type="primary" size="small" class="btnTextStyle" @click="handleSearchConfirm">
 | 
			
		||||
              {{ $t("search") }}
 | 
			
		||||
            </el-button>
 | 
			
		||||
          </el-col>
 | 
			
		||||
        </el-row>
 | 
			
		||||
      </base-dialog>
 | 
			
		||||
    </div>
 | 
			
		||||
  </el-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicPage from "@/mixins/basic-page"
 | 
			
		||||
import basicSearch from "@/mixins/basic-search"
 | 
			
		||||
import qualityChangeSearch from "./components/qualityChangeSearch.vue"
 | 
			
		||||
import qualityChangeAdd from "./components/qualityChange-add.vue"
 | 
			
		||||
import InnerTable from "./components/innerTable"
 | 
			
		||||
 | 
			
		||||
import i18n from "@/i18n"
 | 
			
		||||
// import supplier from '@/filters/supplier'
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: "code",
 | 
			
		||||
    label: i18n.t('researchquality.code'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "registrationDate",
 | 
			
		||||
    label: i18n.t('researchquality.registrationDate'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "changeSource",
 | 
			
		||||
    label: i18n.t('researchquality.changeSource'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "owner",
 | 
			
		||||
    label: i18n.t('researchquality.owner'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "category",
 | 
			
		||||
    label: i18n.t('researchquality.category'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "title",
 | 
			
		||||
    label: i18n.t('researchquality.title'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "currentStage",
 | 
			
		||||
    label: i18n.t('researchquality.currentStage'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "productName",
 | 
			
		||||
    label: i18n.t('researchquality.productName'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "qualityChangeStatus",
 | 
			
		||||
    label: i18n.t('researchquality.qualityChangeStatus'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "temporaryChange",
 | 
			
		||||
    label: i18n.t('researchquality.temporaryChange'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "updateDate",
 | 
			
		||||
    label: i18n.t('researchquality.approvedMemo'),
 | 
			
		||||
    subcomponent: InnerTable
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
const tableBtn = [
 | 
			
		||||
  {
 | 
			
		||||
    type: "edit",
 | 
			
		||||
    btnName: i18n.t('t.edit'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "delete",
 | 
			
		||||
    btnName: i18n.t('t.delete'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicPage, basicSearch],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        getDataListURL: "/researchquality/qmsQualityChange/page",
 | 
			
		||||
        deleteURL: "/researchquality/qmsQualityChange",
 | 
			
		||||
        exportURL: '/researchquality/qmsQualityChange',
 | 
			
		||||
        // getSupplierTypeListURL: '/supplier/qmsSupplierType/page'
 | 
			
		||||
        // submitURL: '/supplier/qmsSupplierType'
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      ment: '',
 | 
			
		||||
      tableBtn,
 | 
			
		||||
      productData: {},
 | 
			
		||||
      dataForm:{
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      searchOrEditTitle: "",
 | 
			
		||||
      searchOrUpdateVisible: false,
 | 
			
		||||
      productOrEditTitle: "",
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      addOrUpdateVisible: false,
 | 
			
		||||
      productOrUpdateVisible: false,
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: "",
 | 
			
		||||
        //   label: i18n.t("params.paramCode"),
 | 
			
		||||
        //   placeholder: i18n.t("params.paramCode"),
 | 
			
		||||
        //   param: "paramCode",
 | 
			
		||||
        // },
 | 
			
		||||
        // {
 | 
			
		||||
        //   type: "separate",
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          // plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('export'),
 | 
			
		||||
          name: "export",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  components: {
 | 
			
		||||
    qualityChangeSearch,
 | 
			
		||||
    // supplierProduct,
 | 
			
		||||
    qualityChangeAdd
 | 
			
		||||
  },
 | 
			
		||||
  // mounted () {
 | 
			
		||||
  //   this.getData();
 | 
			
		||||
  // },
 | 
			
		||||
  methods: {
 | 
			
		||||
    //search-bar点击
 | 
			
		||||
    handleProductCancel() {
 | 
			
		||||
      this.productOrUpdateVisible = false;
 | 
			
		||||
      this.productOrEditTitle = "";
 | 
			
		||||
    },
 | 
			
		||||
    handleCurrentChange(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      this.productData = val.newVal ? val.newVal : {}
 | 
			
		||||
    },
 | 
			
		||||
    setCurrent(index) {
 | 
			
		||||
      this.$refs.palletTable1.setCurrent("palletTable", index);
 | 
			
		||||
    },
 | 
			
		||||
    // handleSearchCancel() {
 | 
			
		||||
    //   this.searchOrEditTitle = "";
 | 
			
		||||
    //   this.searchOrUpdateVisible = false;
 | 
			
		||||
    // },
 | 
			
		||||
    conditionSearch() {
 | 
			
		||||
      this.searchOrEditTitle = "搜索";
 | 
			
		||||
      this.searchOrUpdateVisible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.searchOrUpdate.init();
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // handleConfirm() {
 | 
			
		||||
    //   this.$refs.addOrUpdate.dataFormSubmitHandle();
 | 
			
		||||
    // },
 | 
			
		||||
    // conditionSearchSubmit() {},
 | 
			
		||||
    conditionSearchSubmit(dataForm) {
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      this.listQuery.supplierName = dataForm.supplierName
 | 
			
		||||
      this.listQuery.page = 1;
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
      this.searchOrUpdateVisible = false;
 | 
			
		||||
      // console.log(11111);
 | 
			
		||||
      // this.conditionSearchSubmit();
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      if (val.type === "delete") {
 | 
			
		||||
        this.$confirm(`确定对[名称=${val.data.customerTypeName}]进行删除操作?`, "提示", {
 | 
			
		||||
          confirmButtonText: "确定",
 | 
			
		||||
          cancelButtonText: "取消",
 | 
			
		||||
          type: "warning",
 | 
			
		||||
        })
 | 
			
		||||
          .then(() => {
 | 
			
		||||
            this.$http.delete(this.urlOptions.deleteURL, { data: [val.data.id] }).then(({ data }) => {
 | 
			
		||||
              if (data && data.code === 0) {
 | 
			
		||||
                this.$message({
 | 
			
		||||
                  message: "操作成功",
 | 
			
		||||
                  type: "success",
 | 
			
		||||
                  duration: 1500,
 | 
			
		||||
                  onClose: () => {
 | 
			
		||||
                    this.getDataList()
 | 
			
		||||
                  },
 | 
			
		||||
                });
 | 
			
		||||
              } else {
 | 
			
		||||
                this.$message.error(data.msg);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          })
 | 
			
		||||
          .catch(() => { });
 | 
			
		||||
      } else if (val.type === 'edit') {
 | 
			
		||||
        this.addOrUpdateVisible = true
 | 
			
		||||
        this.addOrEditTitle = this.$t('edit')
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.addOrUpdate.init(val.data.id);
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // addOrUpdateHandle(productData) {
 | 
			
		||||
    //   this.addOrUpdateVisible = true;
 | 
			
		||||
    //   this.$nextTick(() => {
 | 
			
		||||
    //     this.$refs.addOrUpdate.init(productData);
 | 
			
		||||
    //   });
 | 
			
		||||
    // },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case "search":
 | 
			
		||||
          // this.listQuery.paramCode = val.paramCode;
 | 
			
		||||
          this.listQuery.supplierName = val.supplierName ? val.supplierName : undefined
 | 
			
		||||
          this.listQuery.supplierStatus = val.supplierStatus ? val.supplierStatus : undefined
 | 
			
		||||
          this.listQuery.supplierTypeId = val.supplierTypeId ? val.supplierTypeId : undefined
 | 
			
		||||
          this.listQuery.ment = this.ment ? this.ment : undefined
 | 
			
		||||
          // console.log(i18n);
 | 
			
		||||
          this.listQuery.page = 1;
 | 
			
		||||
          this.getDataList();
 | 
			
		||||
          break;
 | 
			
		||||
        case "export":
 | 
			
		||||
          // this.listQuery.paramCode = val.paramCode;
 | 
			
		||||
          this.exportHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.addOrUpdateVisible = true;
 | 
			
		||||
          this.addOrUpdateHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										292
									
								
								src/views/modules/researchquality/qmsQualityRequirementList.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										292
									
								
								src/views/modules/researchquality/qmsQualityRequirementList.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,292 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-04-17 14:23:17
 | 
			
		||||
 * @LastEditTime: 2023-07-13 11:00:21
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-card shadow="never" class="aui-card--fill">
 | 
			
		||||
    <div class="mod-sys__user">
 | 
			
		||||
      <el-tabs @tab-click="clickTabs" tab-position="left">
 | 
			
		||||
        <el-tab-pane v-for="(item,index) in projectTypeList" :name="item.id" :key="index" :label="item.name">
 | 
			
		||||
          <SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
 | 
			
		||||
          </SearchBar>
 | 
			
		||||
          <base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
 | 
			
		||||
            :limit="listQuery.limit" :table-data="tableData">
 | 
			
		||||
            <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
              @clickBtn="handleClick" />
 | 
			
		||||
          </base-table>
 | 
			
		||||
          <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
 | 
			
		||||
            @pagination="getDataList" />
 | 
			
		||||
        </el-tab-pane>
 | 
			
		||||
      </el-tabs>
 | 
			
		||||
      <!-- 弹窗, 新增 / 修改 -->
 | 
			
		||||
      <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel"
 | 
			
		||||
        @confirm="handleConfirm" :before-close="handleCancel">
 | 
			
		||||
        <qualityRequirementList-add ref="addOrUpdate" @refreshDataList="successSubmit">
 | 
			
		||||
          </qualityRequirementList-add>
 | 
			
		||||
          <!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
 | 
			
		||||
      </base-dialog>
 | 
			
		||||
      <!-- <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
 | 
			
		||||
        @confirm="handleSearchConfirm" :before-close="handleSearchCancel">
 | 
			
		||||
        <supplierProduct-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit">
 | 
			
		||||
        </supplierProduct-search>
 | 
			
		||||
        <el-row slot="footer" type="flex" justify="end">
 | 
			
		||||
          <el-col :span="12">
 | 
			
		||||
            <el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">
 | 
			
		||||
              {{ $t("close") }}
 | 
			
		||||
            </el-button>
 | 
			
		||||
            <el-button size="small" class="btnTextStyle" type="primary" plain @click="handleSearchReset">{{
 | 
			
		||||
              $t("reset")
 | 
			
		||||
              }}</el-button>
 | 
			
		||||
            <el-button type="primary" size="small" class="btnTextStyle" @click="handleSearchConfirm">
 | 
			
		||||
              {{ $t("search") }}
 | 
			
		||||
            </el-button>
 | 
			
		||||
          </el-col>
 | 
			
		||||
        </el-row>
 | 
			
		||||
      </base-dialog> -->
 | 
			
		||||
    </div>
 | 
			
		||||
  </el-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicPage from "@/mixins/basic-page"
 | 
			
		||||
// import basicSearch from "@/mixins/basic-search"
 | 
			
		||||
// import supplierProductSearch from "./components/supplierProductSearch.vue"
 | 
			
		||||
import qualityRequirementListAdd from "./components/qualityRequirementList-add.vue"
 | 
			
		||||
import { timeFormatter } from '@/filters'
 | 
			
		||||
import i18n from "@/i18n"
 | 
			
		||||
// import i18n from "@/i18n";
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: "title",
 | 
			
		||||
    label: i18n.t('researchquality.title')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: "description",
 | 
			
		||||
    label: i18n.t('researchquality.description')
 | 
			
		||||
  },
 | 
			
		||||
];
 | 
			
		||||
const tableBtn = [
 | 
			
		||||
  {
 | 
			
		||||
    type: "edit",
 | 
			
		||||
    btnName: i18n.t('t.edit'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "delete",
 | 
			
		||||
    btnName: i18n.t('t.delete'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicPage],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        getDataListURL: "/researchquality/qmsQualityRequirementList/page",
 | 
			
		||||
        deleteURL: "/researchquality/qmsQualityRequirementList",
 | 
			
		||||
        getProjectTypeList: '/researchquality/qmsQualityRequirementListGroup/page'
 | 
			
		||||
        // submitURL: '/supplier/qmsSupplierType'
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      ment: '',
 | 
			
		||||
      tableBtn,
 | 
			
		||||
      productData: {},
 | 
			
		||||
      dataForm:{
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      projectTypeId:null,
 | 
			
		||||
      projectTypeList:[],
 | 
			
		||||
      searchOrEditTitle: "",
 | 
			
		||||
      searchOrUpdateVisible: false,
 | 
			
		||||
      productOrEditTitle: "",
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      addOrUpdateVisible: false,
 | 
			
		||||
      productOrUpdateVisible: false,
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: i18n.t('supplier.name'),
 | 
			
		||||
          placeholder: i18n.t('supplier.name'),
 | 
			
		||||
          param: 'title'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: i18n.t('supplier.code'),
 | 
			
		||||
          placeholder: i18n.t('supplier.code'),
 | 
			
		||||
          param: 'code'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          // plain: true,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain: true,
 | 
			
		||||
        },
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  components: {
 | 
			
		||||
    // supplierProductSearch,
 | 
			
		||||
    // supplierProduct,
 | 
			
		||||
    qualityRequirementListAdd
 | 
			
		||||
  },
 | 
			
		||||
  mounted () {
 | 
			
		||||
    this.getData()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    clickTabs(e) {
 | 
			
		||||
      console.log(e)
 | 
			
		||||
      this.requirementListGroupId = e.name
 | 
			
		||||
      this.listQuery.requirementListGroupId = e.name
 | 
			
		||||
      this.getDataList()
 | 
			
		||||
    },
 | 
			
		||||
    getData() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getProjectTypeList, { params: this.listQuery })
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            console.log(res.data);
 | 
			
		||||
            this.projectTypeList = res.data.list
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(() => {
 | 
			
		||||
        })
 | 
			
		||||
    },
 | 
			
		||||
    //search-bar点击
 | 
			
		||||
    handleProductCancel() {
 | 
			
		||||
      this.productOrUpdateVisible = false;
 | 
			
		||||
      this.productOrEditTitle = ""
 | 
			
		||||
    },
 | 
			
		||||
    // handleSearchCancel() {
 | 
			
		||||
    //   this.searchOrEditTitle = "";
 | 
			
		||||
    //   this.searchOrUpdateVisible = false;
 | 
			
		||||
    // },
 | 
			
		||||
    conditionSearch() {
 | 
			
		||||
      this.searchOrEditTitle = "搜索";
 | 
			
		||||
      this.searchOrUpdateVisible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.searchOrUpdate.init();
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    exportHandle() {
 | 
			
		||||
      this.$http.get(this.urlOptions.exportURL, { responseType: 'blob' }, {
 | 
			
		||||
        ...this.dataForm
 | 
			
		||||
      }).then((res) => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        // if (res !== 0) {
 | 
			
		||||
        //   return this.$message.error(res.msg) 
 | 
			
		||||
        // }
 | 
			
		||||
        let fileName = ''
 | 
			
		||||
        const contentDisposition = res.headers['content-disposition']
 | 
			
		||||
        if (contentDisposition) {
 | 
			
		||||
          const temp = res.headers['content-disposition']
 | 
			
		||||
            .split(';')[1]
 | 
			
		||||
            .split('=')[1]
 | 
			
		||||
          // 对文件名乱码转义--【Node.js】使用iconv-lite解决中文乱码
 | 
			
		||||
          fileName = decodeURI(temp)
 | 
			
		||||
          console.log(temp)
 | 
			
		||||
        }
 | 
			
		||||
        const blob = new Blob([res.data])
 | 
			
		||||
        const reader = new FileReader()
 | 
			
		||||
        reader.readAsDataURL(blob)
 | 
			
		||||
        reader.onload = (e) => {
 | 
			
		||||
          const a = document.createElement('a')
 | 
			
		||||
          a.download = fileName
 | 
			
		||||
          a.href = e.target.result
 | 
			
		||||
          document.body.appendChild(a)
 | 
			
		||||
          a.click()
 | 
			
		||||
          document.body.removeChild(a)
 | 
			
		||||
        }
 | 
			
		||||
      }).catch(() => { })
 | 
			
		||||
    },
 | 
			
		||||
    // handleConfirm() {
 | 
			
		||||
    //   this.$refs.addOrUpdate.dataFormSubmitHandle();
 | 
			
		||||
    // },
 | 
			
		||||
    // conditionSearchSubmit() {},
 | 
			
		||||
    conditionSearchSubmit(dataForm) {
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      this.listQuery.supplierName = dataForm.supplierName
 | 
			
		||||
      this.listQuery.page = 1;
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
      this.searchOrUpdateVisible = false;
 | 
			
		||||
      // console.log(11111);
 | 
			
		||||
      // this.conditionSearchSubmit();
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      if (val.type === "delete") {
 | 
			
		||||
        this.$confirm(`确定对[名称=${val.data.customerTypeName}]进行删除操作?`, "提示", {
 | 
			
		||||
          confirmButtonText: "确定",
 | 
			
		||||
          cancelButtonText: "取消",
 | 
			
		||||
          type: "warning",
 | 
			
		||||
        })
 | 
			
		||||
          .then(() => {
 | 
			
		||||
            this.$http.delete(this.urlOptions.deleteURL, { data: [val.data.id] }).then(({ data }) => {
 | 
			
		||||
              if (data && data.code === 0) {
 | 
			
		||||
                this.$message({
 | 
			
		||||
                  message: "操作成功",
 | 
			
		||||
                  type: "success",
 | 
			
		||||
                  duration: 1500,
 | 
			
		||||
                  onClose: () => {
 | 
			
		||||
                    this.getDataList();
 | 
			
		||||
                  },
 | 
			
		||||
                });
 | 
			
		||||
              } else {
 | 
			
		||||
                this.$message.error(data.msg);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          })
 | 
			
		||||
          .catch(() => { });
 | 
			
		||||
      } else if (val.type === 'edit') {
 | 
			
		||||
        this.addOrUpdateVisible = true
 | 
			
		||||
        this.addOrEditTitle = this.$t('edit')
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          const data ={
 | 
			
		||||
            id: val.data.id, 
 | 
			
		||||
            projectTypeId: this.projectTypeId
 | 
			
		||||
          }
 | 
			
		||||
          this.$refs.addOrUpdate.init(data)
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    addOrUpdateHandle() {
 | 
			
		||||
      console.log(this.projectTypeId)
 | 
			
		||||
      this.addOrUpdateVisible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        const data = {
 | 
			
		||||
          projectTypeId: this.projectTypeId
 | 
			
		||||
        }
 | 
			
		||||
        this.$refs.addOrUpdate.init(data)
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case "search":
 | 
			
		||||
          // this.listQuery.paramCode = val.paramCode;
 | 
			
		||||
          this.listQuery.title = val.title ? val.title : undefined
 | 
			
		||||
          this.listQuery.code = val.code ? val.code : undefined
 | 
			
		||||
          // console.log(i18n);
 | 
			
		||||
          this.listQuery.page = 1;
 | 
			
		||||
          this.getDataList();
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.addOrUpdateVisible = true
 | 
			
		||||
          this.addOrUpdateHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,257 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-06-08 14:29:46
 | 
			
		||||
 * @LastEditTime: 2023-07-13 10:47:28
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <el-card shadow="never" class="aui-card--fill">
 | 
			
		||||
    <div class="mod-sys__user">
 | 
			
		||||
      <SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
 | 
			
		||||
        <!-- <el-badge :value="2" class="item">
 | 
			
		||||
          <el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button>
 | 
			
		||||
        </el-badge> -->
 | 
			
		||||
      </SearchBar>
 | 
			
		||||
      <base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
 | 
			
		||||
        :limit="listQuery.limit" :table-data="tableData">
 | 
			
		||||
        <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
          @clickBtn="handleClick" />
 | 
			
		||||
      </base-table>
 | 
			
		||||
      <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
 | 
			
		||||
        @pagination="getDataList" />
 | 
			
		||||
      <!-- 弹窗, 新增 / 修改 -->
 | 
			
		||||
      <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel"
 | 
			
		||||
        @confirm="handleConfirm" :before-close="handleCancel">
 | 
			
		||||
        <qualityRequirementListGroup-add ref="addOrUpdate" @refreshDataList="successSubmit">
 | 
			
		||||
          </qualityRequirementListGroup-add>
 | 
			
		||||
          <!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
 | 
			
		||||
      </base-dialog>
 | 
			
		||||
      <!-- <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
 | 
			
		||||
        @confirm="handleSearchConfirm" :before-close="handleSearchCancel">
 | 
			
		||||
        <projectType-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit">
 | 
			
		||||
          </projectType-search>
 | 
			
		||||
          <el-row slot="footer" type="flex" justify="end">
 | 
			
		||||
            <el-col :span="12">
 | 
			
		||||
              <el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">
 | 
			
		||||
                {{ $t("close") }}
 | 
			
		||||
              </el-button>
 | 
			
		||||
              <el-button size="small" class="btnTextStyle" type="primary" plain @click="handleSearchReset">{{
 | 
			
		||||
                $t("reset")
 | 
			
		||||
                }}</el-button>
 | 
			
		||||
              <el-button type="primary" size="small" class="btnTextStyle" @click="handleSearchConfirm">
 | 
			
		||||
                {{ $t("search") }}
 | 
			
		||||
              </el-button>
 | 
			
		||||
            </el-col>
 | 
			
		||||
          </el-row>
 | 
			
		||||
      </base-dialog> -->
 | 
			
		||||
    </div>
 | 
			
		||||
  </el-card>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicPage from "@/mixins/basic-page"
 | 
			
		||||
// import basicSearch from "@/mixins/basic-search"
 | 
			
		||||
// import projectTypeSearch from "./components/projectTypeSearch.vue"
 | 
			
		||||
import qualityRequirementListGroupAdd from "./components/qualityRequirementListGroup-add.vue"
 | 
			
		||||
import i18n from "@/i18n"
 | 
			
		||||
// import i18n from "@/i18n";
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: "name",
 | 
			
		||||
    label: i18n.t('supplier.name'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
const tableBtn = [
 | 
			
		||||
  {
 | 
			
		||||
    type: "edit",
 | 
			
		||||
    btnName: i18n.t('edit'),
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: "delete",
 | 
			
		||||
    btnName: i18n.t('delete'),
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [basicPage],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        getDataListURL: "/researchquality/qmsQualityRequirementListGroup/page",
 | 
			
		||||
        deleteURL: "/researchquality/qmsQualityRequirementListGroup",
 | 
			
		||||
        exportURL: '/researchquality/qmsQualityRequirementListGroup/export',
 | 
			
		||||
        submitURL: '/supplier/qmsSupplierRequirementListGroup'
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableBtn,
 | 
			
		||||
      productData: {},
 | 
			
		||||
      dataForm:{
 | 
			
		||||
        limit: 999,
 | 
			
		||||
        page:1
 | 
			
		||||
      },
 | 
			
		||||
      searchOrEditTitle: "",
 | 
			
		||||
      searchOrUpdateVisible: false,
 | 
			
		||||
      productOrEditTitle: "",
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      addOrUpdateVisible: false,
 | 
			
		||||
      productOrUpdateVisible: false,
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: i18n.t('supplier.name'),
 | 
			
		||||
          placeholder: i18n.t('supplier.name'),
 | 
			
		||||
          param: 'name'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('add'),
 | 
			
		||||
          name: "add",
 | 
			
		||||
          color: "success",
 | 
			
		||||
          plain:true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: "button",
 | 
			
		||||
          btnName: i18n.t('search'),
 | 
			
		||||
          name: "search",
 | 
			
		||||
          color: "primary",
 | 
			
		||||
          // plain: true,
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  components: {
 | 
			
		||||
    qualityRequirementListGroupAdd
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    //search-bar点击
 | 
			
		||||
    handleProductCancel() {
 | 
			
		||||
      this.productOrUpdateVisible = false;
 | 
			
		||||
      this.productOrEditTitle = "";
 | 
			
		||||
    },
 | 
			
		||||
    handleCurrentChange(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      this.productData = val.newVal ? val.newVal : {}
 | 
			
		||||
    },
 | 
			
		||||
    setCurrent(index) {
 | 
			
		||||
      this.$refs.palletTable1.setCurrent("palletTable", index);
 | 
			
		||||
    },
 | 
			
		||||
    // handleSearchCancel() {
 | 
			
		||||
    //   this.searchOrEditTitle = "";
 | 
			
		||||
    //   this.searchOrUpdateVisible = false;
 | 
			
		||||
    // },
 | 
			
		||||
    conditionSearch() {
 | 
			
		||||
      this.searchOrEditTitle = "搜索";
 | 
			
		||||
      this.searchOrUpdateVisible = true;
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.searchOrUpdate.init();
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // handleConfirm() {
 | 
			
		||||
    //   this.$refs.addOrUpdate.dataFormSubmitHandle();
 | 
			
		||||
    // },
 | 
			
		||||
    // conditionSearchSubmit() {},
 | 
			
		||||
    conditionSearchSubmit(dataForm) {
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      // console.log(key);
 | 
			
		||||
      this.listQuery.name = dataForm.name
 | 
			
		||||
      this.listQuery.code = dataForm.code
 | 
			
		||||
      this.listQuery.page = 1;
 | 
			
		||||
      this.getDataList();
 | 
			
		||||
      this.searchOrUpdateVisible = false;
 | 
			
		||||
      // console.log(11111);
 | 
			
		||||
      // this.conditionSearchSubmit();
 | 
			
		||||
    },
 | 
			
		||||
    exportHandle() {
 | 
			
		||||
      this.$http.get(this.urlOptions.exportURL, { responseType: 'blob' }, {
 | 
			
		||||
        ...this.dataForm
 | 
			
		||||
      }).then((res) => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        // if (res !== 0) {
 | 
			
		||||
        //   return this.$message.error(res.msg) 
 | 
			
		||||
        // }
 | 
			
		||||
        let fileName = ''
 | 
			
		||||
        const contentDisposition = res.headers['content-disposition']
 | 
			
		||||
        if (contentDisposition) {
 | 
			
		||||
          const temp = res.headers['content-disposition']
 | 
			
		||||
            .split(';')[1]
 | 
			
		||||
            .split('=')[1]
 | 
			
		||||
          // 对文件名乱码转义--【Node.js】使用iconv-lite解决中文乱码
 | 
			
		||||
          fileName = decodeURI(temp)
 | 
			
		||||
          console.log(temp)
 | 
			
		||||
        }
 | 
			
		||||
        const blob = new Blob([res.data])
 | 
			
		||||
        const reader = new FileReader()
 | 
			
		||||
        reader.readAsDataURL(blob)
 | 
			
		||||
        reader.onload = (e) => {
 | 
			
		||||
          const a = document.createElement('a')
 | 
			
		||||
          a.download = fileName
 | 
			
		||||
          a.href = e.target.result
 | 
			
		||||
          document.body.appendChild(a)
 | 
			
		||||
          a.click()
 | 
			
		||||
          document.body.removeChild(a)
 | 
			
		||||
        }
 | 
			
		||||
      }).catch(() => { })
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      if (val.type === "delete") {
 | 
			
		||||
        this.$confirm(`确定对[名称=${val.data.customerTypeName}]进行删除操作?`, "提示", {
 | 
			
		||||
          confirmButtonText: "确定",
 | 
			
		||||
          cancelButtonText: "取消",
 | 
			
		||||
          type: "warning",
 | 
			
		||||
        })
 | 
			
		||||
          .then(() => {
 | 
			
		||||
            this.$http.delete(this.urlOptions.deleteURL, { data: [val.data.id] }).then(({ data }) => {
 | 
			
		||||
              if (data && data.code === 0) {
 | 
			
		||||
                this.$message({
 | 
			
		||||
                  message: "操作成功",
 | 
			
		||||
                  type: "success",
 | 
			
		||||
                  duration: 1500,
 | 
			
		||||
                  onClose: () => {
 | 
			
		||||
                    this.getDataList();
 | 
			
		||||
                  },
 | 
			
		||||
                });
 | 
			
		||||
              } else {
 | 
			
		||||
                this.$message.error(data.msg);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          })
 | 
			
		||||
          .catch(() => { });
 | 
			
		||||
      } else if (val.type === 'edit') {
 | 
			
		||||
        this.addOrUpdateVisible = true
 | 
			
		||||
        this.addOrEditTitle = this.$t('edit')
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.addOrUpdate.init(val.data.id);
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // addOrUpdateHandle(productData) {
 | 
			
		||||
    //   this.addOrUpdateVisible = true;
 | 
			
		||||
    //   this.$nextTick(() => {
 | 
			
		||||
    //     this.$refs.addOrUpdate.init(productData);
 | 
			
		||||
    //   });
 | 
			
		||||
    // },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val);
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case "search":
 | 
			
		||||
          // this.listQuery.paramCode = val.paramCode;
 | 
			
		||||
          // console.log(i18n);
 | 
			
		||||
          this.listQuery.name = val.name ? val.name : null
 | 
			
		||||
          this.listQuery.code = val.code ? val.code : null
 | 
			
		||||
          this.listQuery.page = 1
 | 
			
		||||
          this.getDataList()
 | 
			
		||||
          break;
 | 
			
		||||
        case "export":
 | 
			
		||||
         this.exportHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.addOrUpdateVisible = true;
 | 
			
		||||
          this.addOrUpdateHandle()
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
  <!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-02-14 15:02:26
 | 
			
		||||
 * @LastEditTime: 2023-07-12 16:20:26
 | 
			
		||||
 * @LastEditTime: 2023-07-13 10:13:27
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -90,7 +90,7 @@ export default {
 | 
			
		||||
    // 获取信息
 | 
			
		||||
    getInfo() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(`/supplier/qmsProjectType/${this.dataForm.id}`)
 | 
			
		||||
        .get(`/supplier/qmsSupplierRequirementListGroup/${this.dataForm.id}`)
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-04-17 14:23:17
 | 
			
		||||
 * @LastEditTime: 2023-07-11 14:35:52
 | 
			
		||||
 * @LastEditTime: 2023-07-13 11:15:39
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description: 
 | 
			
		||||
-->
 | 
			
		||||
@@ -16,7 +16,7 @@
 | 
			
		||||
        </el-radio-group>
 | 
			
		||||
      </SearchBar>
 | 
			
		||||
      <base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
 | 
			
		||||
        @emitFun="inputChange" @emitButtonClick="emitButtonClick"  :limit="listQuery.limit"
 | 
			
		||||
        @emitFun="inputChange"  :limit="listQuery.limit"
 | 
			
		||||
        :table-data="tableData" >
 | 
			
		||||
        <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
          @clickBtn="handleClick" />
 | 
			
		||||
@@ -117,6 +117,7 @@ export default {
 | 
			
		||||
      urlOptions: {
 | 
			
		||||
        getDataListURL: "/supplier/qmsSupplier/page",
 | 
			
		||||
        deleteURL: "/supplier/qmsSupplier",
 | 
			
		||||
        submitURL: "/supplier/qmsSupplier",
 | 
			
		||||
        exportURL: '/supplier/qmsSupplier/export',
 | 
			
		||||
        getSupplierTypeListURL: '/supplier/qmsSupplierType/page'
 | 
			
		||||
        // submitURL: '/supplier/qmsSupplierType'
 | 
			
		||||
@@ -216,15 +217,29 @@ export default {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      this.tableData[val._pageIndex - 1][val.prop] = val[val.prop]
 | 
			
		||||
      console.log(this.tableData)
 | 
			
		||||
      this.$http.put(this.urlOptions.submitURL, this.tableData[val._pageIndex - 1])
 | 
			
		||||
        .then(({ data: res }) => {
 | 
			
		||||
          if (res.code !== 0) {
 | 
			
		||||
            return this.$message.error(res.msg);
 | 
			
		||||
          }
 | 
			
		||||
          this.$message({
 | 
			
		||||
            message: this.$t("prompt.success"),
 | 
			
		||||
            type: "success",
 | 
			
		||||
            duration: 500,
 | 
			
		||||
            onClose: () => {
 | 
			
		||||
              this.getDataList()
 | 
			
		||||
            },
 | 
			
		||||
          });
 | 
			
		||||
        })
 | 
			
		||||
    },
 | 
			
		||||
    emitButtonClick() {
 | 
			
		||||
      console.log('emitButtonClick')
 | 
			
		||||
      let obj = {}
 | 
			
		||||
      for (let i of this.tableData) {
 | 
			
		||||
        obj[i.prop] = ''
 | 
			
		||||
      }
 | 
			
		||||
      this.tableData.push(obj)
 | 
			
		||||
    },
 | 
			
		||||
    // emitButtonClick() {
 | 
			
		||||
    //   console.log('emitButtonClick')
 | 
			
		||||
    //   let obj = {}
 | 
			
		||||
    //   for (let i of this.tableData) {
 | 
			
		||||
    //     obj[i.prop] = ''
 | 
			
		||||
    //   }
 | 
			
		||||
    //   this.tableData.push(obj)
 | 
			
		||||
    // },
 | 
			
		||||
    getData() {
 | 
			
		||||
      this.$http
 | 
			
		||||
        .get(this.urlOptions.getSupplierTypeListURL, { params: this.listQuery })
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user