bzkf3 %!s(int64=2) %!d(string=hai) anos
pai
achega
e08fba6550

+ 1 - 4
components.d.ts

@@ -6,16 +6,15 @@ import '@vue/runtime-core'
 declare module '@vue/runtime-core' {
   export interface GlobalComponents {
     AppLink: typeof import('./src/components/AppLink/index.vue')['default']
-    ComputedItem: typeof import('./src/components/ComputedItem/index.vue')['default']
     ElButton: typeof import('element-plus/es')['ElButton']
     ElCascader: typeof import('element-plus/es')['ElCascader']
     ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
     ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
     ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
     ElDialog: typeof import('element-plus/es')['ElDialog']
-    ElEmpty: typeof import('element-plus/es')['ElEmpty']
     ElForm: typeof import('element-plus/es')['ElForm']
     ElFormItem: typeof import('element-plus/es')['ElFormItem']
+    ElImage: typeof import('element-plus/es')['ElImage']
     ElInput: typeof import('element-plus/es')['ElInput']
     ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
     ElLink: typeof import('element-plus/es')['ElLink']
@@ -27,11 +26,9 @@ declare module '@vue/runtime-core' {
     ElProgress: typeof import('element-plus/es')['ElProgress']
     ElRadio: typeof import('element-plus/es')['ElRadio']
     ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
-    ElRate: typeof import('element-plus/es')['ElRate']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
     ElSelect: typeof import('element-plus/es')['ElSelect']
     ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
-    ElSwitch: typeof import('element-plus/es')['ElSwitch']
     ElTable: typeof import('element-plus/es')['ElTable']
     ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
     ElTabPane: typeof import('element-plus/es')['ElTabPane']

+ 2 - 27
feature.md

@@ -1,27 +1,2 @@
-基础信息 可能需要机构学科接口
-
-校端教学
-
-# 新生列表
-[x] 出生日期 Datetime -> Date
-[x] 登记时间 过滤无效?Datetime类型时间过滤怎么处理,数据精确到秒,但过滤一般不会精确到秒
-
-# 教师教学计划
-# 备课组计划
-[x] 缺上传附件字段
-
-
-# 社团选课管理
-## 课程选课管理
-xsxk_xkzt 选课状态 过滤无效
-
-## 学生课程评价表
-接口错误
-
-
-## 成绩录入 
-/xdjx/xypjgl_cjlr xxc_yhncmc_json xxc_yhncmc label反了
-
-
-课表管理》课表 课表类型名称待改 
-课表参数设置
+# 7-27
+1. 校端教学-考场排座-考场设置 导入成功但无效

+ 1 - 0
package.json

@@ -10,6 +10,7 @@
     "plopf": "plop --force"
   },
   "dependencies": {
+    "@vueuse/core": "^9.0.0",
     "axios": "^0.27.2",
     "dayjs": "^1.11.3",
     "default-passive-events": "^2.0.0",

+ 30 - 3
pnpm-lock.yaml

@@ -3,6 +3,7 @@ lockfileVersion: 5.4
 specifiers:
   '@types/lodash-es': ^4.17.6
   '@vitejs/plugin-vue': ^2.3.3
+  '@vueuse/core': ^9.0.0
   axios: ^0.27.2
   dayjs: ^1.11.3
   default-passive-events: ^2.0.0
@@ -24,6 +25,7 @@ specifiers:
   windicss: ^3.5.6
 
 dependencies:
+  '@vueuse/core': 9.0.0_vue@3.2.37
   axios: 0.27.2
   dayjs: 1.11.3
   default-passive-events: 2.0.0
@@ -41,7 +43,7 @@ devDependencies:
   '@vitejs/plugin-vue': 2.3.3_vite@2.9.14+vue@3.2.37
   sass: 1.53.0
   typescript: 4.7.4
-  unplugin-auto-import: 0.8.8_vite@2.9.14
+  unplugin-auto-import: 0.8.8_b7dmhpldcmsbckc23tjkohjvz4
   unplugin-vue-components: 0.19.9_vite@2.9.14+vue@3.2.37
   vite: 2.9.14_sass@1.53.0
   vite-plugin-windicss: 1.8.7_vite@2.9.14
@@ -165,6 +167,9 @@ packages:
     resolution: {integrity: sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==}
     dev: false
 
+  /@types/web-bluetooth/0.0.15:
+    resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==}
+
   /@vitejs/plugin-vue/2.3.3_vite@2.9.14+vue@3.2.37:
     resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==}
     engines: {node: '>=12.0.0'}
@@ -309,10 +314,24 @@ packages:
       vue-demi: 0.13.5_vue@3.2.37
     dev: false
 
+  /@vueuse/core/9.0.0_vue@3.2.37:
+    resolution: {integrity: sha512-hMMc2ajuVknkL7Z39JdP9gFFND2OgnDTSS5mmuinWGAE1Vxy1AwDvTHm3+juyk+GzJjYRAktnBIPy7Fq53iOnw==}
+    dependencies:
+      '@types/web-bluetooth': 0.0.15
+      '@vueuse/metadata': 9.0.0
+      '@vueuse/shared': 9.0.0_vue@3.2.37
+      vue-demi: 0.13.5_vue@3.2.37
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - vue
+
   /@vueuse/metadata/8.9.4:
     resolution: {integrity: sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw==}
     dev: false
 
+  /@vueuse/metadata/9.0.0:
+    resolution: {integrity: sha512-79YVIsAP1bbWm5GdQuG7jDVF/9uuExzhkO0Sd4/TLuSfzH2uZOrHvGwy+ZNJHjbyRn3uf56rKINWLJdBuTLSqQ==}
+
   /@vueuse/shared/8.9.4_vue@3.2.37:
     resolution: {integrity: sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==}
     peerDependencies:
@@ -328,6 +347,14 @@ packages:
       vue-demi: 0.13.5_vue@3.2.37
     dev: false
 
+  /@vueuse/shared/9.0.0_vue@3.2.37:
+    resolution: {integrity: sha512-WRCyr/wIz5e/2gR/+qFucbCUcGMyJKkQZAzlECl3e71ebQQ9X/w3aBWT9FbnogJX+DNZ/t3Pj+TqPbC7TH1Yog==}
+    dependencies:
+      vue-demi: 0.13.5_vue@3.2.37
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - vue
+
   /@windicss/config/1.8.7:
     resolution: {integrity: sha512-8n+/Y36j5L3rw2tgMdLjeGRuNV7VYfKoHoraLK6Bk9OJ1MTPd5vv7pekof/uOPWVV7WWjVeZ6CTO8SDbDDW3iw==}
     dependencies:
@@ -2044,7 +2071,7 @@ packages:
       - webpack
     dev: true
 
-  /unplugin-auto-import/0.8.8_vite@2.9.14:
+  /unplugin-auto-import/0.8.8_b7dmhpldcmsbckc23tjkohjvz4:
     resolution: {integrity: sha512-cVZ79zMR1v4VCZ9emFTUnltmazCc2B4hObyVrxJdlgJ2sK8qub6JfjFt38rCF6MVEddkHiWCU6wZR1qbdqe+ig==}
     engines: {node: '>=14'}
     peerDependencies:
@@ -2055,6 +2082,7 @@ packages:
     dependencies:
       '@antfu/utils': 0.5.2
       '@rollup/pluginutils': 4.2.1
+      '@vueuse/core': 9.0.0_vue@3.2.37
       local-pkg: 0.4.2
       magic-string: 0.26.2
       unimport: 0.2.10_vite@2.9.14
@@ -2195,7 +2223,6 @@ packages:
         optional: true
     dependencies:
       vue: 3.2.37
-    dev: false
 
   /vue-router/4.1.2_vue@3.2.37:
     resolution: {integrity: sha512-5BP1qXFncVRwgV/XnqzsKApdMjQPqWIpoUBdL1ynz8HyLxIX/UDAx7Ql2BjmA5CXT/p61JfZvkpiFWFpaqcfag==}

+ 2 - 1
src/components/ImportButton/index.vue

@@ -5,7 +5,7 @@ import request, { download } from '~/utils/request';
 
 
 const props = defineProps<{ url: string }>()
-
+const emits = defineEmits(["success"])
 const loading = ref(false)
 const percentage = ref(0)
 
@@ -20,6 +20,7 @@ const handleTableRowBtns_import = ({ file }: { file: File }) => {
     },
   } as AxiosRequestConfig).then((res: any) => {
     loading.value = false
+    emits("success")
     return res
   })
 }

+ 6 - 3
src/components/RemoteCascader/index.vue

@@ -8,7 +8,8 @@ const props = defineProps<{
   modelValue?: string,
   modelName?: string,
   change?: (item: object | undefined) => void,
-  d?: {}
+  d?: {},
+  myProps?:{},
 }>()
 const emits = defineEmits(["update:modelValue", "update:modelName"])
 
@@ -47,7 +48,8 @@ function remoteMethod(keyword?: string) {
       keyword,
     }
   }).then(({ data }) => {
-    options.value = data.tree_data
+    options.value = data.tree_data.flat()
+    console.log('options :>> ', options.value);
     loading.value = false
   })
 }
@@ -73,7 +75,8 @@ function remoteMethod(keyword?: string) {
 // })
 
 const theProps = ref({
-  emitPath: false
+  emitPath: false,
+  ...props.myProps
 })
 
 const handleChange = (val?:string) => {

+ 156 - 119
src/pages/xdhq/jyly/jylb.vue

@@ -18,7 +18,7 @@ const router = useRouter()
 
 // #region (variable)
 const loading_table = ref(true)
-let whichDialogSubmit:'add'|'edit'
+let whichDialogSubmit: 'add' | 'edit'
 // #endregion
 
 // #region (type)
@@ -31,6 +31,7 @@ type TYPE_TABLE_FIELD = {
   'xhj_jlr': string; // 借领人
   'xhj_jlsj': string; // 借领时间
   'xhj_pzr': string; // 批准人
+  'xhj_zt': string
 }
 // #endregion
 
@@ -41,40 +42,40 @@ type TYPE_TABLE_FIELD = {
 const queryForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
 const handleQueryFormBtn_search = () => {
-      queryApi()
-    }
+  queryApi()
+}
 const handleQueryFormBtn_clear = () => {
-      queryForm_Data.value = {}
-    }
+  queryForm_Data.value = {}
+}
 // #endregion
 
 // #region (table selection)
 const multipleSelection = ref<TYPE_TABLE_FIELD[]>([])
-const handleSelectionChange = (val:TYPE_TABLE_FIELD[]) => {
+const handleSelectionChange = (val: TYPE_TABLE_FIELD[]) => {
   multipleSelection.value = val
 }
 // #endregion
 
 // #region (table row)
 const handleTableRowBtn_import = async ({ file }: { file: File }) => {
-      const res = await API_MAP['import']({ file })
-      if(res.code === '1'){
-        queryApi()
-        ElMessage.success(res.msg)
-      }
-    }
+  const res = await API_MAP['import']({ file })
+  if (res.code === '1') {
+    queryApi()
+    ElMessage.success(res.msg)
+  }
+}
 const handleTableRowBtn_export = () => {
-      exportApi()
-    }
+  exportApi()
+}
 const handleTableRowBtn_add = () => {
-      whichDialogSubmit = 'add'
-      dialogForm_Data.value = {}
-      dialogVisible_addOrEdit.value = true
-    }
+  whichDialogSubmit = 'add'
+  dialogForm_Data.value = {}
+  dialogVisible_addOrEdit.value = true
+}
 const handleTableRowBtn_delete = async () => {
-      await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD)=>item[TABLE_KEY]))
-      queryApi()
-    }
+  await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD) => item[TABLE_KEY]))
+  queryApi()
+}
 // #endregion
 
 // #region (table body)
@@ -82,32 +83,32 @@ const tableData = ref<TYPE_TABLE_FIELD[]>([])
 const DetailName = '-JYLY-JYLB'
 const DetailParam = 'aid'
 
-const handleTableColBtn_edit = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      const res = await detailApi(scope.row[TABLE_KEY])
-      dialogForm_Data.value = (res.data.one_info)
-      dialogVisible_addOrEdit.value = true
-    }
-const handleTableColBtn_audit = (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
-      dialogVisible_audit.value = true
-    }
-const handleTableColBtn_detail = (scope:{row:TYPE_TABLE_FIELD}) => {
-      router.push({ name:DetailName, params:{ [DetailParam]:scope.row[TABLE_KEY]} })
-    }
-const handleTableColBtn_delete = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      await deleteApi(scope.row[TABLE_KEY])
-      queryApi()
-    }
+const handleTableColBtn_edit = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  const res = await detailApi(scope.row[TABLE_KEY])
+  dialogForm_Data.value = (res.data.one_info)
+  dialogVisible_addOrEdit.value = true
+}
+const handleTableColBtn_audit = (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
+  dialogVisible_audit.value = true
+}
+const handleTableColBtn_detail = (scope: { row: TYPE_TABLE_FIELD }) => {
+  router.push({ name: DetailName, params: { [DetailParam]: scope.row[TABLE_KEY] } })
+}
+const handleTableColBtn_delete = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  await deleteApi(scope.row[TABLE_KEY])
+  queryApi()
+}
 // #endregion
 
 // #region (pagination)
 const total = ref(0)
 const limit = ref(10)
 
-const currentPage=ref(1) 
-function handleCurrentChange(){
+const currentPage = ref(1)
+function handleCurrentChange() {
   queryApi()
 }
 // #endregion
@@ -115,70 +116,71 @@ function handleCurrentChange(){
 // #region (dialog base)
 const dialogForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
-const handleDialogFormBtn_submit = async (formRefKey:string,extendData?:Partial<TYPE_TABLE_FIELD>) => {
-      const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid:boolean) => valid)
-      if (isValid) {
-        await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({...dialogForm_Data.value,...extendData}))
-        handleDialogFormBtn_cancel()
-        queryApi()
-      }
-    }
-const handleDialogFormBtn_cancel = (formRefKey?:string) => {
-      dialogVisible_addOrEdit.value = false
-      dialogVisible_audit.value = false
-    }
+const handleDialogFormBtn_submit = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
+  const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
+  if (isValid) {
+    await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({ ...dialogForm_Data.value, ...extendData }))
+    handleDialogFormBtn_cancel()
+    queryApi()
+  }
+}
+const handleDialogFormBtn_cancel = (formRefKey?: string) => {
+  dialogVisible_addOrEdit.value = false
+  dialogVisible_audit.value = false
+}
 // #endregion
 
 // #region (dialog add/edit)
 const dialogVisible_addOrEdit = ref<boolean>(false)
 
