| 
					
				 | 
			
			
				@@ -0,0 +1,765 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script setup lang="ts"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {computed, nextTick, onMounted, reactive, ref} from 'vue'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import TableBase from '@/components/TableBase/index.vue'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import Drawer from "@/components/Drawer/index.vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	readValidation, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	validation_Stat, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	validationTool_acceptedRecordsList, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	validationTool_CancelTransfer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	validationTool_confirmAccepted, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	validationTool_transfer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	validationTool_transferRecordsList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} from '@/api/storehouse'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {User_List} from '@/api/user/index'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {Check, Close, View} from "@element-plus/icons-vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {ElMessage, ElMessageBox, type FormInstance} from "element-plus"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {useTablePublic} from "@/hooks/useTablePublic"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {ColumnProps} from '@/components/TableBase/interface/index'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const {resetForm, globalStore, searchOnTableList, updateOnTableList, tableRowClassName} = useTablePublic() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+interface TransferItem { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id: number; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TransferSn: string[]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AcceptedSn: string | null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TransferUser: string; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AcceptedUser: string; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Status: string; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TransferRemark: string; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AcceptedRemark: string; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	CreateTime: string; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const formLabelWidth = ref('100px') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const activeTab = ref('transferOut'); // 默认展示我转移的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const tableTransferRef = ref<InstanceType<typeof TableBase> | null>(null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const tableAcceptedRef = ref<InstanceType<typeof TableBase> | null>(null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const drawerSnRef = ref<any>(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const tableSnData = ref<any[]>([]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const lendTableData = ref<any[]>([]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 处理借出表格数据的回调函数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const handleLendTableData = (res: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (res && res.Data && res.Data.Data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		lendTableData.value = res.Data.Data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return res.Data.Data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 计算借出总数量的总和 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const totalCountSum = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 使用lendTableData计算总和 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return lendTableData.value.reduce((sum: number, item: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return sum + (item.TotalCount || 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 初始化RecordsList为默认的API函数,避免requestApi不是函数的错误 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const showTransferForm = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const TransferFormRef = ref<FormInstance | null>(null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 搜索条件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const initParam = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	User_tokey: globalStore.GET_User_tokey, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	status: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const info = computed(() => globalStore.GET_User_Info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 用户搜索相关 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const userOptions = ref<any[]>([]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const userLoading = ref(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 暂存列表相关 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const pendingLendItems = ref<any[]>([]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const lendPageSize = ref(10); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const lendCurrentPage = ref(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const TransferForm = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_sn: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AcceptedUser: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AcceptedUserUid: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Remark: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const TransferRules = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	T_sn: [{required: true, message: '请输入SN', trigger: 'blur'}], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AcceptedUser: [{required: true, message: '请选择接收人', trigger: 'blur'}] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 搜索选项 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const options = reactive([ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{name: '转移中', id: 'pending'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{name: '已完成', id: 'completed'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{name: '已取消', id: 'canceled'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 表格列配置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const columns = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{type: 'index', label: '序号', width: 80}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{prop: 'CreateTime', label: '转移时间', width: 165}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{prop: 'AcceptedTime', label: '接收时间', width: 165}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{prop: 'TransferUser', label: '转移人'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{prop: 'AcceptedUser', label: '接收人'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{prop: 'Status', label: '状态', name: 'Status'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{prop: 'TransferNumber', label: '转移数量'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{prop: 'AcceptedNumber', label: '接收数量', name: 'AcceptedNumber'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{prop: 'TransferRemark', label: '转移备注'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{prop: 'AcceptedRemark', label: '接收备注'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{prop: 'operation', label: '操作', width: 200, fixed: 'right', align: 'center'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 员工列表相关配置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+interface UserInfoIn { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	LendUser: string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TotalCount: number 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const userInfo = ref<UserInfoIn>({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	LendUser: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TotalCount: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const columnsStat: ColumnProps[] = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{type: 'index', label: '序号', width: 80}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{prop: 'LendUser', label: '借出人'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{prop: 'T_project', label: '借出项目'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{prop: 'T_state', label: '状态', name: 'T_state'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{prop: 'TotalCount', label: '数量'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const tableLendRef = ref<InstanceType<typeof TableBase> | null>(null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const initParamLend = reactive({User_tokey: globalStore.GET_User_tokey, LendUser: info.value.T_name, page_z: 99}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 初始化当前用户信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const initUserInfo = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (info.value && info.value.T_name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		userInfo.value = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			LendUser: info.value.T_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			TotalCount: 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		initParamLend.LendUser = info.value.T_name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 获取数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const fetchData = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 根据当前选中的标签页设置API 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (activeTab.value === 'transferOut' && tableTransferRef.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		tableTransferRef.value.searchTable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else if (activeTab.value === 'transferIn' && tableAcceptedRef.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		tableAcceptedRef.value.searchTable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else if (activeTab.value === 'transferLend' && tableLendRef.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		tableLendRef.value.searchTable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 处理查询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const searchTransferHandle = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (tableTransferRef.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		tableTransferRef.value.searchTable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const searchAcceptedHandle = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (tableAcceptedRef.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		tableAcceptedRef.value.searchTable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const previewSn = (devicelist: any[]) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	drawerSnRef.value?.openDrawer() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (!devicelist) return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	tableSnData.value = devicelist.map((item: string) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sn: item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 确认接收对话框显示状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const showConfirmDialog = ref(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 当前选中的转移单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const currentTransferRow = ref<any>(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 确认接收表单引用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ConfirmFormRef = ref<FormInstance | null>(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 确认接收功能 - 打开对话框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const confirmAccepted = (row: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	currentTransferRow.value = row; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	console.log(row); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 重置表单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	confirmForm.Project = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	confirmForm.Remark = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	showConfirmDialog.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 提交确认接收表单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const submitConfirmForm = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (!ConfirmFormRef.value) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		await ConfirmFormRef.value.validate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const res: any = await validationTool_confirmAccepted({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			User_tokey: globalStore.GET_User_tokey, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			TransferId: currentTransferRow.value.Id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Number: confirmForm.Number, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Remark: confirmForm.Remark, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Project: confirmForm.Project 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (res.Code === 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ElMessage.success('确认接收成功'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 关闭对话框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			showConfirmDialog.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 重置表单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			confirmForm.Project = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			confirmForm.Remark = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 更新列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (tableAcceptedRef.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				tableAcceptedRef.value.searchTable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ElMessage.error(res.Message || '确认接收失败'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} catch (error: any) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (error?.name !== 'ValidationError') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			console.error('确认接收失败', error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ElMessage.error('确认接收失败'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 确认接收表单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const confirmForm = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Project: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Number: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Remark: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 确认接收表单验证规则 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ConfirmRules = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Project: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{required: true, message: '请输入项目', trigger: 'blur'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 关闭抽屉回调 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const callbackSnDrawer = (done: () => void) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 切换标签页 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const handleTabChange = (tabName: string) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	initParam.status = '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	activeTab.value = tabName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 更新RecordsList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (tabName === 'transferOut' && tableTransferRef.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		tableTransferRef.value.searchTable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else if (tabName === 'transferIn' && tableAcceptedRef.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		tableAcceptedRef.value.searchTable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else if (tabName === 'transferLend' && tableLendRef.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		tableLendRef.value.searchTable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const CancelTransferOut = (row: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	console.log(row) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ElMessageBox.confirm('您确定要取消该调用单吗?', '警告', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		confirmButtonText: '确定', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		cancelButtonText: '取消', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		type: 'warning' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.then(async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const res: any = await validationTool_CancelTransfer({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				User_tokey: globalStore.GET_User_tokey, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				TransferId: row.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (res.Code === 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				ElMessage.success('提交成功!') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				nextTick(() => updateOnTableList(tableTransferRef.value)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.catch(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ElMessage.warning('取消成功!') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 选择用户后的处理函数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const handleUserChange = (value: string) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const selectedUser = userOptions.value.find(user => user.T_uuid === value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (selectedUser) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			TransferForm.AcceptedUser = selectedUser.T_name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			TransferForm.AcceptedUserUid = selectedUser.T_uuid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		TransferForm.AcceptedUser = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		TransferForm.AcceptedUserUid = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 远程搜索用户的方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const remoteMethod = async (query: string) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (query.trim()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		userLoading.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const res: any = await User_List({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				User_tokey: globalStore.GET_User_tokey, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				T_name: query, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				page_z: 100 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (res.Code === 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 确保数据格式正确 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				const formattedOptions = res.Data.Data?.map((user: any) => ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					T_uuid: user.T_uuid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					T_name: user.T_name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				})) || []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				userOptions.value = formattedOptions; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 添加调试信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				console.log('搜索结果:', formattedOptions); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ElMessage.error('搜索用户失败'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			console.error('搜索用户错误:', error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			userLoading.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		userOptions.value = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const extractSN = (fullSN: string): string => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (fullSN.length === 24 && fullSN.startsWith('03') && fullSN.endsWith('000001')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return fullSN.substring(2, 18) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return fullSN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 添加到暂存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const submitTransferSNForm = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TransferFormRef.value?.validate(async (valid: boolean) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (valid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const extractedSN = extractSN(TransferForm.T_sn) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (pendingLendItems.value.some((item: any) => item.T_sn === extractedSN)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				ElMessage.warning('该SN已在暂存列表中') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const result: any = await readValidation({sn: extractedSN}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (result.Code !== 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				ElMessage.warning('当前SN不存在') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (result.Data.T_state == 5) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				ElMessage.warning('设备已损坏') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if ('speechSynthesis' in window) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					const utterance = new SpeechSynthesisUtterance('设备已损坏') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					window.speechSynthesis.speak(utterance) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					console.warn('Web Speech API 不被支持') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (result.Data.T_state != 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				ElMessage.warning('当前SN不是出库状态,不能转移!') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			pendingLendItems.value.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				T_sn: TransferForm.T_sn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				AcceptedUser: TransferForm.AcceptedUser, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				AcceptedUserUid: TransferForm.AcceptedUserUid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				T_remark: TransferForm.Remark 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ElMessage.success('已添加到暂存列表'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if ('speechSynthesis' in window) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				const utterance = new SpeechSynthesisUtterance('添加成功') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				window.speechSynthesis.speak(utterance) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				console.warn('Web Speech API 不被支持') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 清空表单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			TransferForm.T_sn = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			TransferForm.Remark = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 移除暂存项 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const removePendingLendItem = (index: number) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pendingLendItems.value.splice(index, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (pendingLendItems.value.length === 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		lendCurrentPage.value = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 处理分页 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const handleLendPageChange = (page: number) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lendCurrentPage.value = page; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 计算分页后的暂存数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const paginatedPendingLendItems = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	const start = (lendCurrentPage.value - 1) * lendPageSize.value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	const end = start + lendPageSize.value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return pendingLendItems.value.slice(start, end); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 提交转移 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const submitTransferItems = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (pendingLendItems.value.length === 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ElMessage.warning('暂存列表为空,请先添加数据'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const snList = pendingLendItems.value.map(item => item.T_sn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const firstItem = pendingLendItems.value[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const res: any = await validationTool_transfer({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			User_tokey: globalStore.GET_User_tokey, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			T_sn: JSON.stringify(snList), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			AcceptedUser: firstItem.AcceptedUser, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			AcceptedUserUid: firstItem.AcceptedUserUid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Remark: firstItem.T_remark 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (res.Code === 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ElMessage.success('转移成功'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			pendingLendItems.value = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			showTransferForm.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			nextTick(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (tableTransferRef.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					updateOnTableList(tableTransferRef.value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ElMessage.error(res.Msg || '转移失败'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ElMessage.error('请求失败,请重试'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+onMounted(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	initUserInfo(); // 初始化当前用户信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	fetchData(); // 页面加载时默认获取我转移的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<div class="transfer-validation-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<!-- 添加回标签页切换组件 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<el-tabs v-model="activeTab" @tab-change="handleTabChange" class="mb-4"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-tab-pane label="我转移的" name="transferOut"></el-tab-pane> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-tab-pane label="我接收的" name="transferIn"></el-tab-pane> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-tab-pane label="我借出的" name="transferLend"></el-tab-pane> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</el-tabs> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<div v-if="activeTab === 'transferOut'"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<TableBase 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				ref="tableTransferRef" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				:columns="columns" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				:requestApi="validationTool_transferRecordsList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				:initParam="initParam" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				:pagination="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<template #table-header> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="input-suffix"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<el-row :gutter="20" style="margin-bottom: 0"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<el-col :xl="8" :lg="8" :md="8"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<span class="inline-flex items-center">状态:</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<el-select v-model="initParam.status" class="w-50 m-2" clearable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										   placeholder="请选择状态~"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<el-option v-for="item in options" :key="item.id" :label="item.name" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											   :value="item.id"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<el-button type="primary" @click="searchTransferHandle">搜索</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<el-col :xl="15" :lg="15" :md="15" class="btn"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<el-button type="primary" @click="showTransferForm = true">发起转移</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</el-row> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<template #Status="{ row }"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-tag v-if="row.Status == 'pending'" effect="dark" type="warning"> 转移中</el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-tag v-if="row.Status == 'completed'" effect="dark" type="success">已完成</el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-tag v-if="row.Status == 'canceled'" effect="dark" type="info">已取消</el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<template #AcceptedNumber="{ row }"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<span v-if="row.Status == 'completed'">{{ row.AcceptedNumber }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<span v-else>-</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<template #right="{ row }"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-button link type="primary" size="small" :icon="View" @click="previewSn(row.TransferSn)">查看SN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-button link type="warning" size="small" :icon="Close" @click="CancelTransferOut(row)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							   :disabled="row.Status !== 'pending'">取消 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</TableBase> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<div v-if="activeTab === 'transferIn'"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<TableBase 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				ref="tableAcceptedRef" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				:columns="columns" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				:requestApi="validationTool_acceptedRecordsList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				:initParam="initParam" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				:pagination="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<template #table-header> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="input-suffix"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<el-row :gutter="20" style="margin-bottom: 0"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<el-col :xl="8" :lg="8" :md="8"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<span class="inline-flex items-center">状态:</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<el-select v-model="initParam.status" class="w-50 m-2" clearable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										   placeholder="请选择状态~"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<el-option v-for="item in options" :key="item.id" :label="item.name" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											   :value="item.id"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<el-button type="primary" @click="searchAcceptedHandle">搜索</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</el-row> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<template #Status="{ row }"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-tag v-if="row.Status == 'pending'" effect="dark" type="warning"> 转移中</el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-tag v-if="row.Status == 'completed'" effect="dark" type="success">已完成</el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-tag v-if="row.Status == 'canceled'" effect="dark" type="info">已取消</el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<template #AcceptedNumber="{ row }"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<span v-if="row.Status == 'completed'">{{ row.AcceptedNumber }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<span v-else>-</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<template #right="{ row }"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-button link type="primary" size="small" :icon="View" @click="previewSn(row.TransferSn)">查看SN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-button link type="success" size="small" :icon="Check" @click="confirmAccepted(row)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					                          :disabled="row.Status !== 'pending'">确认接收 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</TableBase> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<!-- 我借出的标签页内容 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<div v-if="activeTab === 'transferLend'"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<div class="project"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<div class="project-container" v-if="userInfo.LendUser"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-card class="box-card"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<h3 class="text title m-b-5">借出总数量:{{ totalCountSum }}</h3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</el-card> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<TableBase 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						ref="tableLendRef" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						:columns="columnsStat" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						:requestApi="validation_Stat" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						:initParam="initParamLend" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						:displayHeader="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						:pagination="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						:dataCallback="handleLendTableData" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<template #T_state="{ row }"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<el-tag v-if="row.T_state == 1" type="success" effect="dark"> 已出库</el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<el-tag v-if="row.T_state == 2" effect="dark">未出库</el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<el-tag v-if="row.T_state == 3" effect="dark" type="warning">维修中</el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<el-tag v-if="row.T_state == 4" effect="dark" type="danger">已报废</el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<el-tag v-if="row.T_state == 5" effect="dark" type="info">已损坏</el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<el-tag v-if="row.T_state == 6" effect="light" type="warning">转移中</el-tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</TableBase> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<!-- 转移单号列表抽屉 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<Drawer ref="drawerSnRef" :handleClose="callbackSnDrawer" size="40%"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<div style="padding: 20px;"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<h3 style="margin-bottom: 20px;">数量: {{ tableSnData.length }} </h3> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					:data="tableSnData" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					style="width: 100%;" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					:header-cell-style="{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            background: '#dedfe0', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            height: '50px' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-table-column type="index" label="序号" width="80" align="center"></el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-table-column prop="sn" label="SN" align="center"></el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</el-table> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</Drawer> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<el-dialog title="发起转移" v-model="showTransferForm" width="50%"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-form :model="TransferForm" :rules="TransferRules" ref="TransferFormRef"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<!-- 新增借出人和借出项目 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-form-item class="m-b-6" :label-width="formLabelWidth" label="接收人" prop="AcceptedUser"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-select 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						v-model="TransferForm.AcceptedUserUid" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						filterable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						remote 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						reserve-keyword 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						placeholder="请输入接收人" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						:remote-method="remoteMethod" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						:loading="userLoading" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						class="w-50" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						@change="handleUserChange" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						:clearable="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<el-option 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							v-for="item in userOptions" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							:key="item.T_uuid" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							:label="item.T_name" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							:value="item.T_uuid" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-form-item class="m-b-6" :label-width="formLabelWidth" label="SN" prop="T_sn"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-input class="w-50" v-model="TransferForm.T_sn" placeholder="请输入SN" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							  @keyup.enter="submitTransferSNForm"></el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-form-item class="m-b-6" :label-width="formLabelWidth" label="备注"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-input class="w-50" v-model="TransferForm.Remark" type="textarea" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							  placeholder="请输入备注(选填)"></el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<!-- 新增数据条数提示 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<div style="margin: 10px 0"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<span>当前待提交数据条数: {{ pendingLendItems.length }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-table :data="paginatedPendingLendItems" style="width: 100%; margin-top: 20px"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-table-column type="index" label="序号" width="80"></el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<!-- 添加序号列 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-table-column prop="T_sn" label="SN" width="300"></el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-table-column prop="AcceptedUser" label="接收人"></el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-table-column prop="T_remark" label="备注"></el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-table-column label="操作" width="180"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<template #default="scope"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<el-button type="danger" size="small" @click="removePendingLendItem(scope.$index)">删除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</el-table> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-pagination 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				background 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				layout="prev, pager, next" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				:total="pendingLendItems.length" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				:page-size="lendPageSize" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				:current-page="lendCurrentPage" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				@current-change="handleLendPageChange" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				style="margin-top: 20px; text-align: right" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<template #footer> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <span class="dialog-footer"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button @click="showTransferForm = false">取消</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button type="primary" @click="submitTransferSNForm">添加到暂存</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  <!-- 新增提交按钮 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button type="primary" @click="submitTransferItems">提交</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</el-dialog> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<!-- 确认接收对话框 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<el-dialog title="确认接收" v-model="showConfirmDialog" width="35%"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<el-form :model="confirmForm" :rules="ConfirmRules" ref="ConfirmFormRef"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-form-item label="项目" class="m-b-6" :label-width="formLabelWidth" prop="Project"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-input v-model="confirmForm.Project" placeholder="请输入项目"></el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-form-item class="m-b-6" :label-width="formLabelWidth" label="接收数量"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-input v-model="confirmForm.Number" type="number" placeholder="请输入接收数量"></el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<el-form-item class="m-b-6" :label-width="formLabelWidth" label="备注"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-input v-model="confirmForm.Remark" type="textarea" placeholder="请输入备注(选填)"></el-input> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<template #footer> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<span class="dialog-footer"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-button @click="showConfirmDialog = false">取消</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<el-button type="primary" @click="submitConfirmForm">接收</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</el-dialog> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style scoped lang="scss"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.transfer-validation-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	padding: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.w-50 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		width: 50%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.input-suffix { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.inline-flex { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		white-space: nowrap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.w-50 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		width: 33.33%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.btn { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		justify-content: end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 我借出的标签页样式 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.project { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	overflow: hidden; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.project-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		z-index: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.box-card { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			border-radius: 8px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		:deep(.el-table .cell) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			white-space: normal !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.text { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			text-align: left; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.info-content { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			color: #606266; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.info-name { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				flex: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				justify-content: space-around; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				padding-left: 0.75rem; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	:deep(.card) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		margin: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		border-radius: 8px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.title { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		line-height: 1.7em; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		font-size: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		color: #707b84; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |