From b75b10418fbc2df069aeb7a4b15e6e65690d133a Mon Sep 17 00:00:00 2001
From: zs <zhousong@weben-smart.com>
Date: 周二, 06 5月 2025 13:33:59 +0800
Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo

---
 Weben_CMS专用代码生成器/Code/Templete/Web/Views/Pages/EntityNameClass/EntityNameClass模板.txt |  301 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 301 insertions(+), 0 deletions(-)

diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Views/Pages/EntityNameClass/EntityNameClass\346\250\241\346\235\277.txt" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Views/Pages/EntityNameClass/EntityNameClass\346\250\241\346\235\277.txt"
new file mode 100644
index 0000000..86f92e8
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Views/Pages/EntityNameClass/EntityNameClass\346\250\241\346\235\277.txt"
@@ -0,0 +1,301 @@
+import { computed, defineComponent, onMounted, reactive, ref } from 'vue'
+import type { Ref } from 'vue'
+import BaseTable from '@/components/Table/Table'
+import styles from './$EntityName$.module.scss'
+import { use$EntityName$ } from '../../../Controllers/$EntityName$'
+import IconButton from '@/components/IconButton/IconButton'
+import $EntityName$Drawer from '../Dialog/$EntityName$Drawer/$EntityName$Drawer'
+import $EntityName$QueryDrawer from '../Dialog/$EntityName$QueryDrawer/$EntityName$QueryDrawer'
+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/$NameSpacePath$/Models/Service/$EntityName$Drawer'
+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: '$EntityName$',
+  directives: {
+    permission: vPermission,
+  },
+  setup(props, ctx) {
+    const {
+      dataSource,
+      contextMenu,
+      dialogConfig,
+      dialogConfigForQuery,
+      tableRef,
+      current,
+      search,
+      sort,
+      headers,
+      onError,
+      onSearch,
+      onRowClick,
+      onConfirm$EntityName$,
+      onCheck,
+      onAdd$EntityName$,
+      onAdvancedQuery,
+      onExport,
+      openDetail,
+      onSuccess,
+      onBeforeUpload,
+    } = use$EntityName$(props, ctx)
+
+    //定义高级查询引用
+   const $PageMenuInstanceName$QueryDrawerRef=ref(null);
+    // 新增的查询条件
+    const queryForm = ref({
+      searchVal: '',
+      str_searchFormInputAttrs:[]
+    })
+    //定义整体模糊查询的列数组(注意:必须大小写跟后端的实体类属性名一致,否则会导致匹配不对的问题)
+    const _searchFormInputAttrs = ref([
+     $LikeQueryAttrs$
+    ]);
+    const searchFormInputAttrs_Placeholder = ref('$LikeQueryAttrsName$');
+    
+
+    // 动态枚举选项
+    const enumOptions = reactive({
+      $EntityNameClass_enumOptions$
+    })
+
+    // 获取枚举数据
+    const fetchEnumData = async () => {
+      try {
+        $EntityNameClass_fetchEnumData$
+      } 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.$PageMenuInstanceName$List]: true,
+          }}
+        >
+          <BaseTable
+            ref={tableRef}
+            url={url}
+            sortUrlTpl="/api/v1/$NameSpacePath$/$PageMenuInstanceName$/{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.$PageMenuInstanceName$Content}>
+          {/* 添加/编辑 */}
+          <$EntityName$Drawer
+            v-model={dialogConfig.visible}
+            title={dialogConfig.title}
+            row={current.value}
+            sort={sort.value}
+            onConfirm={onConfirm$EntityName$}
+          />
+          {/* 高级查询 */}
+          <$EntityName$QueryDrawer
+            ref="$PageMenuInstanceName$QueryDrawerRef"
+            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="$PageMenuInstanceName$-add"
+                icon="add-p"
+                onClick={onAdd$EntityName$}
+                type="primary"
+              >
+                添加
+              </IconButton>
+              <el-divider direction="vertical" />
+
+              <el-divider direction="vertical" />
+              <el-upload
+                v-permission="$PageMenuInstanceName$-import"
+                name="file"
+                accept=".xlsx,.xls,.csv"
+                show-file-list={false}
+                onError={onError}
+                onSuccess={onSuccess}
+                before-upload={onBeforeUpload}
+                headers={headers.value}
+                action="/api/v1/$NameSpacePath$/$PageMenuInstanceName$/import"
+              >
+                <IconButton icon="in">导入</IconButton>
+              </el-upload>
+
+              <IconButton
+                v-permission="$PageMenuInstanceName$-output"
+                icon="out"
+                onClick={handleExport}
+              >
+                导出
+              </IconButton>
+            </div>
+            <ElFormItem style={{ marginTop: '15px' }}>
+              <ElFormItem label="关键字">
+                <ElInput
+                  v-model={queryForm.value.searchVal}
+                  placeholder={searchFormInputAttrs_Placeholder.value}
+                  clearable
+                  class={styles.formItem}
+                />
+              </ElFormItem>
+              <IconButton type="primary" icon="search" onClick={handleQueryForMain}>
+                查询
+              </IconButton>
+              {/* <IconButton style="" icon="refresh" onClick={resetQuery}>
+                重置
+              </IconButton> */}
+              <IconButton
+                v-permission="$PageMenuInstanceName$-add"
+                icon="search"
+                onClick={onAdvancedQuery}
+                type="primary"
+              >
+                高级查询
+              </IconButton>
+            </ElFormItem>
+          </div>
+
+          <RenderBaseTable
+            url="/api/v1/$NameSpacePath$/$PageMenuInstanceName$/page"
+            dataSource={dataSource}
+            isChecked={true}
+            isDrag={true}
+          />
+        </div>
+      )
+    }
+  },
+})

--
Gitblit v1.9.3