From aab29f4290c968665312bfc98c5598a25a4debf9 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周三, 21 5月 2025 16:42:31 +0800 Subject: [PATCH] 优化 --- PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/PipeAccessoryAssembly.tsx | 563 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 501 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..595e58c 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,83 @@ 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, + onSendFlangeCode, + onFinishSendFlangeCode + } = 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 modelOptions = ref<Array<{ value: string; label: string }>>([]) const placeNoOptions = ref<Array<{ value: string; label: string }>>([]) onMounted(() => { // 缁勪欢鎸傝浇鍚庤幏鍙栧瀷鍙峰垪琛ㄥ拰搴撲綅鍙峰垪琛� - getModelList() - getPlaceNoList() + // getModelList() + // getPlaceNoList() }) // 缁勭洏鎿嶄綔 @@ -78,76 +135,458 @@ 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 + refreshProcessRoute(); + } + } + const initQueryForm = () => { + queryForm.value = { + pipeSpecCode: '', + processRouteNumber: '', + taskCode: '', + length: '', + projectNumber: '', + shipNumber: '', + material: '', + outerDiameter: '', + thickness: '', + plannedStartTime: '', + plannedEndTime: '', + workstationCode: '', + processName: '', + equipmentCode: '', + } + + dataSource.value=[] //娓呯┖琛ㄦ牸鏁版嵁 + } +//鎮ㄧ殑涓氬姟閫昏緫 +const paramForProcessRoute= { + processName: '娉曞叞鍐茬爜宸ュ簭', + ProcessName_FilterMode:2,//绮惧噯鏌ヨ + pipeSpecCode: 'XXX',//榛樿鍏堢粰涓笉瀛樺湪鐨勬暟鎹� + pipeSpecCode_FilterMode:2,//绮惧噯鏌ヨ +} + +let routeUrl=ref(""); + // 鍒锋柊宸ヨ壓淇℃伅 + const refreshProcessRoute = () => { + console.log('鎵ц 鍒锋柊宸ヨ壓淇℃伅') + if (queryForm.value.pipeSpecCode == '') { + ElMessage.error('璇疯緭鍏ョ娈电紪鐮�') + return + } + routeUrl.value="/api/v1/PipeLineLems/workTask/page"; + paramForProcessRoute.pipeSpecCode = queryForm.value.pipeSpecCode + tableRef.value.getList(paramForProcessRoute) + } + // 涓嬪彂娉曞叞鍐茬爜 + const sendFlangeCode = () => { + console.log('鎵ц 涓嬪彂娉曞叞鍐茬爜') + if (queryForm.value.pipeSpecCode == '') { + ElMessage.error('璇疯緭鍏ョ娈电紪鐮�') + return + } + onSendFlangeCode(); + } + // 瀹屽伐娉曞叞鍐茬爜 + const finishSendFlangeCode = () => { + console.log('鎵ц 瀹屽伐娉曞叞鍐茬爜') + if (queryForm.value.pipeSpecCode == '') { + ElMessage.error('璇疯緭鍏ョ娈电紪鐮�') + return + } + onFinishSendFlangeCode(); + } + // 寮�宸ヤ簨浠跺鐞� + 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} style="margin-bottom:5px;"> + <ElButton type="warning" onClick={refreshProcessRoute}> + 鍒锋柊 + </ElButton> + <ElButton type="warning" onClick={sendFlangeCode}> + 涓嬪彂娉曞叞鍐茬爜 + </ElButton> + <ElButton type="warning" onClick={finishSendFlangeCode}> + 瀹屽伐娉曞叞鍐茬爜 </ElButton> </div> - </ElForm> + <RenderBaseTable + url={routeUrl.value} + 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