From beca65f4d01ca07c358102a35b949c2a4f277afe Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期三, 24 五月 2023 10:36:27 +0800
Subject: [PATCH] 增加车间监控界面

---
 src/views/dry/DryHerbTypeList.vue |  595 ++++++++++++++++++++++++++++++-----------------------------
 1 files changed, 300 insertions(+), 295 deletions(-)

diff --git a/src/views/dry/DryHerbTypeList.vue b/src/views/dry/DryHerbTypeList.vue
index 2dd3d3e..04ed486 100644
--- a/src/views/dry/DryHerbTypeList.vue
+++ b/src/views/dry/DryHerbTypeList.vue
@@ -1,310 +1,315 @@
 <template>
-  <div>
-    <!--寮曠敤琛ㄦ牸-->
-    <BasicTable @register="registerTable" :rowSelection="rowSelection" :expandedRowKeys="expandedRowKeys"
-      @expand="handleExpand" @fetch-success="onFetchSuccess">
-      <!--鎻掓Ы:table鏍囬-->
-      <template #tableTitle>
-        <a-button type="primary" @click="handleCreate" preIcon="ant-design:plus-outlined"> 鏂板</a-button>
-        <a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 瀵煎嚭</a-button>
-        <j-upload-button type="primary" preIcon="ant-design:import-outlined" @click="onImportXls">瀵煎叆</j-upload-button>
+	<div>
+		<!--寮曠敤琛ㄦ牸-->
+		<BasicTable
+			@register="registerTable"
+			:rowSelection="rowSelection"
+			:expandedRowKeys="expandedRowKeys"
+			@expand="handleExpand"
+			@fetch-success="onFetchSuccess"
+		>
+			<!--鎻掓Ы:table鏍囬-->
+			<template #tableTitle>
+				<a-button type="primary" @click="handleCreate" preIcon="ant-design:plus-outlined"> 鏂板</a-button>
+				<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 瀵煎嚭</a-button>
+				<j-upload-button type="primary" preIcon="ant-design:import-outlined" @click="onImportXls">瀵煎叆</j-upload-button>
 
-        <a-dropdown v-if="selectedRowKeys.length > 0">
-          <template #overlay>
-            <a-menu>
-              <a-menu-item key="1" @click="batchHandleDelete">
-                <Icon icon="ant-design:delete-outlined" />
-                鍒犻櫎
-              </a-menu-item>
-            </a-menu>
-          </template>
-          <a-button>鎵归噺鎿嶄綔
-            <Icon icon="ant-design:down-outlined" />
-          </a-button>
-        </a-dropdown>
-      </template>
-      <!--鎿嶄綔鏍�-->
-      <template #action="{ record }">
-        <TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
-      </template>
-      <!--瀛楁鍥炴樉鎻掓Ы-->
-      <template #htmlSlot="{ text }">
-        <div v-html="text"></div>
-      </template>
-      <!--鐪佸競鍖哄瓧娈靛洖鏄炬彃妲�-->
-      <template #pcaSlot="{ text }">
-        {{ getAreaTextByCode(text) }}
-      </template>
-      <template #fileSlot="{ text }">
-        <span v-if="!text" style="font-size: 12px; font-style: italic">鏃犳枃浠�</span>
-        <a-button v-else :ghost="true" type="primary" preIcon="ant-design:download-outlined" size="small"
-          @click="downloadFile(text)">涓嬭浇</a-button>
-      </template>
-    </BasicTable>
-    <!--瀛楀吀寮圭獥-->
-    <DryHerbTypeModal @register="registerModal" @success="handleSuccess" />
-  </div>
+				<a-dropdown v-if="selectedRowKeys.length > 0">
+					<template #overlay>
+						<a-menu>
+							<a-menu-item key="1" @click="batchHandleDelete">
+								<Icon icon="ant-design:delete-outlined" />
+								鍒犻櫎
+							</a-menu-item>
+						</a-menu>
+					</template>
+					<a-button
+						>鎵归噺鎿嶄綔
+						<Icon icon="ant-design:down-outlined" />
+					</a-button>
+				</a-dropdown>
+			</template>
+			<!--鎿嶄綔鏍�-->
+			<template #action="{ record }">
+				<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
+			</template>
+			<!--瀛楁鍥炴樉鎻掓Ы-->
+			<template #htmlSlot="{ text }">
+				<div v-html="text"></div>
+			</template>
+			<!--鐪佸競鍖哄瓧娈靛洖鏄炬彃妲�-->
+			<template #pcaSlot="{ text }">
+				{{ getAreaTextByCode(text) }}
+			</template>
+			<template #fileSlot="{ text }">
+				<span v-if="!text" style="font-size: 12px; font-style: italic">鏃犳枃浠�</span>
+				<a-button v-else :ghost="true" type="primary" preIcon="ant-design:download-outlined" size="small" @click="downloadFile(text)">涓嬭浇</a-button>
+			</template>
+		</BasicTable>
+		<!--瀛楀吀寮圭獥-->
+		<DryHerbTypeModal @register="registerModal" @success="handleSuccess" />
+	</div>
 </template>
 
 <script lang="ts" name="dry-dryHerbType" setup>
