From 086e8d457fb6480f126aedbd2677c7e97bdac193 Mon Sep 17 00:00:00 2001
From: zs <zhousong@weben-smart.com>
Date: 周三, 07 5月 2025 15:49:09 +0800
Subject: [PATCH] 任务管理修改

---
 HIAWms/web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/WmsInOutStockRecord.tsx |  633 +++++++++++++++++++++++++++++---------------------------
 1 files changed, 327 insertions(+), 306 deletions(-)

diff --git a/HIAWms/web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/WmsInOutStockRecord.tsx b/HIAWms/web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/WmsInOutStockRecord.tsx
index 0fa6e7b..45b6773 100644
--- a/HIAWms/web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/WmsInOutStockRecord.tsx
+++ b/HIAWms/web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/WmsInOutStockRecord.tsx
@@ -1,308 +1,329 @@
-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', 'ContainerNo' 
-    ]); 
-    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="鍏抽敭瀛�"> 
-                <ElInput 
-                  v-model={queryForm.value.searchVal} 
-                  placeholder={searchFormInputAttrs_Placeholder.value} 
-                  clearable 
-                  class={styles.formItem} 
-                /> 
-              </ElFormItem> 
-              <IconButton type="primary" icon="search" onClick={handleQueryForMain}> 
-                鏌ヨ 
-              </IconButton> 
+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 dayjs from 'dayjs'
+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', 'ContainerNo'])
+    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={{
+              creationTime: ({ row }: any) => {
+                return (
+                  <div>
+                    {row.creationTime != null
+                      ? dayjs(row.creationTime).format('YYYY-MM-DD HH:mm:ss')
+                      : '-'}
+                  </div>
+                )
+              },
+              operateTime: ({ row }: any) => {
+                return (
+                  <div>
+                    {row.operateTime != null
+                      ? dayjs(row.operateTime).format('YYYY-MM-DD HH:mm:ss')
+                      : '-'}
+                  </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.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="鍏抽敭瀛�">
+                <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="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> 
-      ) 
-    } 
-  }, 
-}) 
+              </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>
+      )
+    }
+  },
+})

--
Gitblit v1.9.3