From 12e3a3301ecea615339d67d59b8a411200e21bc8 Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Thu, 26 Feb 2026 10:57:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 applications/task-work-order/src/views/orderView/organizational/userMange/FormDiaLog.vue                    |    0 
 applications/task-work-order/src/views/orderView/deviceInvocation/equipmentResource/equipmentResourceApi.js |    0 
 applications/task-work-order/src/views/orderView/organizational/userMange/index.vue                         |    0 
 applications/task-work-order/src/views/orderView/organizational/roleMange/index.vue                         |    0 
 applications/task-work-order/src/views/orderView/organizational/roleMange/RolePermissionDialog.vue          |   22 +-
 applications/drone-command/src/views/permissionManage/permissionRole/RolePermissionDialog.vue               |   44 +++---
 applications/task-work-order/src/views/orderView/deviceInvocation/deviceCallRecord/index.vue                |  211 ++++++++++++++++++++++++++++++
 applications/task-work-order/src/views/orderView/deviceInvocation/deviceCallRecord/FormDiaLog.vue           |  142 ++++++++++++++++++++
 applications/task-work-order/src/views/orderView/organizational/roleMange/FormDiaLog.vue                    |    0 
 applications/task-work-order/src/views/orderView/deviceInvocation/equipmentResource/FormDiaLog.vue          |    0 
 applications/task-work-order/src/views/orderView/deviceInvocation/equipmentResource/index.vue               |    0 
 11 files changed, 386 insertions(+), 33 deletions(-)

diff --git a/applications/drone-command/src/views/permissionManage/permissionRole/RolePermissionDialog.vue b/applications/drone-command/src/views/permissionManage/permissionRole/RolePermissionDialog.vue
index 37c6736..b76bfe3 100644
--- a/applications/drone-command/src/views/permissionManage/permissionRole/RolePermissionDialog.vue
+++ b/applications/drone-command/src/views/permissionManage/permissionRole/RolePermissionDialog.vue
@@ -20,28 +20,28 @@
 					:props="treeProps"
 				/>
 			</el-tab-pane>
-			<el-tab-pane label="任务工单">
-				<el-tree
-					class="command-tree"
-					ref="workRef"
-					:data="menuGrantListWord"
-					show-checkbox
-					node-key="id"
-					:default-checked-keys="menuTreeObjWork"
-					:props="treeProps"
-				/>
-			</el-tab-pane>
-			<el-tab-pane label="移动app">
-				<el-tree
-					class="command-tree"
-					ref="treeMenuApp"
-					:data="menuGrantListApp"
-					show-checkbox
-					node-key="id"
-					:default-checked-keys="menuTreeObjApp"
-					:props="treeProps"
-				/>
-			</el-tab-pane>
+<!--			<el-tab-pane label="任务工单">-->
+<!--				<el-tree-->
+<!--					class="command-tree"-->
+<!--					ref="workRef"-->
+<!--					:data="menuGrantListWord"-->
+<!--					show-checkbox-->
+<!--					node-key="id"-->
+<!--					:default-checked-keys="menuTreeObjWork"-->
+<!--					:props="treeProps"-->
+<!--				/>-->
+<!--			</el-tab-pane>-->
+<!--			<el-tab-pane label="移动app">-->
+<!--				<el-tree-->
+<!--					class="command-tree"-->
+<!--					ref="treeMenuApp"-->
+<!--					:data="menuGrantListApp"-->
+<!--					show-checkbox-->
+<!--					node-key="id"-->
+<!--					:default-checked-keys="menuTreeObjApp"-->
+<!--					:props="treeProps"-->
+<!--				/>-->
+<!--			</el-tab-pane>-->
 		</el-tabs>
 		<template #footer>
 			<el-button color="#2B2B4C" @click="visible = false">取消</el-button>
