From d75c40cd7e8ab784b5d9caa289e22f2e7a9b6ea7 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周二, 11 6月 2024 15:04:55 +0800 Subject: [PATCH] 工序产量查询 --- iwara-scada-web/src/api/modular/main/WorkPieceInfoManage.js | 15 + iwara-scada-web/src/views/main/WorkPieceInfoYield/index.vue | 300 +++++++++++++++++++++++++++++++++++++ iwara-scada-web/src/views/main/WorkPieceInfoYield/editForm.vue | 137 +++++++++++++++++ 3 files changed, 452 insertions(+), 0 deletions(-) diff --git a/iwara-scada-web/src/api/modular/main/WorkPieceInfoManage.js b/iwara-scada-web/src/api/modular/main/WorkPieceInfoManage.js index 5893a1e..b060a0a 100644 --- a/iwara-scada-web/src/api/modular/main/WorkPieceInfoManage.js +++ b/iwara-scada-web/src/api/modular/main/WorkPieceInfoManage.js @@ -35,6 +35,21 @@ }) } +export function WorkPieceInfoYieldPage (parameter) { + return axios({ + url: '/WorkPieceProcess/queryYield', + method: 'get', + params: parameter + }) +} +export function WorkPieceInfoYieldToExcel1 (parameter) { + return axios({ + url: '/WorkPieceProcess/exportYield', + method: 'get', + params: parameter, + responseType: 'blob' + }) +} /** * 鏌ヨ鍦ㄥ埗鍝佺洃鎺� 浜у搧缁村害鏌ヨ * diff --git a/iwara-scada-web/src/views/main/WorkPieceInfoYield/editForm.vue b/iwara-scada-web/src/views/main/WorkPieceInfoYield/editForm.vue new file mode 100644 index 0000000..0573682 --- /dev/null +++ b/iwara-scada-web/src/views/main/WorkPieceInfoYield/editForm.vue @@ -0,0 +1,137 @@ +锘�<!-- + * @Author: 闄堢鏂� 15821704398@163.com + * @Date: 2023-03-17 10:33:58 + * @LastEditors: 闄堢鏂� 15821704398@163.com + * @LastEditTime: 2023-03-17 14:33:36 + * @FilePath: \iwara-scada-web\src\views\main\WorkPieceInfo\editForm.vue + * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE +--> +<template> + <a-modal + title="璐ㄩ噺鐘舵�佷慨鏀�" + :width="450" + :visible="visible" + :confirmLoading="confirmLoading" + @ok="handleSubmit" + @cancel="handleCancel" + > + <a-form-model :model="form" ref="formRef" :label-col="labelCol" :wrapper-col="wrapperCol" :rules="rules"> + <a-form-model-item label="璐ㄩ噺鐘舵��" > + <a-radio-group v-model="form.status"> + <a-radio v-for="item in statusArr" :key="item.value" :value="item.value">{{ item.title }}</a-radio> + </a-radio-group> + </a-form-model-item> + + <a-form-model-item label="宸ュ簭" > + <a-select allow-clear v-model="form.workingProcedureCurrent" placeholder="璇烽�夋嫨宸ュ簭"> + <a-select-option v-for="(item, index) in processSelectData" :key="index" :value="item.code"> + {{ item.name }} + </a-select-option> + </a-select> + </a-form-model-item> + + <a-form-model-item label="瀵嗙爜" prop="pwd"> + <a-input v-model="form.pwd" type="password" placeholder="璇疯緭鍏ュ瘑鐮�"></a-input> + </a-form-model-item> + </a-form-model> + </a-modal> +</template> + +<script> +import { updatePieceStatus } from '@/api/modular/main/WorkPieceInfoManage' +export default { + props: { + selectedRows: { type: Array, default: () => [] }, + processSelectData: { type: Array, default: () => [] } + }, + emits: ['refresh'], + data() { + return { + labelCol: { + xs: { span: 24 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 15 } + }, + visible: false, + confirmLoading: false, + form: { + status: '', + pwd: '' + }, + statusArr: [ + { value: '1', title: '鍚堟牸' }, + { value: '2', title: '涓嶅悎鏍�' }, + { value: '3', title: '鐤戜技' } + ], + rules: { + status: [{ required: true, message: '璐ㄩ噺鐘舵�佷笉鑳戒负绌�', trigger: 'blur' }], + workingProcedureCurrent: [{ required: true, message: '宸ュ簭涓嶈兘涓虹┖', trigger: 'blur' }], + pwd: [{ required: true, message: '瀵嗙爜涓嶈兘涓虹┖', trigger: 'blur' }] + } + } + }, + methods: { + handleSubmit() { + this.$refs.formRef.validate((vali) => { + if (vali) { + // 鍒ゆ柇鏄惁閫変腑鍚屼竴绉� + const status = this.selectedRows[0].qualityState + console.log(status, 'status') + const count = this.selectedRows.reduce((curr, item) => { + if (item.qualityState == status) { + curr++ + } + return curr + }, 0) + + if (count != this.selectedRows.length) { + return this.$message.error('閫変腑鐨勮川閲忕姸鎬佸寘鍚绉�') + } + + this.confirmLoading = true + const checkPiece = this.selectedRows.reduce((curr, item) => { + curr.push({ + workPieceID: item.workPieceID, + qualityHistoryState: item.qualityState, + workingProcedureCurrent: item.workingProcedureCurrent, + id: item.id + }) + return curr + }, []) + const param = { + workPieceInfoLst: checkPiece, + qualityState: this.form.status, + workingProcedureCurrent: this.form.workingProcedureCurrent, + password: this.form.pwd + } + updatePieceStatus(param) + .then((res) => { + this.confirmLoading = false + this.$message.success('淇敼鎴愬姛') + this.handleCancel() + this.visible = false + this.$emit('refresh') + }) + .catch((err) => { + console.log(err) + this.confirmLoading = false + }) + } else { + this.confirmLoading = false + this.$message.error('琛ㄥ崟楠岃瘉澶辫触') + } + }) + }, + handleCancel() { + this.form = { + status: '', + pwd: '' + } + this.visible = false + } + } +} +</script> diff --git a/iwara-scada-web/src/views/main/WorkPieceInfoYield/index.vue b/iwara-scada-web/src/views/main/WorkPieceInfoYield/index.vue new file mode 100644 index 0000000..88a20c4 --- /dev/null +++ b/iwara-scada-web/src/views/main/WorkPieceInfoYield/index.vue @@ -0,0 +1,300 @@ +锘�<template> + <div> + <x-card :bordered="false" v-if="hasPerm('WorkPieceInfo:page')"> + <div slot="content" class="table-page-search-wrapper"> + <a-form :label-col="labelCol" :wrapper-col="wrapperCol"> + <a-row :gutter="gutter"> + <!-- <a-col :md="colMd" :sm="colSm"> + <a-form-item label="璁惧鍚嶇О"> + <a-select + show-search + option-filter-prop="children" + :filter-option="filterOption" + :allowClear="true" + style="width: 100%" + v-model="queryParam.EquipmentID" + placeholder="璇烽�夋嫨璁惧鍚嶇О" + > + <a-select-option v-for="item in equitypeData" :key="item.id" :value="item.equipmentId">{{ + item.equipmentName + }}</a-select-option> + </a-select> + </a-form-item> + </a-col> --> + <a-col :md="colMd" :sm="colSm"> + <a-form-item label="宸ュ簭"> + <a-select + allow-clear + style="width: 100%" + v-model="queryParam.WorkingProcedureCurrent" + placeholder="璇烽�夋嫨宸ュ簭" + > + <a-select-option v-for="(item, index) in ProcessSelectData" :key="index" :value="item.code"> + {{ item.name }} + </a-select-option> + </a-select> + </a-form-item> + </a-col> + <a-col :md="colMd2" :sm="colSm2"> + <a-form-item label="鍒濆涓婄嚎鏃堕棿"> + <a-range-picker style="width:100%" :show-time="{format:'HH:mm'}" v-model="queryParam.dates" format="YYYY-MM-DD HH:mm" /> + </a-form-item> + </a-col> + + <!-- <template v-if="advanced"> + </template> --> + <a-col :md="colMd" :sm="colSm"> + <span class="table-page-search-submitButtons"> + <a-button type="primary" @click="getData(1)">鏌ヨ</a-button> + <a-button style="margin-left: 8px" @click="resetQueryData">閲嶇疆</a-button> + <a @click="toggleAdvanced" style="margin-left: 8px"> + {{ advanced ? '鏀惰捣' : '灞曞紑' }} + <a-icon :type="advanced ? 'up' : 'down'" /> + </a> + </span> + </a-col> + </a-row> + </a-form> + </div> + </x-card> + <a-card :bordered="false"> + <div style="margin-bottom:10px"> + <a-button style="margin-left: 8px" type="info" icon="download" @click="WorkPieceInfoYieldToExcel1()"> + 瀵煎嚭Excel</a-button + > + </div> + <a-table + :columns="columns" + :dataSource="data" + :pagination="pages" + :rowClassName="getRowBackGround" + :rowKey="(record) => record.id" + :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" + > + <span slot="time" slot-scope="text"> + <span v-if="text">{{ moment(moment(text)).format('YYYY-MM-DD HH:mm') }}</span> + <span v-else>{{ text }}</span> + </span> + </a-table> + </a-card> + <edit-form + ref="editRef" + :selectedRows="selectedRows" + @refresh="getData" + :processSelectData="ProcessSelectData" + ></edit-form> + </div> +</template> +<script> +// 鍦ㄥ埗鍝佺洃鎺� +import { STable, XCard } from '@/components' +import { downloadFile,getThisWeekRange } from '@/utils/util' +import moment from 'moment' +import { WorkPieceInfoYieldPage, WorkPieceInfoYieldToExcel1 } from '@/api/modular/main/WorkPieceInfoManage' +import editForm from './editForm.vue' +// 鑾峰彇璁惧涓嬫媺妗嗘暟鎹� +import { getEquipmentName } from '@/api/modular/main/EquipmentBaseInfoManage' +export default { + components: { + STable, + XCard, + editForm + }, + data() { + return { + gutter: 36, + colMd: 6, + colSm: 18, + colMd2: 10, + colSm2: 24, + labelCol: { + xs: { span: 24 }, + sm: { span: 8 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 15 } + }, + advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴 + queryParam: { + dates:[] + }, + columns: [ + { + title: '搴忓彿', + dataIndex: 'index', + key: 'index', + align: 'center', + customRender: (text, record, index) => `${index + 1}` + }, + // { + // title: '褰撳墠璁惧', + // align: 'center', + // sorter: true, + // dataIndex: 'equipmentName' + // }, + { + title: '褰撳墠宸ュ簭', + align: 'center', + sorter: true, + dataIndex: 'workingProcedureCurrent' + }, + { + title: '浜ч噺', + align: 'center', + sorter: true, + dataIndex: 'yieldCount' + }, + ], + data: [], + selectedRowKeys: [], + selectedRows: [], + // 璁惧涓嬫媺妗嗘暟鎹� + equitypeData: [], + // 宸ュ簭涓嬫媺妗嗘暟鎹� + WorkPieceSelectData: [], + // 璐ㄩ噺鐘舵�佷笅鎷夋鏁版嵁 + QualityStateSelectData: [], + pages: { + current: 1, + pageSize: 10, + total: 0, + showTotal: (total, range) => `${range[0]}-${range[1]}鍏�${total}鏉, + showSizeChanger: true, + pageSizeOptions: ['10', '20', '30', '40'], + onChange: this.getData, + onShowSizeChange: this.showSizeChange + } + } + }, + created() { + this.getEquipmentName() + this.initData(); + this.getData() + this.ProcessSelectData = this.$options.filters['dictData']('process_type') + this.QualityStateSelectData = this.$options.filters['dictData']('quality_state') + }, + methods: { + initData(){ + this.queryParam.dates = []; + this.queryParam.dates = getThisWeekRange(); + }, + //閲嶇疆 + resetQueryData(){ + this.queryParam = { dates:[] } + this.initData(); + }, + getRowBackGround(record) { + switch ( + record.cololType // 杩欓噷鏍规嵁鏉′欢鏀瑰彉琛ㄦ牸鑳屾櫙鑹� + ) { + case 1: + return 'table-color-yellow' + case 2: + return 'table-color-green' + case 3: + return 'table-color-red' + case 4: + return 'table-color-blue' + case 5: + return 'table-color-gray' + } + }, + async getData(pageNo) { + if (pageNo) this.pages.current = pageNo + this.queryParam.pageNo = this.pages.current + this.queryParam.pageSize = this.pages.pageSize + try { + const { data } = await WorkPieceInfoYieldPage(this.switchingDate()) + this.data = data.rows + this.pages.total = data.totalRows + } catch (error) { + console.log(error) + } + }, + + // 琛ㄦ牸鏄剧ず鏁版嵁鏉℃暟鏀瑰彉 + showSizeChange(current, size) { + this.pages.pageSize = size + this.getData(1) + }, + showEditModal() { + this.$refs.editRef.visible = true + }, + moment, + /** + * 鏌ヨ鍙傛暟缁勮 + */ + switchingDate() { + const dates = this.queryParam.dates + if (dates != null) { + this.queryParam.startTimeBeginTime = moment(dates[0]).format('YYYY-MM-DD HH:mm') + this.queryParam.startTimeEndTime = moment(dates[1]).format('YYYY-MM-DD HH:mm') + if (dates.length < 1) { + delete this.queryParam.startTimeBeginTime + delete this.queryParam.startTimeEndTime + } + } + const obj = JSON.parse(JSON.stringify(this.queryParam)) + return obj + }, + WorkPieceInfoYieldToExcel1() { + this.cardLoading = true + WorkPieceInfoYieldToExcel1(this.queryParam) + .then((res) => { + this.cardLoading = false + downloadFile(res) + }) + .catch((err) => { + this.cardLoading = false + console.info(err) + this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err) + }) + }, + getEquipmentName() { + getEquipmentName().then((res) => { + this.equitypeData = res.data + }) + }, + toggleAdvanced() { + this.advanced = !this.advanced + }, + onSelectChange(selectedRowKeys, selectedRows) { + this.selectedRowKeys = selectedRowKeys + this.selectedRows = selectedRows + }, + // 璁惧鏌ヨ妗嗙瓫閫� + filterOption(input, option) { + return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0 + } + } +} +</script> +<style lang="less" > +.table-operator { + margin-bottom: 18px; +} +button { + margin-right: 8px; +} + +.table-color-yellow{ + background-color: rgb(202, 202, 86); +} + +.table-color-green{ + background-color: rgb(147, 228, 147); +} + +.table-color-red{ + background-color: rgb(236, 157, 157); +} + +.table-color-blue{ + background-color: rgb(156, 156, 231); +} + +.table-color-gray{ + background-color: rgb(181, 172, 172); +} +</style> -- Gitblit v1.9.3