From 05c47e0a832bbd2b8bafb732fc55c1ef8e9b97e0 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周三, 21 5月 2025 11:41:47 +0800 Subject: [PATCH] 22 --- PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/PipeAccessoryAssembly.tsx | 581 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 519 insertions(+), 62 deletions(-) diff --git a/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/PipeAccessoryAssembly.tsx b/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/PipeAccessoryAssembly.tsx index 200869b..00c86cf 100644 --- a/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/PipeAccessoryAssembly.tsx +++ b/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/PipeAccessoryAssembly.tsx @@ -1,6 +1,13 @@ import { defineComponent, onMounted, ref } from 'vue' import type { Ref } from 'vue' import styles from './PipeAccessoryAssembly.module.scss' +import { usePipeAccessoryAssembly } from '../../../Controllers/PipeAccessoryAssembly' +import pipeImage from '@/images/pipe-assembly-drawing-example.png' +import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' +import { columns } from './Config' +import TdButton from '@/components/TdButton/TdButton' +import BaseTable from '@/components/Table/Table' +import dayjs from 'dayjs' import { ElInput, ElForm, @@ -9,33 +16,127 @@ ElSelect, ElOption, ElMessage, + ElCol, } from 'element-plus' import { getPlaceNoForStockList, getMaterialModelList, instock, + findSingleWorkPlanByFilter, + startProduction, + finishProduction, } from '@/widgets/PipeAccessoryAssembly/Models/Service/PipeAccessoryAssembly' import { Message } from '@element-plus/icons-vue/dist/types' +interface RenderTableType { + url?: string + dataSource: Ref<any[]> + isDrag?: boolean + isChecked?: boolean + isHidePagination?: boolean + params?: Record<string, any> + autoHeight?: boolean +} + export default defineComponent({ name: 'PipeAccessoryAssembly', - setup() { + setup(props, ctx) { + const { + dataSource, + contextMenu, + dialogConfig, + dialogConfigForQuery, + tableRef, + current, + search, + sort, + headers, + onError, + onSearch, + onRowClick, + // onConfirmWorkTask, + onCheck, + // onAddWorkTask, + onAdvancedQuery, + onExport, + openDetail, + onSuccess, + onBeforeUpload, + } = usePipeAccessoryAssembly(props, ctx) + // 鏌ヨ琛ㄥ崟鏁版嵁 const queryForm = ref({ - materialModel: '', - placeNo: '', - materialBatch: '', - stockNumber: '', + pipeSpecCode: '', + processRouteNumber: '', + taskCode: '', + length: '', + projectNumber: '', + shipNumber: '', + material: '', + outerDiameter: '', + thickness: '', + plannedStartTime: '', + plannedEndTime: '', + workstationCode: '', + processName: '', + equipmentCode: '', }) + const tableData = ref([ + { sequence: 1, flangeA: 'RF-200-1.6MPa', flangeB: 'WN-200-1.6MPa' }, + { sequence: 2, flangeA: 'WN-250-2.5MPa', flangeB: 'SO-250-2.5MPa' }, + { sequence: 3, flangeA: 'PL-300-1.0MPa', flangeB: 'RF-300-1.0MPa' }, + { sequence: 4, flangeA: 'SO-150-2.0MPa', flangeB: 'WN-150-2.0MPa' }, + { sequence: 5, flangeA: 'RF-400-1.6MPa', flangeB: 'PL-400-1.6MPa' }, + { sequence: 6, flangeA: 'WN-200-4.0MPa', flangeB: 'SO-200-4.0MPa' }, + { sequence: 7, flangeA: 'SO-300-1.6MPa', flangeB: 'RF-300-1.6MPa' }, + { sequence: 8, flangeA: 'PL-250-1.0MPa', flangeB: 'WN-250-1.0MPa' }, + { sequence: 9, flangeA: 'RF-150-2.5MPa', flangeB: 'SO-150-2.5MPa' }, + { sequence: 10, flangeA: 'WN-400-2.0MPa', flangeB: 'PL-400-2.0MPa' }, + ]) + const tableData2 = [ + { sequence: 1, flangeA: 'RF-200-1.6MPa', flangeB: 'WN-200-1.6MPa' }, + { sequence: 2, flangeA: 'WN-250-2.5MPa', flangeB: 'SO-250-2.5MPa' }, + { sequence: 3, flangeA: 'PL-300-1.0MPa', flangeB: 'RF-300-1.0MPa' }, + { sequence: 4, flangeA: 'SO-150-2.0MPa', flangeB: 'WN-150-2.0MPa' }, + { sequence: 5, flangeA: 'RF-400-1.6MPa', flangeB: 'PL-400-1.6MPa' }, + { sequence: 6, flangeA: 'WN-200-4.0MPa', flangeB: 'SO-200-4.0MPa' }, + { sequence: 7, flangeA: 'SO-300-1.6MPa', flangeB: 'RF-300-1.6MPa' }, + { sequence: 8, flangeA: 'PL-250-1.0MPa', flangeB: 'WN-250-1.0MPa' }, + { sequence: 9, flangeA: 'RF-150-2.5MPa', flangeB: 'SO-150-2.5MPa' }, + { sequence: 10, flangeA: 'WN-400-2.0MPa', flangeB: 'PL-400-2.0MPa' }, + ] + + const tableData3 = [ + { + date: '2016-05-03', + name: 'Tom', + address: 'No. 189, Grove St, Los Angeles', + }, + { + date: '2016-05-02', + name: 'Tom', + address: 'No. 189, Grove St, Los Angeles', + }, + { + date: '2016-05-04', + name: 'Tom', + address: 'No. 189, Grove St, Los Angeles', + }, + { + date: '2016-05-01', + name: 'Tom', + address: 'No. 189, Grove St, Los Angeles', + }, + ] // 鏁版嵁婧� const modelOptions = ref<Array<{ value: string; label: string }>>([]) const placeNoOptions = ref<Array<{ value: string; label: string }>>([]) onMounted(() => { // 缁勪欢鎸傝浇鍚庤幏鍙栧瀷鍙峰垪琛ㄥ拰搴撲綅鍙峰垪琛� - getModelList() - getPlaceNoList() + // getModelList() + // getPlaceNoList() }) // 缁勭洏鎿嶄綔 @@ -78,76 +179,432 @@ label: item.placeNoDesc, })) } + const handleChange = async (value) => { + console.log('杈撳叆鍐呭纭:', value) // 澶卞幓鐒︾偣鎴栧洖杞︽椂瑙﹀彂 + if (value == '') { + initQueryForm() + return + } + // 鍦ㄦ澶勬坊鍔犱笟鍔¢�昏緫锛堝鏍¢獙銆佹彁浜ょ瓑锛� + const param = { + pipeSpecCode: value, + pipeSpecCode_FilterMode: 2, //绮惧噯鏌ヨ + processName: '瑁呴厤宸ュ簭', + processName_FilterMode: 2, //绮惧噯鏌ヨ + } + const workPlan = await findSingleWorkPlanByFilter(param) + console.log('杩斿洖:' + workPlan) + if (workPlan == '') { + ElMessage.error('娌℃湁鎵惧埌鏁版嵁') + initQueryForm() + } else { + queryForm.value = workPlan + } + } + const initQueryForm = () => { + queryForm.value = { + pipeSpecCode: '', + processRouteNumber: '', + taskCode: '', + length: '', + projectNumber: '', + shipNumber: '', + material: '', + outerDiameter: '', + thickness: '', + plannedStartTime: '', + plannedEndTime: '', + workstationCode: '', + processName: '', + equipmentCode: '', + } + } +//鎮ㄧ殑涓氬姟閫昏緫 +const paramForProcessRoute= { + processName: '娉曞叞鍐茬爜宸ュ簭', + ProcessName_FilterMode:2,//绮惧噯鏌ヨ + pipeSpecCode: queryForm.value.pipeSpecCode, + pipeSpecCode_FilterMode:2,//绮惧噯鏌ヨ +} + // 鍒锋柊宸ヨ壓淇℃伅 + const refreshProcessRoute = () => { + console.log('鎵ц 鍒锋柊宸ヨ壓淇℃伅') + // if (queryForm.value.pipeSpecCode == '') { + // ElMessage.error('璇疯緭鍏ョ娈电紪鐮�') + // return + // } + + tableRef.value.getList(paramForProcessRoute) + } + // 寮�宸ヤ簨浠跺鐞� + const startWork = () => { + console.log('鎵ц寮�宸ユ搷浣�') + if (queryForm.value.pipeSpecCode == '') { + ElMessage.error('璇疯緭鍏ョ娈电紪鐮�') + return + } + ConfirmBox(`纭畾瑕佸皢绠℃缂栫爜${queryForm.value.pipeSpecCode}寮�宸ュ悧`).then( + async () => { + //鎮ㄧ殑涓氬姟閫昏緫 + const param = { + taskCode: queryForm.value.taskCode, + } + const ret = await startProduction(param) + console.log('杩斿洖:' + ret) + if ((ret.code = '200')) { + ElMessage.success('寮�宸ユ垚鍔�') + } else { + ElMessage.error('寮�宸ュけ璐�:' + ret.message) + } + } + ) + } + // 瀹屽伐浜嬩欢澶勭悊 + const finishWork = () => { + console.log('鎵ц寮�宸ユ搷浣�') + if (queryForm.value.pipeSpecCode == '') { + ElMessage.error('璇疯緭鍏ョ娈电紪鐮�') + return + } + ConfirmBox(`纭畾瑕佸皢绠℃缂栫爜${queryForm.value.pipeSpecCode}瀹屽伐鍚梎).then( + async () => { + //鎮ㄧ殑涓氬姟閫昏緫 + const param = { + pipeSpecCode: queryForm.value.pipeSpecCode, + processName: queryForm.value.processName, + } + const ret = await finishProduction(param) + console.log('杩斿洖:' + ret) + if ((ret.code = '200')) { + ElMessage.success('瀹屽伐鎴愬姛') + } else { + ElMessage.error('瀹屽伐澶辫触:' + ret.message) + } + } + ) + } + + /** + * @returns 琛ㄦ牸 + */ + const RenderBaseTable = (props: RenderTableType) => { + const { + url, + dataSource, + isDrag, + isChecked, + isHidePagination, + params, + autoHeight, + maxHeight, + } = props + + return ( + <div + class={{ + [styles.workTaskList]: true, + }} + > + <BaseTable + ref={tableRef} + url={url} + sortUrlTpl="/api/v1/PipeLineLems/workTask/{id}/adjustsort/{sort}" + v-model:dataSource={dataSource.value} + columns={columns} + contextMenu={contextMenu} + params={params} + isDrag={isDrag} + isChecked={isChecked} + autoHeight={autoHeight} + maxHeight={maxHeight} + onCheck={onCheck} + onRowClick={onRowClick} + isHidePagination={isHidePagination} + pageSize={20} + v-slots={{ + plannedStartTime: ({ row }: any) => { + return ( + <div> + {row.plannedStartTime != null + ? dayjs(row.plannedStartTime).format( + 'YYYY-MM-DD HH:mm:ss' + ) + : '-'} + </div> + ) + }, + plannedEndTime: ({ row }: any) => { + return ( + <div> + {row.plannedEndTime != null + ? dayjs(row.plannedEndTime).format('YYYY-MM-DD HH:mm:ss') + : '-'} + </div> + ) + }, + creationTime: ({ row }: any) => { + return ( + <div> + {row.creationTime != null + ? dayjs(row.creationTime).format('YYYY-MM-DD HH:mm:ss') + : '-'} + </div> + ) + }, + lastModificationTime: ({ row }: any) => { + return ( + <div> + {row.lastModificationTime != null + ? dayjs(row.lastModificationTime).format( + 'YYYY-MM-DD HH:mm:ss' + ) + : '-'} + </div> + ) + }, + isDeleted: ({ row }: any) => { + return ( + <div> + {row.isDeleted != null + ? row.isDeleted + ? '鏄�' + : '鍚�' + : '-'} + </div> + ) + }, + deletionTime: ({ row }: any) => { + return ( + <div> + {row.deletionTime != null + ? dayjs(row.deletionTime).format('YYYY-MM-DD HH:mm:ss') + : '-'} + </div> + ) + }, + isDisabled: ({ row }: any) => { + return ( + <div> + {row.isDisabled != null + ? row.isDisabled + ? '鏄�' + : '鍚�' + : '-'} + </div> + ) + }, + name: ({ row }: any) => { + return row?.name ? ( + <TdButton + onClick={() => openDetail(row)} + text={<span style="color:#5a84ff">璇︽儏</span>} + icon="scale" + tip={row?.name} + hover + > + {row?.name} + </TdButton> + ) : ( + '-' + ) + }, + }} + ></BaseTable> + </div> + ) + } return () => { return ( - <div class={styles.PipeAccessoryAssemblyContent}> - <ElForm label-position="top" class={styles.h5Form}> - <ElFormItem label="鍨嬪彿"> - <ElSelect - v-model={queryForm.value.materialModel} - placeholder="璇烽�夋嫨鍨嬪彿" - clearable - class={styles.formInput} - > - {modelOptions.value.map((item) => ( - <ElOption - key={item.value} - label={item.label} - value={item.value} - /> - ))} - </ElSelect> - </ElFormItem> - <ElFormItem label="搴撲綅鍙�"> - <ElSelect - v-model={queryForm.value.placeNo} - placeholder="璇烽�夋嫨搴撲綅鍙�" - clearable - class={styles.formInput} - > - {placeNoOptions.value.map((item) => ( - <ElOption - key={item.value} - label={item.label} - value={item.value} - /> - ))} - </ElSelect> - </ElFormItem> - <ElFormItem label="鎵规鍙�"> + <div + class={styles.PipeAccessoryAssemblyContent} + style="overflow-y: auto !important; height: 100%;" + > + <ElFormItem label="绠℃缂栫爜 "> + <ElInput + v-model={queryForm.value.pipeSpecCode} + clearable + class={styles.formInput} + onInput={handleChange} + /> + </ElFormItem> + <div class={styles.actionButtons}> + <ElButton type="warning" onClick={startWork}> + 寮�宸� + </ElButton> + <ElButton type="warning" onClick={finishWork}> + 瀹屽伐 + </ElButton> + {/* <ElButton type="warning">鏆傚仠</ElButton> + <ElButton type="warning">鑷姩</ElButton> + <ElButton type="warning">璐ㄦ</ElButton> */} + </div> + + <h2 class={styles.blockTitle}>褰撳墠浠诲姟</h2> + <ElForm label-position="left"> + <ElFormItem label="鐗╂枡娴佸悜 "> <ElInput - v-model={queryForm.value.materialBatch} - placeholder="璇疯緭鍏ユ壒娆″彿" + v-model={queryForm.value.processRouteNumber} + disabled clearable class={styles.formInput} /> </ElFormItem> - <ElFormItem label="鏁伴噺"> + <ElFormItem label="浠诲姟缂栧彿 "> <ElInput - v-model={queryForm.value.stockNumber} - placeholder="璇疯緭鍏ユ暟閲�" + v-model={queryForm.value.taskCode} + disabled clearable class={styles.formInput} /> </ElFormItem> - <div class={styles.buttonGroup}> - {/* <ElButton - type="primary" - onClick={handlePalletize} - class={styles.actionButton} - > - 缁勭洏 - </ElButton> */} - <ElButton - type="success" - onClick={handlePalletizeStorage} - class={styles.actionButton} - > - 缁勭洏鍏ュ簱 + <ElFormItem label="绠℃闀垮害 "> + <ElInput + v-model={queryForm.value.length} + disabled + clearable + class={styles.formInput} + /> + </ElFormItem> + <ElFormItem label="椤圭洰 鍙�"> + <ElInput + v-model={queryForm.value.projectNumber} + disabled + clearable + class={styles.formInput} + /> + </ElFormItem> + <ElFormItem label="鑸� 鍙�"> + <ElInput + v-model={queryForm.value.shipNumber} + disabled + clearable + class={styles.formInput} + /> + </ElFormItem> + <ElFormItem label="鏉� 璐�"> + <ElInput + v-model={queryForm.value.material} + disabled + clearable + class={styles.formInput} + /> + </ElFormItem> + <ElFormItem label="澶� 寰�"> + <ElInput + v-model={queryForm.value.outerDiameter} + disabled + clearable + class={styles.formInput} + /> + </ElFormItem> + <ElFormItem label="澹� 鍘�"> + <ElInput + v-model={queryForm.value.thickness} + disabled + clearable + class={styles.formInput} + /> + </ElFormItem> + <ElFormItem label="璁″垝寮�濮嬫椂闂�"> + <ElInput + v-model={queryForm.value.plannedStartTime} + disabled + clearable + class={styles.formInput} + /> + </ElFormItem> + <ElFormItem label="璁″垝瀹屾垚鏃堕棿"> + <ElInput + v-model={queryForm.value.plannedEndTime} + disabled + clearable + class={styles.formInput} + /> + </ElFormItem> + </ElForm> + + <h2 class={styles.blockTitle}>褰撳墠宸ヤ綅/璁惧淇℃伅</h2> + <ElForm label-position="left"> + <ElFormItem label="宸ヤ綅浠g爜 "> + <ElInput + v-model={queryForm.value.workstationCode} + disabled + clearable + class={styles.formInput} + /> + </ElFormItem> + <ElFormItem label="宸ュ簭鍚嶇О "> + <ElInput + v-model={queryForm.value.processName} + disabled + clearable + class={styles.formInput} + /> + </ElFormItem> + <ElFormItem label="璁惧浠g爜 "> + <ElInput + v-model={queryForm.value.equipmentCode} + disabled + clearable + class={styles.formInput} + /> + </ElFormItem> + {/* <ElFormItem label="璁惧鐘舵��"> + <ElInput + v-model={queryForm.value.materialBatch} + disabled + clearable + class={styles.formInput} + /> + </ElFormItem> */} + {/* <ElFormItem label="鎿嶄綔浜�"> + <ElInput + v-model={queryForm.value.materialBatch} + disabled + clearable + class={styles.formInput} + /> + </ElFormItem> */} + </ElForm> + + {/* <div class="info-block"> + <h2 class="block-title">宸ヨ壓淇℃伅</h2> + <el-table stripe :data={tableData}> + <el-table-column prop="sequence" label="搴�"></el-table-column> + <el-table-column prop="flangeA" label="娉曞叞A"></el-table-column> + <el-table-column prop="flangeB" label="娉曞叞B"></el-table-column> + </el-table> + </div> */} + <div class="info-block"> + <h2 class="block-title">宸ヨ壓淇℃伅</h2> + <div class={styles.actionButtons}> + <ElButton type="warning" onClick={refreshProcessRoute}> + 鍒锋柊 </ElButton> </div> - </ElForm> + {/* <el-table stripe :data="tableData3" style="width: 100%"> + <el-table-column prop="date" label="Date" width="180" /> + <el-table-column prop="name" label="Name" width="180" /> + <el-table-column prop="address" label="Address" /> + </el-table> */} + <RenderBaseTable + url="/api/v1/PipeLineLems/workTask/page" + dataSource={dataSource} + isChecked={true} + isDrag={true} + autoHeight={false} + maxHeight="500px" + params={paramForProcessRoute} + /> + </div> + <h2 class="block-title">鍥剧焊</h2> + <img + src={pipeImage} + alt="璁惧鍥剧墖" + style="height:1250px;" + class="equipment-image" + ></img> </div> ) } -- Gitblit v1.9.3