diff --git a/applications/task-work-order/src/views/orderView/deviceInvocation/deviceCallRecord/FormDiaLog.vue b/applications/task-work-order/src/views/orderView/deviceInvocation/deviceCallRecord/FormDiaLog.vue
new file mode 100644
index 0000000..ddb6a4f
--- /dev/null
+++ b/applications/task-work-order/src/views/orderView/deviceInvocation/deviceCallRecord/FormDiaLog.vue
@@ -0,0 +1,142 @@
+<template>
+	<el-dialog class="gd-dialog" v-model="visible" :title="dialogTitle" @closed="handleClosed" destroy-on-close
+						 :close-on-click-modal="false">
+		<!--		<div class="detail-row-view" v-if="dialogReadonly">-->
+		<el-table :data="list" class="gd-dialog-table">
+			<el-table-column prop="resultCode" show-overflow-tooltip label="序号" />
+			<el-table-column prop="resultCode" show-overflow-tooltip label="设备状态" />
+			<el-table-column prop="shootTime" show-overflow-tooltip label="发生时间" />
+		</el-table>
+	</el-dialog>
+</template>
+
+<script setup>
+import { computed, onMounted, ref } from 'vue'
+import { ElMessage } from 'element-plus'
+import { add, getUser, update } from '@/api/system/user'
+import { getDeptTree } from '@/api/system/dept'
+import { getRoleTree } from '@/api/system/role'
+import func from '@/utils/func'
+import { saveOperationLog } from '@ztzf/apis'
+import { useRoute } from 'vue-router'
+
+const list = ref([])
+
+const initForm = () => ({
+	account: '',
+	password: '',
+	password2: '',
+	realName: '',
+	phone: '',
+	email: '',
+	sex: null,
+	birthday: '',
+	code: '',
+	roleId: '',
+	deptId: '',
+	// sysType: 6
+})
+
+const treeProps = {
+	label: 'title',
+	children: 'children',
+}
+const deptTreeSelectProps = {
+	label: 'name',
+	value: 'id',
+	children: 'children',
+}
+
+const emit = defineEmits(['success'])
+const formRef = ref(null)
+const formData = ref(initForm())
+const visible = ref(false)
+const dialogMode = ref('add')
+const submitting = ref(false)
+const dialogReadonly = computed(() => dialogMode.value === 'view')
+const dialogTitle = computed(() => {
+	if (dialogMode.value === 'edit') return '编辑'
+	if (dialogMode.value === 'view') return '查看'
+	return '新增'
+})
+const roleTree = ref([])
+const deptTree = ref([])
+const route = useRoute()
+
+const validatePass = (rule, value, callback) => {
+	if (value === '') {
+		callback(new Error('请输入密码'))
+	} else {
+		callback()
+	}
+}
+const validatePass2 = (rule, value, callback) => {
+	if (value === '') {
+		callback(new Error('请再次输入密码'))
+	} else if (value !== formData.value.password) {
+		callback(new Error('两次输入密码不一致'))
+	} else {
+		callback()
+	}
+}
+
+async function getRoleTreeData() {
+	const res = await getRoleTree('000000')
+	roleTree.value = res.data.data
+}
+
+async function getDeptTreeData() {
+	const res = await getDeptTree('000000')
+	deptTree.value = res.data.data
+}
+
+function handleCancel() {
+	visible.value = false
+}
+
+async function loadDetail() {
+	if (!formData.value.id) return
+	const res = await getUser(formData.value.id)
+	const data = res?.data?.data ?? {}
+	if (data.roleId) {
+		data.roleId = func.split(data.roleId)[0] || data.roleId
+	}
+	formData.value = data
+}
+
+function handleClosed() {
+	formData.value = initForm()
+}
+
+async function open({ mode, row } = {}) {
+	dialogMode.value = mode || 'add'
+	visible.value = true
+	if (dialogMode.value === 'add') {
+		formData.value = initForm()
+		return
+	}
+	formData.value = { id: row.id }
+	await loadDetail()
+}
+
+onMounted(() => {
+	getRoleTreeData()
+	getDeptTreeData()
+})
+
+defineExpose({ open })
+</script>
+
+<style scoped lang="scss">
+:deep(.el-select) {
+	width: 100%;
+}
+
+:deep(.el-date-editor) {
+	width: 100%;
+}
+
+:deep(.el-tree-select) {
+	width: 100%;
+}
+</style>
diff --git a/applications/task-work-order/src/views/orderView/deviceInvocation/deviceCallRecord/index.vue b/applications/task-work-order/src/views/orderView/deviceInvocation/deviceCallRecord/index.vue
new file mode 100644
index 0000000..862a156
--- /dev/null
+++ b/applications/task-work-order/src/views/orderView/deviceInvocation/deviceCallRecord/index.vue
@@ -0,0 +1,211 @@
+<template>
+	<basic-container>
+		<el-form ref="queryParamsRef" :model="searchParams" class="gd-search-form">
+			<el-form-item label="登录账号" prop="account">
+				<el-input
+					class="gd-input gray"
+					v-model="searchParams.account"
+					placeholder="请输入"
+					clearable
+					@clear="handleSearch"
+				/>
+			</el-form-item>
+
+			<el-form-item label="用户姓名" prop="realName">
+				<el-input
+					class="gd-input gray"
+					v-model="searchParams.realName"
+					placeholder="请输入"
+					clearable
+					@clear="handleSearch"
+				/>
+			</el-form-item>
+
+			<el-form-item label="所属部门" prop="deptId">
+				<el-tree-select
+					class="gd-select gray"
+					popper-class="gd-select-popper"
+					v-model="searchParams.deptId"
+					:data="deptTree"
+					:props="treeProps"
+					node-key="id"
+					check-strictly
+					clearable
+					@change="handleSearch"
+				/>
+			</el-form-item>
+
+			<el-form-item class="gd-search-actions">
+				<el-button :icon="RefreshRight" @click="resetForm"></el-button>
+				<el-button class="search-btn" :icon="Search" @click="handleSearch"></el-button>
+			</el-form-item>
+		</el-form>
+
+		<div class="gd-table-toolbar">
+			<el-button v-if="permission.orderUser_add" :icon="Plus" color="#4C34FF" type="primary" @click="handleAdd">
+				新增
+			</el-button>
+			<el-button
+				v-if="permission.orderUser_remove"
+				:icon="Delete"
+				:disabled="!selectedIds.length"
+				@click="handleDelete()"
+			>
+				删除
+			</el-button>
+		</div>
+
+		<div class="gd-table-container" v-loading="loading">
+			<div class="gd-table-content gd-table-content-bg">
+				<el-table class="gd-table" :data="list" @selection-change="handleSelectionChange">
+					<el-table-column type="selection" width="46" />
+					<el-table-column type="index" show-overflow-tooltip width="64" label="序号" />
+					<el-table-column prop="account" show-overflow-tooltip label="任务名称" />
+					<el-table-column prop="realName" show-overflow-tooltip label="发起任务部门" />
+					<el-table-column prop="roleName" show-overflow-tooltip label="任务发起人" />
+					<el-table-column prop="deptName" show-overflow-tooltip label="飞行时长" />
+					<el-table-column prop="phone" show-overflow-tooltip label="飞行里程(m)" />
+					<el-table-column prop="phone" show-overflow-tooltip label="执行设备" />
+					<el-table-column prop="phone" show-overflow-tooltip label="计划执行时间" />
+					<el-table-column prop="phone" show-overflow-tooltip label="实际执行时间" />
+					<el-table-column label="操作" class-name="operation-btns" width="180">
+						<template v-slot="{ row }">
+							<el-link  @click="handleView(row)">查看</el-link>
+						</template>
+					</el-table-column>
+				</el-table>
+			</div>
+
+			<div class="gd-pagination-parent">
+				<el-pagination
+					popper-class="gd-select-popper"
+					v-model:current-page="searchParams.current"
+					v-model:page-size="searchParams.size"
+					layout="total, prev, pager, next, sizes"
+					:total="total"
+					@change="getList"
+				/>
+			</div>
+		</div>
+
+		<FormDiaLog ref="dialogRef" @success="getList" />
+	</basic-container>
+</template>
+
+<script setup>
+import { Delete, Plus, RefreshRight, Search } from '@element-plus/icons-vue'
+import { computed, onMounted, ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { getDeptTree } from '@/api/system/dept'
+import { getList as getUserList, remove } from '@/api/system/user'
+import { useStore } from 'vuex'
+import FormDiaLog from './FormDiaLog.vue'
+import { saveOperationLog } from '@ztzf/apis'
+import { useRoute } from 'vue-router'
+
+const initSearchParams = () => ({
+	account: '',
+	realName: '',
+	deptId: '',
+	current: 1,
+	size: 10,
+	// sysType: 6
+})
+
+const searchParams = ref(initSearchParams())
+const loading = ref(true)
+const list = ref([])
+const total = ref(0)
+const selectedIds = ref([])
+const queryParamsRef = ref(null)
+const dialogRef = ref(null)
+const deptTree = ref([])
+const treeProps = {
+	label: 'name',
+	children: 'children',
+}
+const store = useStore()
+const permission = computed(() => store.getters.permission || {})
+const route = useRoute()
+
+async function getList() {
+	loading.value = true
+	try {
+		const res = await getUserList(
+			searchParams.value.current,
+			searchParams.value.size,
+			// searchParams.value.sysType,
+			{
+				account: searchParams.value.account,
+				realName: searchParams.value.realName,
+			},
+			searchParams.value.deptId
+		)
+		list.value = res?.data?.data?.records ?? []
+		total.value = res?.data?.data?.total ?? 0
+	} finally {
+		loading.value = false
+	}
+}
+
+function handleSearch() {
+	searchParams.value.current = 1
+	getList()
+}
+
+function resetForm() {
+	queryParamsRef.value?.resetFields()
+	searchParams.value.current = 1
+	searchParams.value.deptId = ''
+	getList()
+}
+
+function handleAdd() {
+	dialogRef.value?.open({ mode: 'add' })
+}
+
+function handleView(row) {
+	dialogRef.value?.open({ mode: 'view', row: { ...row } })
+}
+
+function handleEdit(row) {
+	dialogRef.value?.open({ mode: 'edit', row: { ...row } })
+}
+
+async function handleDelete(row) {
+	const tips = row ? '该条' : '选中的项'
+	await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', {
+		type: 'warning',
+		customClass: 'command-page-view-message-box',
+		confirmButtonClass: 'command-message-box-confirm',
+		cancelButtonClass: 'command-message-box-cancel',
+	})
+	const ids = row ? row.id : selectedIds.value.join(',')
+	await remove(ids)
+	saveOperationLog({
+		requestUri: route.path,
+		title: `${route.name || '用户管理'}-删除`,
+		type: 1
+	})
+	ElMessage.success('删除成功')
+	selectedIds.value = []
+	getList()
+}
+
+function handleSelectionChange(rows) {
+	selectedIds.value = rows.map(item => item.id)
+}
+
+function getDeptTreeList() {
+	getDeptTree().then(res => {
+		deptTree.value = res?.data?.data ?? []
+	})
+}
+
+onMounted(() => {
+	getList()
+	getDeptTreeList()
+})
+</script>
+
+<style scoped lang="scss"></style>
diff --git a/applications/task-work-order/src/views/orderView/equipmentResource/FormDiaLog.vue b/applications/task-work-order/src/views/orderView/deviceInvocation/equipmentResource/FormDiaLog.vue
similarity index 100%
rename from applications/task-work-order/src/views/orderView/equipmentResource/FormDiaLog.vue
rename to applications/task-work-order/src/views/orderView/deviceInvocation/equipmentResource/FormDiaLog.vue
diff --git a/applications/task-work-order/src/views/orderView/equipmentResource/equipmentResourceApi.js b/applications/task-work-order/src/views/orderView/deviceInvocation/equipmentResource/equipmentResourceApi.js
similarity index 100%
rename from applications/task-work-order/src/views/orderView/equipmentResource/equipmentResourceApi.js
rename to applications/task-work-order/src/views/orderView/deviceInvocation/equipmentResource/equipmentResourceApi.js
diff --git a/applications/task-work-order/src/views/orderView/equipmentResource/index.vue b/applications/task-work-order/src/views/orderView/deviceInvocation/equipmentResource/index.vue
similarity index 100%
rename from applications/task-work-order/src/views/orderView/equipmentResource/index.vue
rename to applications/task-work-order/src/views/orderView/deviceInvocation/equipmentResource/index.vue
diff --git a/applications/task-work-order/src/views/orderView/systemMange/roleMange/FormDiaLog.vue b/applications/task-work-order/src/views/orderView/organizational/roleMange/FormDiaLog.vue
similarity index 100%
rename from applications/task-work-order/src/views/orderView/systemMange/roleMange/FormDiaLog.vue
rename to applications/task-work-order/src/views/orderView/organizational/roleMange/FormDiaLog.vue
diff --git a/applications/task-work-order/src/views/orderView/systemMange/roleMange/RolePermissionDialog.vue b/applications/task-work-order/src/views/orderView/organizational/roleMange/RolePermissionDialog.vue
similarity index 90%
rename from applications/task-work-order/src/views/orderView/systemMange/roleMange/RolePermissionDialog.vue
rename to applications/task-work-order/src/views/orderView/organizational/roleMange/RolePermissionDialog.vue
index 3b14f65..e4312df 100644
--- a/applications/task-work-order/src/views/orderView/systemMange/roleMange/RolePermissionDialog.vue
+++ b/applications/task-work-order/src/views/orderView/organizational/roleMange/RolePermissionDialog.vue
@@ -31,17 +31,17 @@
 					:props="treeProps"
 				/>
 			</el-tab-pane>
