| import { computed, defineComponent, onMounted, reactive, ref } from 'vue' | 
| import type { Ref } from 'vue' | 
| import BaseTable from '@/components/Table/Table' | 
| import styles from './WmsInOutStockRecord.module.scss' | 
| import { useWmsInOutStockRecord } from '../../../Controllers/WmsInOutStockRecord' | 
| import IconButton from '@/components/IconButton/IconButton' | 
| import WmsInOutStockRecordDrawer from '../Dialog/WmsInOutStockRecordDrawer/WmsInOutStockRecordDrawer' | 
| import WmsInOutStockRecordQueryDrawer from '../Dialog/WmsInOutStockRecordQueryDrawer/WmsInOutStockRecordQueryDrawer' | 
| import Search from '@/components/Search/Search' | 
| import { columns } from './Config' | 
| import TdButton from '@/components/TdButton/TdButton' | 
| import { vPermission } from '@/libs/Permission/Permission' | 
| import { getWmsEnumData } from '@/widgets/WmsInOutStockRecord/Models/Service/WmsInOutStockRecordDrawer' | 
| import { | 
|   ElInput, | 
|   ElSelect, | 
|   ElOption, | 
|   ElDatePicker, | 
|   ElForm, | 
|   ElFormItem, | 
| } from 'element-plus' | 
| import { injectModel } from '@/libs/Provider/Provider' | 
|   | 
| interface RenderTableType { | 
|   url?: string | 
|   dataSource: Ref<any[]> | 
|   isDrag?: boolean | 
|   isChecked?: boolean | 
|   isHidePagination?: boolean | 
|   params?: Record<string, any> | 
|   autoHeight?: boolean | 
| } | 
|   | 
| export default defineComponent({ | 
|   name: 'WmsInOutStockRecord', | 
|   directives: { | 
|     permission: vPermission, | 
|   }, | 
|   setup(props, ctx) { | 
|     const { | 
|       dataSource, | 
|       contextMenu, | 
|       dialogConfig, | 
|       dialogConfigForQuery, | 
|       tableRef, | 
|       current, | 
|       search, | 
|       sort, | 
|       headers, | 
|       onError, | 
|       onSearch, | 
|       onRowClick, | 
|       onConfirmWmsInOutStockRecord, | 
|       onCheck, | 
|       onAddWmsInOutStockRecord, | 
|       onAdvancedQuery, | 
|       onExport, | 
|       openDetail, | 
|       onSuccess, | 
|       onBeforeUpload, | 
|     } = useWmsInOutStockRecord(props, ctx) | 
|   | 
|     //定义高级查询引用 | 
|     const wmsInOutStockRecordQueryDrawerRef = ref(null) | 
|     // 新增的查询条件 | 
|     const queryForm = ref({ | 
|       searchVal: '', | 
|       str_searchFormInputAttrs: [], | 
|     }) | 
|     //定义整体模糊查询的列数组(注意:必须大小写跟后端的实体类属性名一致,否则会导致匹配不对的问题) | 
|     const _searchFormInputAttrs = ref(['MaterialNo', 'MaterialName', 'Remark']) | 
|     const searchFormInputAttrs_Placeholder = ref('请输入物料编码/物料名称/备注') | 
|   | 
|     // 动态枚举选项 | 
|     const enumOptions = reactive({ | 
|       stockType: [] as Array<{ label: string; value: any }>, | 
|     }) | 
|   | 
|     // 获取枚举数据 | 
|     const fetchEnumData = async () => { | 
|       try { | 
|         const stockTypeEnumData = await getWmsEnumData({ | 
|           EnumName: 'StockTypeEnum', | 
|         }) | 
|         enumOptions.stockType = stockTypeEnumData.map((item) => ({ | 
|           label: item.description, | 
|           value: item.value, | 
|         })) | 
|       } catch (error) { | 
|         console.error('获取枚举数据失败:', error) | 
|       } | 
|     } | 
|   | 
|     // 组件挂载时获取枚举数据 | 
|     onMounted(() => { | 
|       fetchEnumData() | 
|     }) | 
|   | 
|     // 定义响应式查询数据 | 
|     const _curHighQueryData = ref({ | 
|       searchVal: '', | 
|       str_searchFormInputAttrs: [], | 
|     }) | 
|     // 新版的查询方法(主页面中的按钮【查询】) | 
|     const handleQueryForMain = async () => { | 
|       _curHighQueryData.value.searchVal = queryForm.value.searchVal | 
|       _curHighQueryData.value.str_searchFormInputAttrs = | 
|         _searchFormInputAttrs.value | 
|       tableRef.value.getList(_curHighQueryData.value) | 
|     } | 
|     // 新版的查询方法(高级查询中的按钮【查询】) | 
|     const handleQuery = async (extraParams = {}) => { | 
|       let filteredData = commonGetHighQueryForm(extraParams) | 
|       commonSaveCurHighQueryData(filteredData) | 
|       tableRef.value.getList(filteredData) | 
|     } | 
|     // 新版的查询重置 | 
|     const resetQuery = () => { | 
|       queryForm.value.searchVal = '' | 
|       queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value | 
|     } | 
|     //新版的导出方法 | 
|     const handleExport = () => { | 
|       onExport(_curHighQueryData.value) | 
|     } | 
|     // 新版的查询弹出框关闭方法 | 
|     const closeQuery = (extraParams = {}) => { | 
|       let filteredData = commonGetHighQueryForm(extraParams) | 
|       console.log('closeQuery方法') | 
|       console.log(filteredData) | 
|       commonSaveCurHighQueryData(filteredData) | 
|     } | 
|     //保存查询值 | 
|     const commonSaveCurHighQueryData = (filteredData = {}) => { | 
|       _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData } | 
|       _curHighQueryData.value.searchVal = queryForm.value.searchVal | 
|       _curHighQueryData.value.str_searchFormInputAttrs = | 
|         _searchFormInputAttrs.value | 
|     } | 
|     //获取高级查询弹出框的查询值 | 
|     const commonGetHighQueryForm = (extraParams = {}) => { | 
|       // 过滤掉 undefined 的值 | 
|       let filteredData = Object.assign( | 
|         {}, | 
|         ...Object.entries(extraParams).map(([key, value]) => | 
|           value !== undefined ? { [key]: value } : {} | 
|         ) | 
|       ) | 
|       //组合模糊查询 | 
|       filteredData.searchVal = queryForm.value.searchVal | 
|       filteredData.str_searchFormInputAttrs = _searchFormInputAttrs.value | 
|       return filteredData | 
|     } | 
|   | 
|     /** | 
|      * @returns 表格 | 
|      */ | 
|     const RenderBaseTable = (props: RenderTableType) => { | 
|       const { | 
|         url, | 
|         dataSource, | 
|         isDrag, | 
|         isChecked, | 
|         isHidePagination, | 
|         params, | 
|         autoHeight, | 
|       } = props | 
|   | 
|       return ( | 
|         <div | 
|           class={{ | 
|             [styles.wmsInOutStockRecordList]: true, | 
|           }} | 
|         > | 
|           <BaseTable | 
|             ref={tableRef} | 
|             url={url} | 
|             sortUrlTpl="/api/v1/HIAWms/wmsInOutStockRecord/{id}/adjustsort/{sort}" | 
|             v-model:dataSource={dataSource.value} | 
|             columns={columns} | 
|             contextMenu={contextMenu} | 
|             params={params} | 
|             isDrag={isDrag} | 
|             isChecked={isChecked} | 
|             autoHeight={autoHeight} | 
|             onCheck={onCheck} | 
|             onRowClick={onRowClick} | 
|             isHidePagination={isHidePagination} | 
|             pageSize={20} | 
|             v-slots={{ | 
|               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.wmsInOutStockRecordContent}> | 
|           {/* 添加/编辑 */} | 
|           <WmsInOutStockRecordDrawer | 
|             v-model={dialogConfig.visible} | 
|             title={dialogConfig.title} | 
|             row={current.value} | 
|             sort={sort.value} | 
|             onConfirm={onConfirmWmsInOutStockRecord} | 
|           /> | 
|           {/* 高级查询 */} | 
|           <WmsInOutStockRecordQueryDrawer | 
|             ref="wmsInOutStockRecordQueryDrawerRef" | 
|             v-model={dialogConfigForQuery.visible} | 
|             title={dialogConfigForQuery.title} | 
|             row={current.value} | 
|             sort={sort.value} | 
|             onConfirmQuery={handleQuery} | 
|             onRestQuery={resetQuery} | 
|             onClose={closeQuery} | 
|           /> | 
|   | 
|           <div class={styles.headerContent}> | 
|             <div class={styles.header}> | 
|               <IconButton | 
|                 v-permission="wmsInOutStockRecord-add" | 
|                 icon="add-p" | 
|                 onClick={onAddWmsInOutStockRecord} | 
|                 type="primary" | 
|               > | 
|                 添加 | 
|               </IconButton> | 
|               <el-divider direction="vertical" /> | 
|   | 
|               <el-divider direction="vertical" /> | 
|               <el-upload | 
|                 v-permission="wmsInOutStockRecord-import" | 
|                 name="file" | 
|                 accept=".xlsx,.xls,.csv" | 
|                 show-file-list={false} | 
|                 onError={onError} | 
|                 onSuccess={onSuccess} | 
|                 before-upload={onBeforeUpload} | 
|                 headers={headers.value} | 
|                 action="/api/v1/HIAWms/wmsInOutStockRecord/import" | 
|               > | 
|                 <IconButton icon="in">导入</IconButton> | 
|               </el-upload> | 
|   | 
|               <IconButton | 
|                 v-permission="wmsInOutStockRecord-output" | 
|                 icon="out" | 
|                 onClick={handleExport} | 
|               > | 
|                 导出 | 
|               </IconButton> | 
|             </div> | 
|             <ElFormItem style={{ marginTop: '15px' }}> | 
|               <ElFormItem label="关键字"> | 
|                 <el-tooltip | 
|                   class="box-item" | 
|                   effect="dark" | 
|                   content={searchFormInputAttrs_Placeholder.value} | 
|                   placement="top-start" | 
|                 > | 
|                   <ElInput | 
|                     v-model={queryForm.value.searchVal} | 
|                     placeholder={searchFormInputAttrs_Placeholder.value} | 
|                     clearable | 
|                     class={styles.formItem} | 
|                   /> | 
|                 </el-tooltip> | 
|               </ElFormItem> | 
|               <IconButton | 
|                 type="primary" | 
|                 icon="search" | 
|                 onClick={handleQueryForMain} | 
|               > | 
|                 查询 | 
|               </IconButton> | 
|               {/* <IconButton style="" icon="refresh" onClick={resetQuery}>  | 
|                 重置  | 
|               </IconButton> */} | 
|               <IconButton | 
|                 v-permission="wmsInOutStockRecord-add" | 
|                 icon="search" | 
|                 onClick={onAdvancedQuery} | 
|                 type="primary" | 
|               > | 
|                 高级查询 | 
|               </IconButton> | 
|             </ElFormItem> | 
|           </div> | 
|   | 
|           <RenderBaseTable | 
|             url="/api/v1/HIAWms/wmsInOutStockRecord/page" | 
|             dataSource={dataSource} | 
|             isChecked={true} | 
|             isDrag={true} | 
|           /> | 
|         </div> | 
|       ) | 
|     } | 
|   }, | 
| }) |