zouyu
2023-11-24 ef0c3a4140ba4af8b629838c7a34884e39a64126
	modified:   .gitignore
modified: src/views/quality/rawMaterial/index.vue
modified: src/views/quality/rawMaterial/rawMaterial-form.vue
modified: src/views/quality/rawMaterial/rawMaterial-print.vue
modified: vue.config.js
已修改5个文件
253 ■■■■■ 文件已修改
.gitignore 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/quality/rawMaterial/index.vue 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/quality/rawMaterial/rawMaterial-form.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/quality/rawMaterial/rawMaterial-print.vue 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -19,6 +19,7 @@
# Editor directories and files
.idea
.vscode
.nvmdrc
*.suo
*.ntvs*
*.njsproj
@@ -29,6 +30,3 @@
# Lock File
package-lock.json
yarn.lock
# config.js
vue.config.js
src/views/quality/rawMaterial/index.vue
@@ -69,6 +69,7 @@
            resultData:[],
            addOrUpdateVisible: false,
            type: [1],
            multipleSelection: [],
            prelang: 'rawMaterial',
            ajaxFun: getRawInspectList,
            options: {
@@ -209,7 +210,13 @@
                    text: '新增',
                    type: 'primary',
                    fun: this.addOrUpdateHandle
                }],
                    },
                    {
                        text: '下载检验报告',
                        type: 'primary',
                        fun: this.downloadReport
                    }
                ],
                operator: [{
                    text: '打印',
                    type: 'text',
@@ -245,9 +252,7 @@
        RawMaterialForm,
        printTemplate,
    },
    created() {
    },
    created() { },
    computed: {
        ...mapGetters(['permissions'])
    },
@@ -259,6 +264,22 @@
        }
    },
    methods:{
        downloadReport(){
            let selection = this.multipleSelection
            if(!selection || selection.length < 1){
                this.$message.error("请先选择检验数据")
                return
            }else{
                let arr = selection.filter(s=>{
                    return s.judgeState==null || s.judgeState==''
                })
                if(arr.length > 0){
                    this.$message.error("只能选择已检测的数据")
                    return
                }
                console.log(selection)
            }
        },
        //查看报告按钮
        previewFun(row){
            getObj(row.id).then(res=>{
@@ -274,10 +295,17 @@
            PrintJS({
                printable: "printRaw",
                type: "html",
                maxWidth: 880,
                // header: "原材料检测报告",
                style: '@page {margin: 10mm 5mm;}',
                targetStyles: ["*"],
                style: `@page {margin: 0mm 5mm;size: A4;};
                    html {zoom:100%;};
                    @media print {
                      html,body{
                        width:880pt;
                        height:900pt;
                        margin:0;
                      }
                    }`,
                ignoreElements: ["no-ignore"],
                orientation: 'portrait'
            });
@@ -360,37 +388,36 @@
        },
        getData() {
            this.$refs.rawMaterialTable.getDataList()
        },
        // table自带事件
        handleSelectionChange(val) {
            this.multipleSelection = val
            // 根据状态,禁用表头按钮
            // 筛选出选中记录的状态
            var stateArr = val.map(function(value, index) {
                return value.coState
            })
            // var stateArr = val.map(function(value, index) {
            //     return value.coState
            // })
            // 选中状态数组元素去重
            var uniqueStateArr = []
            for (var i = 0; i < stateArr.length; i++) {
                if (uniqueStateArr.indexOf(stateArr[i]) == -1) {
                uniqueStateArr.push(stateArr[i])
                }
            }
            // var uniqueStateArr = []
            // for (var i = 0; i < stateArr.length; i++) {
            //     if (uniqueStateArr.indexOf(stateArr[i]) == -1) {
            //     uniqueStateArr.push(stateArr[i])
            //     }
            // }
            // 循环自定义按钮,判断每个按钮的permitArr是否完全包含选中状态,若完全包含,则按钮亮,否则按钮灰
            for (var i = 0; i < this.stateTagArr.length; i++) {
                if (
                uniqueStateArr.every((val) =>
                    this.stateTagArr[i].permitArr.length <= 0
                    ? true
                    : this.stateTagArr[i].permitArr.includes(val)
                )
                ) {
                this.stateTagArr[i].disabled = false
                } else {
                this.stateTagArr[i].disabled = true
                }
            }
            this.multipleSelection = val
            // for (var i = 0; i < this.stateTagArr.length; i++) {
            //     if (
            //     uniqueStateArr.every((val) =>
            //         this.stateTagArr[i].permitArr.length <= 0
            //         ? true
            //         : this.stateTagArr[i].permitArr.includes(val)
            //     )
            //     ) {
            //     this.stateTagArr[i].disabled = false
            //     } else {
            //     this.stateTagArr[i].disabled = true
            //     }
            // }
        },
    }
  }
src/views/quality/rawMaterial/rawMaterial-form.vue
@@ -385,9 +385,11 @@
          let resultVal = '1'
          this.list.forEach(item=>{
              if(item.children){
                if(obj.testState == 0){
                item.children.forEach(ele=>{
                  if(ele.testState == 0){
                    resultVal = '0'
                }
                })
              }
          })
          this.resultVal = resultVal
@@ -417,13 +419,15 @@
          number: this.unqualifiedNum,
        }
        updateRawInspectsById(data).then(res => {
          if(res.data.code == 0){
          if(res.data.code == 0 && (res.data.data=='1'|| res.data.data=='0')){
            sessionStorage.setItem("raw-resultVal-"+this.dataForm.id,res.data.data)
            this.$message.success("上报成功");
            this.dialogVisible = false
          }else{
            this.$message.error("上报失败,",res.data.data);
          }
        });
          this.dialogVisible = false
        this.checkTestState()
        });
      },
      addTeatValueColumn(){
        this.empiricalValueAdd = this.empiricalValueAdd + 1;
@@ -490,7 +494,6 @@
        }
      },
      updateTestValue(row,index){
        console.log(row);
        if(row.rpId == null){
          return
        }
@@ -582,7 +585,6 @@
        }
      },
      changeState(row, index) {
          console.log(row)
          if (row.rpId != null && row.rpId != '') {
            let val = row.testValueList.join(",")
            if (val === undefined || val === '' || val === null) {
src/views/quality/rawMaterial/rawMaterial-print.vue
@@ -1,5 +1,6 @@
<template>
<div style="word-wrap:break-word;text-justify-trim:punctuation">
<div>
    <div style="margin-top:20pt;word-wrap:break-word;text-justify-trim:punctuation" :key="i" v-for="(project,i) in projectList">
    <div class="WordSection1" style="layout-grid:15.6pt;">
        <div align="center">
            <table class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0" width="629"
@@ -64,7 +65,12 @@
            <span style="font-size:10.0pt;font-family:宋体">检验记录表</span><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif">-</span>
            <span style="font-size:10.0pt;font-family:宋体">机加工件</span><span style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif"> </span><span style="font-size:10.0pt;font-family:宋体">(</span><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif">Inpection Record-machining </span>
            <span style="font-size:10.0pt;font-family:宋体">)</span><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
            <span style="font-size:10.0pt;font-family:宋体">页码(</span><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif"> Page No.</span><span style="font-size:10.0pt;font-family:宋体">):</span><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
                <span style="font-size:10.0pt;font-family:宋体">页码(</span>
                    <span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif"> Page No.</span>
                        <span style="font-size:10.0pt;font-family:宋体">):</span>
                        <span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif">
                            {{i+1}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                        </span>
        </p>
        <div align="center">
            <table class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0" width="628"
@@ -80,7 +86,7 @@
                        </td>
                        <td width="127" colspan="5" style="width:95.5pt;border:solid windowtext 1.0pt;border-left:1pt solid windowtext;padding:0.2cm 5.4pt 0.2cm 5.4pt">
                            <p class="MsoNormal" align="center" style="text-align:center">
                                <span lang="EN-US" style="font-family:&quot;Arial&quot;,sans-serif" v-text="tableData.name"></span>
                                    <span lang="EN-US" style="font-family:&quot;Arial&quot;,sans-serif" v-text="project.name"></span>
                            </p>
                        </td>
                        <td width="113" colspan="3" style="width:84.95pt;border:solid windowtext 1.0pt;border-left:1pt solid windowtext;padding:0.2cm 5.4pt 0.2cm 5.4pt">
@@ -93,7 +99,7 @@
                        </td>
                        <td width="86" colspan="4" style="width:64.65pt;border:solid windowtext 1.0pt;border-left:1pt solid windowtext;padding:0.2cm 5.4pt 0.2cm 5.4pt">
                            <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US"
                                    style="font-family:&quot;Arial&quot;,sans-serif" v-text="tableData.specs"></span></p>
                                        style="font-family:&quot;Arial&quot;,sans-serif" v-text="project.specs"></span></p>
                        </td>
                        <td width="72" colspan="2" style="width:54.35pt;border:solid windowtext 1.0pt;border-left:1pt solid windowtext;padding:0.2cm 5.4pt 0.2cm 5.4pt">
                            <p class="MsoNormal" align="center" style="text-align:center"><span
@@ -103,7 +109,7 @@
                        </td>
                        <td width="128" colspan="3" style="width:96.0pt;border:solid windowtext 1.0pt;border-left:1pt solid windowtext;padding:0.2cm 5.4pt 0.2cm 5.4pt">
                            <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US"
                                    style="font-family:&quot;Arial&quot;,sans-serif" v-text="tableData.rmessage.split(',')[0]"></span></p>
                                        style="font-family:&quot;Arial&quot;,sans-serif" v-text="project.rmessage.split(',')[0]"></span></p>
                        </td>
                    </tr>
                    <tr>
@@ -127,7 +133,7 @@
                        </td>
                        <td width="86" colspan="4" style="width:64.65pt;border-top:1pt solid windowtext;border-left:1pt solid windowtext;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0.2cm 5.4pt 0.2cm 5.4pt">
                            <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US"
                                    style="font-family:&quot;Arial&quot;,sans-serif" v-text="tableData.number"></span></p>
                                        style="font-family:&quot;Arial&quot;,sans-serif" v-text="project.number"></span></p>
                        </td>
                        <td width="72" colspan="2" style="width:54.35pt;border-top:1pt solid windowtext;border-left:1pt solid windowtext;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0.2cm 5.4pt 0.2cm 5.4pt">
                            <p class="MsoNormal" align="center" style="text-align:center"><span
@@ -137,7 +143,7 @@
                        </td>
                        <td width="128" colspan="3" style="width:96.0pt;border-top:1pt solid windowtext;border-left:1pt solid windowtext;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0.2cm 5.4pt 0.2cm 5.4pt">
                            <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US"
                                    style="font-family:&quot;Arial&quot;,sans-serif" v-text="tableData.supplier"></span></p>
                                        style="font-family:&quot;Arial&quot;,sans-serif" v-text="project.supplier"></span></p>
                        </td>
                    </tr>
                    <tr>
@@ -178,11 +184,11 @@
                        </td>
                        <td width="43" v-for="(item,index) in columnLength" :key="index" colspan="1" style="width:32.2pt;border-top:1pt solid windowtext;border-left:1pt solid windowtext;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0.2cm 5.4pt 0.2cm 5.4pt">
                            <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US"
                                    style="font-size:9.0pt;font-family:&quot;Arial&quot;,sans-serif">{{item>9?item:'0'+item}}</span></p>
                                        style="font-size:9.0pt;font-family:&quot;Arial&quot;,sans-serif">{{item>9||i>0?(item+(i*columnLength)):'0'+item}}</span></p>
                        </td>
                    </tr>
                </tbody>
                <tbody v-for="(item,index) in projectList" :key="index">
                    <tbody v-for="(item,index) in project.children" :key="index">
                    <tr style="height:19.85pt">
                        <td width="85" :rowspan="item.children.length" style="width:63.95pt;border:solid windowtext 1.0pt;padding:0.2cm 5.4pt 0.2cm 5.4pt;height:19.85pt">
                            <p class="MsoNormal" align="center" style="text-align:center"><span
@@ -198,7 +204,7 @@
                            <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US"
                                    style="font-family:&quot;Arial&quot;,sans-serif"  v-text="item.children[0].required"></span></p>
                        </td>
                        <td width="43" v-for="(val,index) in item.children[0].testValueList" :key="index" colspan="1" style="width:32.2pt;border-top:1pt solid windowtext;border-left:1pt solid windowtext;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0.2cm 5.4pt 0.2cm 5.4pt;height:19.85pt">
                            <td width="43" v-for="(val,index) in item.children[0].testValList" :key="index" colspan="1" style="width:32.2pt;border-top:1pt solid windowtext;border-left:1pt solid windowtext;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0.2cm 5.4pt 0.2cm 5.4pt;height:19.85pt">
                            <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US"
                                    style="font-family:&quot;Arial&quot;,sans-serif">{{val}}</span></p>
                        </td>
@@ -220,7 +226,7 @@
                            <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US"
                                    style="font-family:&quot;Arial&quot;,sans-serif">{{j.required}}</span></p>
                        </td>
                        <td width="59" v-for="(testValue,index) in j.testValueList" :key="index" style="width:44.4pt;border:1pt solid windowtext;padding:0.2cm 5.4pt 0.2cm 5.4pt;height:19.85pt">
                            <td width="59" v-for="(testValue,index) in j.testValList" :key="index" style="width:44.4pt;border:1pt solid windowtext;padding:0.2cm 5.4pt 0.2cm 5.4pt;height:19.85pt">
                            <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US"
                                    style="font-family:&quot;Arial&quot;,sans-serif">{{testValue}}</span></p>
                        </td>
@@ -281,7 +287,7 @@
                        <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US"
                                style="font-family:&quot;Arial&quot;,sans-serif" v-text="tableData.creatTime.split(' ')[0]"></span></p>
                    </td>
                    <td width="83" colspan="3" style="width:62.25pt;border-top:1pt solid windowtext;border-left:1pt solid windowtext;border-bottom:none;border-right:solid windowtext 1.0pt;padding:0.2cm 5.4pt 0.2cm 5.4pt">
                        <td width="83" dis colspan="3" style="width:62.25pt;border-top:1pt solid windowtext;border-left:1pt solid windowtext;border-bottom:none;border-right:solid windowtext 1.0pt;padding:0.2cm 5.4pt 0.2cm 5.4pt">
                        <p class="MsoNormal" align="center" style="text-align:center">
                            <span style="font-family:宋体">审</span>
                            <span lang="EN-US" style="font-family:&quot;Arial&quot;,sans-serif">&nbsp;</span>
@@ -323,6 +329,7 @@
    <p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
    </div>
</div>
</div>
</template>
<script>
@@ -332,6 +339,19 @@
            type: Object,
            default:()=>{
                return {}
            }
        }
    },
    created(){
        this.tableData = this.formData
        this.initData()
    },
    watch:{
        formData(newVal){
            if(newVal){
                this.projectList = []
                this.tableData = newVal
                this.initData()
            }
        }
    },
@@ -361,21 +381,71 @@
    methods:{
        initData(){
            let deviceNameList = []
            let maxLen = 0
            let pageSize = 0
            if(this.tableData.children){
                this.tableData.children.forEach(e => {
                    this.projectList.push(e)
                    if(e.children){
                        e.children.forEach(o =>{
                            if(o.testValue){
                               let testValList = o.testValue.split(",")
                                if( testValList.length > maxLen){
                                    maxLen = testValList.length
                                }
                            }
                            if(o.deviceName){
                                deviceNameList.push(o.deviceName)
                            }
                        })
                    }
                });
                })
                pageSize = Math.ceil(Number(maxLen)/Number(this.columnLength))
                this.tableData.children.forEach(ele=>{
                    if(ele.children){
                        ele.children.forEach(obj =>{
                            let testValList = []
                            if(obj.testValue){
                                testValList = obj.testValue.split(",")
            }
                            let size = (this.columnLength*pageSize) - (testValList.length)
                            obj.testValList = testValList
                            for(var i=0;i<size;i++){
                                obj.testValList.push('')
                            }
                        })
                    }
                })
            }
            this.pageDataFun(pageSize,this.tableData)
            this.deviceStr = Array.from(new Set(deviceNameList)).join(",")
        },
        initProjectList(list){
        //获取每页的检验项目
        pageDataFun(pageSize,data){
            let tabData = []
            if(pageSize>0 && data){
                for(var i=0;i<pageSize;i++){
                    let obj = JSON.parse(JSON.stringify(data))
                    if(obj.children){
                        obj.children.forEach(o=>{
                            if(o.children){
                                o.children.forEach(e=>{
                                    if(e.testValList){
                                        let colLen = this.columnLength
                                        let start = colLen*i
                                        let end = ((1+i)*colLen)
                                        e.testValList = e.testValList.slice(start,end)
                                        tabData.push(obj)
                                    }
                                })
                            }
                        })
                        this.initRow(obj.children)
                    }
                }
            }
            this.projectList = tabData
        },
        initRow(list){
            const data = {
                            deviceId: '',
                            deviceName: '',
@@ -384,27 +454,13 @@
                            rpUnit: '',
                            testState: null,
                            userName: '',
                            testValueList: new Array(this.columnLength)
                            testValList: new Array(this.columnLength)
                        }
            let rowNum = 15
            let columnNum = this.columnLength
            if(list && list.length<2){
                list.forEach(item=>{
                    if(item.children && item.children.length < rowNum){
                        rowNum-=item.children.length
                        for(let j=0;j<item.children.length;j++){
                            let arr = []
                            if(item.children[j].testValue){
                                arr = item.children[j].testValue.split(",")
                            }
                            item.children[j].testValueList = arr
                            if(item.children[0].testValueList.length< columnNum ){
                                let num = columnNum - item.children[j].testValueList.length
                                for(let i=0;i<num;i++){
                                    item.children[j].testValueList.push("")
                                }
                            }
                        }
                        for(let i=0;i< rowNum;i++){
                            item.children.push(data)
                        }
@@ -415,20 +471,6 @@
                list.forEach(item=>{
                    if(item.children){
                        size+=item.children.length
                        item.children.forEach(obj=>{
                            if(obj.testValue){
                                let testValueList = obj.testValue.split(",")
                                obj.testValueList = testValueList
                                if(testValueList.length < columnNum){
                                    let len = columnNum-testValueList.length
                                    for(var i=0;i<len;i++){
                                        obj.testValueList.push("")
                                    }
                                }
                            }else{
                                obj.testValueList = new Array(12)
                            }
                        })
                    }
                })
                if(size < rowNum){
@@ -438,24 +480,8 @@
                    }
                }
            }
            this.projectList = list
        }
    },
    created(){
        this.tableData = this.formData
        this.initData()
        this.initProjectList(this.projectList)
    },
    watch:{
        formData(newVal){
            if(newVal){
                this.projectList = []
                this.tableData = newVal
                this.initData()
                this.initProjectList(this.projectList)
            }
        }
    }
}
</script>
vue.config.js
@@ -3,7 +3,7 @@
 * https://cli.vuejs.org/zh/config/
 */
// const url = 'http://192.168.0.23:9999'
const url = 'http://192.168.83.249:9999'
// const url = 'http://192.168.83.249:9999'
  // const url = 'http://192.168.0.60:9999'
  const url = 'http://localhost:9999'