-<!--			<el-tab-pane label="移动app">-->
-<!--				<el-tree-->
-<!--					class="command-tree"-->
-<!--					ref="treeMenuApp"-->
-<!--					:data="menuGrantListApp"-->
-<!--					show-checkbox-->
-<!--					node-key="id"-->
-<!--					:default-checked-keys="menuTreeObjApp"-->
-<!--					:props="treeProps"-->
-<!--				/>-->
-<!--			</el-tab-pane>-->
+			<el-tab-pane label="移动app">
+				<el-tree
+					class="command-tree"
+					ref="treeMenuApp"
+					:data="menuGrantListApp"
+					show-checkbox
+					node-key="id"
+					:default-checked-keys="menuTreeObjApp"
+					:props="treeProps"
+				/>
+			</el-tab-pane>
 		</el-tabs>
 		<template #footer>
 			<el-button color="#F2F3F5" @click="visible = false">取消</el-button>
diff --git a/applications/task-work-order/src/views/orderView/systemMange/roleMange/index.vue b/applications/task-work-order/src/views/orderView/organizational/roleMange/index.vue
similarity index 100%
rename from applications/task-work-order/src/views/orderView/systemMange/roleMange/index.vue
rename to applications/task-work-order/src/views/orderView/organizational/roleMange/index.vue
diff --git a/applications/task-work-order/src/views/orderView/systemMange/userMange/FormDiaLog.vue b/applications/task-work-order/src/views/orderView/organizational/userMange/FormDiaLog.vue
similarity index 100%
rename from applications/task-work-order/src/views/orderView/systemMange/userMange/FormDiaLog.vue
rename to applications/task-work-order/src/views/orderView/organizational/userMange/FormDiaLog.vue
diff --git a/applications/task-work-order/src/views/orderView/systemMange/userMange/index.vue b/applications/task-work-order/src/views/orderView/organizational/userMange/index.vue
similarity index 100%
rename from applications/task-work-order/src/views/orderView/systemMange/userMange/index.vue
rename to applications/task-work-order/src/views/orderView/organizational/userMange/index.vue

--
Gitblit v1.9.3