-//ts璇硶
-import { ref, unref } from 'vue'
-import { batchDeleteDryHerbType, deleteDryHerbType, getChildList, getChildListBatch, getExportUrl, getImportUrl, list } from './api/DryHerbType.api'
-import DryHerbTypeModal from './components/DryHerbTypeModal.vue'
-import { columns, searchFormSchema } from './dataDefine/DryHerbType.data'
-import { useModal } from '/@/components/Modal'
-import { BasicTable, TableAction } from '/@/components/Table'
-import { useListPage } from '/@/hooks/system/useListPage'
-import { downloadFile } from '/@/utils/common/renderUtils'
-const expandedRowKeys = ref([])
-//瀛楀吀model
-const [registerModal, { openModal }] = useModal()
-//娉ㄥ唽table鏁版嵁
-const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
-  tableProps: {
-    api: list,
-    title: '鑽潗鍒嗙被',
-    columns,
-    canResize: false,
-    formConfig: {
-      //labelWidth: 120,
-      schemas: searchFormSchema,
-      autoSubmitOnEnter: true,
-      showAdvancedButton: true,
-      fieldMapToNumber: [],
-      fieldMapToTime: [],
-    },
-    actionColumn: {
-      width: 240,
-      fixed: 'right',
-    },
-  },
-  exportConfig: {
-    name: '鑽潗鍒嗙被',
-    url: getExportUrl,
-  },
-  importConfig: {
-    url: getImportUrl,
-    success: importSuccess,
-  },
-})
+	//ts璇硶
+	import { ref, unref } from 'vue'
+	import { batchDeleteDryHerbType, deleteDryHerbType, getChildList, getChildListBatch, getExportUrl, getImportUrl, list } from './api/DryHerbType.api'
+	import DryHerbTypeModal from './components/DryHerbTypeModal.vue'
+	import { columns, searchFormSchema } from './dataDefine/DryHerbType.data'
+	import { useModal } from '/@/components/Modal'
+	import { BasicTable, TableAction } from '/@/components/Table'
+	import { useListPage } from '/@/hooks/system/useListPage'
+	import { downloadFile } from '/@/utils/common/renderUtils'
+	const expandedRowKeys = ref([])
+	//瀛楀吀model
+	const [registerModal, { openModal }] = useModal()
+	//娉ㄥ唽table鏁版嵁
+	const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
+		tableProps: {
+			api: list,
+			title: '鑽潗鍒嗙被',
+			columns,
+			canResize: false,
+			formConfig: {
+				//labelWidth: 120,
+				schemas: searchFormSchema,
+				autoSubmitOnEnter: true,
+				showAdvancedButton: true,
+				fieldMapToNumber: [],
+				fieldMapToTime: [],
+			},
+			actionColumn: {
+				width: 240,
+				fixed: 'right',
+			},
+		},
+		exportConfig: {
+			name: '鑽潗鍒嗙被',
+			url: getExportUrl,
+		},
+		importConfig: {
+			url: getImportUrl,
+			success: importSuccess,
+		},
+	})
 
-const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] =
-  tableContext
+	const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] =
+		tableContext
 
-/**
- * 鏂板浜嬩欢
- */
-function handleCreate() {
-  openModal(true, {
-    isUpdate: false,
-  })
-}
+	/**
+	 * 鏂板浜嬩欢
+	 */
+	function handleCreate() {
+		openModal(true, {
+			isUpdate: false,
+		})
+	}
 
