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