-const dialogForm_Ref_addOrEdit= ref<FormInstance>()
-const dialogForm_Rules_addOrEdit = reactive({ 
-  'xhj_zcmc':{required : true,message:'资产名称不能为空',trigger:'submit'},
-  'xhj_zcbh':{required : true,message:'资产编号不能为空',trigger:'submit'},
-  'xhj_ssbm':{required : true,message:'所属部门不能为空',trigger:'submit'},
-  'xhj_jlxz':{required : true,message:'借领性质不能为空',trigger:'submit'},
-  'xhj_jlr':{required : true,message:'借领人不能为空',trigger:'submit'},
-  'xhj_jlsj':{required : true,message:'借领时间不能为空',trigger:'submit'},
-  'xhj_pzr':{required : true,message:'批准人不能为空',trigger:'submit'},
+const dialogForm_Ref_addOrEdit = ref<FormInstance>()
+const dialogForm_Rules_addOrEdit = reactive({
+  'xhj_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
+  'xhj_zcbh': { required: true, message: '资产编号不能为空', trigger: 'submit' },
+  'xhj_ssbm': { required: true, message: '所属部门不能为空', trigger: 'submit' },
+  'xhj_jlxz': { required: true, message: '借领性质不能为空', trigger: 'submit' },
+  'xhj_jlr': { required: true, message: '借领人不能为空', trigger: 'submit' },
+  'xhj_jlsj': { required: true, message: '借领时间不能为空', trigger: 'submit' },
+  'xhj_pzr': { required: true, message: '批准人不能为空', trigger: 'submit' },
 })
 // #endregion
 
 // #region (dialog audit)
 const dialogVisible_audit = ref<boolean>(false)
 
-const dialogForm_Field_audit= reactive<{
-  FLAG:keyof TYPE_TABLE_FIELD,
-  REASON?:keyof TYPE_TABLE_FIELD
+const dialogForm_Field_audit = reactive<{
+  FLAG: keyof TYPE_TABLE_FIELD,
+  REASON?: keyof TYPE_TABLE_FIELD
 }>({
-  FLAG:'xhj_id',
+  FLAG: 'xhj_id',
   // REASON:'xhj_id'
 })
 
-const dialogForm_Ref_audit= ref<FormInstance>()
-const dialogForm_Rules_audit = reactive<FormRules>({ 
-  'xhj_zcmc':{required : true ,message:'资产名称不能为空',trigger:'submit'},
-  'xhj_zcbh':{required : true ,message:'资产编号不能为空',trigger:'submit'},
-  'xhj_ssbm':{required : true ,message:'所属部门不能为空',trigger:'submit'},
-  'xhj_jlxz':{required : true ,message:'借领性质不能为空',trigger:'submit'},
-  'xhj_jlr':{required : true ,message:'借领人不能为空',trigger:'submit'},
-  'xhj_jlsj':{required : true ,message:'借领时间不能为空',trigger:'submit'},
-  'xhj_pzr':{required : true ,message:'批准人不能为空',trigger:'submit'},
+const dialogForm_Ref_audit = ref<FormInstance>()
+const dialogForm_Rules_audit = reactive<FormRules>({
+  'xhj_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
+  'xhj_zcbh': { required: true, message: '资产编号不能为空', trigger: 'submit' },
+  'xhj_ssbm': { required: true, message: '所属部门不能为空', trigger: 'submit' },
+  'xhj_jlxz': { required: true, message: '借领性质不能为空', trigger: 'submit' },
+  'xhj_jlr': { required: true, message: '借领人不能为空', trigger: 'submit' },
+  'xhj_jlsj': { required: true, message: '借领时间不能为空', trigger: 'submit' },
+  'xhj_pzr': { required: true, message: '批准人不能为空', trigger: 'submit' },
 })
 
 // #endregion
 
 // #region (request api): 
-function queryApi(){
+function queryApi() {
   loading_table.value = true
   return request({
     url: URL_CUT + '/index',
     data: {
       ...queryForm_Data.value,
       limit: limit.value,
-      page: currentPage.value
+      page: currentPage.value,
+      xhj_jlxz:'1'
     }
-  }).then((response:{data:{total_rows:string,page_data:TYPE_TABLE_FIELD[]}}) => {
+  }).then((response: { data: { total_rows: string, page_data: TYPE_TABLE_FIELD[] } }) => {
     const { data } = response
     total.value = parseInt(data.total_rows)
     tableData.value = data.page_data
@@ -188,44 +190,44 @@ function queryApi(){
   })
 }
 
-function addApi(data:TYPE_TABLE_FIELD){
+function addApi(data: TYPE_TABLE_FIELD) {
   return request({
     url: URL_CUT + '/add',
     data: {
-      [URL_SUBMIT_KEY]:data,
+      [URL_SUBMIT_KEY]: data,
     }
   })
 }
 
-function editApi(data:Partial<TYPE_TABLE_FIELD>){
+function editApi(data: Partial<TYPE_TABLE_FIELD>) {
   return request({
     url: URL_CUT + '/edit',
     data: {
-      [TABLE_KEY]:data[TABLE_KEY],
-      [URL_SUBMIT_KEY]:pick(data,['xhj_zcmc','xhj_zcbh','xhj_ssbm','xhj_jlxz','xhj_jlr','xhj_jlsj','xhj_pzr',]),
+      [TABLE_KEY]: data[TABLE_KEY],
+      [URL_SUBMIT_KEY]: pick(data, ['xhj_zcmc', 'xhj_zcbh', 'xhj_ssbm', 'xhj_jlxz', 'xhj_jlr', 'xhj_jlsj', 'xhj_pzr','xhj_zt']),
     }
   })
 }
 
-function deleteApi(id:string|string[]){
+function deleteApi(id: string | string[]) {
   return request({
     url: URL_CUT + '/delete',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function detailApi(id:string){
+function detailApi(id: string) {
   return request({
     url: URL_CUT + '/detail',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function importApi(data:{file:File}){  
+function importApi(data: { file: File }) {
   return request({
     $type: 'import',
     url: URL_CUT + '/import',
@@ -233,41 +235,58 @@ function importApi(data:{file:File}){
   } as AxiosRequestConfig)
 }
 
-function exportApi(){
+function exportApi() {
   return download(URL_CUT + '/index', queryForm_Data.value)
 }
 
 const API_MAP = {
-  query:queryApi,
-  add:addApi,
-  edit:editApi,
-  delete:deleteApi,
-  detail:detailApi,
-  import:importApi,
-  export:exportApi,
+  query: queryApi,
+  add: addApi,
+  edit: editApi,
+  delete: deleteApi,
+  detail: detailApi,
+  import: importApi,
+  export: exportApi,
 }
 // #endregion
 
 // #region (page init)
-function init(){
+function init() {
   queryApi()
 }
 init()
 // #endregion
 
+
+const handleTableColBtn_return = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  await editApi({
+    [TABLE_KEY]: scope.row[TABLE_KEY],
+    xhj_zt: '3'
+  })
+  queryApi()
+}
+
 </script>
 
 <template>
   <div class="card flex-grow flex flex-col">
     <el-form inline :model="queryForm_Data">
       <!-- <el-form-item label="关键字"><el-input v-model="queryForm_Data.keyword" ></el-input></el-form-item> -->
-      <el-form-item label="资产名称"><el-input v-model="queryForm_Data.xhj_zcmc" clearable /></el-form-item>
-      <el-form-item label="资产编号"><el-input v-model="queryForm_Data.xhj_zcbh" clearable /></el-form-item>
-      <el-form-item label="所属部门"><el-input v-model="queryForm_Data.xhj_ssbm" clearable /></el-form-item>
-      <el-form-item label="借领性质"><el-input v-model="queryForm_Data.xhj_jlxz" clearable /></el-form-item>
-      <el-form-item label="借领人"><el-input v-model="queryForm_Data.xhj_jlr" clearable /></el-form-item>
-      <el-form-item label="借领时间"><el-input v-model="queryForm_Data.xhj_jlsj" clearable /></el-form-item>
-      <el-form-item label="批准人"><el-input v-model="queryForm_Data.xhj_pzr" clearable /></el-form-item>
+      <el-form-item label="资产名称">
+        <el-input v-model="queryForm_Data.xhj_zcmc" clearable />
+      </el-form-item>
+      <el-form-item label="资产编号">
+        <el-input v-model="queryForm_Data.xhj_zcbh" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="所属部门"><el-input v-model="queryForm_Data.xhj_ssbm" clearable /></el-form-item>
+      <el-form-item label="借领性质"><el-input v-model="queryForm_Data.xhj_jlxz" clearable /></el-form-item> -->
+      <el-form-item label="借领人">
+        <el-input v-model="queryForm_Data.xhj_jlr" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="借领时间"><el-input v-model="queryForm_Data.xhj_jlsj" clearable /></el-form-item> -->
+      <el-form-item label="批准人">
+        <el-input v-model="queryForm_Data.xhj_pzr" clearable />
+      </el-form-item>
       <el-form-item>
         <el-button @click="handleQueryFormBtn_search" type="primary">搜索</el-button>
         <el-button @click="handleQueryFormBtn_clear" type="warning">清空</el-button>
@@ -275,10 +294,10 @@ init()
     </el-form>
     <div class="divider"></div>
     <div>
-        <import-button :url="URL_CUT_REF"></import-button>
-        <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
-        <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
-        <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
+      <!-- <import-button :url="URL_CUT_REF"></import-button> -->
+      <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
+      <!-- <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
+        <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button> -->
     </div>
 
     <div class="divider"></div>
@@ -289,16 +308,19 @@ init()
         <el-table-column prop="xhj_zcmc" label="资产名称" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhj_zcbh" label="资产编号" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhj_ssbm" label="所属部门" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhj_jlxz" label="借领性质" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhj_jlxz" label="借领性质" width="auto" show-overflow-tooltip></el-table-column> -->
         <el-table-column prop="xhj_jlr" label="借领人" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhj_jlsj" label="借领时间" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhj_pzr" label="批准人" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column label="操作" fixed="right">
           <template #default="scope">
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button>
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button>
             <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary" >审核</el-button>
             <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除</el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除</el-button> -->
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_return(scope)" type="primary"
+              :disabled="scope.row.xhj_zt_option_k === '3'">{{ scope.row.xhj_zt_option_k === '3' ? '已归还' : '归还' }}
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -311,14 +333,29 @@ init()
   </div>
 
   <el-dialog v-model="dialogVisible_addOrEdit" append-to-body destroy-on-close>
-    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit" label-width="120px">
-      <el-form-item label="资产名称" prop="xhj_zcmc"><el-input v-model="dialogForm_Data.xhj_zcmc" clearable /></el-form-item>
-      <el-form-item label="资产编号" prop="xhj_zcbh"><el-input v-model="dialogForm_Data.xhj_zcbh" clearable /></el-form-item>
-      <el-form-item label="所属部门" prop="xhj_ssbm"><el-input v-model="dialogForm_Data.xhj_ssbm" clearable /></el-form-item>
-      <el-form-item label="借领性质" prop="xhj_jlxz"><el-input v-model="dialogForm_Data.xhj_jlxz" clearable /></el-form-item>
-      <el-form-item label="借领人" prop="xhj_jlr"><el-input v-model="dialogForm_Data.xhj_jlr" clearable /></el-form-item>
-      <el-form-item label="借领时间" prop="xhj_jlsj"><el-input v-model="dialogForm_Data.xhj_jlsj" clearable /></el-form-item>
-      <el-form-item label="批准人" prop="xhj_pzr"><el-input v-model="dialogForm_Data.xhj_pzr" clearable /></el-form-item>
+    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit"
+      label-width="120px">
+      <el-form-item label="资产名称" prop="xhj_zcmc">
+        <el-input v-model="dialogForm_Data.xhj_zcmc" clearable />
+      </el-form-item>
+      <el-form-item label="资产编号" prop="xhj_zcbh">
+        <el-input v-model="dialogForm_Data.xhj_zcbh" clearable />
+      </el-form-item>
+      <el-form-item label="所属部门" prop="xhj_ssbm">
+        <el-input v-model="dialogForm_Data.xhj_ssbm" clearable />
+      </el-form-item>
+      <el-form-item label="借领性质" prop="xhj_jlxz">
+        <el-input v-model="dialogForm_Data.xhj_jlxz" clearable />
+      </el-form-item>
+      <el-form-item label="借领人" prop="xhj_jlr">
+        <el-input v-model="dialogForm_Data.xhj_jlr" clearable />
+      </el-form-item>
+      <el-form-item label="借领时间" prop="xhj_jlsj">
+        <el-input v-model="dialogForm_Data.xhj_jlsj" clearable />
+      </el-form-item>
+      <el-form-item label="批准人" prop="xhj_pzr">
+        <el-input v-model="dialogForm_Data.xhj_pzr" clearable />
+      </el-form-item>
       <div class="flex justify-center">
         <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit')" type="primary">提交</el-button>
         <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button>

+ 157 - 120
src/pages/xdhq/jyly/lylb.vue

@@ -18,7 +18,7 @@ const router = useRouter()
 
 // #region (variable)
 const loading_table = ref(true)
-let whichDialogSubmit:'add'|'edit'
+let whichDialogSubmit: 'add' | 'edit'
 // #endregion
 
 // #region (type)
@@ -31,6 +31,7 @@ type TYPE_TABLE_FIELD = {
   'xhj_jlr': string; // 借领人
   'xhj_jlsj': string; // 借领时间
   'xhj_pzr': string; // 批准人
+  'xhj_zt': string
 }
 // #endregion
 
@@ -41,73 +42,73 @@ type TYPE_TABLE_FIELD = {
 const queryForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
 const handleQueryFormBtn_search = () => {
-      queryApi()
-    }
+  queryApi()
+}
 const handleQueryFormBtn_clear = () => {
-      queryForm_Data.value = {}
-    }
+  queryForm_Data.value = {}
+}
 // #endregion
 
 // #region (table selection)
 const multipleSelection = ref<TYPE_TABLE_FIELD[]>([])
-const handleSelectionChange = (val:TYPE_TABLE_FIELD[]) => {
+const handleSelectionChange = (val: TYPE_TABLE_FIELD[]) => {
   multipleSelection.value = val
 }
 // #endregion
 
 // #region (table row)
 const handleTableRowBtn_import = async ({ file }: { file: File }) => {
-      const res = await API_MAP['import']({ file })
-      if(res.code === '1'){
-        queryApi()
-        ElMessage.success(res.msg)
-      }
-    }
+  const res = await API_MAP['import']({ file })
+  if (res.code === '1') {
+    queryApi()
+    ElMessage.success(res.msg)
+  }
+}
 const handleTableRowBtn_export = () => {
-      exportApi()
-    }
+  exportApi()
+}
 const handleTableRowBtn_add = () => {
-      whichDialogSubmit = 'add'
-      dialogForm_Data.value = {}
-      dialogVisible_addOrEdit.value = true
-    }
+  whichDialogSubmit = 'add'
+  dialogForm_Data.value = {}
+  dialogVisible_addOrEdit.value = true
+}
 const handleTableRowBtn_delete = async () => {
-      await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD)=>item[TABLE_KEY]))
-      queryApi()
-    }
+  await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD) => item[TABLE_KEY]))
+  queryApi()
+}
 // #endregion
 
 // #region (table body)
 const tableData = ref<TYPE_TABLE_FIELD[]>([])
-const DetailName = '-JYLY-LYLB'
+const DetailName = '-JYLY-JYLB'
 const DetailParam = 'aid'
 
-const handleTableColBtn_edit = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      const res = await detailApi(scope.row[TABLE_KEY])
-      dialogForm_Data.value = (res.data.one_info)
-      dialogVisible_addOrEdit.value = true
-    }
-const handleTableColBtn_audit = (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
-      dialogVisible_audit.value = true
-    }
-const handleTableColBtn_detail = (scope:{row:TYPE_TABLE_FIELD}) => {
-      router.push({ name:DetailName, params:{ [DetailParam]:scope.row[TABLE_KEY]} })
-    }
-const handleTableColBtn_delete = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      await deleteApi(scope.row[TABLE_KEY])
-      queryApi()
-    }
+const handleTableColBtn_edit = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  const res = await detailApi(scope.row[TABLE_KEY])
+  dialogForm_Data.value = (res.data.one_info)
+  dialogVisible_addOrEdit.value = true
+}
+const handleTableColBtn_audit = (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
+  dialogVisible_audit.value = true
+}
+const handleTableColBtn_detail = (scope: { row: TYPE_TABLE_FIELD }) => {
+  router.push({ name: DetailName, params: { [DetailParam]: scope.row[TABLE_KEY] } })
+}
+const handleTableColBtn_delete = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  await deleteApi(scope.row[TABLE_KEY])
+  queryApi()
+}
 // #endregion
 
 // #region (pagination)
 const total = ref(0)
 const limit = ref(10)
 
-const currentPage=ref(1) 
-function handleCurrentChange(){
+const currentPage = ref(1)
+function handleCurrentChange() {
   queryApi()
 }
 // #endregion
@@ -115,70 +116,71 @@ function handleCurrentChange(){
 // #region (dialog base)
 const dialogForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
-const handleDialogFormBtn_submit = async (formRefKey:string,extendData?:Partial<TYPE_TABLE_FIELD>) => {
-      const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid:boolean) => valid)
-      if (isValid) {
-        await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({...dialogForm_Data.value,...extendData}))
-        handleDialogFormBtn_cancel()
-        queryApi()
-      }
-    }
-const handleDialogFormBtn_cancel = (formRefKey?:string) => {
-      dialogVisible_addOrEdit.value = false
-      dialogVisible_audit.value = false
-    }
+const handleDialogFormBtn_submit = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
+  const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
+  if (isValid) {
+    await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({ ...dialogForm_Data.value, ...extendData }))
+    handleDialogFormBtn_cancel()
+    queryApi()
+  }
+}
+const handleDialogFormBtn_cancel = (formRefKey?: string) => {
+  dialogVisible_addOrEdit.value = false
+  dialogVisible_audit.value = false
+}
 // #endregion
 
 // #region (dialog add/edit)
 const dialogVisible_addOrEdit = ref<boolean>(false)
 
-const dialogForm_Ref_addOrEdit= ref<FormInstance>()
-const dialogForm_Rules_addOrEdit = reactive({ 
-  'xhj_zcmc':{required : true,message:'资产名称不能为空',trigger:'submit'},
-  'xhj_zcbh':{required : true,message:'资产编号不能为空',trigger:'submit'},
-  'xhj_ssbm':{required : true,message:'所属部门不能为空',trigger:'submit'},
-  'xhj_jlxz':{required : true,message:'借领性质不能为空',trigger:'submit'},
-  'xhj_jlr':{required : true,message:'借领人不能为空',trigger:'submit'},
-  'xhj_jlsj':{required : true,message:'借领时间不能为空',trigger:'submit'},
-  'xhj_pzr':{required : true,message:'批准人不能为空',trigger:'submit'},
+const dialogForm_Ref_addOrEdit = ref<FormInstance>()
+const dialogForm_Rules_addOrEdit = reactive({
+  'xhj_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
+  'xhj_zcbh': { required: true, message: '资产编号不能为空', trigger: 'submit' },
+  'xhj_ssbm': { required: true, message: '所属部门不能为空', trigger: 'submit' },
+  'xhj_jlxz': { required: true, message: '借领性质不能为空', trigger: 'submit' },
+  'xhj_jlr': { required: true, message: '借领人不能为空', trigger: 'submit' },
+  'xhj_jlsj': { required: true, message: '借领时间不能为空', trigger: 'submit' },
+  'xhj_pzr': { required: true, message: '批准人不能为空', trigger: 'submit' },
 })
 // #endregion
 
 // #region (dialog audit)
 const dialogVisible_audit = ref<boolean>(false)
 
-const dialogForm_Field_audit= reactive<{
-  FLAG:keyof TYPE_TABLE_FIELD,
-  REASON?:keyof TYPE_TABLE_FIELD
+const dialogForm_Field_audit = reactive<{
+  FLAG: keyof TYPE_TABLE_FIELD,
+  REASON?: keyof TYPE_TABLE_FIELD
 }>({
-  FLAG:'xhj_id',
+  FLAG: 'xhj_id',
   // REASON:'xhj_id'
 })
 
-const dialogForm_Ref_audit= ref<FormInstance>()
-const dialogForm_Rules_audit = reactive<FormRules>({ 
-  'xhj_zcmc':{required : true ,message:'资产名称不能为空',trigger:'submit'},
-  'xhj_zcbh':{required : true ,message:'资产编号不能为空',trigger:'submit'},
-  'xhj_ssbm':{required : true ,message:'所属部门不能为空',trigger:'submit'},
-  'xhj_jlxz':{required : true ,message:'借领性质不能为空',trigger:'submit'},
-  'xhj_jlr':{required : true ,message:'借领人不能为空',trigger:'submit'},
-  'xhj_jlsj':{required : true ,message:'借领时间不能为空',trigger:'submit'},
-  'xhj_pzr':{required : true ,message:'批准人不能为空',trigger:'submit'},
+const dialogForm_Ref_audit = ref<FormInstance>()
+const dialogForm_Rules_audit = reactive<FormRules>({
+  'xhj_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
+  'xhj_zcbh': { required: true, message: '资产编号不能为空', trigger: 'submit' },
+  'xhj_ssbm': { required: true, message: '所属部门不能为空', trigger: 'submit' },
+  'xhj_jlxz': { required: true, message: '借领性质不能为空', trigger: 'submit' },
+  'xhj_jlr': { required: true, message: '借领人不能为空', trigger: 'submit' },
+  'xhj_jlsj': { required: true, message: '借领时间不能为空', trigger: 'submit' },
+  'xhj_pzr': { required: true, message: '批准人不能为空', trigger: 'submit' },
 })
 
 // #endregion
 
 // #region (request api): 
-function queryApi(){
+function queryApi() {
   loading_table.value = true
   return request({
     url: URL_CUT + '/index',
     data: {
       ...queryForm_Data.value,
       limit: limit.value,
-      page: currentPage.value
+      page: currentPage.value,
+      xhj_jlxz: '2'
     }
-  }).then((response:{data:{total_rows:string,page_data:TYPE_TABLE_FIELD[]}}) => {
+  }).then((response: { data: { total_rows: string, page_data: TYPE_TABLE_FIELD[] } }) => {
     const { data } = response
     total.value = parseInt(data.total_rows)
     tableData.value = data.page_data
@@ -188,44 +190,44 @@ function queryApi(){
   })
 }
 
-function addApi(data:TYPE_TABLE_FIELD){
+function addApi(data: TYPE_TABLE_FIELD) {
   return request({
     url: URL_CUT + '/add',
     data: {
-      [URL_SUBMIT_KEY]:data,
+      [URL_SUBMIT_KEY]: data,
     }
   })
 }
 
-function editApi(data:Partial<TYPE_TABLE_FIELD>){
+function editApi(data: Partial<TYPE_TABLE_FIELD>) {
   return request({
     url: URL_CUT + '/edit',
     data: {
-      [TABLE_KEY]:data[TABLE_KEY],
-      [URL_SUBMIT_KEY]:pick(data,['xhj_zcmc','xhj_zcbh','xhj_ssbm','xhj_jlxz','xhj_jlr','xhj_jlsj','xhj_pzr',]),
+      [TABLE_KEY]: data[TABLE_KEY],
+      [URL_SUBMIT_KEY]: pick(data, ['xhj_zcmc', 'xhj_zcbh', 'xhj_ssbm', 'xhj_jlxz', 'xhj_jlr', 'xhj_jlsj', 'xhj_pzr', 'xhj_zt']),
     }
   })
 }
 
-function deleteApi(id:string|string[]){
+function deleteApi(id: string | string[]) {
   return request({
     url: URL_CUT + '/delete',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function detailApi(id:string){
+function detailApi(id: string) {
   return request({
     url: URL_CUT + '/detail',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function importApi(data:{file:File}){  
+function importApi(data: { file: File }) {
   return request({
     $type: 'import',
     url: URL_CUT + '/import',
@@ -233,41 +235,58 @@ function importApi(data:{file:File}){
   } as AxiosRequestConfig)
 }
 
-function exportApi(){
+function exportApi() {
   return download(URL_CUT + '/index', queryForm_Data.value)
 }
 
 const API_MAP = {
-  query:queryApi,
-  add:addApi,
-  edit:editApi,
-  delete:deleteApi,
-  detail:detailApi,
-  import:importApi,
-  export:exportApi,
+  query: queryApi,
+  add: addApi,
+  edit: editApi,
+  delete: deleteApi,
+  detail: detailApi,
+  import: importApi,
+  export: exportApi,
 }
 // #endregion
 
 // #region (page init)
-function init(){
+function init() {
   queryApi()
 }
 init()
 // #endregion
 
+
+const handleTableColBtn_return = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  await editApi({
+    [TABLE_KEY]: scope.row[TABLE_KEY],
+    xhj_zt: '3'
+  })
+  queryApi()
+}
+
 </script>
 
 <template>
   <div class="card flex-grow flex flex-col">
     <el-form inline :model="queryForm_Data">
       <!-- <el-form-item label="关键字"><el-input v-model="queryForm_Data.keyword" ></el-input></el-form-item> -->
-      <el-form-item label="资产名称"><el-input v-model="queryForm_Data.xhj_zcmc" clearable /></el-form-item>
-      <el-form-item label="资产编号"><el-input v-model="queryForm_Data.xhj_zcbh" clearable /></el-form-item>
-      <el-form-item label="所属部门"><el-input v-model="queryForm_Data.xhj_ssbm" clearable /></el-form-item>
-      <el-form-item label="借领性质"><el-input v-model="queryForm_Data.xhj_jlxz" clearable /></el-form-item>
-      <el-form-item label="借领人"><el-input v-model="queryForm_Data.xhj_jlr" clearable /></el-form-item>
-      <el-form-item label="借领时间"><el-input v-model="queryForm_Data.xhj_jlsj" clearable /></el-form-item>
-      <el-form-item label="批准人"><el-input v-model="queryForm_Data.xhj_pzr" clearable /></el-form-item>
+      <el-form-item label="资产名称">
+        <el-input v-model="queryForm_Data.xhj_zcmc" clearable />
+      </el-form-item>
+      <el-form-item label="资产编号">
+        <el-input v-model="queryForm_Data.xhj_zcbh" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="所属部门"><el-input v-model="queryForm_Data.xhj_ssbm" clearable /></el-form-item>
+      <el-form-item label="借领性质"><el-input v-model="queryForm_Data.xhj_jlxz" clearable /></el-form-item> -->
+      <el-form-item label="借领人">
+        <el-input v-model="queryForm_Data.xhj_jlr" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="借领时间"><el-input v-model="queryForm_Data.xhj_jlsj" clearable /></el-form-item> -->
+      <el-form-item label="批准人">
+        <el-input v-model="queryForm_Data.xhj_pzr" clearable />
+      </el-form-item>
       <el-form-item>
         <el-button @click="handleQueryFormBtn_search" type="primary">搜索</el-button>
         <el-button @click="handleQueryFormBtn_clear" type="warning">清空</el-button>
@@ -275,10 +294,10 @@ init()
     </el-form>
     <div class="divider"></div>
     <div>
-        <import-button :url="URL_CUT_REF"></import-button>
-        <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
-        <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
-        <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
+      <!-- <import-button :url="URL_CUT_REF"></import-button> -->
+      <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
+      <!-- <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
+        <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button> -->
     </div>
 
     <div class="divider"></div>
@@ -289,16 +308,19 @@ init()
         <el-table-column prop="xhj_zcmc" label="资产名称" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhj_zcbh" label="资产编号" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhj_ssbm" label="所属部门" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhj_jlxz" label="借领性质" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhj_jlxz" label="借领性质" width="auto" show-overflow-tooltip></el-table-column> -->
         <el-table-column prop="xhj_jlr" label="借领人" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhj_jlsj" label="借领时间" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhj_pzr" label="批准人" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column label="操作" fixed="right">
           <template #default="scope">
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button>
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button>
             <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary" >审核</el-button>
             <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除</el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除</el-button> -->
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_return(scope)" type="primary"
+              :disabled="scope.row.xhj_zt_option_k === '3'">dev:{{ scope.row.xhj_zt_option_k === '3' ? '已归还' : '归还' }}
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -311,14 +333,29 @@ init()
   </div>
 
   <el-dialog v-model="dialogVisible_addOrEdit" append-to-body destroy-on-close>
-    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit" label-width="120px">
-      <el-form-item label="资产名称" prop="xhj_zcmc"><el-input v-model="dialogForm_Data.xhj_zcmc" clearable /></el-form-item>
-      <el-form-item label="资产编号" prop="xhj_zcbh"><el-input v-model="dialogForm_Data.xhj_zcbh" clearable /></el-form-item>
-      <el-form-item label="所属部门" prop="xhj_ssbm"><el-input v-model="dialogForm_Data.xhj_ssbm" clearable /></el-form-item>
-      <el-form-item label="借领性质" prop="xhj_jlxz"><el-input v-model="dialogForm_Data.xhj_jlxz" clearable /></el-form-item>
-      <el-form-item label="借领人" prop="xhj_jlr"><el-input v-model="dialogForm_Data.xhj_jlr" clearable /></el-form-item>
-      <el-form-item label="借领时间" prop="xhj_jlsj"><el-input v-model="dialogForm_Data.xhj_jlsj" clearable /></el-form-item>
-      <el-form-item label="批准人" prop="xhj_pzr"><el-input v-model="dialogForm_Data.xhj_pzr" clearable /></el-form-item>
+    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit"
+      label-width="120px">
+      <el-form-item label="资产名称" prop="xhj_zcmc">
+        <el-input v-model="dialogForm_Data.xhj_zcmc" clearable />
+      </el-form-item>
+      <el-form-item label="资产编号" prop="xhj_zcbh">
+        <el-input v-model="dialogForm_Data.xhj_zcbh" clearable />
+      </el-form-item>
+      <el-form-item label="所属部门" prop="xhj_ssbm">
+        <el-input v-model="dialogForm_Data.xhj_ssbm" clearable />
+      </el-form-item>
+      <el-form-item label="借领性质" prop="xhj_jlxz">
+        <el-input v-model="dialogForm_Data.xhj_jlxz" clearable />
+      </el-form-item>
+      <el-form-item label="借领人" prop="xhj_jlr">
+        <el-input v-model="dialogForm_Data.xhj_jlr" clearable />
+      </el-form-item>
+      <el-form-item label="借领时间" prop="xhj_jlsj">
+        <el-input v-model="dialogForm_Data.xhj_jlsj" clearable />
+      </el-form-item>
+      <el-form-item label="批准人" prop="xhj_pzr">
+        <el-input v-model="dialogForm_Data.xhj_pzr" clearable />
+      </el-form-item>
       <div class="flex justify-center">
         <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit')" type="primary">提交</el-button>
         <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button>

+ 289 - 130
src/pages/xdhq/jyly/xclb.vue

@@ -18,7 +18,7 @@ const router = useRouter()
 
 // #region (variable)
 const loading_table = ref(true)
-let whichDialogSubmit:'add'|'edit'
+let whichDialogSubmit: 'add' | 'edit'
 // #endregion
 
 // #region (type)
@@ -42,73 +42,73 @@ type TYPE_TABLE_FIELD = {
 const queryForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
 const handleQueryFormBtn_search = () => {
-      queryApi()
-    }
+  queryApi()
+}
 const handleQueryFormBtn_clear = () => {
-      queryForm_Data.value = {}
-    }
+  queryForm_Data.value = {}
+}
 // #endregion
 
 // #region (table selection)
 const multipleSelection = ref<TYPE_TABLE_FIELD[]>([])
-const handleSelectionChange = (val:TYPE_TABLE_FIELD[]) => {
+const handleSelectionChange = (val: TYPE_TABLE_FIELD[]) => {
   multipleSelection.value = val
 }
 // #endregion
 
 // #region (table row)
 const handleTableRowBtn_import = async ({ file }: { file: File }) => {
-      const res = await API_MAP['import']({ file })
-      if(res.code === '1'){
-        queryApi()
-        ElMessage.success(res.msg)
-      }
-    }
+  const res = await API_MAP['import']({ file })
+  if (res.code === '1') {
+    queryApi()
+    ElMessage.success(res.msg)
+  }
+}
 const handleTableRowBtn_export = () => {
-      exportApi()
-    }
+  exportApi()
+}
 const handleTableRowBtn_add = () => {
-      whichDialogSubmit = 'add'
-      dialogForm_Data.value = {}
-      dialogVisible_addOrEdit.value = true
-    }
+  whichDialogSubmit = 'add'
+  dialogForm_Data.value = {}
+  dialogVisible_addOrEdit.value = true
+}
 const handleTableRowBtn_delete = async () => {
-      await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD)=>item[TABLE_KEY]))
-      queryApi()
-    }
+  await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD) => item[TABLE_KEY]))
+  queryApi()
+}
 // #endregion
 
 // #region (table body)
 const tableData = ref<TYPE_TABLE_FIELD[]>([])
-const DetailName = '-JYLY-XCLB'
+const DetailName = '-XCGL-XCGL-DETAIL'
 const DetailParam = 'aid'
 
-const handleTableColBtn_edit = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      const res = await detailApi(scope.row[TABLE_KEY])
-      dialogForm_Data.value = (res.data.one_info)
-      dialogVisible_addOrEdit.value = true
-    }
-const handleTableColBtn_audit = (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
-      dialogVisible_audit.value = true
-    }
-const handleTableColBtn_detail = (scope:{row:TYPE_TABLE_FIELD}) => {
-      router.push({ name:DetailName, params:{ [DetailParam]:scope.row[TABLE_KEY]} })
-    }
-const handleTableColBtn_delete = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      await deleteApi(scope.row[TABLE_KEY])
-      queryApi()
-    }
+const handleTableColBtn_edit = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  const res = await detailApi(scope.row[TABLE_KEY])
+  dialogForm_Data.value = (res.data.one_info)
+  dialogVisible_addOrEdit.value = true
+}
+const handleTableColBtn_audit = (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
+  dialogVisible_audit.value = true
+}
+const handleTableColBtn_detail = (scope: { row: TYPE_TABLE_FIELD }) => {
+  router.push({ name: DetailName, params: { [DetailParam]: scope.row[TABLE_KEY] } })
+}
+const handleTableColBtn_delete = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  await deleteApi(scope.row[TABLE_KEY])
+  queryApi()
+}
 // #endregion
 
 // #region (pagination)
 const total = ref(0)
 const limit = ref(10)
 
-const currentPage=ref(1) 
-function handleCurrentChange(){
+const currentPage = ref(1)
+function handleCurrentChange() {
   queryApi()
 }
 // #endregion
@@ -116,63 +116,64 @@ function handleCurrentChange(){
 // #region (dialog base)
 const dialogForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
-const handleDialogFormBtn_submit = async (formRefKey:string,extendData?:Partial<TYPE_TABLE_FIELD>) => {
-      const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid:boolean) => valid)
-      if (isValid) {
-        await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({...dialogForm_Data.value,...extendData}))
-        handleDialogFormBtn_cancel()
-        queryApi()
-      }
-    }
-const handleDialogFormBtn_cancel = (formRefKey?:string) => {
-      dialogVisible_addOrEdit.value = false
-      dialogVisible_audit.value = false
-    }
+const handleDialogFormBtn_submit = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
+  const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
+  if (isValid) {
+    await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({ ...dialogForm_Data.value, ...extendData }))
+    handleDialogFormBtn_cancel()
+    queryApi()
+  }
+}
+const handleDialogFormBtn_cancel = (formRefKey?: string) => {
+  dialogVisible_addOrEdit.value = false
+  dialogVisible_audit.value = false
+  dialogVisible_borrow.value = false
+}
 // #endregion
 
 // #region (dialog add/edit)
 const dialogVisible_addOrEdit = ref<boolean>(false)
 
-const dialogForm_Ref_addOrEdit= ref<FormInstance>()
-const dialogForm_Rules_addOrEdit = reactive({ 
-  'xhx_zcmc':{required : true,message:'资产名称不能为空',trigger:'submit'},
-  'xhx_zcbh':{required : true,message:'资产编号不能为空',trigger:'submit'},
-  'xhx_zt':{required : true,message:'状态不能为空',trigger:'submit'},
-  'xhx_dj':{required : true,message:'单价不能为空',trigger:'submit'},
-  'xhx_bjl':{required : true,message:'被借领不能为空',trigger:'submit'},
-  'xhx_bwx':{required : true,message:'被维修不能为空',trigger:'submit'},
-  'xhx_zcfl':{required : true,message:'资产分类不能为空',trigger:'submit'},
-  'xhx_spr':{required : true,message:'审批人不能为空',trigger:'submit'},
+const dialogForm_Ref_addOrEdit = ref<FormInstance>()
+const dialogForm_Rules_addOrEdit = reactive({
+  'xhx_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
+  'xhx_zcbh': { required: true, message: '资产编号不能为空', trigger: 'submit' },
+  'xhx_zt': { required: true, message: '状态不能为空', trigger: 'submit' },
+  'xhx_dj': { required: true, message: '单价不能为空', trigger: 'submit' },
+  'xhx_bjl': { required: true, message: '被借领不能为空', trigger: 'submit' },
+  'xhx_bwx': { required: true, message: '被维修不能为空', trigger: 'submit' },
+  'xhx_zcfl': { required: true, message: '资产分类不能为空', trigger: 'submit' },
+  'xhx_spr': { required: true, message: '审批人不能为空', trigger: 'submit' },
 })
 // #endregion
 
 // #region (dialog audit)
 const dialogVisible_audit = ref<boolean>(false)
 
-const dialogForm_Field_audit= reactive<{
-  FLAG:keyof TYPE_TABLE_FIELD,
-  REASON?:keyof TYPE_TABLE_FIELD
+const dialogForm_Field_audit = reactive<{
+  FLAG: keyof TYPE_TABLE_FIELD,
+  REASON?: keyof TYPE_TABLE_FIELD
 }>({
-  FLAG:'xhx_id',
+  FLAG: 'xhx_id',
   // REASON:'xhx_id'
 })
 
-const dialogForm_Ref_audit= ref<FormInstance>()
-const dialogForm_Rules_audit = reactive<FormRules>({ 
-  'xhx_zcmc':{required : true ,message:'资产名称不能为空',trigger:'submit'},
-  'xhx_zcbh':{required : true ,message:'资产编号不能为空',trigger:'submit'},
-  'xhx_zt':{required : true ,message:'状态不能为空',trigger:'submit'},
-  'xhx_dj':{required : true ,message:'单价不能为空',trigger:'submit'},
-  'xhx_bjl':{required : true ,message:'被借领不能为空',trigger:'submit'},
-  'xhx_bwx':{required : true ,message:'被维修不能为空',trigger:'submit'},
-  'xhx_zcfl':{required : true ,message:'资产分类不能为空',trigger:'submit'},
-  'xhx_spr':{required : true ,message:'审批人不能为空',trigger:'submit'},
+const dialogForm_Ref_audit = ref<FormInstance>()
+const dialogForm_Rules_audit = reactive<FormRules>({
+  'xhx_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
+  'xhx_zcbh': { required: true, message: '资产编号不能为空', trigger: 'submit' },
+  'xhx_zt': { required: true, message: '状态不能为空', trigger: 'submit' },
+  'xhx_dj': { required: true, message: '单价不能为空', trigger: 'submit' },
+  'xhx_bjl': { required: true, message: '被借领不能为空', trigger: 'submit' },
+  'xhx_bwx': { required: true, message: '被维修不能为空', trigger: 'submit' },
+  'xhx_zcfl': { required: true, message: '资产分类不能为空', trigger: 'submit' },
+  'xhx_spr': { required: true, message: '审批人不能为空', trigger: 'submit' },
 })
 
 // #endregion
 
 // #region (request api): 
-function queryApi(){
+function queryApi() {
   loading_table.value = true
   return request({
     url: URL_CUT + '/index',
@@ -181,7 +182,7 @@ function queryApi(){
       limit: limit.value,
       page: currentPage.value
     }
-  }).then((response:{data:{total_rows:string,page_data:TYPE_TABLE_FIELD[]}}) => {
+  }).then((response: { data: { total_rows: string, page_data: TYPE_TABLE_FIELD[] } }) => {
     const { data } = response
     total.value = parseInt(data.total_rows)
     tableData.value = data.page_data
@@ -191,44 +192,44 @@ function queryApi(){
   })
 }
 
-function addApi(data:TYPE_TABLE_FIELD){
+function addApi(data: TYPE_TABLE_FIELD) {
   return request({
     url: URL_CUT + '/add',
     data: {
-      [URL_SUBMIT_KEY]:data,
+      [URL_SUBMIT_KEY]: data,
     }
   })
 }
 
-function editApi(data:Partial<TYPE_TABLE_FIELD>){
+function editApi(data: Partial<TYPE_TABLE_FIELD>) {
   return request({
     url: URL_CUT + '/edit',
     data: {
-      [TABLE_KEY]:data[TABLE_KEY],
-      [URL_SUBMIT_KEY]:pick(data,['xhx_zcmc','xhx_zcbh','xhx_zt','xhx_dj','xhx_bjl','xhx_bwx','xhx_zcfl','xhx_spr',]),
+      [TABLE_KEY]: data[TABLE_KEY],
+      [URL_SUBMIT_KEY]: pick(data, ['xhx_zcmc', 'xhx_zcbh', 'xhx_zt', 'xhx_dj', 'xhx_bjl', 'xhx_bwx', 'xhx_zcfl', 'xhx_spr',]),
     }
   })
 }
 
-function deleteApi(id:string|string[]){
+function deleteApi(id: string | string[]) {
   return request({
     url: URL_CUT + '/delete',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function detailApi(id:string){
+function detailApi(id: string) {
   return request({
     url: URL_CUT + '/detail',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function importApi(data:{file:File}){  
+function importApi(data: { file: File }) {
   return request({
     $type: 'import',
     url: URL_CUT + '/import',
@@ -236,54 +237,144 @@ function importApi(data:{file:File}){
   } as AxiosRequestConfig)
 }
 
-function exportApi(){
+function exportApi() {
   return download(URL_CUT + '/index', queryForm_Data.value)
 }
 
 const API_MAP = {
-  query:queryApi,
-  add:addApi,
-  edit:editApi,
-  delete:deleteApi,
-  detail:detailApi,
-  import:importApi,
-  export:exportApi,
+  query: queryApi,
+  add: addApi,
+  edit: editApi,
+  delete: deleteApi,
+  detail: detailApi,
+  import: importApi,
+  export: exportApi,
 }
 // #endregion
 
 // #region (page init)
-function init(){
+function init() {
   queryApi()
 }
 init()
 // #endregion
 
+// #region (dialog borrow)
+type TYPE_TABLE_FIELD_BORROW = {
+  [TABLE_KEY]: string;
+  'xhj_zcmc': string; // 资产名称
+  'xhj_zcbh': string; // 资产编号
+  'xhj_ssbm': string; // 所属部门
+  'xhj_jlxz': string; // 借领性质
+  'xhj_jlr': string; // 借领人
+  'xhj_jlsj': string; // 借领时间
+  'xhj_pzr': string; // 批准人
+}
+
+const dialogForm_Data_borrow = ref<Partial<TYPE_TABLE_FIELD_BORROW>>({})
+
+const handleTableColBtn_borrow = (scope: { row: TYPE_TABLE_FIELD }) => {
+  dialogForm_Data_borrow.value = {
+    xhj_zcmc: scope.row.xhx_zcmc,
+    xhj_zcbh: scope.row.xhx_zcbh,
+  }
+  dialogForm_Data.value = {
+    [TABLE_KEY]: scope.row[TABLE_KEY]
+  }
+  dialogVisible_borrow.value = true
+}
+const dialogVisible_borrow = ref<boolean>(false)
+
+const dialogForm_Ref_borrow = ref<FormInstance>()
+const dialogForm_Rules_borrow = reactive<FormRules>({
+  'xhj_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
+  'xhj_zcbh': { required: true, message: '资产编号不能为空', trigger: 'submit' },
+  'xhj_ssbm': { required: true, message: '所属部门不能为空', trigger: 'submit' },
+  'xhj_jlxz': { required: true, message: '借领性质不能为空', trigger: 'submit' },
+  'xhj_jlr': { required: true, message: '借领人不能为空', trigger: 'submit' },
+  'xhj_jlsj': { required: true, message: '借领时间不能为空', trigger: 'submit' },
+  'xhj_pzr': { required: true, message: '批准人不能为空', trigger: 'submit' },
+})
+
+const handleDialogFormBtn_submit_borrow = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
+  const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
+  if (isValid) {
+    await request({
+      url: '/xdhq/hqgl_jyly/add',
+      data: {
+        xdhq_hqgl_jyly: {
+          ...dialogForm_Data_borrow.value,
+          ...extendData
+        },
+      }
+
+    })
+    // 后端处理
+    // await editApi({
+    //   ...dialogForm_Data.value,
+    //   xhx_zt: '2'
+    // })
+    handleDialogFormBtn_cancel()
+    // queryApi()
+  }
+}
+
+const handleTableColBtn_borrow2 = async (row: Partial<TYPE_TABLE_FIELD>) => {
+  // 后端处理
+  await editApi({
+    [TABLE_KEY]:row[TABLE_KEY],
+    xhx_zt: '1'
+  })
+  queryApi()
+}
+
+// #endregion
+
 </script>
 
 <template>
   <div class="card flex-grow flex flex-col">
     <el-form inline :model="queryForm_Data">
       <!-- <el-form-item label="关键字"><el-input v-model="queryForm_Data.keyword" ></el-input></el-form-item> -->
-      <el-form-item label="资产名称"><el-input v-model="queryForm_Data.xhx_zcmc" clearable /></el-form-item>
-      <el-form-item label="资产编号"><el-input v-model="queryForm_Data.xhx_zcbh" clearable /></el-form-item>
-      <el-form-item label="状态"><el-select v-model="queryForm_Data.xhx_zt" clearable filterable ><el-option label="可借" value="1" /><el-option label="不可借" value="2" /></el-select></el-form-item>
-      <el-form-item label="单价"><el-input v-model="queryForm_Data.xhx_dj" clearable /></el-form-item>
-      <el-form-item label="被借领"><el-input v-model="queryForm_Data.xhx_bjl" clearable /></el-form-item>
-      <el-form-item label="被维修"><el-input v-model="queryForm_Data.xhx_bwx" clearable /></el-form-item>
-      <el-form-item label="资产分类"><el-input v-model="queryForm_Data.xhx_zcfl" clearable /></el-form-item>
-      <el-form-item label="审批人"><el-input v-model="queryForm_Data.xhx_spr" clearable /></el-form-item>
+      <el-form-item label="资产名称">
+        <el-input v-model="queryForm_Data.xhx_zcmc" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="资产编号">
+        <el-input v-model="queryForm_Data.xhx_zcbh" clearable />
+      </el-form-item> -->
+      <el-form-item label="状态">
+        <el-select v-model="queryForm_Data.xhx_zt" clearable filterable>
+          <el-option label="可借" value="1" />
+          <el-option label="不可借" value="2" />
+        </el-select>
+      </el-form-item>
+      <!-- <el-form-item label="单价">
+        <el-input v-model="queryForm_Data.xhx_dj" clearable />
+      </el-form-item>
+      <el-form-item label="被借领">
+        <el-input v-model="queryForm_Data.xhx_bjl" clearable />
+      </el-form-item>
+      <el-form-item label="被维修">
+        <el-input v-model="queryForm_Data.xhx_bwx" clearable />
+      </el-form-item> -->
+      <el-form-item label="资产分类">
+        <el-input v-model="queryForm_Data.xhx_zcfl" clearable />
+      </el-form-item>
+      <el-form-item label="审批人">
+        <el-input v-model="queryForm_Data.xhx_spr" clearable />
+      </el-form-item>
       <el-form-item>
         <el-button @click="handleQueryFormBtn_search" type="primary">搜索</el-button>
         <el-button @click="handleQueryFormBtn_clear" type="warning">清空</el-button>
       </el-form-item>
     </el-form>
-    <div class="divider"></div>
+    <!-- <div class="divider"></div>
     <div>
-        <import-button :url="URL_CUT_REF"></import-button>
-        <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
-        <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
-        <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
-    </div>
+      <import-button :url="URL_CUT_REF"></import-button>
+      <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
+      <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
+      <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
+    </div> -->
 
     <div class="divider"></div>
     <div class="flex-auto">
@@ -292,18 +383,33 @@ init()
         <el-table-column type="selection"></el-table-column>
         <el-table-column prop="xhx_zcmc" label="资产名称" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhx_zcbh" label="资产编号" width="auto" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="xhx_zcfl" label="资产分类" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhx_zt" label="状态" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhx_dj" label="单价" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhx_bjl" label="被借领" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhx_bwx" label="被维修" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhx_zcfl" label="资产分类" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhx_bjl" label="被借领" width="auto" show-overflow-tooltip> <template #default="scope">
+            <el-link type="primary"
+              @click="router.push({ name: '-XCGL-XCGL-BJL', params: { aid: scope.row.xhx_zcbh } })"> {{
+                  scope.row.xhx_bjl
+              }}次</el-link>
+          </template></el-table-column>
+        <el-table-column prop="xhx_bwx" label="被维修" width="auto" show-overflow-tooltip> <template #default="scope">
+            <el-link type="primary"
+              @click="router.push({ name: '-XCGL-XCGL-BXW', params: { aid: scope.row.xhx_zcbh } })"> {{
+                  scope.row.xhx_bwx
+              }}次</el-link>
+          </template></el-table-column> -->
         <el-table-column prop="xhx_spr" label="审批人" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column label="操作" fixed="right">
           <template #default="scope">
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary" >审核</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除</el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_borrow2(scope.row)" type="primary">dev:归还
+            </el-button>
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary" >审核</el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button> -->
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary">删除
+            </el-button> -->
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_borrow(scope)" type="primary"
+              :disabled="scope.row.xhx_zt_option_k === '2'">借领
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -315,18 +421,71 @@ init()
     </div>
   </div>
 
+  <el-dialog v-model="dialogVisible_borrow" append-to-body destroy-on-close>
+    <el-form :model="dialogForm_Data_borrow" ref="dialogForm_Ref_borrow" :rules="dialogForm_Rules_borrow"
+      label-width="120px">
+      <el-form-item label="资产名称" prop="xhj_zcmc">
+        <el-input v-model="dialogForm_Data_borrow.xhj_zcmc" disabled />
+      </el-form-item>
+      <el-form-item label="资产编号" prop="xhj_zcbh">
+        <el-input v-model="dialogForm_Data_borrow.xhj_zcbh" disabled />
+      </el-form-item>
+      <el-form-item label="所属部门" prop="xhj_ssbm">
+        <el-input v-model="dialogForm_Data_borrow.xhj_ssbm" clearable />
+      </el-form-item>
+      <el-form-item label="借领性质" prop="xhj_jlxz">
+        <!-- <el-input v-model="dialogForm_Data_borrow.xhj_jlxz" clearable /> -->
+        <el-radio-group v-model="dialogForm_Data_borrow.xhj_jlxz">
+          <el-radio label="1">借用</el-radio>
+          <el-radio label="2">领用</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="借领人" prop="xhj_jlr">
+        <el-input v-model="dialogForm_Data_borrow.xhj_jlr" clearable />
+      </el-form-item>
+      <el-form-item label="借领时间" prop="xhj_jlsj">
+        <!-- <el-input v-model="dialogForm_Data_borrow.xhj_jlsj" clearable /> -->
+        <el-date-picker type="datetime" v-model="dialogForm_Data_borrow.xhj_jlsj" value-format="YYYY-MM-DD HH:mm:ss"
+          clearable />
+      </el-form-item>
+      <el-form-item label="批准人" prop="xhj_pzr">
+        <el-input v-model="dialogForm_Data_borrow.xhj_pzr" clearable />
+      </el-form-item>
+      <div class="flex justify-center">
+        <el-button @click="handleDialogFormBtn_submit_borrow('dialogForm_Ref_borrow')" type="primary">提交</el-button>
+        <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_borrow')" type="default">取消</el-button>
+      </div>
+    </el-form>
+  </el-dialog>
+
   <el-dialog v-model="dialogVisible_addOrEdit" append-to-body destroy-on-close>
-    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit" label-width="120px">
-      <el-form-item label="资产名称" prop="xhx_zcmc"><el-input v-model="dialogForm_Data.xhx_zcmc" clearable /></el-form-item>
-      <el-form-item label="资产编号" prop="xhx_zcbh"><el-input v-model="dialogForm_Data.xhx_zcbh" clearable /></el-form-item>
-      <el-form-item label="状态" prop="xhx_zt"><el-radio-group v-model="dialogForm_Data.xhx_zt"><el-radio label="1">可借</el-radio><el-radio label="2">不可借</el-radio></el-radio-group></el-form-item>
-      <el-form-item label="单价" prop="xhx_dj"><el-input v-model="dialogForm_Data.xhx_dj" clearable /></el-form-item>
-      <el-form-item label="被借领" prop="xhx_bjl"><el-input v-model="dialogForm_Data.xhx_bjl" clearable /></el-form-item>
-      <el-form-item label="被维修" prop="xhx_bwx"><el-input v-model="dialogForm_Data.xhx_bwx" clearable /></el-form-item>
-      <el-form-item label="资产分类" prop="xhx_zcfl"><el-input v-model="dialogForm_Data.xhx_zcfl" clearable /></el-form-item>
-      <el-form-item label="审批人" prop="xhx_spr"><el-input v-model="dialogForm_Data.xhx_spr" clearable /></el-form-item>
+    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit"
+      label-width="120px">
+      <el-form-item label="资产名称" prop="xhx_zcmc">
+        <el-input v-model="dialogForm_Data.xhx_zcmc" clearable />
+      </el-form-item>
+      <el-form-item label="资产分类" prop="xhx_zcfl">
+        <el-input v-model="dialogForm_Data.xhx_zcfl" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="资产编号" prop="xhx_zcbh"><el-input v-model="dialogForm_Data.xhx_zcbh" clearable /></el-form-item> -->
+      <!-- <el-form-item label="状态" prop="xhx_zt"><el-radio-group v-model="dialogForm_Data.xhx_zt"><el-radio label="1">可借</el-radio><el-radio label="2">不可借</el-radio></el-radio-group></el-form-item> -->
+      <el-form-item label="单价" prop="xhx_dj">
+        <el-input v-model="dialogForm_Data.xhx_dj" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="被借领" prop="xhx_bjl">
+        <el-input v-model="dialogForm_Data.xhx_bjl" clearable />
+      </el-form-item>
+      <el-form-item label="被维修" prop="xhx_bwx">
+        <el-input v-model="dialogForm_Data.xhx_bwx" clearable />
+      </el-form-item> -->
+
+      <el-form-item label="审批人" prop="xhx_spr">
+        <el-input v-model="dialogForm_Data.xhx_spr" clearable />
+      </el-form-item>
       <div class="flex justify-center">
-        <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit')" type="primary">提交</el-button>
+        <el-button
+          @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit', { xhx_zt: '1', xhx_bjl: '0', xhx_bwx: '0' })"
+          type="primary">提交</el-button>
         <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button>
       </div>
     </el-form>

+ 64 - 0
src/pages/xdhq/sbbx/components/top-left.vue

@@ -0,0 +1,64 @@
+<script setup>
+import { onMounted, ref } from 'vue';
+import * as echarts from 'echarts';
+const canvasRef = ref()
+
+const props = defineProps({
+  data:Array
+});
+
+const data = props?.data
+
+const total = ref(
+  data.reduce((p, { value }) => p += value, 0)
+)
+const option = {
+  // tooltip: {
+  //   trigger: 'item'
+  // },
+  legend: {
+    right: 0,
+    top: 'center',
+    orient: 'vertical',
+    formatter: function (name) {
+      return `${name} ${data.find((item) => name === item.name).value}`
+    }
+  },
+  series: [
+    {
+      name: '维修管理',
+      type: 'pie',
+      center: [90, 80],
+      radius: [40, 70],
+      avoidLabelOverlap: false,
+      itemStyle: {
+        borderRadius: 6,
+        borderColor: '#fff',
+        borderWidth: 2
+      },
+      label: {
+        show: false,
+        position: 'center'
+      },
+      labelLine: {
+        show: false
+      },
+      data
+    }
+  ]
+};
+onMounted(() => {
+  const myChart = echarts.init(canvasRef.value)
+  myChart.setOption(option)
+})
+</script>
+
+<template>
+  <div class="card">
+    <div class="h-12 flex justify-between items-end">
+      <div class="font-semibold text-lg">维修管理</div>
+      <div class="font-semibold"><span class="text-3xl font-bold mr-2">{{ total }}</span>个设备</div>
+    </div>
+    <canvas ref="canvasRef" :height="160" :width="320"></canvas>
+  </div>
+</template>

+ 63 - 0
src/pages/xdhq/sbbx/components/top-right.vue

@@ -0,0 +1,63 @@
+<script setup>
+import { onMounted, ref, watch } from 'vue';
+import * as echarts from 'echarts';
+const canvasRef = ref()
+
+const containerRef = ref()
+const props = defineProps({
+  data:Object
+})
+const data = props?.data
+
+const years = data.year
+
+const option = {
+  tooltip: {
+    trigger: 'axis',
+    axisPointer: {
+      type: 'cross',
+    },
+  },
+  grid: {
+    left: 20,
+    right: 20,
+    top: 20,
+    bottom: 20,
+    containLabel: true
+  },
+  xAxis: {
+    type: 'category',
+    data: years.map((y) => `${y}年`)
+  },
+  yAxis: {
+    type: 'value'
+  },
+  series: [
+    {
+      data: data.data,
+      type: 'line',
+    }
+  ]
+};
+
+onMounted(() => {
+  const myChart = echarts.init(canvasRef.value)
+  myChart.setOption(option)
+
+  const rect = (containerRef.value.getBoundingClientRect())
+  canvasRef.value.width = rect.width
+  myChart.resize({
+    width: rect.width - 40,
+    height: 160
+  })
+})
+</script>
+
+<template>
+  <div class="card flex-auto" ref="containerRef">
+    <div class="h-12 flex justify-between items-end">
+      <div class="font-semibold text-lg">设备维修趋势</div>
+    </div>
+    <canvas ref="canvasRef" height="160" width="800"></canvas>
+  </div>
+</template>

+ 296 - 154
src/pages/xdhq/sbbx/index.vue

@@ -7,6 +7,9 @@ import { ElMessage } from 'element-plus'
 import type { FormInstance, FormRules } from 'element-plus'
 import type { AxiosRequestConfig } from 'axios'
 
+import topLeft from './components/top-left.vue'
+import topRight from './components/top-right.vue'
+
 // #region (constant)
 const TABLE_KEY = 'xhs_id'
 const URL_CUT = '/xdhq/hqgl_sbbx'
@@ -18,7 +21,7 @@ const router = useRouter()
 
 // #region (variable)
 const loading_table = ref(true)
-let whichDialogSubmit:'add'|'edit'
+let whichDialogSubmit: 'add' | 'edit'
 // #endregion
 
 // #region (type)
@@ -36,6 +39,7 @@ type TYPE_TABLE_FIELD = {
   'xhs_lb_mc': string; // 类别名称
   'xhs_lb_lj': string; // 类别路径
   'xhs_bxlb': string; // 报修类型
+  'xhs_yy': string
 }
 // #endregion
 
@@ -46,40 +50,40 @@ type TYPE_TABLE_FIELD = {
 const queryForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
 const handleQueryFormBtn_search = () => {
-      queryApi()
-    }
+  queryApi()
+}
 const handleQueryFormBtn_clear = () => {
-      queryForm_Data.value = {}
-    }
+  queryForm_Data.value = {}
+}
 // #endregion
 
 // #region (table selection)
 const multipleSelection = ref<TYPE_TABLE_FIELD[]>([])
-const handleSelectionChange = (val:TYPE_TABLE_FIELD[]) => {
+const handleSelectionChange = (val: TYPE_TABLE_FIELD[]) => {
   multipleSelection.value = val
 }
 // #endregion
 
 // #region (table row)
 const handleTableRowBtn_import = async ({ file }: { file: File }) => {
-      const res = await API_MAP['import']({ file })
-      if(res.code === '1'){
-        queryApi()
-        ElMessage.success(res.msg)
-      }
-    }
+  const res = await API_MAP['import']({ file })
+  if (res.code === '1') {
+    queryApi()
+    ElMessage.success(res.msg)
+  }
+}
 const handleTableRowBtn_export = () => {
-      exportApi()
-    }
+  exportApi()
+}
 const handleTableRowBtn_add = () => {
-      whichDialogSubmit = 'add'
-      dialogForm_Data.value = {}
-      dialogVisible_addOrEdit.value = true
-    }
+  whichDialogSubmit = 'add'
+  dialogForm_Data.value = {}
+  dialogVisible_addOrEdit.value = true
+}
 const handleTableRowBtn_delete = async () => {
-      await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD)=>item[TABLE_KEY]))
-      queryApi()
-    }
+  await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD) => item[TABLE_KEY]))
+  queryApi()
+}
 // #endregion
 
 // #region (table body)
@@ -87,32 +91,42 @@ const tableData = ref<TYPE_TABLE_FIELD[]>([])
 const DetailName = '-SBBX-DETAIL'
 const DetailParam = 'aid'
 
-const handleTableColBtn_edit = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      const res = await detailApi(scope.row[TABLE_KEY])
-      dialogForm_Data.value = (res.data.one_info)
-      dialogVisible_addOrEdit.value = true
-    }
-const handleTableColBtn_audit = (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
-      dialogVisible_audit.value = true
-    }
-const handleTableColBtn_detail = (scope:{row:TYPE_TABLE_FIELD}) => {
-      router.push({ name:DetailName, params:{ [DetailParam]:scope.row[TABLE_KEY]} })
-    }
-const handleTableColBtn_delete = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      await deleteApi(scope.row[TABLE_KEY])
-      queryApi()
-    }
+const handleTableColBtn_edit = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  const res = await detailApi(scope.row[TABLE_KEY])
+  dialogForm_Data.value = (res.data.one_info)
+  dialogVisible_addOrEdit.value = true
+}
+const handleTableColBtn_audit = (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
+  dialogVisible_audit.value = true
+}
+const handleTableColBtn_audit2 = (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
+  dialogVisible_audit2.value = true
+}
+const handleTableColBtn_detail = (scope: { row: TYPE_TABLE_FIELD }) => {
+  router.push({ name: DetailName, params: { [DetailParam]: scope.row[TABLE_KEY] } })
+}
+const handleTableColBtn_delete = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  await deleteApi(scope.row[TABLE_KEY])
+  queryApi()
+}
+const handleTableColBtn_drop = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  await editApi({ [TABLE_KEY]: scope.row[TABLE_KEY], xhs_wxjg: '3' })
+  queryApi()
+}
+
 // #endregion
 
 // #region (pagination)
 const total = ref(0)
-const limit = ref(10)
+const limit = ref(5)
 
-const currentPage=ref(1) 
-function handleCurrentChange(){
+const currentPage = ref(1)
+function handleCurrentChange() {
   queryApi()
 }
 // #endregion
@@ -120,71 +134,74 @@ function handleCurrentChange(){
 // #region (dialog base)
 const dialogForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
-const handleDialogFormBtn_submit = async (formRefKey:string,extendData?:Partial<TYPE_TABLE_FIELD>) => {
-      const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid:boolean) => valid)
-      if (isValid) {
-        await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({...dialogForm_Data.value,...extendData}))
-        handleDialogFormBtn_cancel()
-        queryApi()
-      }
-    }
-const handleDialogFormBtn_cancel = (formRefKey?:string) => {
-      dialogVisible_addOrEdit.value = false
-      dialogVisible_audit.value = false
-    }
+const handleDialogFormBtn_submit = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
+  const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
+  if (isValid) {
+    await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({ ...dialogForm_Data.value, ...extendData }))
+    handleDialogFormBtn_cancel()
+    queryApi()
+  }
+}
+const handleDialogFormBtn_cancel = (formRefKey?: string) => {
+  dialogVisible_addOrEdit.value = false
+  dialogVisible_audit.value = false
+  dialogVisible_audit2.value = false
+}
 // #endregion
 
 // #region (dialog add/edit)
 const dialogVisible_addOrEdit = ref<boolean>(false)
 
-const dialogForm_Ref_addOrEdit= ref<FormInstance>()
-const dialogForm_Rules_addOrEdit = reactive({ 
-  'xhs_zcbh':{required : true,message:'资产编号不能为空',trigger:'submit'},
-  'xhs_zcmc':{required : true,message:'资产名称不能为空',trigger:'submit'},
-  'xhs_wxdd':{required : true,message:'维修地点不能为空',trigger:'submit'},
-  'xhs_wxfs':{required : true,message:'维修方式不能为空',trigger:'submit'},
-  'xhs_wxjg':{required : true,message:'维修结果不能为空',trigger:'submit'},
-  'xhs_sqr':{required : true,message:'申请人不能为空',trigger:'submit'},
-  'xhs_jsr':{required : true,message:'经手人不能为空',trigger:'submit'},
-  'xhs_pzr':{required : true,message:'批准人不能为空',trigger:'submit'},
-  'xhs_wxcs':{required : true,message:'维修次数不能为空',trigger:'submit'},
-  'xhs_lb_mc':{required : true,message:'类别名称不能为空',trigger:'submit'},
-  'xhs_lb_lj':{required : true,message:'类别路径不能为空',trigger:'submit'},
-  'xhs_bxlb':{required : true,message:'报修类型不能为空',trigger:'submit'},
+const dialogForm_Ref_addOrEdit = ref<FormInstance>()
+const dialogForm_Rules_addOrEdit = reactive({
+  'xhs_zcbh': { required: true, message: '资产编号不能为空', trigger: 'submit' },
+  'xhs_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
+  'xhs_wxdd': { required: true, message: '维修地点不能为空', trigger: 'submit' },
+  'xhs_wxfs': { required: true, message: '维修方式不能为空', trigger: 'submit' },
+  'xhs_wxjg': { required: true, message: '维修结果不能为空', trigger: 'submit' },
+  'xhs_sqr': { required: true, message: '申请人不能为空', trigger: 'submit' },
+  'xhs_jsr': { required: true, message: '经手人不能为空', trigger: 'submit' },
+  'xhs_pzr': { required: true, message: '批准人不能为空', trigger: 'submit' },
+  'xhs_wxcs': { required: true, message: '维修次数不能为空', trigger: 'submit' },
+  'xhs_lb_mc': { required: true, message: '类别名称不能为空', trigger: 'submit' },
+  'xhs_lb_lj': { required: true, message: '类别路径不能为空', trigger: 'submit' },
+  'xhs_bxlb': { required: true, message: '报修类型不能为空', trigger: 'submit' },
 })
 // #endregion
 
 // #region (dialog audit)
 const dialogVisible_audit = ref<boolean>(false)
+const dialogVisible_audit2 = ref<boolean>(false)
 
-const dialogForm_Field_audit= reactive<{
-  FLAG:keyof TYPE_TABLE_FIELD,
-  REASON?:keyof TYPE_TABLE_FIELD
+const dialogForm_Field_audit = reactive<{
+  FLAG: keyof TYPE_TABLE_FIELD,
+  REASON: keyof TYPE_TABLE_FIELD
 }>({
-  FLAG:'xhs_id',
-  // REASON:'xhs_id'
+  FLAG: 'xhs_wxjg',
+  REASON: 'xhs_yy'
 })
 
-const dialogForm_Ref_audit= ref<FormInstance>()
-const dialogForm_Rules_audit = reactive<FormRules>({ 
-  'xhs_zcbh':{required : true ,message:'资产编号不能为空',trigger:'submit'},
-  'xhs_zcmc':{required : true ,message:'资产名称不能为空',trigger:'submit'},
-  'xhs_wxdd':{required : true ,message:'维修地点不能为空',trigger:'submit'},
-  'xhs_wxfs':{required : true ,message:'维修方式不能为空',trigger:'submit'},
-  'xhs_wxjg':{required : true ,message:'维修结果不能为空',trigger:'submit'},
-  'xhs_sqr':{required : true ,message:'申请人不能为空',trigger:'submit'},
-  'xhs_jsr':{required : true ,message:'经手人不能为空',trigger:'submit'},
-  'xhs_pzr':{required : true ,message:'批准人不能为空',trigger:'submit'},
-  'xhs_wxcs':{required : true ,message:'维修次数不能为空',trigger:'submit'},
-  'xhs_lb_mc':{required : true ,message:'类别名称不能为空',trigger:'submit'},
-  'xhs_lb_lj':{required : true ,message:'类别路径不能为空',trigger:'submit'},
-  'xhs_bxlb':{required : true ,message:'报修类型不能为空',trigger:'submit'},
+const dialogForm_Ref_audit = ref<FormInstance>()
+const dialogForm_Ref_audit2 = ref<FormInstance>()
+const dialogForm_Rules_audit = reactive<FormRules>({
+  // 'xhs_zcbh': { required: true, message: '资产编号不能为空', trigger: 'submit' },
+  // 'xhs_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
+  // 'xhs_wxdd': { required: true, message: '维修地点不能为空', trigger: 'submit' },
+  // 'xhs_wxfs': { required: true, message: '维修方式不能为空', trigger: 'submit' },
+  'xhs_wxjg': { required: true, message: '维修结果不能为空', trigger: 'submit' },
+  // 'xhs_sqr': { required: true, message: '申请人不能为空', trigger: 'submit' },
+  // 'xhs_jsr': { required: true, message: '经手人不能为空', trigger: 'submit' },
+  // 'xhs_pzr': { required: true, message: '批准人不能为空', trigger: 'submit' },
+  // 'xhs_wxcs': { required: true, message: '维修次数不能为空', trigger: 'submit' },
+  // 'xhs_lb_mc': { required: true, message: '类别名称不能为空', trigger: 'submit' },
+  // 'xhs_lb_lj': { required: true, message: '类别路径不能为空', trigger: 'submit' },
+  // 'xhs_bxlb': { required: true, message: '报修类型不能为空', trigger: 'submit' },
 })
 
 // #endregion
 
 // #region (request api): 
-function queryApi(){
+function queryApi() {
   loading_table.value = true
   return request({
     url: URL_CUT + '/index',
@@ -193,7 +210,7 @@ function queryApi(){
       limit: limit.value,
       page: currentPage.value
     }
-  }).then((response:{data:{total_rows:string,page_data:TYPE_TABLE_FIELD[]}}) => {
+  }).then((response: { data: { total_rows: string, page_data: TYPE_TABLE_FIELD[] } }) => {
     const { data } = response
     total.value = parseInt(data.total_rows)
     tableData.value = data.page_data
@@ -203,44 +220,44 @@ function queryApi(){
   })
 }
 
-function addApi(data:TYPE_TABLE_FIELD){
+function addApi(data: TYPE_TABLE_FIELD) {
   return request({
     url: URL_CUT + '/add',
     data: {
-      [URL_SUBMIT_KEY]:data,
+      [URL_SUBMIT_KEY]: data,
     }
   })
 }
 
-function editApi(data:Partial<TYPE_TABLE_FIELD>){
+function editApi(data: Partial<TYPE_TABLE_FIELD>) {
   return request({
     url: URL_CUT + '/edit',
     data: {
-      [TABLE_KEY]:data[TABLE_KEY],
-      [URL_SUBMIT_KEY]:pick(data,['xhs_zcbh','xhs_zcmc','xhs_wxdd','xhs_wxfs','xhs_wxjg','xhs_sqr','xhs_jsr','xhs_pzr','xhs_wxcs','xhs_lb_mc','xhs_lb_lj','xhs_bxlb',]),
+      [TABLE_KEY]: data[TABLE_KEY],
+      [URL_SUBMIT_KEY]: pick(data, ['xhs_zcbh', 'xhs_zcmc', 'xhs_wxdd', 'xhs_wxfs', 'xhs_wxjg', 'xhs_sqr', 'xhs_jsr', 'xhs_pzr', 'xhs_wxcs', 'xhs_lb_mc', 'xhs_lb_lj', 'xhs_bxlb', 'xhs_yy']),
     }
   })
 }
 
-function deleteApi(id:string|string[]){
+function deleteApi(id: string | string[]) {
   return request({
     url: URL_CUT + '/delete',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function detailApi(id:string){
+function detailApi(id: string) {
   return request({
     url: URL_CUT + '/detail',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function importApi(data:{file:File}){  
+function importApi(data: { file: File }) {
   return request({
     $type: 'import',
     url: URL_CUT + '/import',
@@ -248,24 +265,30 @@ function importApi(data:{file:File}){
   } as AxiosRequestConfig)
 }
 
-function exportApi(){
+function exportApi() {
   return download(URL_CUT + '/index', queryForm_Data.value)
 }
 
 const API_MAP = {
-  query:queryApi,
-  add:addApi,
-  edit:editApi,
-  delete:deleteApi,
-  detail:detailApi,
-  import:importApi,
-  export:exportApi,
+  query: queryApi,
+  add: addApi,
+  edit: editApi,
+  delete: deleteApi,
+  detail: detailApi,
+  import: importApi,
+  export: exportApi,
 }
 // #endregion
 
 // #region (page init)
-function init(){
+const echartsData = ref()
+const echartsLoading = ref(true)
+function init() {
   queryApi()
+  request({ url: '/xdhq/hqgl_sbbx_stat/alyz' }).then(res => {
+    echartsData.value = res.data
+    echartsLoading.value = false
+  })
 }
 init()
 // #endregion
@@ -273,21 +296,63 @@ init()
 </script>
 
 <template>
+  <div class="mb-4 flex justify-between w-full h-232px">
+    <template v-if="!echartsLoading">
+      <topLeft :data="echartsData.wxgl"></topLeft>
+      <div class="w-4"></div>
+      <topRight :data="echartsData.sbwxqs"></topRight>
+    </template>
+  </div>
   <div class="card flex-grow flex flex-col">
     <el-form inline :model="queryForm_Data">
       <!-- <el-form-item label="关键字"><el-input v-model="queryForm_Data.keyword" ></el-input></el-form-item> -->
-      <el-form-item label="资产编号"><el-input v-model="queryForm_Data.xhs_zcbh" clearable /></el-form-item>
-      <el-form-item label="资产名称"><el-input v-model="queryForm_Data.xhs_zcmc" clearable /></el-form-item>
-      <el-form-item label="维修地点"><el-input v-model="queryForm_Data.xhs_wxdd" clearable /></el-form-item>
-      <el-form-item label="维修方式"><el-input v-model="queryForm_Data.xhs_wxfs" clearable /></el-form-item>
-      <el-form-item label="维修结果"><el-select v-model="queryForm_Data.xhs_wxjg" clearable filterable ><el-option label="已维修" value="1" /><el-option label="待维修" value="2" /><el-option label="已报废" value="3" /></el-select></el-form-item>
-      <el-form-item label="申请人"><el-input v-model="queryForm_Data.xhs_sqr" clearable /></el-form-item>
-      <el-form-item label="经手人"><el-input v-model="queryForm_Data.xhs_jsr" clearable /></el-form-item>
-      <el-form-item label="批准人"><el-input v-model="queryForm_Data.xhs_pzr" clearable /></el-form-item>
-      <el-form-item label="维修次数"><el-input v-model="queryForm_Data.xhs_wxcs" clearable /></el-form-item>
-      <el-form-item label="类别名称"><el-input v-model="queryForm_Data.xhs_lb_mc" clearable /></el-form-item>
-      <el-form-item label="类别路径"><el-input v-model="queryForm_Data.xhs_lb_lj" clearable /></el-form-item>
-      <el-form-item label="报修类型"><el-select v-model="queryForm_Data.xhs_bxlb" clearable filterable ><el-option label="电脑" value="1" /><el-option label="多媒体" value="2" /><el-option label="平台软件" value="3" /><el-option label="门窗五金" value="4" /><el-option label="水暖电气" value="5" /><el-option label="其他" value="6" /></el-select></el-form-item>
+      <!-- <el-form-item label="资产编号">
+        <el-input v-model="queryForm_Data.xhs_zcbh" clearable />
+      </el-form-item> -->
+      <el-form-item label="资产名称">
+        <el-input v-model="queryForm_Data.xhs_zcmc" clearable />
+      </el-form-item>
+      <el-form-item label="维修地点">
+        <el-input v-model="queryForm_Data.xhs_wxdd" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="维修方式">
+        <el-input v-model="queryForm_Data.xhs_wxfs" clearable />
+      </el-form-item>
+      <el-form-item label="维修结果">
+        <el-select v-model="queryForm_Data.xhs_wxjg" clearable filterable>
+          <el-option label="已维修" value="1" />
+          <el-option label="待维修" value="2" />
+          <el-option label="已报废" value="3" />
+        </el-select>
+      </el-form-item> -->
+      <el-form-item label="申请人">
+        <el-input v-model="queryForm_Data.xhs_sqr" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="经手人">
+        <el-input v-model="queryForm_Data.xhs_jsr" clearable />
+      </el-form-item>
+      <el-form-item label="批准人">
+        <el-input v-model="queryForm_Data.xhs_pzr" clearable />
+      </el-form-item>
+      <el-form-item label="维修次数">
+        <el-input v-model="queryForm_Data.xhs_wxcs" clearable />
+      </el-form-item>
+      <el-form-item label="类别名称">
+        <el-input v-model="queryForm_Data.xhs_lb_mc" clearable />
+      </el-form-item>
+      <el-form-item label="类别路径">
+        <el-input v-model="queryForm_Data.xhs_lb_lj" clearable />
+      </el-form-item>
+      <el-form-item label="报修类型">
+        <el-select v-model="queryForm_Data.xhs_bxlb" clearable filterable>
+          <el-option label="电脑" value="1" />
+          <el-option label="多媒体" value="2" />
+          <el-option label="平台软件" value="3" />
+          <el-option label="门窗五金" value="4" />
+          <el-option label="水暖电气" value="5" />
+          <el-option label="其他" value="6" />
+        </el-select>
+      </el-form-item> -->
       <el-form-item>
         <el-button @click="handleQueryFormBtn_search" type="primary">搜索</el-button>
         <el-button @click="handleQueryFormBtn_clear" type="warning">清空</el-button>
@@ -295,10 +360,10 @@ init()
     </el-form>
     <div class="divider"></div>
     <div>
-        <import-button :url="URL_CUT_REF"></import-button>
-        <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
-        <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
-        <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
+      <!-- <import-button :url="URL_CUT_REF"></import-button> -->
+      <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
+      <el-button @click="handleTableRowBtn_add" type="primary">设备报修</el-button>
+      <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
     </div>
 
     <div class="divider"></div>
@@ -306,24 +371,49 @@ init()
       <el-table :data="tableData" @selection-change="handleSelectionChange" v-loading="loading_table"
         element-loading-background="#ffffff70">
         <el-table-column type="selection"></el-table-column>
-        <el-table-column prop="xhs_zcbh" label="资产编号" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhs_zcbh" label="资产编号" width="auto" show-overflow-tooltip></el-table-column> -->
         <el-table-column prop="xhs_zcmc" label="资产名称" width="auto" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="xhs_bxlb" label="报修类型" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhs_wxdd" label="维修地点" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhs_wxfs" label="维修方式" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhs_wxjg" label="维修结果" width="auto" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="xhs_wxjg" label="维修结果" width="auto" show-overflow-tooltip>
+          <template #default="scope">
+            <span v-if="scope.row.xhs_wxjg_option_k === '1'" class="text-green-500"> {{ scope.row.xhs_wxjg }}</span>
+            <span v-else-if="scope.row.xhs_wxjg_option_k === '3'" class="text-red-500"> {{ scope.row.xhs_wxjg }}</span>
+            <span v-else> {{ scope.row.xhs_wxjg }}</span>
+          </template>
+        </el-table-column>
         <el-table-column prop="xhs_sqr" label="申请人" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhs_jsr" label="经手人" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhs_pzr" label="批准人" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhs_wxcs" label="维修次数" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhs_lb_mc" label="类别名称" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhs_lb_lj" label="类别路径" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhs_bxlb" label="报修类型" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column label="操作" fixed="right">
+        <el-table-column prop="xhs_wxcs" label="维修次数" width="auto" show-overflow-tooltip>
+          <template #default="scope">
+            <!-- <el-link type="primary" @click="router.push({ name: '-SBBX-BXW', params: { aid: scope.row.xhs_zcbh } })"> {{
+                scope.row.xhs_wxcs
+            }}次</el-link> -->
+            <span> {{
+                scope.row.xhs_wxcs
+            }}次</span>
+          </template>
+        </el-table-column>
+        <!-- <el-table-column prop="xhs_lb_mc" label="类别名称" width="auto" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="xhs_lb_lj" label="类别路径" width="auto" show-overflow-tooltip></el-table-column> -->
+        <el-table-column label="操作" fixed="right" width="160">
           <template #default="scope">
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary" >审核</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除</el-button>
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary">编辑
+            </el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary">审核
+            </el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary">详情
+            </el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary">删除
+            </el-button> -->
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary">已修
+            </el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit2(scope)" type="primary">未修
+            </el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_drop(scope)" type="primary">报废
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -334,23 +424,62 @@ init()
         background layout="total, prev, pager, next" :total="total" />
     </div>
   </div>
-
   <el-dialog v-model="dialogVisible_addOrEdit" append-to-body destroy-on-close>
-    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit" label-width="120px">
-      <el-form-item label="资产编号" prop="xhs_zcbh"><el-input v-model="dialogForm_Data.xhs_zcbh" clearable /></el-form-item>
-      <el-form-item label="资产名称" prop="xhs_zcmc"><el-input v-model="dialogForm_Data.xhs_zcmc" clearable /></el-form-item>
-      <el-form-item label="维修地点" prop="xhs_wxdd"><el-input v-model="dialogForm_Data.xhs_wxdd" clearable /></el-form-item>
-      <el-form-item label="维修方式" prop="xhs_wxfs"><el-input v-model="dialogForm_Data.xhs_wxfs" clearable /></el-form-item>
-      <el-form-item label="维修结果" prop="xhs_wxjg"><el-radio-group v-model="dialogForm_Data.xhs_wxjg"><el-radio label="1">已维修</el-radio><el-radio label="2">待维修</el-radio><el-radio label="3">已报废</el-radio></el-radio-group></el-form-item>
-      <el-form-item label="申请人" prop="xhs_sqr"><el-input v-model="dialogForm_Data.xhs_sqr" clearable /></el-form-item>
-      <el-form-item label="经手人" prop="xhs_jsr"><el-input v-model="dialogForm_Data.xhs_jsr" clearable /></el-form-item>
-      <el-form-item label="批准人" prop="xhs_pzr"><el-input v-model="dialogForm_Data.xhs_pzr" clearable /></el-form-item>
-      <el-form-item label="维修次数" prop="xhs_wxcs"><el-input v-model="dialogForm_Data.xhs_wxcs" clearable /></el-form-item>
-      <el-form-item label="类别名称" prop="xhs_lb_mc"><el-input v-model="dialogForm_Data.xhs_lb_mc" clearable /></el-form-item>
-      <el-form-item label="类别路径" prop="xhs_lb_lj"><el-input v-model="dialogForm_Data.xhs_lb_lj" clearable /></el-form-item>
-      <el-form-item label="报修类型" prop="xhs_bxlb"><el-select v-model="dialogForm_Data.xhs_bxlb" clearable filterable ><el-option label="电脑" value="1" /><el-option label="多媒体" value="2" /><el-option label="平台软件" value="3" /><el-option label="门窗五金" value="4" /><el-option label="水暖电气" value="5" /><el-option label="其他" value="6" /></el-select></el-form-item>
+    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit"
+      label-width="120px">
+      <!-- <el-form-item label="资产编号" prop="xhs_zcbh">
+        <el-input v-model="dialogForm_Data.xhs_zcbh" clearable />
+      </el-form-item> -->
+      <el-form-item label="资产名称" prop="xhs_zcmc">
+        <!-- <el-input v-model="dialogForm_Data.xhs_zcmc" clearable /> -->
+        <remote-select url="/xdhq/hqgl_xcgl/index" :fields="['xhx_zcbh', 'xhx_zcmc']" v-model="dialogForm_Data.xhs_zcbh"
+          v-model:modelName="dialogForm_Data.xhs_zcmc"></remote-select>
+      </el-form-item>
+
+      <el-form-item label="维修地点" prop="xhs_wxdd">
+        <el-input v-model="dialogForm_Data.xhs_wxdd" clearable />
+      </el-form-item>
+      <el-form-item label="维修方式" prop="xhs_wxfs">
+        <el-input v-model="dialogForm_Data.xhs_wxfs" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="维修结果" prop="xhs_wxjg">
+        <el-radio-group v-model="dialogForm_Data.xhs_wxjg">
+          <el-radio label="1">已维修</el-radio>
+          <el-radio label="2">待维修</el-radio>
+          <el-radio label="3">已报废</el-radio>
+        </el-radio-group>
+      </el-form-item> -->
+      <el-form-item label="申请人" prop="xhs_sqr">
+        <el-input v-model="dialogForm_Data.xhs_sqr" clearable />
+      </el-form-item>
+      <el-form-item label="经手人" prop="xhs_jsr">
+        <el-input v-model="dialogForm_Data.xhs_jsr" clearable />
+      </el-form-item>
+      <el-form-item label="批准人" prop="xhs_pzr">
+        <el-input v-model="dialogForm_Data.xhs_pzr" clearable />
+      </el-form-item>
+      <el-form-item label="维修次数" prop="xhs_wxcs">
+        <el-input v-model="dialogForm_Data.xhs_wxcs" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="类别名称" prop="xhs_lb_mc">
+        <el-input v-model="dialogForm_Data.xhs_lb_mc" clearable />
+      </el-form-item>
+      <el-form-item label="类别路径" prop="xhs_lb_lj">
+        <el-input v-model="dialogForm_Data.xhs_lb_lj" clearable />
+      </el-form-item> -->
+      <el-form-item label="报修类型" prop="xhs_bxlb">
+        <el-select v-model="dialogForm_Data.xhs_bxlb" clearable filterable>
+          <el-option label="电脑" value="1" />
+          <el-option label="多媒体" value="2" />
+          <el-option label="平台软件" value="3" />
+          <el-option label="门窗五金" value="4" />
+          <el-option label="水暖电气" value="5" />
+          <el-option label="其他" value="6" />
+        </el-select>
+      </el-form-item>
       <div class="flex justify-center">
-        <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit')" type="primary">提交</el-button>
+        <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit', { xhs_wxjg: '2' })" type="primary">提交
+        </el-button>
         <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button>
       </div>
     </el-form>
@@ -360,17 +489,30 @@ init()
     <el-form :model="dialogForm_Data" ref="dialogForm_Ref_audit" :rules="dialogForm_Rules_audit" label-width="120px">
       <el-form-item label="状态">
         <el-radio-group v-model="dialogForm_Data[dialogForm_Field_audit.FLAG]">
-          <el-radio label="1">通过</el-radio>
-          <el-radio label="2">未通过</el-radio>
+          <el-radio label="1">成功</el-radio>
+          <el-radio label="2">失败</el-radio>
         </el-radio-group>
       </el-form-item>
-      <!-- <el-form-item label="原因" v-show="dialogForm_Data[dialogForm_Field_audit.FLAG] === '1'">
+      <el-form-item label="原因" v-show="dialogForm_Data[dialogForm_Field_audit.FLAG] === '2'">
         <el-input type="textarea" v-model="dialogForm_Data[dialogForm_Field_audit.REASON]" :rows="5" />
-      </el-form-item> -->
+      </el-form-item>
       <div class="flex justify-center">
         <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_audit')" type="primary">提交</el-button>
         <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_audit')" type="default">取消</el-button>
       </div>
     </el-form>
   </el-dialog>
+
+  <el-dialog v-model="dialogVisible_audit2" append-to-body destroy-on-close>
+    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_audit2" :rules="dialogForm_Rules_audit" label-width="120px">
+      <el-form-item label="原因">
+        <el-input type="textarea" v-model="dialogForm_Data[dialogForm_Field_audit.REASON]" :rows="5" />
+      </el-form-item>
+      <div class="flex justify-center">
+        <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_audit2', { [dialogForm_Field_audit.FLAG]: '2' })"
+          type="primary">提交</el-button>
+        <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_audit2')" type="default">取消</el-button>
+      </div>
+    </el-form>
+  </el-dialog>
 </template>

+ 71 - 64
src/pages/xdhq/sbsg/index.vue

@@ -27,7 +27,7 @@ type TYPE_TABLE_FIELD = {
   'xhs_zcmc': string; // 资产名称
   'xhs_ggxh': string; // 规格型号
   'xhs_zcfl': string; // 资产分类
-  'xhs_zcfl_lj': string; // 资产分类路径
+  'xhs_zcfl_bh': string; // 资产分类编号
   'xhs_zcpc': string; // 资产批次
   'xhs_zcdj': string; // 单价
   'xhs_dw': string; // 单位
@@ -159,17 +159,17 @@ onBeforeUpdate(() => {
 })
 const dialogForm_Rules_add = reactive({
   'xhs_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
-  'xhs_ggxh': { required: true, message: '规格型号不能为空', trigger: 'submit' },
+  'xhs_ggxh': { required: false, message: '规格型号不能为空', trigger: 'submit' },
   'xhs_zcfl': { required: true, message: '资产分类不能为空', trigger: 'submit' },
-  'xhs_zcfl_lj': { required: true, message: '资产分类路径不能为空', trigger: 'submit' },
-  'xhs_zcpc': { required: true, message: '资产批次不能为空', trigger: 'submit' },
+  'xhs_zcfl_bh': { required: true, message: '资产分类编号不能为空', trigger: 'submit' },
+  'xhs_zcpc': { required: false, message: '资产批次不能为空', trigger: 'submit' },
   'xhs_zcdj': { required: true, message: '单价不能为空', trigger: 'submit' },
   'xhs_dw': { required: true, message: '单位不能为空', trigger: 'submit' },
   'xhs_sl': { required: true, message: '数量不能为空', trigger: 'submit' },
-  'xhs_ssbm': { required: true, message: '所属部门不能为空', trigger: 'submit' },
-  'xhs_ssbm_lj': { required: true, message: '所属部门路径不能为空', trigger: 'submit' },
+  // 'xhs_ssbm': { required: true, message: '所属部门不能为空', trigger: 'submit' },
+  // 'xhs_ssbm_lj': { required: true, message: '所属部门路径不能为空', trigger: 'submit' },
   'xhs_zj': { required: true, message: '总价不能为空', trigger: 'submit' },
-  'xhs_gmsj': { required: true, message: '购买时间不能为空', trigger: 'submit' },
+  'xhs_gmsj': { required: false, message: '购买时间不能为空', trigger: 'submit' },
   'xhs_spr': { required: true, message: '审批人不能为空', trigger: 'submit' },
   'xhs_spr_uid': { required: true, message: '审批人ID不能为空', trigger: 'submit' },
   'xhs_spzt': { required: true, message: '状态不能为空', trigger: 'submit' },
@@ -218,7 +218,8 @@ const handleDialogFormBtn_submit_new = async (formRefKey: string, extendData?: P
     await API_MAP['add'](<TYPE_TABLE_FIELD[]>(
       dialogForm_Data_add.value.map(d => ({
         ...d,
-        ...dialogForm_Data_add_extend.value
+        ...dialogForm_Data_add_extend.value,
+        ...extendData
       }))
     ))
     handleDialogFormBtn_cancel()
@@ -235,7 +236,7 @@ const dialogForm_Rules_addOrEdit = reactive({
   'xhs_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
   'xhs_ggxh': { required: true, message: '规格型号不能为空', trigger: 'submit' },
   'xhs_zcfl': { required: true, message: '资产分类不能为空', trigger: 'submit' },
-  'xhs_zcfl_lj': { required: true, message: '资产分类路径不能为空', trigger: 'submit' },
+  'xhs_zcfl_bh': { required: true, message: '资产分类编号不能为空', trigger: 'submit' },
   'xhs_zcpc': { required: true, message: '资产批次不能为空', trigger: 'submit' },
   'xhs_zcdj': { required: true, message: '单价不能为空', trigger: 'submit' },
   'xhs_dw': { required: true, message: '单位不能为空', trigger: 'submit' },
@@ -258,28 +259,28 @@ const dialogForm_Field_audit = reactive<{
   FLAG: keyof TYPE_TABLE_FIELD,
   REASON?: keyof TYPE_TABLE_FIELD
 }>({
-  FLAG: 'xhs_id',
+  FLAG: 'xhs_spzt',
   // REASON:'xhs_id'
 })
 
 const dialogForm_Ref_audit = ref<FormInstance>()
 const dialogForm_Rules_audit = reactive<FormRules>({
-  'xhs_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
-  'xhs_ggxh': { required: true, message: '规格型号不能为空', trigger: 'submit' },
-  'xhs_zcfl': { required: true, message: '资产分类不能为空', trigger: 'submit' },
-  'xhs_zcfl_lj': { required: true, message: '资产分类路径不能为空', trigger: 'submit' },
-  'xhs_zcpc': { required: true, message: '资产批次不能为空', trigger: 'submit' },
-  'xhs_zcdj': { required: true, message: '单价不能为空', trigger: 'submit' },
-  'xhs_dw': { required: true, message: '单位不能为空', trigger: 'submit' },
-  'xhs_sl': { required: true, message: '数量不能为空', trigger: 'submit' },
-  'xhs_ssbm': { required: true, message: '所属部门不能为空', trigger: 'submit' },
-  'xhs_ssbm_lj': { required: true, message: '所属部门路径不能为空', trigger: 'submit' },
-  'xhs_zj': { required: true, message: '总价不能为空', trigger: 'submit' },
-  'xhs_gmsj': { required: true, message: '购买时间不能为空', trigger: 'submit' },
-  'xhs_spr': { required: true, message: '审批人不能为空', trigger: 'submit' },
-  'xhs_spr_uid': { required: true, message: '审批人ID不能为空', trigger: 'submit' },
+  // 'xhs_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
+  // 'xhs_ggxh': { required: true, message: '规格型号不能为空', trigger: 'submit' },
+  // 'xhs_zcfl': { required: true, message: '资产分类不能为空', trigger: 'submit' },
+  // 'xhs_zcfl_bh': { required: true, message: '资产分类编号不能为空', trigger: 'submit' },
+  // 'xhs_zcpc': { required: true, message: '资产批次不能为空', trigger: 'submit' },
+  // 'xhs_zcdj': { required: true, message: '单价不能为空', trigger: 'submit' },
+  // 'xhs_dw': { required: true, message: '单位不能为空', trigger: 'submit' },
+  // 'xhs_sl': { required: true, message: '数量不能为空', trigger: 'submit' },
+  // 'xhs_ssbm': { required: true, message: '所属部门不能为空', trigger: 'submit' },
+  // 'xhs_ssbm_lj': { required: true, message: '所属部门路径不能为空', trigger: 'submit' },
+  // 'xhs_zj': { required: true, message: '总价不能为空', trigger: 'submit' },
+  // 'xhs_gmsj': { required: true, message: '购买时间不能为空', trigger: 'submit' },
+  // 'xhs_spr': { required: true, message: '审批人不能为空', trigger: 'submit' },
+  // 'xhs_spr_uid': { required: true, message: '审批人ID不能为空', trigger: 'submit' },
   'xhs_spzt': { required: true, message: '状态不能为空', trigger: 'submit' },
-  'xhs_xwhtl': { required: true, message: '校务会讨论不能为空', trigger: 'submit' },
+  // 'xhs_xwhtl': { required: true, message: '校务会讨论不能为空', trigger: 'submit' },
 })
 
 // #endregion
@@ -318,7 +319,7 @@ function editApi(data: Partial<TYPE_TABLE_FIELD>) {
     url: URL_CUT + '/edit',
     data: {
       [TABLE_KEY]: data[TABLE_KEY],
-      [URL_SUBMIT_KEY]: pick(data, ['xhs_zcmc', 'xhs_ggxh', 'xhs_zcfl', 'xhs_zcfl_lj', 'xhs_zcpc', 'xhs_zcdj', 'xhs_dw', 'xhs_sl', 'xhs_ssbm', 'xhs_ssbm_lj', 'xhs_zj', 'xhs_gmsj', 'xhs_spr', 'xhs_spr_uid', 'xhs_spzt', 'xhs_xwhtl',]),
+      [URL_SUBMIT_KEY]: pick(data, ['xhs_zcmc', 'xhs_ggxh', 'xhs_zcfl', 'xhs_zcfl_bh', 'xhs_zcpc', 'xhs_zcdj', 'xhs_dw', 'xhs_sl', 'xhs_ssbm', 'xhs_ssbm_lj', 'xhs_zj', 'xhs_gmsj', 'xhs_spr', 'xhs_spr_uid', 'xhs_spzt', 'xhs_xwhtl',]),
     }
   })
 }
@@ -409,16 +410,17 @@ request({
       <el-form-item label="资产名称">
         <el-input v-model="queryForm_Data.xhs_zcmc" clearable />
       </el-form-item>
-      <el-form-item label="规格型号">
+      <!-- <el-form-item label="规格型号">
         <el-input v-model="queryForm_Data.xhs_ggxh" clearable />
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item label="资产分类">
         <el-input v-model="queryForm_Data.xhs_zcfl" clearable />
+        <!-- <remote-cascader url="/xdhq/hqgl_xcgllb/tree" v-model="queryForm_Data.xhs_zcfl_bh"></remote-cascader> -->
       </el-form-item>
-      <el-form-item label="资产分类路径">
-        <el-input v-model="queryForm_Data.xhs_zcfl_lj" clearable />
-      </el-form-item>
-      <el-form-item label="资产批次">
+      <!-- <el-form-item label="资产分类编号">
+        <el-input v-model="queryForm_Data.xhs_zcfl_bh" clearable />
+      </el-form-item> -->
+      <!-- <el-form-item label="资产批次">
         <el-input v-model="queryForm_Data.xhs_zcpc" clearable />
       </el-form-item>
       <el-form-item label="单价">
@@ -430,14 +432,14 @@ request({
       </el-form-item>
       <el-form-item label="数量单位">
         <el-input v-model="queryForm_Data.xhs_dw" clearable />
-      </el-form-item>
-      <el-form-item label="所属部门">
+      </el-form-item> -->
+      <!-- <el-form-item label="所属部门">
         <el-input v-model="queryForm_Data.xhs_ssbm" clearable />
       </el-form-item>
       <el-form-item label="所属部门路径">
         <el-input v-model="queryForm_Data.xhs_ssbm_lj" clearable />
-      </el-form-item>
-      <el-form-item label="总价">
+      </el-form-item> -->
+      <!-- <el-form-item label="总价">
         <el-input v-model="queryForm_Data.xhs_zj" clearable />
       </el-form-item>
       <el-form-item label="购买时间">
@@ -448,7 +450,7 @@ request({
       </el-form-item>
       <el-form-item label="审批人ID">
         <el-input v-model="queryForm_Data.xhs_spr_uid" clearable />
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item label="状态">
         <el-select v-model="queryForm_Data.xhs_spzt" clearable filterable>
           <el-option label="待审批" value="1" />
@@ -471,7 +473,7 @@ request({
     <div>
       <import-button :url="URL_CUT_REF"></import-button>
       <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
-      <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
+      <!-- <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button> -->
       <el-button @click="handleTableRowBtn_add_new" type="primary">设备申购</el-button>
       <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
 
@@ -486,29 +488,30 @@ request({
         <el-table-column prop="xhs_zcmc" label="资产名称" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhs_ggxh" label="规格型号" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhs_zcfl" label="资产分类" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhs_zcfl_lj" label="资产分类路径" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhs_zcpc" label="资产批次" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhs_zcfl_bh" label="资产分类编号" width="auto" show-overflow-tooltip></el-table-column> -->
+        <!-- <el-table-column prop="xhs_zcpc" label="资产批次" width="auto" show-overflow-tooltip></el-table-column> -->
+        <el-table-column prop="xhs_spzt" label="状态" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhs_zcdj" label="单价" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhs_dw" label="单位" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhs_sl" label="数量" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhs_dw" label="数量单位" width="auto" show-overflow-tooltip></el-table-column> -->
         <el-table-column prop="xhs_ssbm" label="所属部门" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhs_ssbm_lj" label="所属部门路径" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhs_ssbm_lj" label="所属部门路径" width="auto" show-overflow-tooltip></el-table-column> -->
         <el-table-column prop="xhs_zj" label="总价" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhs_gmsj" label="购买时间" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhs_gmsj" label="购买时间" width="auto" show-overflow-tooltip></el-table-column> -->
         <el-table-column prop="xhs_spr" label="审批人" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhs_spr_uid" label="审批人ID" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhs_spzt" label="状态" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhs_spr_uid" label="审批人ID" width="auto" show-overflow-tooltip></el-table-column> -->
         <el-table-column prop="xhs_xwhtl" label="校务会讨论" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column label="操作" fixed="right">
           <template #default="scope">
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary">编辑
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary">编辑
+            </el-button> -->
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary"
+              :disabled="scope.row.xhs_spzt_option_k !== '1'">审核
             </el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary">审核
-            </el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary">详情
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary">详情
             </el-button>
             <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary">删除
-            </el-button>
+            </el-button> -->
           </template>
         </el-table-column>
       </el-table>
@@ -535,29 +538,32 @@ request({
           <el-input v-model="formData.xhs_ggxh" clearable />
         </el-form-item>
         <el-form-item label="资产分类" prop="xhs_zcfl">
-          <el-input v-model="formData.xhs_zcfl" clearable />
-        </el-form-item>
-        <el-form-item label="资产分类路径" prop="xhs_zcfl_lj">
-          <el-input v-model="formData.xhs_zcfl_lj" clearable />
+          <!-- <el-input v-model="formData.xhs_zcfl" clearable /> -->
+          <remote-cascader url="/xdhq/hqgl_xcgllb/tree" v-model="formData.xhs_zcfl_bh"
+            v-model:modelName="formData.xhs_zcfl"></remote-cascader>
         </el-form-item>
+        <!-- <el-form-item label="资产分类编号" prop="xhs_zcfl_bh">
+          <el-input v-model="formData.xhs_zcfl_bh" clearable />
+        </el-form-item> -->
         <el-form-item label="资产批次" prop="xhs_zcpc">
           <el-input v-model="formData.xhs_zcpc" clearable />
         </el-form-item>
         <el-form-item label="单价" prop="xhs_zcdj">
           <el-input v-model="formData.xhs_zcdj" clearable @change="handleZjChange($event, formData)" />
         </el-form-item>
-        <el-form-item label="单位" prop="xhs_dw">
-          <el-input v-model="formData.xhs_dw" clearable />
-        </el-form-item>
+
         <el-form-item label="数量" prop="xhs_sl">
           <el-input v-model="formData.xhs_sl" clearable @change="handleZjChange($event, formData)" />
         </el-form-item>
+        <el-form-item label="数量单位" prop="xhs_dw">
+          <el-input v-model="formData.xhs_dw" clearable />
+        </el-form-item>
         <el-form-item label="所属部门" prop="xhs_ssbm">
           <el-input v-model="formData.xhs_ssbm" clearable />
         </el-form-item>
-        <el-form-item label="所属部门路径" prop="xhs_ssbm_lj">
+        <!-- <el-form-item label="所属部门路径" prop="xhs_ssbm_lj">
           <el-input v-model="formData.xhs_ssbm_lj" clearable />
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="总价" prop="xhs_zj">
           <el-input v-model="formData.xhs_zj" disabled />
         </el-form-item>
@@ -607,7 +613,8 @@ request({
     </el-form>
 
     <div class="flex justify-center">
-      <el-button @click="handleDialogFormBtn_submit_new('dialogForm_Ref_add')" type="primary">提交</el-button>
+      <el-button @click="handleDialogFormBtn_submit_new('dialogForm_Ref_add', { [dialogForm_Field_audit.FLAG]: '1' })"
+        type="primary">提交</el-button>
       <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_add')" type="default">取消</el-button>
     </div>
   </el-dialog>
@@ -624,8 +631,8 @@ request({
       <el-form-item label="资产分类" prop="xhs_zcfl">
         <el-input v-model="dialogForm_Data.xhs_zcfl" clearable />
       </el-form-item>
-      <el-form-item label="资产分类路径" prop="xhs_zcfl_lj">
-        <el-input v-model="dialogForm_Data.xhs_zcfl_lj" clearable />
+      <el-form-item label="资产分类编号" prop="xhs_zcfl_bh">
+        <el-input v-model="dialogForm_Data.xhs_zcfl_bh" clearable />
       </el-form-item>
       <el-form-item label="资产批次" prop="xhs_zcpc">
         <el-input v-model="dialogForm_Data.xhs_zcpc" clearable />
@@ -681,8 +688,8 @@ request({
     <el-form :model="dialogForm_Data" ref="dialogForm_Ref_audit" :rules="dialogForm_Rules_audit" label-width="120px">
       <el-form-item label="状态">
         <el-radio-group v-model="dialogForm_Data[dialogForm_Field_audit.FLAG]">
-          <el-radio label="1">通过</el-radio>
-          <el-radio label="2">未通过</el-radio>
+          <el-radio label="2">通过</el-radio>
+          <el-radio label="3">未通过</el-radio>
         </el-radio-group>
       </el-form-item>
       <!-- <el-form-item label="原因" v-show="dialogForm_Data[dialogForm_Field_audit.FLAG] === '1'">

+ 1 - 1
src/pages/xdhq/splcsz/index.vue

@@ -368,7 +368,7 @@ init()
     </el-form-item> -->
     <div class="flex justify-center">
       <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit')" type="primary">提交</el-button>
-      <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button>
+      <!-- <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button> -->
     </div>
   </el-form>
 

+ 182 - 126
src/pages/xdhq/xcgl/xcgl/index.vue

@@ -18,7 +18,7 @@ const router = useRouter()
 
 // #region (variable)
 const loading_table = ref(true)
-let whichDialogSubmit:'add'|'edit'
+let whichDialogSubmit: 'add' | 'edit'
 // #endregion
 
 // #region (type)
@@ -42,40 +42,40 @@ type TYPE_TABLE_FIELD = {
 const queryForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
 const handleQueryFormBtn_search = () => {
-      queryApi()
-    }
+  queryApi()
+}
 const handleQueryFormBtn_clear = () => {
-      queryForm_Data.value = {}
-    }
+  queryForm_Data.value = {}
+}
 // #endregion
 
 // #region (table selection)
 const multipleSelection = ref<TYPE_TABLE_FIELD[]>([])
-const handleSelectionChange = (val:TYPE_TABLE_FIELD[]) => {
+const handleSelectionChange = (val: TYPE_TABLE_FIELD[]) => {
   multipleSelection.value = val
 }
 // #endregion
 
 // #region (table row)
 const handleTableRowBtn_import = async ({ file }: { file: File }) => {
-      const res = await API_MAP['import']({ file })
-      if(res.code === '1'){
-        queryApi()
-        ElMessage.success(res.msg)
-      }
-    }
+  const res = await API_MAP['import']({ file })
+  if (res.code === '1') {
+    queryApi()
+    ElMessage.success(res.msg)
+  }
+}
 const handleTableRowBtn_export = () => {
-      exportApi()
-    }
+  exportApi()
+}
 const handleTableRowBtn_add = () => {
-      whichDialogSubmit = 'add'
-      dialogForm_Data.value = {}
-      dialogVisible_addOrEdit.value = true
-    }
+  whichDialogSubmit = 'add'
+  dialogForm_Data.value = {}
+  dialogVisible_addOrEdit.value = true
+}
 const handleTableRowBtn_delete = async () => {
-      await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD)=>item[TABLE_KEY]))
-      queryApi()
-    }
+  await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD) => item[TABLE_KEY]))
+  queryApi()
+}
 // #endregion
 
 // #region (table body)
@@ -83,32 +83,32 @@ const tableData = ref<TYPE_TABLE_FIELD[]>([])
 const DetailName = '-XCGL-XCGL-DETAIL'
 const DetailParam = 'aid'
 
-const handleTableColBtn_edit = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      const res = await detailApi(scope.row[TABLE_KEY])
-      dialogForm_Data.value = (res.data.one_info)
-      dialogVisible_addOrEdit.value = true
-    }
-const handleTableColBtn_audit = (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
-      dialogVisible_audit.value = true
-    }
-const handleTableColBtn_detail = (scope:{row:TYPE_TABLE_FIELD}) => {
-      router.push({ name:DetailName, params:{ [DetailParam]:scope.row[TABLE_KEY]} })
-    }
-const handleTableColBtn_delete = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      await deleteApi(scope.row[TABLE_KEY])
-      queryApi()
-    }
+const handleTableColBtn_edit = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  const res = await detailApi(scope.row[TABLE_KEY])
+  dialogForm_Data.value = (res.data.one_info)
+  dialogVisible_addOrEdit.value = true
+}
+const handleTableColBtn_audit = (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
+  dialogVisible_audit.value = true
+}
+const handleTableColBtn_detail = (scope: { row: TYPE_TABLE_FIELD }) => {
+  router.push({ name: DetailName, params: { [DetailParam]: scope.row[TABLE_KEY] } })
+}
+const handleTableColBtn_delete = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  await deleteApi(scope.row[TABLE_KEY])
+  queryApi()
+}
 // #endregion
 
 // #region (pagination)
 const total = ref(0)
 const limit = ref(10)
 
-const currentPage=ref(1) 
-function handleCurrentChange(){
+const currentPage = ref(1)
+function handleCurrentChange() {
   queryApi()
 }
 // #endregion
@@ -116,63 +116,63 @@ function handleCurrentChange(){
 // #region (dialog base)
 const dialogForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
-const handleDialogFormBtn_submit = async (formRefKey:string,extendData?:Partial<TYPE_TABLE_FIELD>) => {
-      const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid:boolean) => valid)
-      if (isValid) {
-        await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({...dialogForm_Data.value,...extendData}))
-        handleDialogFormBtn_cancel()
-        queryApi()
-      }
-    }
-const handleDialogFormBtn_cancel = (formRefKey?:string) => {
-      dialogVisible_addOrEdit.value = false
-      dialogVisible_audit.value = false
-    }
+const handleDialogFormBtn_submit = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
+  const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
+  if (isValid) {
+    await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({ ...dialogForm_Data.value, ...extendData }))
+    handleDialogFormBtn_cancel()
+    queryApi()
+  }
+}
+const handleDialogFormBtn_cancel = (formRefKey?: string) => {
+  dialogVisible_addOrEdit.value = false
+  dialogVisible_audit.value = false
+}
 // #endregion
 
 // #region (dialog add/edit)
 const dialogVisible_addOrEdit = ref<boolean>(false)
 
-const dialogForm_Ref_addOrEdit= ref<FormInstance>()
-const dialogForm_Rules_addOrEdit = reactive({ 
-  'xhx_zcmc':{required : true,message:'资产名称不能为空',trigger:'submit'},
-  'xhx_zcbh':{required : true,message:'资产编号不能为空',trigger:'submit'},
-  'xhx_zt':{required : true,message:'状态不能为空',trigger:'submit'},
-  'xhx_dj':{required : true,message:'单价不能为空',trigger:'submit'},
-  'xhx_bjl':{required : true,message:'被借领不能为空',trigger:'submit'},
-  'xhx_bwx':{required : true,message:'被维修不能为空',trigger:'submit'},
-  'xhx_zcfl':{required : true,message:'资产分类不能为空',trigger:'submit'},
-  'xhx_spr':{required : true,message:'审批人不能为空',trigger:'submit'},
+const dialogForm_Ref_addOrEdit = ref<FormInstance>()
+const dialogForm_Rules_addOrEdit = reactive({
+  'xhx_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
+  'xhx_zcbh': { required: true, message: '资产编号不能为空', trigger: 'submit' },
+  'xhx_zt': { required: true, message: '状态不能为空', trigger: 'submit' },
+  'xhx_dj': { required: true, message: '单价不能为空', trigger: 'submit' },
+  'xhx_bjl': { required: true, message: '被借领不能为空', trigger: 'submit' },
+  'xhx_bwx': { required: true, message: '被维修不能为空', trigger: 'submit' },
+  'xhx_zcfl': { required: true, message: '资产分类不能为空', trigger: 'submit' },
+  'xhx_spr': { required: true, message: '审批人不能为空', trigger: 'submit' },
 })
 // #endregion
 
 // #region (dialog audit)
 const dialogVisible_audit = ref<boolean>(false)
 
-const dialogForm_Field_audit= reactive<{
-  FLAG:keyof TYPE_TABLE_FIELD,
-  REASON?:keyof TYPE_TABLE_FIELD
+const dialogForm_Field_audit = reactive<{
+  FLAG: keyof TYPE_TABLE_FIELD,
+  REASON?: keyof TYPE_TABLE_FIELD
 }>({
-  FLAG:'xhx_id',
+  FLAG: 'xhx_id',
   // REASON:'xhx_id'
 })
 
-const dialogForm_Ref_audit= ref<FormInstance>()
-const dialogForm_Rules_audit = reactive<FormRules>({ 
-  'xhx_zcmc':{required : true ,message:'资产名称不能为空',trigger:'submit'},
-  'xhx_zcbh':{required : true ,message:'资产编号不能为空',trigger:'submit'},
-  'xhx_zt':{required : true ,message:'状态不能为空',trigger:'submit'},
-  'xhx_dj':{required : true ,message:'单价不能为空',trigger:'submit'},
-  'xhx_bjl':{required : true ,message:'被借领不能为空',trigger:'submit'},
-  'xhx_bwx':{required : true ,message:'被维修不能为空',trigger:'submit'},
-  'xhx_zcfl':{required : true ,message:'资产分类不能为空',trigger:'submit'},
-  'xhx_spr':{required : true ,message:'审批人不能为空',trigger:'submit'},
+const dialogForm_Ref_audit = ref<FormInstance>()
+const dialogForm_Rules_audit = reactive<FormRules>({
+  'xhx_zcmc': { required: true, message: '资产名称不能为空', trigger: 'submit' },
+  'xhx_zcbh': { required: true, message: '资产编号不能为空', trigger: 'submit' },
+  'xhx_zt': { required: true, message: '状态不能为空', trigger: 'submit' },
+  'xhx_dj': { required: true, message: '单价不能为空', trigger: 'submit' },
+  'xhx_bjl': { required: true, message: '被借领不能为空', trigger: 'submit' },
+  'xhx_bwx': { required: true, message: '被维修不能为空', trigger: 'submit' },
+  'xhx_zcfl': { required: true, message: '资产分类不能为空', trigger: 'submit' },
+  'xhx_spr': { required: true, message: '审批人不能为空', trigger: 'submit' },
 })
 
 // #endregion
 
 // #region (request api): 
-function queryApi(){
+function queryApi() {
   loading_table.value = true
   return request({
     url: URL_CUT + '/index',
@@ -181,7 +181,7 @@ function queryApi(){
       limit: limit.value,
       page: currentPage.value
     }
-  }).then((response:{data:{total_rows:string,page_data:TYPE_TABLE_FIELD[]}}) => {
+  }).then((response: { data: { total_rows: string, page_data: TYPE_TABLE_FIELD[] } }) => {
     const { data } = response
     total.value = parseInt(data.total_rows)
     tableData.value = data.page_data
@@ -191,44 +191,44 @@ function queryApi(){
   })
 }
 
-function addApi(data:TYPE_TABLE_FIELD){
+function addApi(data: TYPE_TABLE_FIELD) {
   return request({
     url: URL_CUT + '/add',
     data: {
-      [URL_SUBMIT_KEY]:data,
+      [URL_SUBMIT_KEY]: data,
     }
   })
 }
 
-function editApi(data:Partial<TYPE_TABLE_FIELD>){
+function editApi(data: Partial<TYPE_TABLE_FIELD>) {
   return request({
     url: URL_CUT + '/edit',
     data: {
-      [TABLE_KEY]:data[TABLE_KEY],
-      [URL_SUBMIT_KEY]:pick(data,['xhx_zcmc','xhx_zcbh','xhx_zt','xhx_dj','xhx_bjl','xhx_bwx','xhx_zcfl','xhx_spr',]),
+      [TABLE_KEY]: data[TABLE_KEY],
+      [URL_SUBMIT_KEY]: pick(data, ['xhx_zcmc', 'xhx_zcbh', 'xhx_zt', 'xhx_dj', 'xhx_bjl', 'xhx_bwx', 'xhx_zcfl', 'xhx_spr',]),
     }
   })
 }
 
-function deleteApi(id:string|string[]){
+function deleteApi(id: string | string[]) {
   return request({
     url: URL_CUT + '/delete',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function detailApi(id:string){
+function detailApi(id: string) {
   return request({
     url: URL_CUT + '/detail',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function importApi(data:{file:File}){  
+function importApi(data: { file: File }) {
   return request({
     $type: 'import',
     url: URL_CUT + '/import',
@@ -236,23 +236,23 @@ function importApi(data:{file:File}){
   } as AxiosRequestConfig)
 }
 
-function exportApi(){
+function exportApi() {
   return download(URL_CUT + '/index', queryForm_Data.value)
 }
 
 const API_MAP = {
-  query:queryApi,
-  add:addApi,
-  edit:editApi,
-  delete:deleteApi,
-  detail:detailApi,
-  import:importApi,
-  export:exportApi,
+  query: queryApi,
+  add: addApi,
+  edit: editApi,
+  delete: deleteApi,
+  detail: detailApi,
+  import: importApi,
+  export: exportApi,
 }
 // #endregion
 
 // #region (page init)
-function init(){
+function init() {
   queryApi()
 }
 init()
@@ -264,14 +264,33 @@ init()
   <div class="card flex-grow flex flex-col">
     <el-form inline :model="queryForm_Data">
       <!-- <el-form-item label="关键字"><el-input v-model="queryForm_Data.keyword" ></el-input></el-form-item> -->
-      <el-form-item label="资产名称"><el-input v-model="queryForm_Data.xhx_zcmc" clearable /></el-form-item>
-      <el-form-item label="资产编号"><el-input v-model="queryForm_Data.xhx_zcbh" clearable /></el-form-item>
-      <el-form-item label="状态"><el-select v-model="queryForm_Data.xhx_zt" clearable filterable ><el-option label="可借" value="1" /><el-option label="不可借" value="2" /></el-select></el-form-item>
-      <el-form-item label="单价"><el-input v-model="queryForm_Data.xhx_dj" clearable /></el-form-item>
-      <el-form-item label="被借领"><el-input v-model="queryForm_Data.xhx_bjl" clearable /></el-form-item>
-      <el-form-item label="被维修"><el-input v-model="queryForm_Data.xhx_bwx" clearable /></el-form-item>
-      <el-form-item label="资产分类"><el-input v-model="queryForm_Data.xhx_zcfl" clearable /></el-form-item>
-      <el-form-item label="审批人"><el-input v-model="queryForm_Data.xhx_spr" clearable /></el-form-item>
+      <el-form-item label="资产名称">
+        <el-input v-model="queryForm_Data.xhx_zcmc" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="资产编号">
+        <el-input v-model="queryForm_Data.xhx_zcbh" clearable />
+      </el-form-item> -->
+      <el-form-item label="状态">
+        <el-select v-model="queryForm_Data.xhx_zt" clearable filterable>
+          <el-option label="可借" value="1" />
+          <el-option label="不可借" value="2" />
+        </el-select>
+      </el-form-item>
+      <!-- <el-form-item label="单价">
+        <el-input v-model="queryForm_Data.xhx_dj" clearable />
+      </el-form-item>
+      <el-form-item label="被借领">
+        <el-input v-model="queryForm_Data.xhx_bjl" clearable />
+      </el-form-item>
+      <el-form-item label="被维修">
+        <el-input v-model="queryForm_Data.xhx_bwx" clearable />
+      </el-form-item> -->
+      <el-form-item label="资产分类">
+        <el-input v-model="queryForm_Data.xhx_zcfl" clearable />
+      </el-form-item>
+      <el-form-item label="审批人">
+        <el-input v-model="queryForm_Data.xhx_spr" clearable />
+      </el-form-item>
       <el-form-item>
         <el-button @click="handleQueryFormBtn_search" type="primary">搜索</el-button>
         <el-button @click="handleQueryFormBtn_clear" type="warning">清空</el-button>
@@ -279,10 +298,10 @@ init()
     </el-form>
     <div class="divider"></div>
     <div>
-        <import-button :url="URL_CUT_REF"></import-button>
-        <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
-        <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
-        <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
+      <import-button :url="URL_CUT_REF"></import-button>
+      <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
+      <el-button @click="handleTableRowBtn_add" type="primary">dev:新增</el-button>
+      <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
     </div>
 
     <div class="divider"></div>
@@ -292,18 +311,35 @@ init()
         <el-table-column type="selection"></el-table-column>
         <el-table-column prop="xhx_zcmc" label="资产名称" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhx_zcbh" label="资产编号" width="auto" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="xhx_zcfl" label="资产分类" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhx_zt" label="状态" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhx_dj" label="单价" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhx_bjl" label="被借领" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhx_bwx" label="被维修" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhx_zcfl" label="资产分类" width="auto" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="xhx_bjl" label="被借领" width="auto" show-overflow-tooltip> <template #default="scope">
+            <!-- <el-link type="primary"
+              @click="router.push({ name: '-XCGL-XCGL-BJL', params: { aid: scope.row.xhx_zcbh } })"> {{
+                  scope.row.xhx_bjl
+              }}次</el-link> -->
+            <span>{{
+                scope.row.xhx_bjl
+            }}次</span>
+          </template></el-table-column>
+        <el-table-column prop="xhx_bwx" label="被维修" width="auto" show-overflow-tooltip> <template #default="scope">
+            <!-- <el-link type="primary"
+              @click="router.push({ name: '-XCGL-XCGL-BXW', params: { aid: scope.row.xhx_zcbh } })"> {{
+                  scope.row.xhx_bwx
+              }}次</el-link> -->
+            <span>{{
+                scope.row.xhx_bwx
+            }}次</span>
+          </template></el-table-column>
         <el-table-column prop="xhx_spr" label="审批人" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column label="操作" fixed="right">
           <template #default="scope">
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button>
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button>
             <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary" >审核</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除</el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button> -->
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary">删除
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -316,17 +352,37 @@ init()
   </div>
 
   <el-dialog v-model="dialogVisible_addOrEdit" append-to-body destroy-on-close>
-    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit" label-width="120px">
-      <el-form-item label="资产名称" prop="xhx_zcmc"><el-input v-model="dialogForm_Data.xhx_zcmc" clearable /></el-form-item>
-      <el-form-item label="资产编号" prop="xhx_zcbh"><el-input v-model="dialogForm_Data.xhx_zcbh" clearable /></el-form-item>
-      <el-form-item label="状态" prop="xhx_zt"><el-radio-group v-model="dialogForm_Data.xhx_zt"><el-radio label="1">可借</el-radio><el-radio label="2">不可借</el-radio></el-radio-group></el-form-item>
-      <el-form-item label="单价" prop="xhx_dj"><el-input v-model="dialogForm_Data.xhx_dj" clearable /></el-form-item>
-      <el-form-item label="被借领" prop="xhx_bjl"><el-input v-model="dialogForm_Data.xhx_bjl" clearable /></el-form-item>
-      <el-form-item label="被维修" prop="xhx_bwx"><el-input v-model="dialogForm_Data.xhx_bwx" clearable /></el-form-item>
-      <el-form-item label="资产分类" prop="xhx_zcfl"><el-input v-model="dialogForm_Data.xhx_zcfl" clearable /></el-form-item>
-      <el-form-item label="审批人" prop="xhx_spr"><el-input v-model="dialogForm_Data.xhx_spr" clearable /></el-form-item>
+    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit"
+      label-width="120px">
+      <el-form-item label="资产名称" prop="xhx_zcmc">
+        <el-input v-model="dialogForm_Data.xhx_zcmc" clearable />
+      </el-form-item>
+      <el-form-item label="资产分类" prop="xhx_zcfl">
+        <!-- <el-input v-model="dialogForm_Data.xhx_zcfl" clearable /> -->
+        <remote-cascader url="/xdhq/hqgl_xcgllb/tree" v-model="dialogForm_Data.xhx_zcbh"
+          v-model:modelName="dialogForm_Data.xhx_zcfl"></remote-cascader>
+      </el-form-item>
+      <!-- <el-form-item label="资产编号" prop="xhx_zcbh">
+        <el-input v-model="dialogForm_Data.xhx_zcbh" clearable />  
+      </el-form-item> -->
+      <!-- <el-form-item label="状态" prop="xhx_zt"><el-radio-group v-model="dialogForm_Data.xhx_zt"><el-radio label="1">可借</el-radio><el-radio label="2">不可借</el-radio></el-radio-group></el-form-item> -->
+      <el-form-item label="单价" prop="xhx_dj">
+        <el-input v-model="dialogForm_Data.xhx_dj" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="被借领" prop="xhx_bjl">
+        <el-input v-model="dialogForm_Data.xhx_bjl" clearable />
+      </el-form-item>
+      <el-form-item label="被维修" prop="xhx_bwx">
+        <el-input v-model="dialogForm_Data.xhx_bwx" clearable />
+      </el-form-item> -->
+
+      <el-form-item label="审批人" prop="xhx_spr">
+        <el-input v-model="dialogForm_Data.xhx_spr" clearable />
+      </el-form-item>
       <div class="flex justify-center">
-        <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit')" type="primary">提交</el-button>
+        <el-button
+          @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit', { xhx_zt: '1', xhx_bjl: '0', xhx_bwx: '0' })"
+          type="primary">提交</el-button>
         <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button>
       </div>
     </el-form>

+ 172 - 116
src/pages/xdhq/xcgl/xcgllb.vue

@@ -18,7 +18,7 @@ const router = useRouter()
 
 // #region (variable)
 const loading_table = ref(true)
-let whichDialogSubmit:'add'|'edit'
+let whichDialogSubmit: 'add' | 'edit'
 // #endregion
 
 // #region (type)
@@ -39,40 +39,40 @@ type TYPE_TABLE_FIELD = {
 const queryForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
 const handleQueryFormBtn_search = () => {
-      queryApi()
-    }
+  queryApi()
+}
 const handleQueryFormBtn_clear = () => {
-      queryForm_Data.value = {}
-    }
+  queryForm_Data.value = {}
+}
 // #endregion
 
 // #region (table selection)
 const multipleSelection = ref<TYPE_TABLE_FIELD[]>([])
-const handleSelectionChange = (val:TYPE_TABLE_FIELD[]) => {
+const handleSelectionChange = (val: TYPE_TABLE_FIELD[]) => {
   multipleSelection.value = val
 }
 // #endregion
 
 // #region (table row)
 const handleTableRowBtn_import = async ({ file }: { file: File }) => {
-      const res = await API_MAP['import']({ file })
-      if(res.code === '1'){
-        queryApi()
-        ElMessage.success(res.msg)
-      }
-    }
+  const res = await API_MAP['import']({ file })
+  if (res.code === '1') {
+    queryApi()
+    ElMessage.success(res.msg)
+  }
+}
 const handleTableRowBtn_export = () => {
-      exportApi()
-    }
-const handleTableRowBtn_add = () => {
-      whichDialogSubmit = 'add'
-      dialogForm_Data.value = {}
-      dialogVisible_addOrEdit.value = true
-    }
+  exportApi()
+}
+const handleTableRowBtn_add = (d?: Partial<TYPE_TABLE_FIELD>) => {
+  whichDialogSubmit = 'add'
+  dialogForm_Data.value = { ...d }
+  dialogVisible_addOrEdit.value = true
+}
 const handleTableRowBtn_delete = async () => {
-      await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD)=>item[TABLE_KEY]))
-      queryApi()
-    }
+  await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD) => item[TABLE_KEY]))
+  queryApi()
+}
 // #endregion
 
 // #region (table body)
@@ -80,32 +80,32 @@ const tableData = ref<TYPE_TABLE_FIELD[]>([])
 const DetailName = '-XCGL-XCGLLB'
 const DetailParam = 'aid'
 
-const handleTableColBtn_edit = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      const res = await detailApi(scope.row[TABLE_KEY])
-      dialogForm_Data.value = (res.data.one_info)
-      dialogVisible_addOrEdit.value = true
-    }
-const handleTableColBtn_audit = (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
-      dialogVisible_audit.value = true
-    }
-const handleTableColBtn_detail = (scope:{row:TYPE_TABLE_FIELD}) => {
-      router.push({ name:DetailName, params:{ [DetailParam]:scope.row[TABLE_KEY]} })
-    }
-const handleTableColBtn_delete = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      await deleteApi(scope.row[TABLE_KEY])
-      queryApi()
-    }
+const handleTableColBtn_edit = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  const res = await detailApi(scope.row[TABLE_KEY])
+  dialogForm_Data.value = (res.data.one_info)
+  dialogVisible_addOrEdit.value = true
+}
+const handleTableColBtn_audit = (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
+  dialogVisible_audit.value = true
+}
+const handleTableColBtn_detail = (scope: { row: TYPE_TABLE_FIELD }) => {
+  router.push({ name: DetailName, params: { [DetailParam]: scope.row[TABLE_KEY] } })
+}
+const handleTableColBtn_delete = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  await deleteApi(scope.row[TABLE_KEY])
+  queryApi()
+}
 // #endregion
 
 // #region (pagination)
 const total = ref(0)
 const limit = ref(10)
 
-const currentPage=ref(1) 
-function handleCurrentChange(){
+const currentPage = ref(1)
+function handleCurrentChange() {
   queryApi()
 }
 // #endregion
@@ -113,113 +113,114 @@ function handleCurrentChange(){
 // #region (dialog base)
 const dialogForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
-const handleDialogFormBtn_submit = async (formRefKey:string,extendData?:Partial<TYPE_TABLE_FIELD>) => {
-      const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid:boolean) => valid)
-      if (isValid) {
-        await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({...dialogForm_Data.value,...extendData}))
-        handleDialogFormBtn_cancel()
-        queryApi()
-      }
-    }
-const handleDialogFormBtn_cancel = (formRefKey?:string) => {
-      dialogVisible_addOrEdit.value = false
-      dialogVisible_audit.value = false
-    }
+const handleDialogFormBtn_submit = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
+  const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
+  if (isValid) {
+    await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({ ...dialogForm_Data.value, ...extendData }))
+    handleDialogFormBtn_cancel()
+    queryApi()
+  }
+}
+const handleDialogFormBtn_cancel = (formRefKey?: string) => {
+  dialogVisible_addOrEdit.value = false
+  dialogVisible_audit.value = false
+}
 // #endregion
 
 // #region (dialog add/edit)
 const dialogVisible_addOrEdit = ref<boolean>(false)
 
-const dialogForm_Ref_addOrEdit= ref<FormInstance>()
-const dialogForm_Rules_addOrEdit = reactive({ 
-  'xhxl_mc':{required : true,message:'分类名称不能为空',trigger:'submit'},
-  'xhxl_bm':{required : true,message:'分类编码不能为空',trigger:'submit'},
-  'xhxl_cjsj':{required : true,message:'创建时间不能为空',trigger:'submit'},
-  'xhxl_sfqy':{required : true,message:'是否启用不能为空',trigger:'submit'},
-  'xhxl_pid':{required : true,message:'上级编号不能为空',trigger:'submit'},
+const dialogForm_Ref_addOrEdit = ref<FormInstance>()
+const dialogForm_Rules_addOrEdit = reactive({
+  'xhxl_mc': { required: true, message: '分类名称不能为空', trigger: 'submit' },
+  'xhxl_bm': { required: true, message: '分类编码不能为空', trigger: 'submit' },
+  'xhxl_cjsj': { required: true, message: '创建时间不能为空', trigger: 'submit' },
+  'xhxl_sfqy': { required: true, message: '是否启用不能为空', trigger: 'submit' },
+  'xhxl_pid': { required: true, message: '上级编号不能为空', trigger: 'submit' },
 })
 // #endregion
 
 // #region (dialog audit)
 const dialogVisible_audit = ref<boolean>(false)
 
-const dialogForm_Field_audit= reactive<{
-  FLAG:keyof TYPE_TABLE_FIELD,
-  REASON?:keyof TYPE_TABLE_FIELD
+const dialogForm_Field_audit = reactive<{
+  FLAG: keyof TYPE_TABLE_FIELD,
+  REASON?: keyof TYPE_TABLE_FIELD
 }>({
-  FLAG:'xhxl_id',
+  FLAG: 'xhxl_id',
   // REASON:'xhxl_id'
 })
 
-const dialogForm_Ref_audit= ref<FormInstance>()
-const dialogForm_Rules_audit = reactive<FormRules>({ 
-  'xhxl_mc':{required : true ,message:'分类名称不能为空',trigger:'submit'},
-  'xhxl_bm':{required : true ,message:'分类编码不能为空',trigger:'submit'},
-  'xhxl_cjsj':{required : true ,message:'创建时间不能为空',trigger:'submit'},
-  'xhxl_sfqy':{required : true ,message:'是否启用不能为空',trigger:'submit'},
-  'xhxl_pid':{required : true ,message:'上级编号不能为空',trigger:'submit'},
+const dialogForm_Ref_audit = ref<FormInstance>()
+const dialogForm_Rules_audit = reactive<FormRules>({
+  'xhxl_mc': { required: true, message: '分类名称不能为空', trigger: 'submit' },
+  'xhxl_bm': { required: true, message: '分类编码不能为空', trigger: 'submit' },
+  'xhxl_cjsj': { required: true, message: '创建时间不能为空', trigger: 'submit' },
+  'xhxl_sfqy': { required: true, message: '是否启用不能为空', trigger: 'submit' },
+  'xhxl_pid': { required: true, message: '上级编号不能为空', trigger: 'submit' },
 })
 
 // #endregion
 
 // #region (request api): 
-function queryApi(){
+function queryApi() {
   loading_table.value = true
   return request({
     url: URL_CUT + '/index',
     data: {
       ...queryForm_Data.value,
       limit: limit.value,
-      page: currentPage.value
+      page: currentPage.value,
+      xhxl_pid: '0'
     }
-  }).then((response:{data:{total_rows:string,page_data:TYPE_TABLE_FIELD[]}}) => {
+  }).then((response: { data: { total_rows: string, page_data: TYPE_TABLE_FIELD[] } }) => {
     const { data } = response
     total.value = parseInt(data.total_rows)
-    tableData.value = data.page_data
+    tableData.value = data.page_data.map((row) => ({ ...row, hasChildren: true }))
     return response
   }).then(() => {
     loading_table.value = false
   })
 }
 
-function addApi(data:TYPE_TABLE_FIELD){
+function addApi(data: TYPE_TABLE_FIELD) {
   return request({
     url: URL_CUT + '/add',
     data: {
-      [URL_SUBMIT_KEY]:data,
+      [URL_SUBMIT_KEY]: data,
     }
   })
 }
 
-function editApi(data:Partial<TYPE_TABLE_FIELD>){
+function editApi(data: Partial<TYPE_TABLE_FIELD>) {
   return request({
     url: URL_CUT + '/edit',
     data: {
-      [TABLE_KEY]:data[TABLE_KEY],
-      [URL_SUBMIT_KEY]:pick(data,['xhxl_mc','xhxl_bm','xhxl_cjsj','xhxl_sfqy','xhxl_pid',]),
+      [TABLE_KEY]: data[TABLE_KEY],
+      [URL_SUBMIT_KEY]: pick(data, ['xhxl_mc', 'xhxl_bm', 'xhxl_cjsj', 'xhxl_sfqy', 'xhxl_pid',]),
     }
   })
 }
 
-function deleteApi(id:string|string[]){
+function deleteApi(id: string | string[]) {
   return request({
     url: URL_CUT + '/delete',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function detailApi(id:string){
+function detailApi(id: string) {
   return request({
     url: URL_CUT + '/detail',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function importApi(data:{file:File}){  
+function importApi(data: { file: File }) {
   return request({
     $type: 'import',
     url: URL_CUT + '/import',
@@ -227,39 +228,71 @@ function importApi(data:{file:File}){
   } as AxiosRequestConfig)
 }
 
-function exportApi(){
+function exportApi() {
   return download(URL_CUT + '/index', queryForm_Data.value)
 }
 
 const API_MAP = {
-  query:queryApi,
-  add:addApi,
-  edit:editApi,
-  delete:deleteApi,
-  detail:detailApi,
-  import:importApi,
-  export:exportApi,
+  query: queryApi,
+  add: addApi,
+  edit: editApi,
+  delete: deleteApi,
+  detail: detailApi,
+  import: importApi,
+  export: exportApi,
 }
 // #endregion
 
 // #region (page init)
-function init(){
+function init() {
   queryApi()
 }
 init()
 // #endregion
 
+const load = (
+  row: TYPE_TABLE_FIELD,
+  treeNode: unknown,
+  resolve: (date: TYPE_TABLE_FIELD[]) => void
+) => {
+
+  request({
+    url: URL_CUT + '/index',
+    data: {
+      limit: 100,
+      page: 1,
+      xhxl_pid: row[TABLE_KEY]
+    }
+  }).then((response: { data: { total_rows: string, page_data: TYPE_TABLE_FIELD[] } }) => {
+    const { data } = response
+    const tableData = data.page_data.map((row) => ({ ...row, hasChildren: true }))
+    resolve(tableData)
+  })
+}
 </script>
 
 <template>
   <div class="card flex-grow flex flex-col">
     <el-form inline :model="queryForm_Data">
       <!-- <el-form-item label="关键字"><el-input v-model="queryForm_Data.keyword" ></el-input></el-form-item> -->
-      <el-form-item label="分类名称"><el-input v-model="queryForm_Data.xhxl_mc" clearable /></el-form-item>
-      <el-form-item label="分类编码"><el-input v-model="queryForm_Data.xhxl_bm" clearable /></el-form-item>
-      <el-form-item label="创建时间"><el-input v-model="queryForm_Data.xhxl_cjsj" clearable /></el-form-item>
-      <el-form-item label="是否启用"><el-select v-model="queryForm_Data.xhxl_sfqy" clearable filterable ><el-option label="是" value="1" /><el-option label="否" value="2" /></el-select></el-form-item>
-      <el-form-item label="上级编号"><el-input v-model="queryForm_Data.xhxl_pid" clearable /></el-form-item>
+      <el-form-item label="分类名称">
+        <el-input v-model="queryForm_Data.xhxl_mc" clearable />
+      </el-form-item>
+      <el-form-item label="分类编码">
+        <el-input v-model="queryForm_Data.xhxl_bm" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="创建时间">
+        <el-input v-model="queryForm_Data.xhxl_cjsj" clearable />
+      </el-form-item>
+      <el-form-item label="是否启用">
+        <el-select v-model="queryForm_Data.xhxl_sfqy" clearable filterable>
+          <el-option label="是" value="1" />
+          <el-option label="否" value="2" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="上级编号">
+        <el-input v-model="queryForm_Data.xhxl_pid" clearable />
+      </el-form-item> -->
       <el-form-item>
         <el-button @click="handleQueryFormBtn_search" type="primary">搜索</el-button>
         <el-button @click="handleQueryFormBtn_clear" type="warning">清空</el-button>
@@ -267,28 +300,35 @@ init()
     </el-form>
     <div class="divider"></div>
     <div>
-        <import-button :url="URL_CUT_REF"></import-button>
-        <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
-        <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
-        <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
+      <!-- <import-button :url="URL_CUT_REF"></import-button> -->
+      <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
+      <el-button @click="handleTableRowBtn_add({ xhxl_pid: '0' })" type="primary">新增</el-button>
+      <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
     </div>
 
     <div class="divider"></div>
     <div class="flex-auto">
       <el-table :data="tableData" @selection-change="handleSelectionChange" v-loading="loading_table"
-        element-loading-background="#ffffff70">
+        element-loading-background="#ffffff70" row-key="xhxl_id" lazy :load="load">
         <el-table-column type="selection"></el-table-column>
         <el-table-column prop="xhxl_mc" label="分类名称" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhxl_bm" label="分类编码" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhxl_cjsj" label="创建时间" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhxl_sfqy" label="是否启用" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhxl_pid" label="上级编号" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhxl_pid" label="上级编号" width="auto" show-overflow-tooltip></el-table-column> -->
         <el-table-column label="操作" fixed="right">
           <template #default="scope">
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary" >审核</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除</el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary">编辑
+            </el-button>
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary">审核
+            </el-button> -->
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary">详情
+            </el-button> -->
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary">删除
+            </el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableRowBtn_add({ xhxl_pid: scope.row.xhxl_id })"
+              type="primary">添加下级
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -301,12 +341,28 @@ init()
   </div>
 
   <el-dialog v-model="dialogVisible_addOrEdit" append-to-body destroy-on-close>
-    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit" label-width="120px">
-      <el-form-item label="分类名称" prop="xhxl_mc"><el-input v-model="dialogForm_Data.xhxl_mc" clearable /></el-form-item>
-      <el-form-item label="分类编码" prop="xhxl_bm"><el-input v-model="dialogForm_Data.xhxl_bm" clearable /></el-form-item>
-      <el-form-item label="创建时间" prop="xhxl_cjsj"><el-input v-model="dialogForm_Data.xhxl_cjsj" clearable /></el-form-item>
-      <el-form-item label="是否启用" prop="xhxl_sfqy"><el-radio-group v-model="dialogForm_Data.xhxl_sfqy"><el-radio label="1">是</el-radio><el-radio label="2">否</el-radio></el-radio-group></el-form-item>
-      <el-form-item label="上级编号" prop="xhxl_pid"><el-input v-model="dialogForm_Data.xhxl_pid" clearable /></el-form-item>
+    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit"
+      label-width="120px">
+      <el-form-item label="分类名称" prop="xhxl_mc">
+        <el-input v-model="dialogForm_Data.xhxl_mc" clearable />
+      </el-form-item>
+      <el-form-item label="分类编码" prop="xhxl_bm">
+        <el-input v-model="dialogForm_Data.xhxl_bm" clearable />
+      </el-form-item>
+      <el-form-item label="创建时间" prop="xhxl_cjsj">
+        <!-- <el-input v-model="dialogForm_Data.xhxl_cjsj" clearable /> -->
+        <el-date-picker type="datetime" v-model="dialogForm_Data.xhxl_cjsj" value-format="YYYY-MM-DD HH:mm:ss"
+          clearable />
+      </el-form-item>
+      <el-form-item label="是否启用" prop="xhxl_sfqy">
+        <el-radio-group v-model="dialogForm_Data.xhxl_sfqy">
+          <el-radio label="1">是</el-radio>
+          <el-radio label="2">否</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="上级编号" prop="xhxl_pid">
+        <el-input v-model="dialogForm_Data.xhxl_pid" clearable />
+      </el-form-item>
       <div class="flex justify-center">
         <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit')" type="primary">提交</el-button>
         <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button>

+ 207 - 141
src/pages/xdhq/zyyy/cdgl.vue

@@ -18,7 +18,7 @@ const router = useRouter()
 
 // #region (variable)
 const loading_table = ref(true)
-let whichDialogSubmit:'add'|'edit'
+let whichDialogSubmit: 'add' | 'edit'
 // #endregion
 
 // #region (type)
@@ -26,7 +26,8 @@ type TYPE_TABLE_FIELD = {
   [TABLE_KEY]: string;
   'xhzz_cdbh': string; // 场地编号
   'xhzz_cdmc': string; // 场地名称
-  'xhzz_cdlb': string; // 场地类别
+  'xhzl_flbm': string; // 场地类别编号
+  'xhzl_flmc': string; // 场地类别名称
   'xhzz_ssxq': string; // 所属校区
   'xhzz_zdmj': string; // 占地面积
   'xhzz_dz': string; // 地址
@@ -45,40 +46,40 @@ type TYPE_TABLE_FIELD = {
 const queryForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
 const handleQueryFormBtn_search = () => {
-      queryApi()
-    }
+  queryApi()
+}
 const handleQueryFormBtn_clear = () => {
-      queryForm_Data.value = {}
-    }
+  queryForm_Data.value = {}
+}
 // #endregion
 
 // #region (table selection)
 const multipleSelection = ref<TYPE_TABLE_FIELD[]>([])
-const handleSelectionChange = (val:TYPE_TABLE_FIELD[]) => {
+const handleSelectionChange = (val: TYPE_TABLE_FIELD[]) => {
   multipleSelection.value = val
 }
 // #endregion
 
 // #region (table row)
 const handleTableRowBtn_import = async ({ file }: { file: File }) => {
-      const res = await API_MAP['import']({ file })
-      if(res.code === '1'){
-        queryApi()
-        ElMessage.success(res.msg)
-      }
-    }
+  const res = await API_MAP['import']({ file })
+  if (res.code === '1') {
+    queryApi()
+    ElMessage.success(res.msg)
+  }
+}
 const handleTableRowBtn_export = () => {
-      exportApi()
-    }
+  exportApi()
+}
 const handleTableRowBtn_add = () => {
-      whichDialogSubmit = 'add'
-      dialogForm_Data.value = {}
-      dialogVisible_addOrEdit.value = true
-    }
+  whichDialogSubmit = 'add'
+  dialogForm_Data.value = {}
+  dialogVisible_addOrEdit.value = true
+}
 const handleTableRowBtn_delete = async () => {
-      await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD)=>item[TABLE_KEY]))
-      queryApi()
-    }
+  await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD) => item[TABLE_KEY]))
+  queryApi()
+}
 // #endregion
 
 // #region (table body)
@@ -86,32 +87,32 @@ const tableData = ref<TYPE_TABLE_FIELD[]>([])
 const DetailName = '-ZYYY-CDGL'
 const DetailParam = 'aid'
 
-const handleTableColBtn_edit = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      const res = await detailApi(scope.row[TABLE_KEY])
-      dialogForm_Data.value = (res.data.one_info)
-      dialogVisible_addOrEdit.value = true
-    }
-const handleTableColBtn_audit = (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
-      dialogVisible_audit.value = true
-    }
-const handleTableColBtn_detail = (scope:{row:TYPE_TABLE_FIELD}) => {
-      router.push({ name:DetailName, params:{ [DetailParam]:scope.row[TABLE_KEY]} })
-    }
-const handleTableColBtn_delete = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      await deleteApi(scope.row[TABLE_KEY])
-      queryApi()
-    }
+const handleTableColBtn_edit = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  const res = await detailApi(scope.row[TABLE_KEY])
+  dialogForm_Data.value = (res.data.one_info)
+  dialogVisible_addOrEdit.value = true
+}
+const handleTableColBtn_audit = (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
+  dialogVisible_audit.value = true
+}
+const handleTableColBtn_detail = (scope: { row: TYPE_TABLE_FIELD }) => {
+  router.push({ name: DetailName, params: { [DetailParam]: scope.row[TABLE_KEY] } })
+}
+const handleTableColBtn_delete = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  await deleteApi(scope.row[TABLE_KEY])
+  queryApi()
+}
 // #endregion
 
 // #region (pagination)
 const total = ref(0)
 const limit = ref(10)
 
-const currentPage=ref(1) 
-function handleCurrentChange(){
+const currentPage = ref(1)
+function handleCurrentChange() {
   queryApi()
 }
 // #endregion
@@ -119,69 +120,71 @@ function handleCurrentChange(){
 // #region (dialog base)
 const dialogForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
-const handleDialogFormBtn_submit = async (formRefKey:string,extendData?:Partial<TYPE_TABLE_FIELD>) => {
-      const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid:boolean) => valid)
-      if (isValid) {
-        await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({...dialogForm_Data.value,...extendData}))
-        handleDialogFormBtn_cancel()
-        queryApi()
-      }
-    }
-const handleDialogFormBtn_cancel = (formRefKey?:string) => {
-      dialogVisible_addOrEdit.value = false
-      dialogVisible_audit.value = false
-    }
+const handleDialogFormBtn_submit = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
+  const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
+  if (isValid) {
+    await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({ ...dialogForm_Data.value, ...extendData }))
+    handleDialogFormBtn_cancel()
+    queryApi()
+  }
+}
+const handleDialogFormBtn_cancel = (formRefKey?: string) => {
+  dialogVisible_addOrEdit.value = false
+  dialogVisible_audit.value = false
+}
 // #endregion
 
 // #region (dialog add/edit)
 const dialogVisible_addOrEdit = ref<boolean>(false)
 
-const dialogForm_Ref_addOrEdit= ref<FormInstance>()
-const dialogForm_Rules_addOrEdit = reactive({ 
-  'xhzz_cdbh':{required : true,message:'场地编号不能为空',trigger:'submit'},
-  'xhzz_cdmc':{required : true,message:'场地名称不能为空',trigger:'submit'},
-  'xhzz_cdlb':{required : true,message:'场地类别不能为空',trigger:'submit'},
-  'xhzz_ssxq':{required : true,message:'所属校区不能为空',trigger:'submit'},
-  'xhzz_zdmj':{required : true,message:'占地面积不能为空',trigger:'submit'},
-  'xhzz_dz':{required : true,message:'地址不能为空',trigger:'submit'},
-  'xhzz_tp':{required : true,message:'图片不能为空',trigger:'submit'},
-  'xhzz_sfkjy':{required : true,message:'是否可借用不能为空',trigger:'submit'},
-  'xhzz_fzr':{required : true,message:'负责人不能为空',trigger:'submit'},
-  'xhzz_fzr_uid':{required : true,message:'负责人ID不能为空',trigger:'submit'},
-  'xhzz_bz':{required : true,message:'备注不能为空',trigger:'submit'},
+const dialogForm_Ref_addOrEdit = ref<FormInstance>()
+const dialogForm_Rules_addOrEdit = reactive({
+  'xhzz_cdbh': { required: true, message: '场地编号不能为空', trigger: 'submit' },
+  'xhzz_cdmc': { required: true, message: '场地名称不能为空', trigger: 'submit' },
+  'xhzl_flbm': { required: true, message: '场地类别不能为空', trigger: 'submit' },
+  'xhzl_flmc': { required: true, message: '场地类别不能为空', trigger: 'submit' },
+  
+  'xhzz_ssxq': { required: false, message: '所属校区不能为空', trigger: 'submit' },
+  'xhzz_zdmj': { required: false, message: '占地面积不能为空', trigger: 'submit' },
+  'xhzz_dz': { required: false, message: '地址不能为空', trigger: 'submit' },
+  'xhzz_tp': { required: true, message: '图片不能为空', trigger: 'submit' },
+  'xhzz_sfkjy': { required: true, message: '是否可借用不能为空', trigger: 'submit' },
+  'xhzz_fzr': { required: true, message: '负责人不能为空', trigger: 'submit' },
+  'xhzz_fzr_uid': { required: true, message: '负责人ID不能为空', trigger: 'submit' },
+  'xhzz_bz': { required: false, message: '备注不能为空', trigger: 'submit' },
 })
 // #endregion
 
 // #region (dialog audit)
 const dialogVisible_audit = ref<boolean>(false)
 
-const dialogForm_Field_audit= reactive<{
-  FLAG:keyof TYPE_TABLE_FIELD,
-  REASON?:keyof TYPE_TABLE_FIELD
+const dialogForm_Field_audit = reactive<{
+  FLAG: keyof TYPE_TABLE_FIELD,
+  REASON?: keyof TYPE_TABLE_FIELD
 }>({
-  FLAG:'xhzz_id',
+  FLAG: 'xhzz_id',
   // REASON:'xhzz_id'
 })
 
-const dialogForm_Ref_audit= ref<FormInstance>()
-const dialogForm_Rules_audit = reactive<FormRules>({ 
-  'xhzz_cdbh':{required : true ,message:'场地编号不能为空',trigger:'submit'},
-  'xhzz_cdmc':{required : true ,message:'场地名称不能为空',trigger:'submit'},
-  'xhzz_cdlb':{required : true ,message:'场地类别不能为空',trigger:'submit'},
-  'xhzz_ssxq':{required : true ,message:'所属校区不能为空',trigger:'submit'},
-  'xhzz_zdmj':{required : true ,message:'占地面积不能为空',trigger:'submit'},
-  'xhzz_dz':{required : true ,message:'地址不能为空',trigger:'submit'},
-  'xhzz_tp':{required : true ,message:'图片不能为空',trigger:'submit'},
-  'xhzz_sfkjy':{required : true ,message:'是否可借用不能为空',trigger:'submit'},
-  'xhzz_fzr':{required : true ,message:'负责人不能为空',trigger:'submit'},
-  'xhzz_fzr_uid':{required : true ,message:'负责人ID不能为空',trigger:'submit'},
-  'xhzz_bz':{required : true ,message:'备注不能为空',trigger:'submit'},
+const dialogForm_Ref_audit = ref<FormInstance>()
+const dialogForm_Rules_audit = reactive<FormRules>({
+  'xhzz_cdbh': { required: true, message: '场地编号不能为空', trigger: 'submit' },
+  'xhzz_cdmc': { required: true, message: '场地名称不能为空', trigger: 'submit' },
+  'xhzl_flbm': { required: true, message: '场地类别不能为空', trigger: 'submit' },
+  'xhzz_ssxq': { required: true, message: '所属校区不能为空', trigger: 'submit' },
+  'xhzz_zdmj': { required: true, message: '占地面积不能为空', trigger: 'submit' },
+  'xhzz_dz': { required: true, message: '地址不能为空', trigger: 'submit' },
+  'xhzz_tp': { required: true, message: '图片不能为空', trigger: 'submit' },
+  'xhzz_sfkjy': { required: true, message: '是否可借用不能为空', trigger: 'submit' },
+  'xhzz_fzr': { required: true, message: '负责人不能为空', trigger: 'submit' },
+  'xhzz_fzr_uid': { required: true, message: '负责人ID不能为空', trigger: 'submit' },
+  'xhzz_bz': { required: true, message: '备注不能为空', trigger: 'submit' },
 })
 
 // #endregion
 
 // #region (request api): 
-function queryApi(){
+function queryApi() {
   loading_table.value = true
   return request({
     url: URL_CUT + '/index',
@@ -190,7 +193,7 @@ function queryApi(){
       limit: limit.value,
       page: currentPage.value
     }
-  }).then((response:{data:{total_rows:string,page_data:TYPE_TABLE_FIELD[]}}) => {
+  }).then((response: { data: { total_rows: string, page_data: TYPE_TABLE_FIELD[] } }) => {
     const { data } = response
     total.value = parseInt(data.total_rows)
     tableData.value = data.page_data
@@ -200,44 +203,44 @@ function queryApi(){
   })
 }
 
-function addApi(data:TYPE_TABLE_FIELD){
+function addApi(data: TYPE_TABLE_FIELD) {
   return request({
     url: URL_CUT + '/add',
     data: {
-      [URL_SUBMIT_KEY]:data,
+      [URL_SUBMIT_KEY]: data,
     }
   })
 }
 
-function editApi(data:Partial<TYPE_TABLE_FIELD>){
+function editApi(data: Partial<TYPE_TABLE_FIELD>) {
   return request({
     url: URL_CUT + '/edit',
     data: {
-      [TABLE_KEY]:data[TABLE_KEY],
-      [URL_SUBMIT_KEY]:pick(data,['xhzz_cdbh','xhzz_cdmc','xhzz_cdlb','xhzz_ssxq','xhzz_zdmj','xhzz_dz','xhzz_tp','xhzz_sfkjy','xhzz_fzr','xhzz_fzr_uid','xhzz_bz',]),
+      [TABLE_KEY]: data[TABLE_KEY],
+      [URL_SUBMIT_KEY]: pick(data, ['xhzz_cdbh', 'xhzz_cdmc', 'xhzl_flbm','xhzl_flmc', 'xhzz_ssxq', 'xhzz_zdmj', 'xhzz_dz', 'xhzz_tp', 'xhzz_sfkjy', 'xhzz_fzr', 'xhzz_fzr_uid', 'xhzz_bz',]),
     }
   })
 }
 
-function deleteApi(id:string|string[]){
+function deleteApi(id: string | string[]) {
   return request({
     url: URL_CUT + '/delete',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function detailApi(id:string){
+function detailApi(id: string) {
   return request({
     url: URL_CUT + '/detail',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function importApi(data:{file:File}){  
+function importApi(data: { file: File }) {
   return request({
     $type: 'import',
     url: URL_CUT + '/import',
@@ -245,23 +248,23 @@ function importApi(data:{file:File}){
   } as AxiosRequestConfig)
 }
 
-function exportApi(){
+function exportApi() {
   return download(URL_CUT + '/index', queryForm_Data.value)
 }
 
 const API_MAP = {
-  query:queryApi,
-  add:addApi,
-  edit:editApi,
-  delete:deleteApi,
-  detail:detailApi,
-  import:importApi,
-  export:exportApi,
+  query: queryApi,
+  add: addApi,
+  edit: editApi,
+  delete: deleteApi,
+  detail: detailApi,
+  import: importApi,
+  export: exportApi,
 }
 // #endregion
 
 // #region (page init)
-function init(){
+function init() {
   queryApi()
 }
 init()
@@ -273,17 +276,43 @@ init()
   <div class="card flex-grow flex flex-col">
     <el-form inline :model="queryForm_Data">
       <!-- <el-form-item label="关键字"><el-input v-model="queryForm_Data.keyword" ></el-input></el-form-item> -->
-      <el-form-item label="场地编号"><el-input v-model="queryForm_Data.xhzz_cdbh" clearable /></el-form-item>
-      <el-form-item label="场地名称"><el-input v-model="queryForm_Data.xhzz_cdmc" clearable /></el-form-item>
-      <el-form-item label="场地类别"><el-input v-model="queryForm_Data.xhzz_cdlb" clearable /></el-form-item>
-      <el-form-item label="所属校区"><el-input v-model="queryForm_Data.xhzz_ssxq" clearable /></el-form-item>
-      <el-form-item label="占地面积"><el-input v-model="queryForm_Data.xhzz_zdmj" clearable /></el-form-item>
-      <el-form-item label="地址"><el-input v-model="queryForm_Data.xhzz_dz" clearable /></el-form-item>
-      <el-form-item label="图片"><el-input v-model="queryForm_Data.xhzz_tp" clearable /></el-form-item>
-      <el-form-item label="是否可借用"><el-select v-model="queryForm_Data.xhzz_sfkjy" clearable filterable ><el-option label="是" value="1" /><el-option label="否" value="2" /></el-select></el-form-item>
-      <el-form-item label="负责人"><el-input v-model="queryForm_Data.xhzz_fzr" clearable /></el-form-item>
-      <el-form-item label="负责人ID"><el-input v-model="queryForm_Data.xhzz_fzr_uid" clearable /></el-form-item>
-      <el-form-item label="备注"><el-input v-model="queryForm_Data.xhzz_bz" clearable /></el-form-item>
+      <el-form-item label="场地编号">
+        <el-input v-model="queryForm_Data.xhzz_cdbh" clearable />
+      </el-form-item>
+      <el-form-item label="场地名称">
+        <el-input v-model="queryForm_Data.xhzz_cdmc" clearable />
+      </el-form-item>
+      <el-form-item label="场地类别">
+        <!-- <el-input v-model="queryForm_Data.xhzl_flbm" clearable /> -->
+        <remote-select url="/xdhq/hqgl_zyyylb/index" :fields="['xhzl_flbm','xhzl_flmc']" v-model="queryForm_Data.xhzl_flbm" v-model:modelName="queryForm_Data.xhzl_flmc"></remote-select>
+      </el-form-item>
+      <!-- <el-form-item label="所属校区">
+        <el-input v-model="queryForm_Data.xhzz_ssxq" clearable />
+      </el-form-item>
+      <el-form-item label="占地面积">
+        <el-input v-model="queryForm_Data.xhzz_zdmj" clearable />
+      </el-form-item>
+      <el-form-item label="地址">
+        <el-input v-model="queryForm_Data.xhzz_dz" clearable />
+      </el-form-item>
+      <el-form-item label="图片">
+        <el-input v-model="queryForm_Data.xhzz_tp" clearable />
+      </el-form-item>
+      <el-form-item label="是否可借用">
+        <el-select v-model="queryForm_Data.xhzz_sfkjy" clearable filterable>
+          <el-option label="是" value="1" />
+          <el-option label="否" value="2" />
+        </el-select>
+      </el-form-item> -->
+      <el-form-item label="负责人">
+        <el-input v-model="queryForm_Data.xhzz_fzr" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="负责人ID">
+        <el-input v-model="queryForm_Data.xhzz_fzr_uid" clearable />
+      </el-form-item>
+      <el-form-item label="备注">
+        <el-input v-model="queryForm_Data.xhzz_bz" clearable />
+      </el-form-item> -->
       <el-form-item>
         <el-button @click="handleQueryFormBtn_search" type="primary">搜索</el-button>
         <el-button @click="handleQueryFormBtn_clear" type="warning">清空</el-button>
@@ -291,10 +320,10 @@ init()
     </el-form>
     <div class="divider"></div>
     <div>
-        <import-button :url="URL_CUT_REF"></import-button>
-        <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
-        <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
-        <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
+      <import-button :url="URL_CUT_REF"></import-button>
+      <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
+      <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
+      <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
     </div>
 
     <div class="divider"></div>
@@ -304,21 +333,30 @@ init()
         <el-table-column type="selection"></el-table-column>
         <el-table-column prop="xhzz_cdbh" label="场地编号" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhzz_cdmc" label="场地名称" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhzz_cdlb" label="场地类别" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhzl_flbm" label="场地类别" width="auto" show-overflow-tooltip></el-table-column> -->
+        <el-table-column prop="xhzl_flmc" label="场地类别" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhzz_ssxq" label="所属校区" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhzz_zdmj" label="占地面积" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhzz_dz" label="地址" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhzz_tp" label="图片" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhzz_sfkjy" label="是否可借用" width="auto" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="xhzz_tp" label="图片" width="auto" show-overflow-tooltip>
+          <template #default="scope">
+            <table-item-image :src="scope.row.xhzz_tp" class="h-23px"></table-item-image>
+          </template>
+        </el-table-column>
+        <!-- <el-table-column prop="xhzz_sfkjy" label="是否可借用" width="auto" show-overflow-tooltip></el-table-column> -->
         <el-table-column prop="xhzz_fzr" label="负责人" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhzz_fzr_uid" label="负责人ID" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhzz_bz" label="备注" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhzz_fzr_uid" label="负责人ID" width="auto" show-overflow-tooltip></el-table-column> -->
+        <!-- <el-table-column prop="xhzz_bz" label="备注" width="auto" show-overflow-tooltip></el-table-column> -->
         <el-table-column label="操作" fixed="right">
           <template #default="scope">
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary" >审核</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除</el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary">编辑
+            </el-button>
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary">审核
+            </el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary">详情
+            </el-button> -->
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary">删除
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -331,18 +369,46 @@ init()
   </div>
 
   <el-dialog v-model="dialogVisible_addOrEdit" append-to-body destroy-on-close>
-    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit" label-width="120px">
-      <el-form-item label="场地编号" prop="xhzz_cdbh"><el-input v-model="dialogForm_Data.xhzz_cdbh" clearable /></el-form-item>
-      <el-form-item label="场地名称" prop="xhzz_cdmc"><el-input v-model="dialogForm_Data.xhzz_cdmc" clearable /></el-form-item>
-      <el-form-item label="场地类别" prop="xhzz_cdlb"><el-input v-model="dialogForm_Data.xhzz_cdlb" clearable /></el-form-item>
-      <el-form-item label="所属校区" prop="xhzz_ssxq"><el-input v-model="dialogForm_Data.xhzz_ssxq" clearable /></el-form-item>
-      <el-form-item label="占地面积" prop="xhzz_zdmj"><el-input v-model="dialogForm_Data.xhzz_zdmj" clearable /></el-form-item>
-      <el-form-item label="地址" prop="xhzz_dz"><el-input v-model="dialogForm_Data.xhzz_dz" clearable /></el-form-item>
-      <el-form-item label="图片" prop="xhzz_tp"><el-input v-model="dialogForm_Data.xhzz_tp" clearable /></el-form-item>
-      <el-form-item label="是否可借用" prop="xhzz_sfkjy"><el-radio-group v-model="dialogForm_Data.xhzz_sfkjy"><el-radio label="1">是</el-radio><el-radio label="2">否</el-radio></el-radio-group></el-form-item>
-      <el-form-item label="负责人" prop="xhzz_fzr"><el-input v-model="dialogForm_Data.xhzz_fzr" clearable /></el-form-item>
-      <el-form-item label="负责人ID" prop="xhzz_fzr_uid"><el-input v-model="dialogForm_Data.xhzz_fzr_uid" clearable /></el-form-item>
-      <el-form-item label="备注" prop="xhzz_bz"><el-input v-model="dialogForm_Data.xhzz_bz" clearable /></el-form-item>
+    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit"
+      label-width="120px">
+      <el-form-item label="场地编号" prop="xhzz_cdbh">
+        <el-input v-model="dialogForm_Data.xhzz_cdbh" clearable />
+      </el-form-item>
+      <el-form-item label="场地名称" prop="xhzz_cdmc">
+        <el-input v-model="dialogForm_Data.xhzz_cdmc" clearable />
+      </el-form-item>
+      <el-form-item label="场地类别" prop="xhzl_flbm">
+        <!-- <el-input v-model="dialogForm_Data.xhzl_flbm" clearable /> -->
+        <remote-select url="/xdhq/hqgl_zyyylb/index" :fields="['xhzl_flbm','xhzl_flmc']" v-model="dialogForm_Data.xhzl_flbm" v-model:modelName="dialogForm_Data.xhzl_flmc"></remote-select>
+      </el-form-item>
+      <el-form-item label="所属校区" prop="xhzz_ssxq">
+        <el-input v-model="dialogForm_Data.xhzz_ssxq" clearable />
+      </el-form-item>
+      <el-form-item label="占地面积" prop="xhzz_zdmj">
+        <el-input v-model="dialogForm_Data.xhzz_zdmj" clearable ><template #append>平方米</template></el-input>
+      </el-form-item>
+      <el-form-item label="地址" prop="xhzz_dz">
+        <el-input v-model="dialogForm_Data.xhzz_dz" clearable />
+      </el-form-item>
+      <el-form-item label="图片" prop="xhzz_tp">
+        <!-- <el-input v-model="dialogForm_Data.xhzz_tp" clearable /> -->
+        <file-upload v-model:part="dialogForm_Data.xhzz_tp" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="是否可借用" prop="xhzz_sfkjy">
+        <el-radio-group v-model="dialogForm_Data.xhzz_sfkjy">
+          <el-radio label="1">是</el-radio>
+          <el-radio label="2">否</el-radio>
+        </el-radio-group>
+      </el-form-item> -->
+      <el-form-item label="负责人" prop="xhzz_fzr">
+        <el-input v-model="dialogForm_Data.xhzz_fzr" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="负责人ID" prop="xhzz_fzr_uid">
+        <el-input v-model="dialogForm_Data.xhzz_fzr_uid" clearable />
+      </el-form-item> -->
+      <el-form-item label="备注" prop="xhzz_bz">
+        <el-input v-model="dialogForm_Data.xhzz_bz" clearable />
+      </el-form-item>
       <div class="flex justify-center">
         <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit')" type="primary">提交</el-button>
         <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button>

+ 144 - 112
src/pages/xdhq/zyyy/cdlbgl.vue

@@ -18,7 +18,7 @@ const router = useRouter()
 
 // #region (variable)
 const loading_table = ref(true)
-let whichDialogSubmit:'add'|'edit'
+let whichDialogSubmit: 'add' | 'edit'
 // #endregion
 
 // #region (type)
@@ -39,40 +39,40 @@ type TYPE_TABLE_FIELD = {
 const queryForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
 const handleQueryFormBtn_search = () => {
-      queryApi()
-    }
+  queryApi()
+}
 const handleQueryFormBtn_clear = () => {
-      queryForm_Data.value = {}
-    }
+  queryForm_Data.value = {}
+}
 // #endregion
 
 // #region (table selection)
 const multipleSelection = ref<TYPE_TABLE_FIELD[]>([])
-const handleSelectionChange = (val:TYPE_TABLE_FIELD[]) => {
+const handleSelectionChange = (val: TYPE_TABLE_FIELD[]) => {
   multipleSelection.value = val
 }
 // #endregion
 
 // #region (table row)
 const handleTableRowBtn_import = async ({ file }: { file: File }) => {
-      const res = await API_MAP['import']({ file })
-      if(res.code === '1'){
-        queryApi()
-        ElMessage.success(res.msg)
-      }
-    }
+  const res = await API_MAP['import']({ file })
+  if (res.code === '1') {
+    queryApi()
+    ElMessage.success(res.msg)
+  }
+}
 const handleTableRowBtn_export = () => {
-      exportApi()
-    }
+  exportApi()
+}
 const handleTableRowBtn_add = () => {
-      whichDialogSubmit = 'add'
-      dialogForm_Data.value = {}
-      dialogVisible_addOrEdit.value = true
-    }
+  whichDialogSubmit = 'add'
+  dialogForm_Data.value = {}
+  dialogVisible_addOrEdit.value = true
+}
 const handleTableRowBtn_delete = async () => {
-      await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD)=>item[TABLE_KEY]))
-      queryApi()
-    }
+  await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD) => item[TABLE_KEY]))
+  queryApi()
+}
 // #endregion
 
 // #region (table body)
@@ -80,32 +80,32 @@ const tableData = ref<TYPE_TABLE_FIELD[]>([])
 const DetailName = '-ZYYY-CDLBGL'
 const DetailParam = 'aid'
 
-const handleTableColBtn_edit = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      const res = await detailApi(scope.row[TABLE_KEY])
-      dialogForm_Data.value = (res.data.one_info)
-      dialogVisible_addOrEdit.value = true
-    }
-const handleTableColBtn_audit = (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
-      dialogVisible_audit.value = true
-    }
-const handleTableColBtn_detail = (scope:{row:TYPE_TABLE_FIELD}) => {
-      router.push({ name:DetailName, params:{ [DetailParam]:scope.row[TABLE_KEY]} })
-    }
-const handleTableColBtn_delete = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      await deleteApi(scope.row[TABLE_KEY])
-      queryApi()
-    }
+const handleTableColBtn_edit = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  const res = await detailApi(scope.row[TABLE_KEY])
+  dialogForm_Data.value = (res.data.one_info)
+  dialogVisible_addOrEdit.value = true
+}
+const handleTableColBtn_audit = (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
+  dialogVisible_audit.value = true
+}
+const handleTableColBtn_detail = (scope: { row: TYPE_TABLE_FIELD }) => {
+  router.push({ name: DetailName, params: { [DetailParam]: scope.row[TABLE_KEY] } })
+}
+const handleTableColBtn_delete = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  await deleteApi(scope.row[TABLE_KEY])
+  queryApi()
+}
 // #endregion
 
 // #region (pagination)
 const total = ref(0)
 const limit = ref(10)
 
-const currentPage=ref(1) 
-function handleCurrentChange(){
+const currentPage = ref(1)
+function handleCurrentChange() {
   queryApi()
 }
 // #endregion
@@ -113,57 +113,57 @@ function handleCurrentChange(){
 // #region (dialog base)
 const dialogForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
-const handleDialogFormBtn_submit = async (formRefKey:string,extendData?:Partial<TYPE_TABLE_FIELD>) => {
-      const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid:boolean) => valid)
-      if (isValid) {
-        await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({...dialogForm_Data.value,...extendData}))
-        handleDialogFormBtn_cancel()
-        queryApi()
-      }
-    }
-const handleDialogFormBtn_cancel = (formRefKey?:string) => {
-      dialogVisible_addOrEdit.value = false
-      dialogVisible_audit.value = false
-    }
+const handleDialogFormBtn_submit = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
+  const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
+  if (isValid) {
+    await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({ ...dialogForm_Data.value, ...extendData }))
+    handleDialogFormBtn_cancel()
+    queryApi()
+  }
+}
+const handleDialogFormBtn_cancel = (formRefKey?: string) => {
+  dialogVisible_addOrEdit.value = false
+  dialogVisible_audit.value = false
+}
 // #endregion
 
 // #region (dialog add/edit)
 const dialogVisible_addOrEdit = ref<boolean>(false)
 
-const dialogForm_Ref_addOrEdit= ref<FormInstance>()
-const dialogForm_Rules_addOrEdit = reactive({ 
-  'xhzl_flbm':{required : true,message:'分类编码不能为空',trigger:'submit'},
-  'xhzl_flmc':{required : true,message:'分类名称不能为空',trigger:'submit'},
-  'xhzl_px':{required : true,message:'排序不能为空',trigger:'submit'},
-  'xhzl_tp':{required : true,message:'图片不能为空',trigger:'submit'},
-  'xhzl_sfqy':{required : true,message:'是否启用不能为空',trigger:'submit'},
+const dialogForm_Ref_addOrEdit = ref<FormInstance>()
+const dialogForm_Rules_addOrEdit = reactive({
+  'xhzl_flbm': { required: true, message: '分类编码不能为空', trigger: 'submit' },
+  'xhzl_flmc': { required: true, message: '分类名称不能为空', trigger: 'submit' },
+  'xhzl_px': { required: true, message: '排序不能为空', trigger: 'submit' },
+  'xhzl_tp': { required: true, message: '图片不能为空', trigger: 'submit' },
+  'xhzl_sfqy': { required: true, message: '是否启用不能为空', trigger: 'submit' },
 })
 // #endregion
 
 // #region (dialog audit)
 const dialogVisible_audit = ref<boolean>(false)
 
-const dialogForm_Field_audit= reactive<{
-  FLAG:keyof TYPE_TABLE_FIELD,
-  REASON?:keyof TYPE_TABLE_FIELD
+const dialogForm_Field_audit = reactive<{
+  FLAG: keyof TYPE_TABLE_FIELD,
+  REASON?: keyof TYPE_TABLE_FIELD
 }>({
-  FLAG:'xhzl_id',
+  FLAG: 'xhzl_id',
   // REASON:'xhzl_id'
 })
 
-const dialogForm_Ref_audit= ref<FormInstance>()
-const dialogForm_Rules_audit = reactive<FormRules>({ 
-  'xhzl_flbm':{required : true ,message:'分类编码不能为空',trigger:'submit'},
-  'xhzl_flmc':{required : true ,message:'分类名称不能为空',trigger:'submit'},
-  'xhzl_px':{required : true ,message:'排序不能为空',trigger:'submit'},
-  'xhzl_tp':{required : true ,message:'图片不能为空',trigger:'submit'},
-  'xhzl_sfqy':{required : true ,message:'是否启用不能为空',trigger:'submit'},
+const dialogForm_Ref_audit = ref<FormInstance>()
+const dialogForm_Rules_audit = reactive<FormRules>({
+  'xhzl_flbm': { required: true, message: '分类编码不能为空', trigger: 'submit' },
+  'xhzl_flmc': { required: true, message: '分类名称不能为空', trigger: 'submit' },
+  'xhzl_px': { required: true, message: '排序不能为空', trigger: 'submit' },
+  'xhzl_tp': { required: true, message: '图片不能为空', trigger: 'submit' },
+  'xhzl_sfqy': { required: true, message: '是否启用不能为空', trigger: 'submit' },
 })
 
 // #endregion
 
 // #region (request api): 
-function queryApi(){
+function queryApi() {
   loading_table.value = true
   return request({
     url: URL_CUT + '/index',
@@ -172,7 +172,7 @@ function queryApi(){
       limit: limit.value,
       page: currentPage.value
     }
-  }).then((response:{data:{total_rows:string,page_data:TYPE_TABLE_FIELD[]}}) => {
+  }).then((response: { data: { total_rows: string, page_data: TYPE_TABLE_FIELD[] } }) => {
     const { data } = response
     total.value = parseInt(data.total_rows)
     tableData.value = data.page_data
@@ -182,44 +182,44 @@ function queryApi(){
   })
 }
 
-function addApi(data:TYPE_TABLE_FIELD){
+function addApi(data: TYPE_TABLE_FIELD) {
   return request({
     url: URL_CUT + '/add',
     data: {
-      [URL_SUBMIT_KEY]:data,
+      [URL_SUBMIT_KEY]: data,
     }
   })
 }
 
-function editApi(data:Partial<TYPE_TABLE_FIELD>){
+function editApi(data: Partial<TYPE_TABLE_FIELD>) {
   return request({
     url: URL_CUT + '/edit',
     data: {
-      [TABLE_KEY]:data[TABLE_KEY],
-      [URL_SUBMIT_KEY]:pick(data,['xhzl_flbm','xhzl_flmc','xhzl_px','xhzl_tp','xhzl_sfqy',]),
+      [TABLE_KEY]: data[TABLE_KEY],
+      [URL_SUBMIT_KEY]: pick(data, ['xhzl_flbm', 'xhzl_flmc', 'xhzl_px', 'xhzl_tp', 'xhzl_sfqy',]),
     }
   })
 }
 
-function deleteApi(id:string|string[]){
+function deleteApi(id: string | string[]) {
   return request({
     url: URL_CUT + '/delete',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function detailApi(id:string){
+function detailApi(id: string) {
   return request({
     url: URL_CUT + '/detail',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function importApi(data:{file:File}){  
+function importApi(data: { file: File }) {
   return request({
     $type: 'import',
     url: URL_CUT + '/import',
@@ -227,23 +227,23 @@ function importApi(data:{file:File}){
   } as AxiosRequestConfig)
 }
 
-function exportApi(){
+function exportApi() {
   return download(URL_CUT + '/index', queryForm_Data.value)
 }
 
 const API_MAP = {
-  query:queryApi,
-  add:addApi,
-  edit:editApi,
-  delete:deleteApi,
-  detail:detailApi,
-  import:importApi,
-  export:exportApi,
+  query: queryApi,
+  add: addApi,
+  edit: editApi,
+  delete: deleteApi,
+  detail: detailApi,
+  import: importApi,
+  export: exportApi,
 }
 // #endregion
 
 // #region (page init)
-function init(){
+function init() {
   queryApi()
 }
 init()
@@ -255,11 +255,20 @@ init()
   <div class="card flex-grow flex flex-col">
     <el-form inline :model="queryForm_Data">
       <!-- <el-form-item label="关键字"><el-input v-model="queryForm_Data.keyword" ></el-input></el-form-item> -->
-      <el-form-item label="分类编码"><el-input v-model="queryForm_Data.xhzl_flbm" clearable /></el-form-item>
-      <el-form-item label="分类名称"><el-input v-model="queryForm_Data.xhzl_flmc" clearable /></el-form-item>
-      <el-form-item label="排序"><el-input v-model="queryForm_Data.xhzl_px" clearable /></el-form-item>
-      <el-form-item label="图片"><el-input v-model="queryForm_Data.xhzl_tp" clearable /></el-form-item>
-      <el-form-item label="是否启用"><el-select v-model="queryForm_Data.xhzl_sfqy" clearable filterable ><el-option label="是" value="1" /><el-option label="否" value="2" /></el-select></el-form-item>
+      <el-form-item label="分类编码">
+        <el-input v-model="queryForm_Data.xhzl_flbm" clearable />
+      </el-form-item>
+      <el-form-item label="分类名称">
+        <el-input v-model="queryForm_Data.xhzl_flmc" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="排序"><el-input v-model="queryForm_Data.xhzl_px" clearable /></el-form-item>
+      <el-form-item label="图片"><el-input v-model="queryForm_Data.xhzl_tp" clearable /></el-form-item> -->
+      <el-form-item label="是否启用">
+        <el-select v-model="queryForm_Data.xhzl_sfqy" clearable filterable>
+          <el-option label="是" value="1" />
+          <el-option label="否" value="2" />
+        </el-select>
+      </el-form-item>
       <el-form-item>
         <el-button @click="handleQueryFormBtn_search" type="primary">搜索</el-button>
         <el-button @click="handleQueryFormBtn_clear" type="warning">清空</el-button>
@@ -267,10 +276,10 @@ init()
     </el-form>
     <div class="divider"></div>
     <div>
-        <import-button :url="URL_CUT_REF"></import-button>
-        <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
-        <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
-        <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
+      <import-button :url="URL_CUT_REF"></import-button>
+      <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
+      <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
+      <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
     </div>
 
     <div class="divider"></div>
@@ -281,14 +290,22 @@ init()
         <el-table-column prop="xhzl_flbm" label="分类编码" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhzl_flmc" label="分类名称" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhzl_px" label="排序" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhzl_tp" label="图片" width="auto" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="xhzl_tp" label="图片" width="auto" show-overflow-tooltip>
+          <template #default="scope">
+            <table-item-image :src="scope.row.xhzl_tp" class="h-23px"></table-item-image>
+          </template>
+        </el-table-column>
         <el-table-column prop="xhzl_sfqy" label="是否启用" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column label="操作" fixed="right">
           <template #default="scope">
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary" >审核</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除</el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary">编辑
+            </el-button>
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary">审核
+            </el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary">详情
+            </el-button> -->
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary">删除
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -301,12 +318,27 @@ init()
   </div>
 
   <el-dialog v-model="dialogVisible_addOrEdit" append-to-body destroy-on-close>
-    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit" label-width="120px">
-      <el-form-item label="分类编码" prop="xhzl_flbm"><el-input v-model="dialogForm_Data.xhzl_flbm" clearable /></el-form-item>
-      <el-form-item label="分类名称" prop="xhzl_flmc"><el-input v-model="dialogForm_Data.xhzl_flmc" clearable /></el-form-item>
-      <el-form-item label="排序" prop="xhzl_px"><el-input v-model="dialogForm_Data.xhzl_px" clearable /></el-form-item>
-      <el-form-item label="图片" prop="xhzl_tp"><el-input v-model="dialogForm_Data.xhzl_tp" clearable /></el-form-item>
-      <el-form-item label="是否启用" prop="xhzl_sfqy"><el-radio-group v-model="dialogForm_Data.xhzl_sfqy"><el-radio label="1">是</el-radio><el-radio label="2">否</el-radio></el-radio-group></el-form-item>
+    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit"
+      label-width="120px">
+      <el-form-item label="分类编码" prop="xhzl_flbm">
+        <el-input v-model="dialogForm_Data.xhzl_flbm" clearable />
+      </el-form-item>
+      <el-form-item label="分类名称" prop="xhzl_flmc">
+        <el-input v-model="dialogForm_Data.xhzl_flmc" clearable />
+      </el-form-item>
+      <el-form-item label="排序" prop="xhzl_px">
+        <el-input v-model="dialogForm_Data.xhzl_px" clearable />
+      </el-form-item>
+      <el-form-item label="图片" prop="xhzl_tp">
+        <!-- <el-input v-model="dialogForm_Data.xhzl_tp" clearable /> -->
+        <file-upload v-model:part="dialogForm_Data.xhzl_tp" clearable />
+      </el-form-item>
+      <el-form-item label="是否启用" prop="xhzl_sfqy">
+        <el-radio-group v-model="dialogForm_Data.xhzl_sfqy">
+          <el-radio label="1">是</el-radio>
+          <el-radio label="2">否</el-radio>
+        </el-radio-group>
+      </el-form-item>
       <div class="flex justify-center">
         <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit')" type="primary">提交</el-button>
         <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button>

+ 188 - 136
src/pages/xdhq/zyyy/shgl.vue

@@ -18,12 +18,13 @@ const router = useRouter()
 
 // #region (variable)
 const loading_table = ref(true)
-let whichDialogSubmit:'add'|'edit'
+let whichDialogSubmit: 'add' | 'edit'
 // #endregion
 
 // #region (type)
 type TYPE_TABLE_FIELD = {
   [TABLE_KEY]: string;
+  'xhzz_cdbh': string; // 场地编号
   'xhz_cdmc': string; // 场地名称
   'xhz_ssbm': string; // 所属部门
   'xhz_jyr': string; // 借用人
@@ -43,40 +44,40 @@ type TYPE_TABLE_FIELD = {
 const queryForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
 const handleQueryFormBtn_search = () => {
-      queryApi()
-    }
+  queryApi()
+}
 const handleQueryFormBtn_clear = () => {
-      queryForm_Data.value = {}
-    }
+  queryForm_Data.value = {}
+}
 // #endregion
 
 // #region (table selection)
 const multipleSelection = ref<TYPE_TABLE_FIELD[]>([])
-const handleSelectionChange = (val:TYPE_TABLE_FIELD[]) => {
+const handleSelectionChange = (val: TYPE_TABLE_FIELD[]) => {
   multipleSelection.value = val
 }
 // #endregion
 
 // #region (table row)
 const handleTableRowBtn_import = async ({ file }: { file: File }) => {
-      const res = await API_MAP['import']({ file })
-      if(res.code === '1'){
-        queryApi()
-        ElMessage.success(res.msg)
-      }
-    }
+  const res = await API_MAP['import']({ file })
+  if (res.code === '1') {
+    queryApi()
+    ElMessage.success(res.msg)
+  }
+}
 const handleTableRowBtn_export = () => {
-      exportApi()
-    }
+  exportApi()
+}
 const handleTableRowBtn_add = () => {
-      whichDialogSubmit = 'add'
-      dialogForm_Data.value = {}
-      dialogVisible_addOrEdit.value = true
-    }
+  whichDialogSubmit = 'add'
+  dialogForm_Data.value = {}
+  dialogVisible_addOrEdit.value = true
+}
 const handleTableRowBtn_delete = async () => {
-      await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD)=>item[TABLE_KEY]))
-      queryApi()
-    }
+  await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD) => item[TABLE_KEY]))
+  queryApi()
+}
 // #endregion
 
 // #region (table body)
@@ -84,32 +85,32 @@ const tableData = ref<TYPE_TABLE_FIELD[]>([])
 const DetailName = '-ZYYY-SHGL'
 const DetailParam = 'aid'
 
-const handleTableColBtn_edit = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      const res = await detailApi(scope.row[TABLE_KEY])
-      dialogForm_Data.value = (res.data.one_info)
-      dialogVisible_addOrEdit.value = true
-    }
-const handleTableColBtn_audit = (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
-      dialogVisible_audit.value = true
-    }
-const handleTableColBtn_detail = (scope:{row:TYPE_TABLE_FIELD}) => {
-      router.push({ name:DetailName, params:{ [DetailParam]:scope.row[TABLE_KEY]} })
-    }
-const handleTableColBtn_delete = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      await deleteApi(scope.row[TABLE_KEY])
-      queryApi()
-    }
+const handleTableColBtn_edit = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  const res = await detailApi(scope.row[TABLE_KEY])
+  dialogForm_Data.value = (res.data.one_info)
+  dialogVisible_addOrEdit.value = true
+}
+const handleTableColBtn_audit = (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
+  dialogVisible_audit.value = true
+}
+const handleTableColBtn_detail = (scope: { row: TYPE_TABLE_FIELD }) => {
+  router.push({ name: DetailName, params: { [DetailParam]: scope.row[TABLE_KEY] } })
+}
+const handleTableColBtn_delete = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  await deleteApi(scope.row[TABLE_KEY])
+  queryApi()
+}
 // #endregion
 
 // #region (pagination)
 const total = ref(0)
-const limit = ref(10)
+const limit = ref(100)
 
-const currentPage=ref(1) 
-function handleCurrentChange(){
+const currentPage = ref(1)
+function handleCurrentChange() {
   queryApi()
 }
 // #endregion
@@ -117,65 +118,65 @@ function handleCurrentChange(){
 // #region (dialog base)
 const dialogForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
-const handleDialogFormBtn_submit = async (formRefKey:string,extendData?:Partial<TYPE_TABLE_FIELD>) => {
-      const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid:boolean) => valid)
-      if (isValid) {
-        await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({...dialogForm_Data.value,...extendData}))
-        handleDialogFormBtn_cancel()
-        queryApi()
-      }
-    }
-const handleDialogFormBtn_cancel = (formRefKey?:string) => {
-      dialogVisible_addOrEdit.value = false
-      dialogVisible_audit.value = false
-    }
+const handleDialogFormBtn_submit = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
+  const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
+  if (isValid) {
+    await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({ ...dialogForm_Data.value, ...extendData }))
+    handleDialogFormBtn_cancel()
+    queryApi()
+  }
+}
+const handleDialogFormBtn_cancel = (formRefKey?: string) => {
+  dialogVisible_addOrEdit.value = false
+  dialogVisible_audit.value = false
+}
 // #endregion
 
 // #region (dialog add/edit)
 const dialogVisible_addOrEdit = ref<boolean>(false)
 
-const dialogForm_Ref_addOrEdit= ref<FormInstance>()
-const dialogForm_Rules_addOrEdit = reactive({ 
-  'xhz_cdmc':{required : true,message:'场地名称不能为空',trigger:'submit'},
-  'xhz_ssbm':{required : true,message:'所属部门不能为空',trigger:'submit'},
-  'xhz_jyr':{required : true,message:'借用人不能为空',trigger:'submit'},
-  'xhz_yt':{required : true,message:'用途不能为空',trigger:'submit'},
-  'xhz_pzr':{required : true,message:'批准人不能为空',trigger:'submit'},
-  'xhz_jysj_ks':{required : true,message:'借用时间_开始不能为空',trigger:'submit'},
-  'xhz_jysj_js':{required : true,message:'借用时间_结束不能为空',trigger:'submit'},
-  'xhz_zt':{required : true,message:'状态不能为空',trigger:'submit'},
-  'xhz_yy':{required : true,message:'原因不能为空',trigger:'submit'},
+const dialogForm_Ref_addOrEdit = ref<FormInstance>()
+const dialogForm_Rules_addOrEdit = reactive({
+  'xhz_cdmc': { required: true, message: '场地名称不能为空', trigger: 'submit' },
+  'xhz_ssbm': { required: true, message: '所属部门不能为空', trigger: 'submit' },
+  'xhz_jyr': { required: true, message: '借用人不能为空', trigger: 'submit' },
+  'xhz_yt': { required: true, message: '用途不能为空', trigger: 'submit' },
+  'xhz_pzr': { required: true, message: '批准人不能为空', trigger: 'submit' },
+  'xhz_jysj_ks': { required: true, message: '借用时间_开始不能为空', trigger: 'submit' },
+  'xhz_jysj_js': { required: true, message: '借用时间_结束不能为空', trigger: 'submit' },
+  'xhz_zt': { required: true, message: '状态不能为空', trigger: 'submit' },
+  'xhz_yy': { required: true, message: '原因不能为空', trigger: 'submit' },
 })
 // #endregion
 
 // #region (dialog audit)
 const dialogVisible_audit = ref<boolean>(false)
 
-const dialogForm_Field_audit= reactive<{
-  FLAG:keyof TYPE_TABLE_FIELD,
-  REASON?:keyof TYPE_TABLE_FIELD
+const dialogForm_Field_audit = reactive<{
+  FLAG: keyof TYPE_TABLE_FIELD,
+  REASON: keyof TYPE_TABLE_FIELD
 }>({
-  FLAG:'xhz_id',
-  // REASON:'xhz_id'
+  FLAG: 'xhz_zt',
+  REASON:'xhz_yy'
 })
 
-const dialogForm_Ref_audit= ref<FormInstance>()
-const dialogForm_Rules_audit = reactive<FormRules>({ 
-  'xhz_cdmc':{required : true ,message:'场地名称不能为空',trigger:'submit'},
-  'xhz_ssbm':{required : true ,message:'所属部门不能为空',trigger:'submit'},
-  'xhz_jyr':{required : true ,message:'借用人不能为空',trigger:'submit'},
-  'xhz_yt':{required : true ,message:'用途不能为空',trigger:'submit'},
-  'xhz_pzr':{required : true ,message:'批准人不能为空',trigger:'submit'},
-  'xhz_jysj_ks':{required : true ,message:'借用时间_开始不能为空',trigger:'submit'},
-  'xhz_jysj_js':{required : true ,message:'借用时间_结束不能为空',trigger:'submit'},
-  'xhz_zt':{required : true ,message:'状态不能为空',trigger:'submit'},
-  'xhz_yy':{required : true ,message:'原因不能为空',trigger:'submit'},
+const dialogForm_Ref_audit = ref<FormInstance>()
+const dialogForm_Rules_audit = reactive<FormRules>({
+  'xhz_cdmc': { required: true, message: '场地名称不能为空', trigger: 'submit' },
+  'xhz_ssbm': { required: true, message: '所属部门不能为空', trigger: 'submit' },
+  'xhz_jyr': { required: true, message: '借用人不能为空', trigger: 'submit' },
+  'xhz_yt': { required: true, message: '用途不能为空', trigger: 'submit' },
+  'xhz_pzr': { required: true, message: '批准人不能为空', trigger: 'submit' },
+  'xhz_jysj_ks': { required: true, message: '借用时间_开始不能为空', trigger: 'submit' },
+  'xhz_jysj_js': { required: true, message: '借用时间_结束不能为空', trigger: 'submit' },
+  'xhz_zt': { required: true, message: '状态不能为空', trigger: 'submit' },
+  'xhz_yy': { required: true, message: '原因不能为空', trigger: 'submit' },
 })
 
 // #endregion
 
 // #region (request api): 
-function queryApi(){
+function queryApi() {
   loading_table.value = true
   return request({
     url: URL_CUT + '/index',
@@ -184,7 +185,7 @@ function queryApi(){
       limit: limit.value,
       page: currentPage.value
     }
-  }).then((response:{data:{total_rows:string,page_data:TYPE_TABLE_FIELD[]}}) => {
+  }).then((response: { data: { total_rows: string, page_data: TYPE_TABLE_FIELD[] } }) => {
     const { data } = response
     total.value = parseInt(data.total_rows)
     tableData.value = data.page_data
@@ -194,44 +195,44 @@ function queryApi(){
   })
 }
 
-function addApi(data:TYPE_TABLE_FIELD){
+function addApi(data: TYPE_TABLE_FIELD) {
   return request({
     url: URL_CUT + '/add',
     data: {
-      [URL_SUBMIT_KEY]:data,
+      [URL_SUBMIT_KEY]: data,
     }
   })
 }
 
-function editApi(data:Partial<TYPE_TABLE_FIELD>){
+function editApi(data: Partial<TYPE_TABLE_FIELD>) {
   return request({
     url: URL_CUT + '/edit',
     data: {
-      [TABLE_KEY]:data[TABLE_KEY],
-      [URL_SUBMIT_KEY]:pick(data,['xhz_cdmc','xhz_ssbm','xhz_jyr','xhz_yt','xhz_pzr','xhz_jysj_ks','xhz_jysj_js','xhz_zt','xhz_yy',]),
+      [TABLE_KEY]: data[TABLE_KEY],
+      [URL_SUBMIT_KEY]: pick(data, ['xhzz_cdbh', 'xhz_cdmc', 'xhz_ssbm', 'xhz_jyr', 'xhz_yt', 'xhz_pzr', 'xhz_jysj_ks', 'xhz_jysj_js', 'xhz_zt', 'xhz_yy',]),
     }
   })
 }
 
-function deleteApi(id:string|string[]){
+function deleteApi(id: string | string[]) {
   return request({
     url: URL_CUT + '/delete',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function detailApi(id:string){
+function detailApi(id: string) {
   return request({
     url: URL_CUT + '/detail',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function importApi(data:{file:File}){  
+function importApi(data: { file: File }) {
   return request({
     $type: 'import',
     url: URL_CUT + '/import',
@@ -239,23 +240,23 @@ function importApi(data:{file:File}){
   } as AxiosRequestConfig)
 }
 
-function exportApi(){
+function exportApi() {
   return download(URL_CUT + '/index', queryForm_Data.value)
 }
 
 const API_MAP = {
-  query:queryApi,
-  add:addApi,
-  edit:editApi,
-  delete:deleteApi,
-  detail:detailApi,
-  import:importApi,
-  export:exportApi,
+  query: queryApi,
+  add: addApi,
+  edit: editApi,
+  delete: deleteApi,
+  detail: detailApi,
+  import: importApi,
+  export: exportApi,
 }
 // #endregion
 
 // #region (page init)
-function init(){
+function init() {
   queryApi()
 }
 init()
@@ -267,27 +268,49 @@ init()
   <div class="card flex-grow flex flex-col">
     <el-form inline :model="queryForm_Data">
       <!-- <el-form-item label="关键字"><el-input v-model="queryForm_Data.keyword" ></el-input></el-form-item> -->
-      <el-form-item label="场地名称"><el-input v-model="queryForm_Data.xhz_cdmc" clearable /></el-form-item>
-      <el-form-item label="所属部门"><el-input v-model="queryForm_Data.xhz_ssbm" clearable /></el-form-item>
-      <el-form-item label="借用人"><el-input v-model="queryForm_Data.xhz_jyr" clearable /></el-form-item>
-      <el-form-item label="用途"><el-input v-model="queryForm_Data.xhz_yt" clearable /></el-form-item>
-      <el-form-item label="批准人"><el-input v-model="queryForm_Data.xhz_pzr" clearable /></el-form-item>
-      <el-form-item label="借用时间_开始"><el-input v-model="queryForm_Data.xhz_jysj_ks" clearable /></el-form-item>
-      <el-form-item label="借用时间_结束"><el-input v-model="queryForm_Data.xhz_jysj_js" clearable /></el-form-item>
-      <el-form-item label="状态"><el-select v-model="queryForm_Data.xhz_zt" clearable filterable ><el-option label="未通过" value="1" /><el-option label="通过" value="2" /></el-select></el-form-item>
-      <el-form-item label="原因"><el-input v-model="queryForm_Data.xhz_yy" clearable /></el-form-item>
+      <el-form-item label="场地名称">
+        <el-input v-model="queryForm_Data.xhz_cdmc" clearable />
+      </el-form-item>
+      <el-form-item label="所属部门">
+        <el-input v-model="queryForm_Data.xhz_ssbm" clearable />
+      </el-form-item>
+      <el-form-item label="借用人">
+        <el-input v-model="queryForm_Data.xhz_jyr" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="用途">
+        <el-input v-model="queryForm_Data.xhz_yt" clearable />
+      </el-form-item> -->
+      <el-form-item label="批准人">
+        <el-input v-model="queryForm_Data.xhz_pzr" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="借用时间_开始">
+        <el-input v-model="queryForm_Data.xhz_jysj_ks" clearable />
+      </el-form-item>
+      <el-form-item label="借用时间_结束">
+        <el-input v-model="queryForm_Data.xhz_jysj_js" clearable />
+      </el-form-item> -->
+      <el-form-item label="状态">
+        <el-select v-model="queryForm_Data.xhz_zt" clearable filterable>
+          <el-option label="通过" value="1" />
+          <el-option label="未通过" value="2" />
+          <el-option label="待审核" value="3" />
+        </el-select>
+      </el-form-item>
+      <!-- <el-form-item label="原因">
+        <el-input v-model="queryForm_Data.xhz_yy" clearable />
+      </el-form-item> -->
       <el-form-item>
         <el-button @click="handleQueryFormBtn_search" type="primary">搜索</el-button>
         <el-button @click="handleQueryFormBtn_clear" type="warning">清空</el-button>
       </el-form-item>
     </el-form>
-    <div class="divider"></div>
+    <!-- <div class="divider"></div>
     <div>
-        <import-button :url="URL_CUT_REF"></import-button>
-        <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
-        <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
-        <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
-    </div>
+      <import-button :url="URL_CUT_REF"></import-button>
+      <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
+      <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
+      <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
+    </div> -->
 
     <div class="divider"></div>
     <div class="flex-auto">
@@ -299,16 +322,23 @@ init()
         <el-table-column prop="xhz_jyr" label="借用人" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhz_yt" label="用途" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhz_pzr" label="批准人" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhz_jysj_ks" label="借用时间_开始" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhz_jysj_js" label="借用时间_结束" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhz_jysj_ks" label="借用时间_开始" width="auto" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="xhz_jysj_js" label="借用时间_结束" width="auto" show-overflow-tooltip></el-table-column> -->
+        <el-table-column label="借用时间" width="auto" show-overflow-tooltip>
+          <template #default="scope"><span>{{ scope.row.xhz_jysj_ks }} - {{ scope.row.xhz_jysj_js }}</span></template>
+        </el-table-column>
         <el-table-column prop="xhz_zt" label="状态" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhz_yy" label="原因" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhz_yy" label="原因" width="auto" show-overflow-tooltip></el-table-column> -->
         <el-table-column label="操作" fixed="right">
           <template #default="scope">
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary" >审核</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除</el-button>
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary">编辑
+            </el-button> -->
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary" :disabled="scope.row.xhz_zt_option_k!=='3'">审核
+            </el-button>
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary">详情
+            </el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary">删除
+            </el-button> -->
           </template>
         </el-table-column>
       </el-table>
@@ -321,16 +351,38 @@ init()
   </div>
 
   <el-dialog v-model="dialogVisible_addOrEdit" append-to-body destroy-on-close>
-    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit" label-width="120px">
-      <el-form-item label="场地名称" prop="xhz_cdmc"><el-input v-model="dialogForm_Data.xhz_cdmc" clearable /></el-form-item>
-      <el-form-item label="所属部门" prop="xhz_ssbm"><el-input v-model="dialogForm_Data.xhz_ssbm" clearable /></el-form-item>
-      <el-form-item label="借用人" prop="xhz_jyr"><el-input v-model="dialogForm_Data.xhz_jyr" clearable /></el-form-item>
-      <el-form-item label="用途" prop="xhz_yt"><el-input v-model="dialogForm_Data.xhz_yt" clearable /></el-form-item>
-      <el-form-item label="批准人" prop="xhz_pzr"><el-input v-model="dialogForm_Data.xhz_pzr" clearable /></el-form-item>
-      <el-form-item label="借用时间_开始" prop="xhz_jysj_ks"><el-input v-model="dialogForm_Data.xhz_jysj_ks" clearable /></el-form-item>
-      <el-form-item label="借用时间_结束" prop="xhz_jysj_js"><el-input v-model="dialogForm_Data.xhz_jysj_js" clearable /></el-form-item>
-      <el-form-item label="状态" prop="xhz_zt"><el-radio-group v-model="dialogForm_Data.xhz_zt"><el-radio label="1">未通过</el-radio><el-radio label="2">通过</el-radio></el-radio-group></el-form-item>
-      <el-form-item label="原因" prop="xhz_yy"><el-input v-model="dialogForm_Data.xhz_yy" clearable /></el-form-item>
+    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit"
+      label-width="120px">
+      <el-form-item label="场地名称" prop="xhz_cdmc">
+        <el-input v-model="dialogForm_Data.xhz_cdmc" clearable />
+      </el-form-item>
+      <el-form-item label="所属部门" prop="xhz_ssbm">
+        <el-input v-model="dialogForm_Data.xhz_ssbm" clearable />
+      </el-form-item>
+      <el-form-item label="借用人" prop="xhz_jyr">
+        <el-input v-model="dialogForm_Data.xhz_jyr" clearable />
+      </el-form-item>
+      <el-form-item label="用途" prop="xhz_yt">
+        <el-input v-model="dialogForm_Data.xhz_yt" clearable />
+      </el-form-item>
+      <el-form-item label="批准人" prop="xhz_pzr">
+        <el-input v-model="dialogForm_Data.xhz_pzr" clearable />
+      </el-form-item>
+      <el-form-item label="借用时间_开始" prop="xhz_jysj_ks">
+        <el-input v-model="dialogForm_Data.xhz_jysj_ks" clearable />
+      </el-form-item>
+      <el-form-item label="借用时间_结束" prop="xhz_jysj_js">
+        <el-input v-model="dialogForm_Data.xhz_jysj_js" clearable />
+      </el-form-item>
+      <el-form-item label="状态" prop="xhz_zt">
+        <el-radio-group v-model="dialogForm_Data.xhz_zt">
+          <el-radio label="1">通过</el-radio>
+          <el-radio label="2">未通过</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="原因" prop="xhz_yy">
+        <el-input v-model="dialogForm_Data.xhz_yy" clearable />
+      </el-form-item>
       <div class="flex justify-center">
         <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit')" type="primary">提交</el-button>
         <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button>
@@ -346,9 +398,9 @@ init()
           <el-radio label="2">未通过</el-radio>
         </el-radio-group>
       </el-form-item>
-      <!-- <el-form-item label="原因" v-show="dialogForm_Data[dialogForm_Field_audit.FLAG] === '1'">
+      <el-form-item label="原因" v-show="dialogForm_Data[dialogForm_Field_audit.FLAG] === '2'">
         <el-input type="textarea" v-model="dialogForm_Data[dialogForm_Field_audit.REASON]" :rows="5" />
-      </el-form-item> -->
+      </el-form-item>
       <div class="flex justify-center">
         <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_audit')" type="primary">提交</el-button>
         <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_audit')" type="default">取消</el-button>

+ 318 - 143
src/pages/xdhq/zyyy/yygl.vue

@@ -18,7 +18,7 @@ const router = useRouter()
 
 // #region (variable)
 const loading_table = ref(true)
-let whichDialogSubmit:'add'|'edit'
+let whichDialogSubmit: 'add' | 'edit'
 // #endregion
 
 // #region (type)
@@ -26,7 +26,8 @@ type TYPE_TABLE_FIELD = {
   [TABLE_KEY]: string;
   'xhzz_cdbh': string; // 场地编号
   'xhzz_cdmc': string; // 场地名称
-  'xhzz_cdlb': string; // 场地类别
+  'xhzl_flbm': string; // 场地类别编号
+  'xhzl_flmc': string; // 场地类别名称
   'xhzz_ssxq': string; // 所属校区
   'xhzz_zdmj': string; // 占地面积
   'xhzz_dz': string; // 地址
@@ -45,73 +46,74 @@ type TYPE_TABLE_FIELD = {
 const queryForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
 const handleQueryFormBtn_search = () => {
-      queryApi()
-    }
+  queryApi()
+}
 const handleQueryFormBtn_clear = () => {
-      queryForm_Data.value = {}
-    }
+  queryForm_Data.value = {}
+}
 // #endregion
 
 // #region (table selection)
 const multipleSelection = ref<TYPE_TABLE_FIELD[]>([])
-const handleSelectionChange = (val:TYPE_TABLE_FIELD[]) => {
+const handleSelectionChange = (val: TYPE_TABLE_FIELD[]) => {
   multipleSelection.value = val
 }
 // #endregion
 
 // #region (table row)
 const handleTableRowBtn_import = async ({ file }: { file: File }) => {
-      const res = await API_MAP['import']({ file })
-      if(res.code === '1'){
-        queryApi()
-        ElMessage.success(res.msg)
-      }
-    }
+  const res = await API_MAP['import']({ file })
+  if (res.code === '1') {
+    queryApi()
+    ElMessage.success(res.msg)
+  }
+}
 const handleTableRowBtn_export = () => {
-      exportApi()
-    }
+  exportApi()
+}
 const handleTableRowBtn_add = () => {
-      whichDialogSubmit = 'add'
-      dialogForm_Data.value = {}
-      dialogVisible_addOrEdit.value = true
-    }
+  whichDialogSubmit = 'add'
+  dialogForm_Data.value = {}
+  dialogVisible_addOrEdit.value = true
+}
 const handleTableRowBtn_delete = async () => {
-      await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD)=>item[TABLE_KEY]))
-      queryApi()
-    }
+  await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD) => item[TABLE_KEY]))
+  queryApi()
+}
 // #endregion
 
 // #region (table body)
 const tableData = ref<TYPE_TABLE_FIELD[]>([])
-const DetailName = '-ZYYY-YYGL'
+const DetailName = '-ZYYY-CDGL'
 const DetailParam = 'aid'
 
-const handleTableColBtn_edit = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      const res = await detailApi(scope.row[TABLE_KEY])
-      dialogForm_Data.value = (res.data.one_info)
-      dialogVisible_addOrEdit.value = true
-    }
-const handleTableColBtn_audit = (scope:{row:TYPE_TABLE_FIELD}) => {
-      whichDialogSubmit = 'edit'
-      dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
-      dialogVisible_audit.value = true
-    }
-const handleTableColBtn_detail = (scope:{row:TYPE_TABLE_FIELD}) => {
-      router.push({ name:DetailName, params:{ [DetailParam]:scope.row[TABLE_KEY]} })
-    }
-const handleTableColBtn_delete = async (scope:{row:TYPE_TABLE_FIELD}) => {
-      await deleteApi(scope.row[TABLE_KEY])
-      queryApi()
-    }
+const handleTableColBtn_edit = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  const res = await detailApi(scope.row[TABLE_KEY])
+  dialogForm_Data.value = (res.data.one_info)
+  dialogVisible_addOrEdit.value = true
+}
+const handleTableColBtn_audit = (scope: { row: TYPE_TABLE_FIELD }) => {
+  whichDialogSubmit = 'edit'
+  dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
+  dialogVisible_audit.value = true
+}
+const handleTableColBtn_detail = (scope: { row: TYPE_TABLE_FIELD }) => {
+  router.push({ name: DetailName, params: { [DetailParam]: scope.row[TABLE_KEY] } })
+}
+const handleTableColBtn_delete = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  await deleteApi(scope.row[TABLE_KEY])
+  queryApi()
+}
+
 // #endregion
 
 // #region (pagination)
 const total = ref(0)
 const limit = ref(10)
 
-const currentPage=ref(1) 
-function handleCurrentChange(){
+const currentPage = ref(1)
+function handleCurrentChange() {
   queryApi()
 }
 // #endregion
@@ -119,69 +121,131 @@ function handleCurrentChange(){
 // #region (dialog base)
 const dialogForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
 
-const handleDialogFormBtn_submit = async (formRefKey:string,extendData?:Partial<TYPE_TABLE_FIELD>) => {
-      const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid:boolean) => valid)
-      if (isValid) {
-        await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({...dialogForm_Data.value,...extendData}))
-        handleDialogFormBtn_cancel()
-        queryApi()
+const handleDialogFormBtn_submit = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
+  const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
+  if (isValid) {
+    await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({ ...dialogForm_Data.value, ...extendData }))
+    handleDialogFormBtn_cancel()
+    queryApi()
+  }
+}
+const handleDialogFormBtn_cancel = (formRefKey?: string) => {
+  dialogVisible_addOrEdit.value = false
+  dialogVisible_audit.value = false
+  dialogVisible_booking.value = false
+}
+// #endregion
+
+// #region (dialog booking)
+type TYPE_TABLE_FIELD_BOOKING = {
+  [TABLE_KEY]: string;
+  'xhzz_cdbh': string; // 场地编号
+  'xhz_cdmc': string; // 场地名称
+  'xhz_ssbm': string; // 所属部门
+  'xhz_jyr': string; // 借用人
+  'xhz_yt': string; // 用途
+  'xhz_pzr': string; // 批准人
+  'xhz_jysj_ks': string; // 借用时间_开始
+  'xhz_jysj_js': string; // 借用时间_结束
+  // 'xhz_zt': string; // 状态
+  'xhz_yy': string; // 原因
+}
+
+const handleTableColBtn_booking = async (scope: { row: TYPE_TABLE_FIELD }) => {
+  dialogForm_Data_booking.value = {
+    xhzz_cdbh:scope.row.xhzz_cdbh,
+    xhz_cdmc:scope.row.xhzz_cdmc,
+  }
+  dialogVisible_booking.value = true
+}
+
+const dialogVisible_booking = ref<boolean>(false)
+
+const dialogForm_Ref_booking = ref<FormInstance>()
+const dialogForm_Rules_booking = reactive({
+  'xhz_cdmc': { required: true, message: '场地名称不能为空', trigger: 'submit' },
+  'xhz_ssbm': { required: true, message: '所属部门不能为空', trigger: 'submit' },
+  'xhz_jyr': { required: true, message: '借用人不能为空', trigger: 'submit' },
+  'xhz_yt': { required: true, message: '用途不能为空', trigger: 'submit' },
+  'xhz_pzr': { required: true, message: '批准人不能为空', trigger: 'submit' },
+  'xhz_jysj_ks': { required: true, message: '借用时间_开始不能为空', trigger: 'submit' },
+  'xhz_jysj_js': { required: true, message: '借用时间_结束不能为空', trigger: 'submit' },
+  'xhz_zt': { required: true, message: '状态不能为空', trigger: 'submit' },
+  'xhz_yy': { required: true, message: '原因不能为空', trigger: 'submit' },
+})
+
+const dialogForm_Data_booking = ref<Partial<TYPE_TABLE_FIELD_BOOKING>>({})
+
+
+const handleDialogFormBtn_submit_booking = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
+  const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
+  if (isValid) {
+    await request({
+      url: '/xdhq/hqgl_zyyy/add',
+      data: {
+        'xdhq_hqgl_zyyy': {
+          ...dialogForm_Data_booking.value,
+          ...extendData
+        }
       }
-    }
-const handleDialogFormBtn_cancel = (formRefKey?:string) => {
-      dialogVisible_addOrEdit.value = false
-      dialogVisible_audit.value = false
-    }
+    })
+    handleDialogFormBtn_cancel()
+  }
+}
 // #endregion
 
 // #region (dialog add/edit)
 const dialogVisible_addOrEdit = ref<boolean>(false)
 
-const dialogForm_Ref_addOrEdit= ref<FormInstance>()
-const dialogForm_Rules_addOrEdit = reactive({ 
-  'xhzz_cdbh':{required : true,message:'场地编号不能为空',trigger:'submit'},
-  'xhzz_cdmc':{required : true,message:'场地名称不能为空',trigger:'submit'},
-  'xhzz_cdlb':{required : true,message:'场地类别不能为空',trigger:'submit'},
-  'xhzz_ssxq':{required : true,message:'所属校区不能为空',trigger:'submit'},
-  'xhzz_zdmj':{required : true,message:'占地面积不能为空',trigger:'submit'},
-  'xhzz_dz':{required : true,message:'地址不能为空',trigger:'submit'},
-  'xhzz_tp':{required : true,message:'图片不能为空',trigger:'submit'},
-  'xhzz_sfkjy':{required : true,message:'是否可借用不能为空',trigger:'submit'},
-  'xhzz_fzr':{required : true,message:'负责人不能为空',trigger:'submit'},
-  'xhzz_fzr_uid':{required : true,message:'负责人ID不能为空',trigger:'submit'},
-  'xhzz_bz':{required : true,message:'备注不能为空',trigger:'submit'},
+const dialogForm_Ref_addOrEdit = ref<FormInstance>()
+const dialogForm_Rules_addOrEdit = reactive({
+  'xhzz_cdbh': { required: true, message: '场地编号不能为空', trigger: 'submit' },
+  'xhzz_cdmc': { required: true, message: '场地名称不能为空', trigger: 'submit' },
+  'xhzl_flbm': { required: true, message: '场地类别不能为空', trigger: 'submit' },
+  'xhzl_flmc': { required: true, message: '场地类别不能为空', trigger: 'submit' },
+
+  'xhzz_ssxq': { required: false, message: '所属校区不能为空', trigger: 'submit' },
+  'xhzz_zdmj': { required: false, message: '占地面积不能为空', trigger: 'submit' },
+  'xhzz_dz': { required: false, message: '地址不能为空', trigger: 'submit' },
+  'xhzz_tp': { required: true, message: '图片不能为空', trigger: 'submit' },
+  'xhzz_sfkjy': { required: true, message: '是否可借用不能为空', trigger: 'submit' },
+  'xhzz_fzr': { required: true, message: '负责人不能为空', trigger: 'submit' },
+  'xhzz_fzr_uid': { required: true, message: '负责人ID不能为空', trigger: 'submit' },
+  'xhzz_bz': { required: false, message: '备注不能为空', trigger: 'submit' },
 })
 // #endregion
 
 // #region (dialog audit)
 const dialogVisible_audit = ref<boolean>(false)
 
-const dialogForm_Field_audit= reactive<{
-  FLAG:keyof TYPE_TABLE_FIELD,
-  REASON?:keyof TYPE_TABLE_FIELD
+const dialogForm_Field_audit = reactive<{
+  FLAG: keyof TYPE_TABLE_FIELD,
+  REASON?: keyof TYPE_TABLE_FIELD
 }>({
-  FLAG:'xhzz_id',
+  FLAG: 'xhzz_id',
   // REASON:'xhzz_id'
 })
 
-const dialogForm_Ref_audit= ref<FormInstance>()
-const dialogForm_Rules_audit = reactive<FormRules>({ 
-  'xhzz_cdbh':{required : true ,message:'场地编号不能为空',trigger:'submit'},
-  'xhzz_cdmc':{required : true ,message:'场地名称不能为空',trigger:'submit'},
-  'xhzz_cdlb':{required : true ,message:'场地类别不能为空',trigger:'submit'},
-  'xhzz_ssxq':{required : true ,message:'所属校区不能为空',trigger:'submit'},
-  'xhzz_zdmj':{required : true ,message:'占地面积不能为空',trigger:'submit'},
-  'xhzz_dz':{required : true ,message:'地址不能为空',trigger:'submit'},
-  'xhzz_tp':{required : true ,message:'图片不能为空',trigger:'submit'},
-  'xhzz_sfkjy':{required : true ,message:'是否可借用不能为空',trigger:'submit'},
-  'xhzz_fzr':{required : true ,message:'负责人不能为空',trigger:'submit'},
-  'xhzz_fzr_uid':{required : true ,message:'负责人ID不能为空',trigger:'submit'},
-  'xhzz_bz':{required : true ,message:'备注不能为空',trigger:'submit'},
+const dialogForm_Ref_audit = ref<FormInstance>()
+const dialogForm_Rules_audit = reactive<FormRules>({
+  'xhzz_cdbh': { required: true, message: '场地编号不能为空', trigger: 'submit' },
+  'xhzz_cdmc': { required: true, message: '场地名称不能为空', trigger: 'submit' },
+  'xhzl_flbm': { required: true, message: '场地类别不能为空', trigger: 'submit' },
+  'xhzz_ssxq': { required: true, message: '所属校区不能为空', trigger: 'submit' },
+  'xhzz_zdmj': { required: true, message: '占地面积不能为空', trigger: 'submit' },
+  'xhzz_dz': { required: true, message: '地址不能为空', trigger: 'submit' },
+  'xhzz_tp': { required: true, message: '图片不能为空', trigger: 'submit' },
+  'xhzz_sfkjy': { required: true, message: '是否可借用不能为空', trigger: 'submit' },
+  'xhzz_fzr': { required: true, message: '负责人不能为空', trigger: 'submit' },
+  'xhzz_fzr_uid': { required: true, message: '负责人ID不能为空', trigger: 'submit' },
+  'xhzz_bz': { required: true, message: '备注不能为空', trigger: 'submit' },
 })
 
+
 // #endregion
 
 // #region (request api): 
-function queryApi(){
+function queryApi() {
   loading_table.value = true
   return request({
     url: URL_CUT + '/index',
@@ -190,7 +254,7 @@ function queryApi(){
       limit: limit.value,
       page: currentPage.value
     }
-  }).then((response:{data:{total_rows:string,page_data:TYPE_TABLE_FIELD[]}}) => {
+  }).then((response: { data: { total_rows: string, page_data: TYPE_TABLE_FIELD[] } }) => {
     const { data } = response
     total.value = parseInt(data.total_rows)
     tableData.value = data.page_data
@@ -200,44 +264,44 @@ function queryApi(){
   })
 }
 
-function addApi(data:TYPE_TABLE_FIELD){
+function addApi(data: TYPE_TABLE_FIELD) {
   return request({
     url: URL_CUT + '/add',
     data: {
-      [URL_SUBMIT_KEY]:data,
+      [URL_SUBMIT_KEY]: data,
     }
   })
 }
 
-function editApi(data:Partial<TYPE_TABLE_FIELD>){
+function editApi(data: Partial<TYPE_TABLE_FIELD>) {
   return request({
     url: URL_CUT + '/edit',
     data: {
-      [TABLE_KEY]:data[TABLE_KEY],
-      [URL_SUBMIT_KEY]:pick(data,['xhzz_cdbh','xhzz_cdmc','xhzz_cdlb','xhzz_ssxq','xhzz_zdmj','xhzz_dz','xhzz_tp','xhzz_sfkjy','xhzz_fzr','xhzz_fzr_uid','xhzz_bz',]),
+      [TABLE_KEY]: data[TABLE_KEY],
+      [URL_SUBMIT_KEY]: pick(data, ['xhzz_cdbh', 'xhzz_cdmc', 'xhzl_flbm', 'xhzl_flmc', 'xhzz_ssxq', 'xhzz_zdmj', 'xhzz_dz', 'xhzz_tp', 'xhzz_sfkjy', 'xhzz_fzr', 'xhzz_fzr_uid', 'xhzz_bz',]),
     }
   })
 }
 
-function deleteApi(id:string|string[]){
+function deleteApi(id: string | string[]) {
   return request({
     url: URL_CUT + '/delete',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function detailApi(id:string){
+function detailApi(id: string) {
   return request({
     url: URL_CUT + '/detail',
     data: {
-      [TABLE_KEY]:id,
+      [TABLE_KEY]: id,
     }
   })
 }
 
-function importApi(data:{file:File}){  
+function importApi(data: { file: File }) {
   return request({
     $type: 'import',
     url: URL_CUT + '/import',
@@ -245,23 +309,23 @@ function importApi(data:{file:File}){
   } as AxiosRequestConfig)
 }
 
-function exportApi(){
+function exportApi() {
   return download(URL_CUT + '/index', queryForm_Data.value)
 }
 
 const API_MAP = {
-  query:queryApi,
-  add:addApi,
-  edit:editApi,
-  delete:deleteApi,
-  detail:detailApi,
-  import:importApi,
-  export:exportApi,
+  query: queryApi,
+  add: addApi,
+  edit: editApi,
+  delete: deleteApi,
+  detail: detailApi,
+  import: importApi,
+  export: exportApi,
 }
 // #endregion
 
 // #region (page init)
-function init(){
+function init() {
   queryApi()
 }
 init()
@@ -273,29 +337,56 @@ init()
   <div class="card flex-grow flex flex-col">
     <el-form inline :model="queryForm_Data">
       <!-- <el-form-item label="关键字"><el-input v-model="queryForm_Data.keyword" ></el-input></el-form-item> -->
-      <el-form-item label="场地编号"><el-input v-model="queryForm_Data.xhzz_cdbh" clearable /></el-form-item>
-      <el-form-item label="场地名称"><el-input v-model="queryForm_Data.xhzz_cdmc" clearable /></el-form-item>
-      <el-form-item label="场地类别"><el-input v-model="queryForm_Data.xhzz_cdlb" clearable /></el-form-item>
-      <el-form-item label="所属校区"><el-input v-model="queryForm_Data.xhzz_ssxq" clearable /></el-form-item>
-      <el-form-item label="占地面积"><el-input v-model="queryForm_Data.xhzz_zdmj" clearable /></el-form-item>
-      <el-form-item label="地址"><el-input v-model="queryForm_Data.xhzz_dz" clearable /></el-form-item>
-      <el-form-item label="图片"><el-input v-model="queryForm_Data.xhzz_tp" clearable /></el-form-item>
-      <el-form-item label="是否可借用"><el-select v-model="queryForm_Data.xhzz_sfkjy" clearable filterable ><el-option label="是" value="1" /><el-option label="否" value="2" /></el-select></el-form-item>
-      <el-form-item label="负责人"><el-input v-model="queryForm_Data.xhzz_fzr" clearable /></el-form-item>
-      <el-form-item label="负责人ID"><el-input v-model="queryForm_Data.xhzz_fzr_uid" clearable /></el-form-item>
-      <el-form-item label="备注"><el-input v-model="queryForm_Data.xhzz_bz" clearable /></el-form-item>
+      <el-form-item label="场地编号">
+        <el-input v-model="queryForm_Data.xhzz_cdbh" clearable />
+      </el-form-item>
+      <el-form-item label="场地名称">
+        <el-input v-model="queryForm_Data.xhzz_cdmc" clearable />
+      </el-form-item>
+      <el-form-item label="场地类别">
+        <!-- <el-input v-model="queryForm_Data.xhzl_flbm" clearable /> -->
+        <remote-select url="/xdhq/hqgl_zyyylb/index" :fields="['xhzl_flbm', 'xhzl_flmc']"
+          v-model="queryForm_Data.xhzl_flbm" v-model:modelName="queryForm_Data.xhzl_flmc"></remote-select>
+      </el-form-item>
+      <!-- <el-form-item label="所属校区">
+        <el-input v-model="queryForm_Data.xhzz_ssxq" clearable />
+      </el-form-item>
+      <el-form-item label="占地面积">
+        <el-input v-model="queryForm_Data.xhzz_zdmj" clearable />
+      </el-form-item>
+      <el-form-item label="地址">
+        <el-input v-model="queryForm_Data.xhzz_dz" clearable />
+      </el-form-item>
+      <el-form-item label="图片">
+        <el-input v-model="queryForm_Data.xhzz_tp" clearable />
+      </el-form-item>
+      <el-form-item label="是否可借用">
+        <el-select v-model="queryForm_Data.xhzz_sfkjy" clearable filterable>
+          <el-option label="是" value="1" />
+          <el-option label="否" value="2" />
+        </el-select>
+      </el-form-item> -->
+      <el-form-item label="负责人">
+        <el-input v-model="queryForm_Data.xhzz_fzr" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="负责人ID">
+        <el-input v-model="queryForm_Data.xhzz_fzr_uid" clearable />
+      </el-form-item>
+      <el-form-item label="备注">
+        <el-input v-model="queryForm_Data.xhzz_bz" clearable />
+      </el-form-item> -->
       <el-form-item>
         <el-button @click="handleQueryFormBtn_search" type="primary">搜索</el-button>
         <el-button @click="handleQueryFormBtn_clear" type="warning">清空</el-button>
       </el-form-item>
     </el-form>
-    <div class="divider"></div>
+    <!-- <div class="divider"></div>
     <div>
-        <import-button :url="URL_CUT_REF"></import-button>
-        <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
-        <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
-        <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
-    </div>
+      <import-button :url="URL_CUT_REF"></import-button>
+      <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
+      <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
+      <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button>
+    </div> -->
 
     <div class="divider"></div>
     <div class="flex-auto">
@@ -304,21 +395,32 @@ init()
         <el-table-column type="selection"></el-table-column>
         <el-table-column prop="xhzz_cdbh" label="场地编号" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhzz_cdmc" label="场地名称" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhzz_cdlb" label="场地类别" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhzl_flbm" label="场地类别" width="auto" show-overflow-tooltip></el-table-column> -->
+        <el-table-column prop="xhzl_flmc" label="场地类别" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhzz_ssxq" label="所属校区" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhzz_zdmj" label="占地面积" width="auto" show-overflow-tooltip></el-table-column>
         <el-table-column prop="xhzz_dz" label="地址" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhzz_tp" label="图片" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhzz_sfkjy" label="是否可借用" width="auto" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="xhzz_tp" label="图片" width="auto" show-overflow-tooltip>
+          <template #default="scope">
+            <table-item-image :src="scope.row.xhzz_tp" class="h-23px"></table-item-image>
+          </template>
+        </el-table-column>
+        <!-- <el-table-column prop="xhzz_sfkjy" label="是否可借用" width="auto" show-overflow-tooltip></el-table-column> -->
         <el-table-column prop="xhzz_fzr" label="负责人" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhzz_fzr_uid" label="负责人ID" width="auto" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="xhzz_bz" label="备注" width="auto" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="xhzz_fzr_uid" label="负责人ID" width="auto" show-overflow-tooltip></el-table-column> -->
+        <!-- <el-table-column prop="xhzz_bz" label="备注" width="auto" show-overflow-tooltip></el-table-column> -->
         <el-table-column label="操作" fixed="right">
           <template #default="scope">
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary" >审核</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button>
-            <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除</el-button>
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary">编辑
+            </el-button> -->
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary">审核
+            </el-button>
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary">详情
+            </el-button> -->
+            <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary">删除
+            </el-button> -->
+            <el-button link :auto-insert-space="false" @click="handleTableColBtn_booking(scope)" type="primary">预约
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -330,19 +432,92 @@ init()
     </div>
   </div>
 
+  <el-dialog v-model="dialogVisible_booking" append-to-body destroy-on-close>
+    <el-form :model="dialogForm_Data_booking" ref="dialogForm_Ref_booking" :rules="dialogForm_Rules_booking"
+      label-width="120px">
+      <el-form-item label="场地编号" prop="xhz_cdmc">
+        <el-input v-model="dialogForm_Data_booking.xhzz_cdbh" disabled />
+      </el-form-item>
+      <el-form-item label="场地名称" prop="xhz_cdmc">
+        <el-input v-model="dialogForm_Data_booking.xhz_cdmc" disabled />
+      </el-form-item>
+      <el-form-item label="所属部门" prop="xhz_ssbm">
+        <el-input v-model="dialogForm_Data_booking.xhz_ssbm" clearable />
+      </el-form-item>
+      <el-form-item label="借用人" prop="xhz_jyr">
+        <el-input v-model="dialogForm_Data_booking.xhz_jyr" clearable />
+      </el-form-item>
+      <el-form-item label="批准人" prop="xhz_pzr">
+        <el-input v-model="dialogForm_Data_booking.xhz_pzr" clearable />
+      </el-form-item>
+      <el-form-item label="借用时间_开始" prop="xhz_jysj_ks">
+        <el-date-picker type="datetime" v-model="dialogForm_Data_booking.xhz_jysj_ks" value-format="YYYY-MM-DD HH:mm:ss" clearable />
+      </el-form-item>
+      <el-form-item label="借用时间_结束" prop="xhz_jysj_js">
+        <el-date-picker type="datetime" v-model="dialogForm_Data_booking.xhz_jysj_js" value-format="YYYY-MM-DD HH:mm:ss" clearable />
+      </el-form-item> 
+      
+      <el-form-item label="用途" prop="xhz_yt">
+        <el-input v-model="dialogForm_Data_booking.xhz_yt" type="textarea" :row="5"  clearable />
+      </el-form-item>
+      <!-- <el-form-item label="状态" prop="xhz_zt">
+        <el-radio-group v-model="dialogForm_Data_booking.xhz_zt">
+          <el-radio label="1">未通过</el-radio>
+          <el-radio label="2">通过</el-radio>
+        </el-radio-group>
+      </el-form-item> -->
+      <!-- <el-form-item label="原因" prop="xhz_yy">
+        <el-input v-model="dialogForm_Data_booking.xhz_yy" type="textarea" :row="5" clearable />
+      </el-form-item> -->
+      <div class="flex justify-center">
+        <el-button @click="handleDialogFormBtn_submit_booking('dialogForm_Ref_booking')" type="primary">提交</el-button>
+        <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_booking')" type="default">取消</el-button>
+      </div>
+    </el-form>
+  </el-dialog>
+
   <el-dialog v-model="dialogVisible_addOrEdit" append-to-body destroy-on-close>
-    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit" label-width="120px">
-      <el-form-item label="场地编号" prop="xhzz_cdbh"><el-input v-model="dialogForm_Data.xhzz_cdbh" clearable /></el-form-item>
-      <el-form-item label="场地名称" prop="xhzz_cdmc"><el-input v-model="dialogForm_Data.xhzz_cdmc" clearable /></el-form-item>
-      <el-form-item label="场地类别" prop="xhzz_cdlb"><el-input v-model="dialogForm_Data.xhzz_cdlb" clearable /></el-form-item>
-      <el-form-item label="所属校区" prop="xhzz_ssxq"><el-input v-model="dialogForm_Data.xhzz_ssxq" clearable /></el-form-item>
-      <el-form-item label="占地面积" prop="xhzz_zdmj"><el-input v-model="dialogForm_Data.xhzz_zdmj" clearable /></el-form-item>
-      <el-form-item label="地址" prop="xhzz_dz"><el-input v-model="dialogForm_Data.xhzz_dz" clearable /></el-form-item>
-      <el-form-item label="图片" prop="xhzz_tp"><el-input v-model="dialogForm_Data.xhzz_tp" clearable /></el-form-item>
-      <el-form-item label="是否可借用" prop="xhzz_sfkjy"><el-radio-group v-model="dialogForm_Data.xhzz_sfkjy"><el-radio label="1">是</el-radio><el-radio label="2">否</el-radio></el-radio-group></el-form-item>
-      <el-form-item label="负责人" prop="xhzz_fzr"><el-input v-model="dialogForm_Data.xhzz_fzr" clearable /></el-form-item>
-      <el-form-item label="负责人ID" prop="xhzz_fzr_uid"><el-input v-model="dialogForm_Data.xhzz_fzr_uid" clearable /></el-form-item>
-      <el-form-item label="备注" prop="xhzz_bz"><el-input v-model="dialogForm_Data.xhzz_bz" clearable /></el-form-item>
+    <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit"
+      label-width="120px">
+      <el-form-item label="场地编号" prop="xhzz_cdbh">
+        <el-input v-model="dialogForm_Data.xhzz_cdbh" clearable />
+      </el-form-item>
+      <el-form-item label="场地名称" prop="xhzz_cdmc">
+        <el-input v-model="dialogForm_Data.xhzz_cdmc" clearable />
+      </el-form-item>
+      <el-form-item label="场地类别" prop="xhzl_flbm">
+        <!-- <el-input v-model="dialogForm_Data.xhzl_flbm" clearable /> -->
+        <remote-select url="/xdhq/hqgl_zyyylb/index" :fields="['xhzl_flbm', 'xhzl_flmc']"
+          v-model="dialogForm_Data.xhzl_flbm" v-model:modelName="dialogForm_Data.xhzl_flmc"></remote-select>
+      </el-form-item>
+      <el-form-item label="所属校区" prop="xhzz_ssxq">
+        <el-input v-model="dialogForm_Data.xhzz_ssxq" clearable />
+      </el-form-item>
+      <el-form-item label="占地面积" prop="xhzz_zdmj">
+        <el-input v-model="dialogForm_Data.xhzz_zdmj" clearable><template #append>平方米</template></el-input>
+      </el-form-item>
+      <el-form-item label="地址" prop="xhzz_dz">
+        <el-input v-model="dialogForm_Data.xhzz_dz" clearable />
+      </el-form-item>
+      <el-form-item label="图片" prop="xhzz_tp">
+        <!-- <el-input v-model="dialogForm_Data.xhzz_tp" clearable /> -->
+        <file-upload v-model:part="dialogForm_Data.xhzz_tp" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="是否可借用" prop="xhzz_sfkjy">
+        <el-radio-group v-model="dialogForm_Data.xhzz_sfkjy">
+          <el-radio label="1">是</el-radio>
+          <el-radio label="2">否</el-radio>
+        </el-radio-group>
+      </el-form-item> -->
+      <el-form-item label="负责人" prop="xhzz_fzr">
+        <el-input v-model="dialogForm_Data.xhzz_fzr" clearable />
+      </el-form-item>
+      <!-- <el-form-item label="负责人ID" prop="xhzz_fzr_uid">
+        <el-input v-model="dialogForm_Data.xhzz_fzr_uid" clearable />
+      </el-form-item> -->
+      <el-form-item label="备注" prop="xhzz_bz">
+        <el-input v-model="dialogForm_Data.xhzz_bz" clearable />
+      </el-form-item>
       <div class="flex justify-center">
         <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit')" type="primary">提交</el-button>
         <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button>

+ 2 - 2
src/router/index.ts

@@ -2,9 +2,9 @@ import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router';
 import { RouteRecordDetailRaw } from './routes.d';
 import { app_ready,app_routes } from '~/store/app';
 
-// import localRoutes from './routes/xdjx';
+import localRoutes from './routes/xdjx';
 // import localRoutes from './routes/xdjy';
-import localRoutes from './routes/xdhq';
+// import localRoutes from './routes/xdhq';
 
 const router = createRouter({
   history: createWebHashHistory(),

+ 1 - 0
vite.config.ts

@@ -10,6 +10,7 @@ import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
 export default defineConfig({
   // base:'/app/xdjx/',
   // base: '/app/xdjy/',
+  // base: '/app/xdhq/',
   resolve: {
     alias: {
       '~': `${path.resolve(__dirname, 'src')}`,