-/**
- * 缂栬緫浜嬩欢
- */
-async function handleEdit(record) {
-  openModal(true, {
-    record,
-    isUpdate: true,
-  })
-}
+	/**
+	 * 缂栬緫浜嬩欢
+	 */
+	async function handleEdit(record) {
+		openModal(true, {
+			record,
+			isUpdate: true,
+		})
+	}
 
-/**
- * 璇︽儏
- */
-async function handleDetail(record) {
-  openModal(true, {
-    record,
-    isUpdate: true,
-    hideFooter: true,
-  })
-}
+	/**
+	 * 璇︽儏
+	 */
+	async function handleDetail(record) {
+		openModal(true, {
+			record,
+			isUpdate: true,
+			hideFooter: true,
+		})
+	}
 
-/**
- * 鍒犻櫎浜嬩欢
- */
-async function handleDelete(record) {
-  await deleteDryHerbType({ id: record.id }, importSuccess)
-}
+	/**
+	 * 鍒犻櫎浜嬩欢
+	 */
+	async function handleDelete(record) {
+		await deleteDryHerbType({ id: record.id }, importSuccess)
+	}
 
-/**
- * 鎵归噺鍒犻櫎浜嬩欢
- */
-async function batchHandleDelete() {
-  const ids = selectedRowKeys.value.filter((item) => !item.includes('loading'))
-  await batchDeleteDryHerbType({ id: ids }, importSuccess)
-}
-/**
- * 瀵煎叆
- */
-function importSuccess() {
-  ; (selectedRowKeys.value = []) && reload()
-}
-/**
- * 娣诲姞涓嬬骇
- */
-function handleAddSub(record) {
-  openModal(true, {
-    record,
-    isUpdate: false,
-  })
-}
-/**
- * 鎴愬姛鍥炶皟
- */
-async function handleSuccess({ isUpdate, values, expandedArr, changeParent }) {
-  if (isUpdate) {
-    if (changeParent) {
-      reload()
-    } else {
-      // 缂栬緫鍥炶皟
-      updateTableDataRecord(values.id, values)
-    }
-  } else {
-    if (!values['id'] || !values['pid']) {
-      //鏂板鏍硅妭鐐�
-      reload()
-    } else {
-      //鏂板瀛愰泦
-      expandedRowKeys.value = []
-      for (let key of unref(expandedArr)) {
-        await expandTreeNode(key)
-      }
-    }
-  }
-}
+	/**
+	 * 鎵归噺鍒犻櫎浜嬩欢
+	 */
+	async function batchHandleDelete() {
+		const ids = selectedRowKeys.value.filter((item) => !item.includes('loading'))
+		await batchDeleteDryHerbType({ id: ids }, importSuccess)
+	}
+	/**
+	 * 瀵煎叆
+	 */
+	function importSuccess() {
+		;(selectedRowKeys.value = []) && reload()
+	}
+	/**
+	 * 娣诲姞涓嬬骇
+	 */
+	function handleAddSub(record) {
+		openModal(true, {
+			record,
+			isUpdate: false,
+		})
+	}
+	/**
+	 * 鎴愬姛鍥炶皟
+	 */
+	async function handleSuccess({ isUpdate, values, expandedArr, changeParent }) {
+		if (isUpdate) {
+			if (changeParent) {
+				reload()
+			} else {
+				// 缂栬緫鍥炶皟
+				updateTableDataRecord(values.id, values)
+			}
+		} else {
+			if (!values['id'] || !values['pid']) {
+				//鏂板鏍硅妭鐐�
+				reload()
+			} else {
+				//鏂板瀛愰泦
+				expandedRowKeys.value = []
+				for (let key of unref(expandedArr)) {
+					await expandTreeNode(key)
+				}
+			}
+		}
+	}
 
-/**
- * 鎺ュ彛璇锋眰鎴愬姛鍚庡洖璋�
- */
-function onFetchSuccess(result) {
-  getDataByResult(result.items) && loadDataByExpandedRows()
-}
-/**
- * 鏍规嵁宸插睍寮�鐨勮鏌ヨ鏁版嵁锛堢敤浜庝繚瀛樺悗鍒锋柊鏃跺紓姝ュ姞杞藉瓙绾х殑鏁版嵁锛�
- */
-async function loadDataByExpandedRows() {
-  if (unref(expandedRowKeys).length > 0) {
-    const res = await getChildListBatch({ parentIds: unref(expandedRowKeys).join(',') })
-    if (res.success && res.result.records.length > 0) {
-      //宸插睍寮�鐨勬暟鎹壒閲忓瓙鑺傜偣
-      let records = res.result.records
-      const listMap = new Map()
-      for (let item of records) {
-        let pid = item['pid']
-        if (unref(expandedRowKeys).includes(pid)) {
-          let mapList = listMap.get(pid)
-          if (mapList == null) {
-            mapList = []
-          }
-          mapList.push(item)
-          listMap.set(pid, mapList)
-        }
-      }
-      let childrenMap = listMap
-      let fn = (list) => {
-        if (list) {
-          list.forEach((data) => {
-            if (unref(expandedRowKeys).includes(data.id)) {
-              data.children = getDataByResult(childrenMap.get(data.id))
-              fn(data.children)
-            }
-          })
-        }
-      }
-      fn(getDataSource())
-    }
-  }
-}
-/**
- * 澶勭悊鏁版嵁闆�
- */
-function getDataByResult(result) {
-  if (result && result.length > 0) {
-    return result.map((item) => {
-      //鍒ゆ柇鏄惁鏍囪浜嗗甫鏈夊瓙鑺傜偣
-      if (item['hasChild'] == '1') {
-        let loadChild = { id: item.id + '_loadChild', name: 'loading...', isLoading: true }
-        item.children = [loadChild]
-      }
-      return item
-    })
-  }
-}
-/**
- *鏍戣妭鐐瑰睍寮�鍚堝苟
- * */
-async function handleExpand(expanded, record) {
-  // 鍒ゆ柇鏄惁鏄睍寮�鐘舵�侊紝灞曞紑鐘舵��(expanded)骞朵笖瀛樺湪瀛愰泦(children)骞朵笖鏈姞杞借繃(isLoading)鐨勫氨鍘绘煡璇㈠瓙鑺傜偣鏁版嵁
-  if (expanded) {
-    expandedRowKeys.value.push(record.id)
-    if (record.children.length > 0 && !!record.children[0].isLoading) {
-      let result = await getChildList({ pid: record.id })
-      result = result.records ? result.records : result
-      if (result && result.length > 0) {
-        record.children = getDataByResult(result)
-      } else {
-        record.children = null
-        record.hasChild = '0'
-      }
-    }
-  } else {
-    let keyIndex = expandedRowKeys.value.indexOf(record.id)
-    if (keyIndex >= 0) {
-      expandedRowKeys.value.splice(keyIndex, 1)
-    }
-  }
-}
-/**
- *鎿嶄綔琛ㄦ牸鍚庡鐞嗘爲鑺傜偣灞曞紑鍚堝苟
- * */
-async function expandTreeNode(key) {
-  let record = findTableDataRecord(key)
-  expandedRowKeys.value.push(key)
-  let result = await getChildList({ pid: key })
-  if (result && result.length > 0) {
-    record.children = getDataByResult(result)
-  } else {
-    record.children = null
-    record.hasChild = '0'
-  }
-  updateTableDataRecord(key, record)
-}
-/**
- * 鎿嶄綔鏍�
- */
-function getTableAction(record) {
-  return [
-    {
-      label: '缂栬緫',
-      onClick: handleEdit.bind(null, record),
-    },
-    {
-      label: '娣诲姞涓嬬骇',
-      onClick: handleAddSub.bind(null, { pid: record.id }),
-    },
-  ]
-}
-/**
- * 涓嬫媺鎿嶄綔鏍�
- */
-function getDropDownAction(record) {
-  return [
-    {
-      label: '璇︽儏',
-      onClick: handleDetail.bind(null, record),
-    },
-    {
-      label: '鍒犻櫎',
-      popConfirm: {
-        title: '纭畾鍒犻櫎鍚�?',
-        confirm: handleDelete.bind(null, record),
-      },
-    },
-  ]
-}
+	/**
+	 * 鎺ュ彛璇锋眰鎴愬姛鍚庡洖璋�
+	 */
+	function onFetchSuccess(result) {
+		getDataByResult(result.items) && loadDataByExpandedRows()
+	}
+	/**
+	 * 鏍规嵁宸插睍寮�鐨勮鏌ヨ鏁版嵁锛堢敤浜庝繚瀛樺悗鍒锋柊鏃跺紓姝ュ姞杞藉瓙绾х殑鏁版嵁锛�
+	 */
+	async function loadDataByExpandedRows() {
+		if (unref(expandedRowKeys).length > 0) {
+			const res = await getChildListBatch({ parentIds: unref(expandedRowKeys).join(',') })
+			if (res.success && res.result.records.length > 0) {
+				//宸插睍寮�鐨勬暟鎹壒閲忓瓙鑺傜偣
+				let records = res.result.records
+				const listMap = new Map()
+				for (let item of records) {
+					let pid = item['pid']
+					if (unref(expandedRowKeys).includes(pid)) {
+						let mapList = listMap.get(pid)
+						if (mapList == null) {
+							mapList = []
+						}
+						mapList.push(item)
+						listMap.set(pid, mapList)
+					}
+				}
+				let childrenMap = listMap
+				let fn = (list) => {
+					if (list) {
+						list.forEach((data) => {
+							if (unref(expandedRowKeys).includes(data.id)) {
+								data.children = getDataByResult(childrenMap.get(data.id))
+								fn(data.children)
+							}
+						})
+					}
+				}
+				fn(getDataSource())
+			}
+		}
+	}
+	/**
+	 * 澶勭悊鏁版嵁闆�
+	 */
+	function getDataByResult(result) {
+		if (result && result.length > 0) {
+			return result.map((item) => {
+				//鍒ゆ柇鏄惁鏍囪浜嗗甫鏈夊瓙鑺傜偣
+				if (item['hasChild'] == '1') {
+					let loadChild = { id: item.id + '_loadChild', name: 'loading...', isLoading: true }
+					item.children = [loadChild]
+				}
+				return item
+			})
+		}
+	}
+	/**
+	 *鏍戣妭鐐瑰睍寮�鍚堝苟
+	 * */
+	async function handleExpand(expanded, record) {
+		// 鍒ゆ柇鏄惁鏄睍寮�鐘舵�侊紝灞曞紑鐘舵��(expanded)骞朵笖瀛樺湪瀛愰泦(children)骞朵笖鏈姞杞借繃(isLoading)鐨勫氨鍘绘煡璇㈠瓙鑺傜偣鏁版嵁
+		if (expanded) {
+			expandedRowKeys.value.push(record.id)
+			if (record.children.length > 0 && !!record.children[0].isLoading) {
+				let result = await getChildList({ pid: record.id })
+				result = result.records ? result.records : result
+				if (result && result.length > 0) {
+					record.children = getDataByResult(result)
+				} else {
+					record.children = null
+					record.hasChild = '0'
+				}
+			}
+		} else {
+			let keyIndex = expandedRowKeys.value.indexOf(record.id)
+			if (keyIndex >= 0) {
+				expandedRowKeys.value.splice(keyIndex, 1)
+			}
+		}
+	}
+	/**
+	 *鎿嶄綔琛ㄦ牸鍚庡鐞嗘爲鑺傜偣灞曞紑鍚堝苟
+	 * */
+	async function expandTreeNode(key) {
+		let record = findTableDataRecord(key)
+		expandedRowKeys.value.push(key)
+		let result = await getChildList({ pid: key })
+		if (result && result.length > 0) {
+			record.children = getDataByResult(result)
+		} else {
+			record.children = null
+			record.hasChild = '0'
+		}
+		updateTableDataRecord(key, record)
+	}
+	/**
+	 * 鎿嶄綔鏍�
+	 */
+	function getTableAction(record) {
+		return [
+			{
+				label: '缂栬緫',
+				onClick: handleEdit.bind(null, record),
+			},
+			{
+				label: '娣诲姞涓嬬骇',
+				onClick: handleAddSub.bind(null, { pid: record.id }),
+			},
+		]
+	}
+	/**
+	 * 涓嬫媺鎿嶄綔鏍�
+	 */
+	function getDropDownAction(record) {
+		return [
+			{
+				label: '璇︽儏',
+				onClick: handleDetail.bind(null, record),
+			},
+			{
+				label: '鍒犻櫎',
+				popConfirm: {
+					title: '纭畾鍒犻櫎鍚�?',
+					confirm: handleDelete.bind(null, record),
+				},
+			},
+		]
+	}
 </script>
 
 <style scoped></style>

--
Gitblit v1.9.3