From c30b850bdf5c48a2279f293d414850c32501192a Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期一, 29 四月 2024 16:25:25 +0800 Subject: [PATCH] 修改首页样式 --- src/views/quality/finishedProductInspection/index.vue | 698 +++++++++++++++++++++++++++------------------------------ 1 files changed, 327 insertions(+), 371 deletions(-) diff --git a/src/views/quality/finishedProductInspection/index.vue b/src/views/quality/finishedProductInspection/index.vue index 73c770a..1856df6 100644 --- a/src/views/quality/finishedProductInspection/index.vue +++ b/src/views/quality/finishedProductInspection/index.vue @@ -1,33 +1,8 @@ <template> <div class="content-main"> - <div v-if="!showAdd&&!showLook&&!showUp" class="rawPage"> - <!-- <div class="nav"> --> - <!-- <div class="title"> - <el-row> - <el-col :span="12">浜у搧妫�楠�</el-col> - <el-col :span="12"> - <el-button @click="handleAddNew" type="primary" size="mini" icon="el-icon-plus" - style="background: #004EA2; ">鏂板</el-button> - <el-button icon="el-icon-delete" size="mini">鍒犻櫎</el-button> - <el-button icon="el-icon-download" size="mini">瀵煎嚭</el-button> - </el-col> - </el-row> - </div> --> - <!-- <span>妫�娴嬬粨鏋滐細</span> - <el-select v-model="searchData.result" size="small" placeholder="璇烽�夋嫨" style="width: 224px;margin-right: 52px;"> - <el-option :value="''" label="鍏ㄩ儴"></el-option> - <el-option :value="1" label="鍚堟牸"></el-option> - <el-option :value="0" label="涓嶅悎鏍�"></el-option> - </el-select> - <span>浜у搧鍚嶇О锛�</span> - <el-input v-model="searchData.material" size="small" placeholder="璇疯緭鍏ヤ骇鍝佸悕绉�" - style="width: 224px;margin-right: 52px;"></el-input> - <el-button size="mini" @click="()=>{searchData={};getInspectionTableData()}"><span>閲� 缃�</span></el-button> - <el-button size="mini" type="primary" @click="getInspectionTableData" style="background: #004EA2;"><span>鏌� - 璇�</span></el-button> --> - <!-- </div> --> + <div class="rawPage"> <basic-container> - <ttable + <ttable :table="table" @handleSelectionChange="handleSelectionChange" :prelang="prelang" @@ -37,360 +12,341 @@ <template #toolbar></template> </ttable> </basic-container> - <!-- <div class="content-body"> - <div class="inspectionTable"> - <el-table ref="inspectionTable" height="620" :cell-style="{textAlign: 'center'}" - :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" - :data="inspectionTable" style="width: 100%"> - <el-table-column type="selection" width="50"> - </el-table-column> - <el-table-column prop="order_number" label="璁㈠崟鍙�" min-width="100" /> - <el-table-column prop="customer_name" label="瀹㈡埛鍚嶇О" min-width="80" /> - <el-table-column prop="project_name" label="宸ョ▼鍚嶇О" min-width="80" /> - <el-table-column prop="quality_traceability" label="璐ㄩ噺杩芥函鍙�" min-width="108" /> - <el-table-column prop="material_code" label="浜у搧缂栫爜" min-width="100" /> - <el-table-column prop="material" label="浜у搧澶х被" min-width="72" /> - <el-table-column prop="specifications_model" label="瑙勬牸鍨嬪彿" min-width="110" /> - <el-table-column prop="unit" label="鍗曚綅" min-width="50" /> - <el-table-column prop="quantity" label="鏁伴噺" min-width="50" /> - <el-table-column prop="detectionPeriod" label="妫�楠屾棩鏈�" min-width="80" /> - <el-table-column prop="result" label="妫�娴嬬粨鏋�" min-width="80"> - <template slot-scope="scope"> - <span style="color: #34BD66;" v-if="scope.row.result === 1">鍚堟牸</span> - <span style="color: #E84738;" v-else-if="scope.row.result === 0">涓嶅悎鏍�</span> - <span v-else-if="scope.row.result === null || scope.row.result === undefined">鏆傛湭缁撹</span> - </template> - </el-table-column> - <el-table-column label="鎿嶄綔" min-width="80"> - <template slot-scope="scope"> - <el-button type="text" size="small" @click="goToDetail(scope.row)">鏌ョ湅</el-button> - <el-button type="text" size="small">鎵撳嵃</el-button> - <el-button v-if="scope.row.result == null" type="text" size="small" - @click="goUp(scope.row)">缂栬緫</el-button> - </template> - </el-table-column> - </el-table> - </div> --> - <!-- 鍒嗛〉鍣� --> - <!-- <div class="pagination"> - <el-pagination :current-page="pageParams.pageSize" :page-sizes="[10, 50, 100, 200]" - :page-size="pageParams.countSize" layout="total, sizes, prev, pager, next, jumper" :total="pageParams.total" - @size-change="handleSizeChange" @current-change="handleCurrentChange" /> - </div> --> - <!-- </div> --> - </div> - <div class="newPage" v-if="showAdd"> - <finishedProductInspectionAdd /> - </div> - <div class="newPage" v-if="showLook"> - <finishedProductInspectionLook :rowInfo="rowInfo" /> - </div> - <div class="newPage" v-if="showUp"> - <finishedProductInspectionUp :rowInfo="rowInfo" /> + <el-dialog + top="10vh" + title="鎵撳嵃棰勮" + :visible.sync="printDialogVisible" + width="70%"> + <div style="width:100%;height: 60vh;overflow-y: scroll;"> + <printTemplate id="printRaw" :formData="printFormData"></printTemplate> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="()=>{printDialogVisible = false;printFormData=null}">鍙� 娑�</el-button> + <el-button type="primary" @click="printFun()">鎵� 鍗�</el-button> + </span> + </el-dialog> </div> </div> </template> - <script> import ttable from '@/views/common/ztt-table.vue' import * as fecha from 'element-ui/lib/utils/date' - import finishedProductInspectionAdd from './finishedProductInspectionAdd' - import finishedProductInspectionUp from './finishedProductInspectionUp' - import finishedProductInspectionLook from './finishedProductInspectionLook' - import { page } from '@/api/quality/finishedProduct' + import finishedProductInspectionAdd from './finishedProduct-form' + import { page,deletePro,exportExaminationProducts,queryById,downloadReport } from '@/api/quality/finishedProduct' + import { transform } from '@/util/fileTransform' + import { mapGetters } from 'vuex' + import printTemplate from './finishedProducter-print.vue' + import PrintJS from 'print-js' + import { transformZip } from '@/util/fileTransform' export default { - components: { - finishedProductInspectionAdd, - finishedProductInspectionUp, - finishedProductInspectionLook, - ttable - }, - data() { - return { - result:[{label:'鍏ㄩ儴',value: ''},{label:'鍚堟牸',value: '1'},{label:'涓嶅悎鏍�',value: '0'}], - type: [1], - prelang: 'finishedProduct', - ajaxFun: page, - options: { - height: 300, // 榛樿楂樺害-涓轰簡琛ㄥご鍥哄畾 - stripe: true, // 鏄惁涓烘枒椹汗 table - highlightCurrentRow: false, // 鏄惁瑕侀珮浜綋鍓嶈 - border: true, // 鏄惁鏈夌旱鍚戣竟妗� - lazy: false, // 鏄惁闇�瑕佹噿鍔犺浇 - fit: true, // 鍒楃殑瀹藉害鏄惁鑷拺寮� - multiSelect: true, // - seqNo: true, - isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳 - isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H - isSearch: true, // 楂樼骇鏌ヨ鎸夐挳 - defaultOrderBy: { column: 'createTime', direction: 'desc' }, - }, - table: { - total: 0, - currentPage: 1, - pageSize: 20, - data: [], - // 鏍囬 - column: [ - { - minWidth: '120', - prop: 'orderNumber', - label: '璁㈠崟鍙�', - isTrue: true, - isSearch: true, - searchInfoType: 'text', - render: { fun: this.addOrUpdateHandle } - }, - { - minWidth: '120', - prop: 'customerName', - label: '瀹㈡埛鍚嶇О', - isTrue: true, - isSearch: true, - searchInfoType: 'text' - }, - { - minWidth: '130', - width: '150', - prop: 'projectName', - label: '宸ョ▼鍚嶇О', - sort: true, - isTrue: true, - isSearch: true, - searchInfoType: 'text', - }, - { - minWidth: '120', - prop: 'materialCode', - label: '浜у搧缂栫爜', - isTrue: true, - isSearch: true, - searchInfoType: 'text' - }, - { - minWidth: '120', - prop: 'material', - label: '浜у搧澶х被', - isTrue: true, - isSearch: true, - searchInfoType: 'text' - }, - { - minWidth: '120', - prop: 'specs', - label: '瑙勬牸鍨嬪彿', - isTrue: true, - isSearch: true, - searchInfoType: 'text' - }, - { - minWidth: '120', - prop: 'unit', - label: '鍗曚綅', - isTrue: true, - isSearch: true, - searchInfoType: 'text' - }, - { - minWidth: '120', - prop: 'quantity', - label: '鏁伴噺', - isTrue: true, - isSearch: true, - searchInfoType: 'text' - }, - { - minWidth: '120', - prop: 'createTime', - label: '妫�楠屾棩鏈�', - sort: true, - isTrue: true, - isSearch: true, - searchInfoType: 'datetimerange', - formatter: this.formatDateTime, - }, - { - minWidth: '120', - prop: 'result', - label: '妫�娴嬬粨鏋�', - isTrue: true, - isSearch: true, - searchInfoType: 'select', - formatter: this.formatResult, - optList: () => { - return this.result - } - }, - ], - toolbar: [ - { - text: '鏂板', - type: 'primary', - fun: ()=>this.showAdd=true - }, - { - text: '鍒犻櫎', - }, - { - text: '瀵煎嚭', - } - ], - operator: [{ - text: '鎵撳嵃', - type: 'text', - size: 'small', - },{ - text: '浣滃簾', - type: 'text', - size: 'small', - fun: this.deleteHandle - }], - operatorConfig: { - fixed: 'right', - label: '鎿嶄綔', - width: 100, - minWidth: 100 - }, - }, - - - - - - - searchData: { - result: '', - material: '', - }, - // 涓绘満宸ヤ笅鎷夋 - usernameOptions: [], - inspectionTable: [], - rowInfo: {}, - pageParams: { - countSize: 10, //姣忛〉鏁伴噺 - pageSize: 1, // 褰撳墠椤电爜 - total: 0 - }, - showAddPage: false, - showAdd: false, - showLook: false, - showUp: false, - showDetail: false, - addInspectionform: [{ - number: '', - username: '', - projectname: '', - tracenumber: '', - code: '', - class: '', - specificationmodel: '', - unit: '', - quantity: '', - group: '', - worker: '', - machine: '' - }], - inspectionItems: [{ - project: '甯冮殕杩�', - unit: '鍚�', - standardVal: '8219384314', - controlVal: '9823401', - detectionVal: '11111', - device: '', - conclusion: '鍚堟牸' - }], - inspectionResultForm: [{ - id: '274024', - name: '111', - inspecter: '111', - conclusion: '', - operation: '' - }], - finishedInsInfo: {} - } - }, - created() { - this.init() - // this.getInspectionTableData() - }, - methods: { - formatResult(row, column, cellValue){ - if(cellValue != undefined || cellValue != null){ - if(cellValue == 0){ - return "<span style='color:#E84738;'>涓嶅悎鏍�</span>" - }else if(cellValue == 1){ - return "<span style='color:#34BD66;'>鍚堟牸</span>" - } - } + components: { + finishedProductInspectionAdd, + ttable, + printTemplate + }, + data() { + return { + multipleSelection: [], + printFormData: null, + printDialogVisible: false, + result:[{label:'鍏ㄩ儴',value: ''},{label:'鍚堟牸',value: '1'},{label:'涓嶅悎鏍�',value: '0'}], + type: [1], + prelang: 'finishedProduct', + ajaxFun: page, + options: { + height: 300, // 榛樿楂樺害-涓轰簡琛ㄥご鍥哄畾 + stripe: true, // 鏄惁涓烘枒椹汗 table + highlightCurrentRow: false, // 鏄惁瑕侀珮浜綋鍓嶈 + border: true, // 鏄惁鏈夌旱鍚戣竟妗� + lazy: false, // 鏄惁闇�瑕佹噿鍔犺浇 + fit: true, // 鍒楃殑瀹藉害鏄惁鑷拺寮� + multiSelect: true, // + seqNo: true, + isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳 + isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H + isSearch: true, // 楂樼骇鏌ヨ鎸夐挳 + defaultOrderBy: { column: 'createTime', direction: 'desc' }, }, - formatDateTime(row, column, cellValue) { - return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : '' + table: { + total: 0, + currentPage: 1, + pageSize: 20, + data: [], + // 鏍囬 + column: [ + { + minWidth: '120', + prop: 'finInsNo', + label: '浜у搧妫�楠岀紪鍙�', + isTrue: true, + isSearch: true, + searchInfoType: 'text', + render: { fun: this.addOrUpdateHandle } + }, + { + minWidth: '120', + prop: 'productNo', + label: '鎶ュ伐鍗曞彿', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'orderNumber', + label: '璁㈠崟鍙�', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'customerName', + label: '瀹㈡埛鍚嶇О', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '130', + prop: 'projectName', + label: '宸ョ▼鍚嶇О', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'text', + }, + { + minWidth: '120', + prop: 'outBatchNo', + label: '鎵规鍙�', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'materialCode', + label: '浜у搧缂栧彿', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + width: '150', + prop: 'material', + label: '浜у搧鍚嶇О', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'specs', + label: '瑙勬牸鍨嬪彿', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'unit', + label: '鍗曚綅', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'quantity', + label: '鏁伴噺', + isTrue: true, + isSearch: true, + searchInfoType: 'text' + }, + { + minWidth: '120', + prop: 'createTime', + label: '鎶ユ鏃ユ湡', + sort: true, + isTrue: true, + isSearch: true, + searchInfoType: 'datetimerange', + formatter: this.formatDateTime, + }, + { + minWidth: '120', + prop: 'result', + label: '妫�娴嬬粨鏋�', + isTrue: true, + isSearch: true, + searchInfoType: 'select', + formatter: this.formatResult, + optList: () => { + return this.result + } + }, + ], + toolbar: [], + operator: null, + operatorConfig: { + fixed: 'right', + label: '鎿嶄綔', + width: 100, + minWidth: 100 + }, }, - addOrUpdateHandle(row) { - this.$router.push({ - name: 'rawMaterialForm', - query: { id: row == null ? null : row.id } + } + }, + created() { + if(this.permissions.quality_finishedProductInspection_download){ + this.table.toolbar.push({ + text: '涓嬭浇妫�楠屾姤鍛�', + type: 'primary', + loading: false, + disabled: false, + fun: this.downloadProReport + }) + } + if(this.permissions.quality_finishedProductInspection_del){ + this.table.operator = [{ + text: '浣滃簾', + type: 'text', + size: 'small', + fun: this.deleteHandle + }] + } + }, + computed: { + ...mapGetters(['permissions']) + }, + watch:{ + printFormData(newVal){ + if(newVal){ + this.printFormData = newVal + } + } + }, + methods: { + downloadProReport(){ + const _than = this + let selection = this.multipleSelection + if(!selection || selection.length < 1){ + this.$message.error("璇峰厛閫夋嫨妫�楠屾暟鎹�") + return + }else{ + let arr = selection.filter(s=>{ + return s.result==null || s.result=='' }) - }, - handleSelectionChange(){ - - }, - // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 - handleSizeChange(val) { - console.log(`姣忛〉 ${val} 鏉) - this.currentPage = 1 - this.pageSize = val - }, - // 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤� - handleCurrentChange(val) { - console.log(`褰撳墠椤�: ${val}`) - this.currentPage = val - }, - handleAddNew() { - this.showAdd = true - }, - // async getInspectionTableData() { - // const { - // data: { - // row, - // total - // } - // } = await this.$axios.get(this.$api.url.finishedInsListPage, { - // params: { - // ...this.pageParams, - // ...this.searchData - // } - // }) - // this.inspectionTable = row - // this.pageParams.total = total - // }, - goToDetail(row) { - this.rowInfo = row - this.showLook = true - }, - goUp(row) { - this.rowInfo = row - this.showUp = true - }, - async init() { - // const {data} = await this.$axios.get(this.$api.url.finishedInspectUser) - // this.usernameOptions = data - - }, - comBackMain(val) { - this.showAdd = false - this.showLook = false - this.showUp = false - this.init() - // this.getInspectionTableData() - if (val) { - this.$parent.removeAllTab() - } - } - } - - } + if(arr.length > 0){ + this.$message.error("鍙兘閫夋嫨宸叉娴嬬殑鏁版嵁") + return + } + let ids = [] + selection.forEach(ele=>{ + ids.push(ele.id) + }) + _than.table.toolbar.find((e) => e.text === '涓嬭浇妫�楠屾姤鍛�').loading = true + _than.table.toolbar.find((e) => e.text === '涓嬭浇妫�楠屾姤鍛�').disabled = true + try { + downloadReport({ids : ids}).then(res=>{ + transformZip(res) + }) + } catch (error) { + console.log(error) + } finally{ + _than.table.toolbar.find((e) => e.text === '涓嬭浇妫�楠屾姤鍛�').loading = false + _than.table.toolbar.find((e) => e.text === '涓嬭浇妫�楠屾姤鍛�').disabled = false + } + } + }, + //鎵撳嵃鎸夐挳 + printFun() { + const style = '@page {margin: 10mm 5mm; margin-bottom: 0;margin-top:0;} ' +'@media print {.title{font-size:30pt;font-weight: 400;font-family: 榛戜綋;!important;}' ; + PrintJS({ + printable: "printRaw", + type: "html", + scanStyles: false, + maxWidth: 1200, + header: "浜у搧妫�娴嬫姤鍛�", + style:style, + css:'./title.css', + targetStyles: ["*"], + ignoreElements: ["no-ignore"], + orientation: 'portrait' + }); + }, + //鏌ョ湅鎶ュ憡鎸夐挳 + showPrint(row){ + queryById(row.id).then(res=>{ + this.printFormData = res.data.data + this.printFormData.createTime = row.createTime + this.printFormData.updateTime = row.updateTime + this.printDialogVisible = true + }).catch(error=>{ + }) + }, + exportExcel(){ + let queryParam=this.$refs.finishedProduct.getQueryParam(); + delete queryParam.criteria + exportExaminationProducts(queryParam).then((res)=>{ + transform(res) + }) + }, + deleteHandle(row){ + this.$confirm('纭鍒犻櫎璇ユ暟鎹悧锛�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning', + }).then(()=>{ + deletePro(row.id).then(res=>{ + if(res.data.code == 0){ + this.$message.success("鍒犻櫎鎴愬姛") + }else{ + this.$message.error("鍒犻櫎澶辫触") + } + this.getData() + }) + }) + }, + // 鏂板 / 淇敼 + addOrUpdateHandle(row) { + if(!this.permissions.quality_finishedProductInspection_edit && row.id!=null){ + this.$message.error("璇ヨ鑹叉病鏈夋搷浣滄潈闄�") + return + } + this.$router.push({ + name: 'finishedProductForm', + query: { + id: row == null ? null : row.id, + }, + params: { + resultVal: row == null ? null : row.result + } + }) + }, + formatResult(row, column, cellValue){ + if(cellValue != undefined || cellValue != null){ + if(cellValue == 0){ + return "<span style='color:#E84738;'>涓嶅悎鏍�</span>" + }else if(cellValue == 1){ + return "<span style='color:#34BD66;'>鍚堟牸</span>" + } + } + }, + formatDateTime(row, column, cellValue) { + return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : '' + }, + handleSelectionChange(val){ + this.multipleSelection = val + }, + getData() { + this.$refs.finishedProduct.getDataList() + }, + } +} </script> <style scope="scope"> @@ -477,4 +433,4 @@ flex: 1; overflow-y: scroll; } */ -</style> \ No newline at end of file +</style> -- Gitblit v1.9.3