소스 검색

feat: 补充用户信息

max 7 달 전
부모
커밋
815c66dfc7
5개의 변경된 파일74개의 추가작업 그리고 160개의 파일을 삭제
  1. BIN
      dist.zip
  2. 6 1
      src/modules/payment/views/business.vue
  3. 26 4
      src/modules/payment/views/individual.vue
  4. 42 4
      src/modules/payment/views/merchant.vue
  5. 0 151
      stats.html

BIN
dist.zip


+ 6 - 1
src/modules/payment/views/business.vue

@@ -184,7 +184,12 @@ const Upsert = useUpsert({
 			component: { name: 'el-input', props: { clearable: true } },
 			required: true
 		},
-		{ label: 'ID', prop: 'merchant', hook: 'number', component: { name: 'el-input-number' } }
+		() => ({
+			label: 'ID', prop: 'merchant', hook: 'number', component: { name: 'el-input-number' },
+			hidden(options) {
+				return Upsert.value?.mode === 'add'
+			}
+		})
 	]
 });
 

+ 26 - 4
src/modules/payment/views/individual.vue

@@ -89,8 +89,11 @@ const Upsert = useUpsert({
 		{
 			label: '证书类型',
 			prop: 'certificate_type',
-			component: { name: 'el-checkbox-group', options: [], props: {} },
-			value: [],
+			component: {
+				name: 'el-select',
+				options: [],
+				props: { clearable: true }
+			},
 			required: true
 		},
 		{
@@ -126,8 +129,27 @@ const Upsert = useUpsert({
 			},
 			required: true
 		},
-		{ label: 'ID', prop: 'merchant', hook: 'number', component: { name: 'el-input-number' } }
-	]
+		() => ({
+			label: 'ID', prop: 'merchant', hook: 'number', component: { name: 'el-input-number' },
+			hidden(options) {
+				return Upsert.value?.mode === 'add'
+			}
+		})
+	],
+	async onOpen() {
+		const typesObj = await service.dict.info.data({
+			types: ['certificate_type'],
+		});
+		Upsert.value?.setOptions(
+			'certificate_type',
+			typesObj['certificate_type'].map(e => {
+				return {
+					label: e.name || '',
+					value: e.value
+				};
+			})
+		);
+	}
 });
 
 // cl-table

+ 42 - 4
src/modules/payment/views/merchant.vue

@@ -22,15 +22,28 @@
 			<!-- 分页控件 -->
 			<cl-pagination />
 		</cl-row>
-		<cl-upsert ref="Upsert"> </cl-upsert>
+		<cl-upsert ref="Upsert">
+			<template #slot-secret="{ scope }">
+				<div>{{ scope.apiSecret }}</div>
+				<div><el-icon style="cursor: pointer" @click="copyToClipboard(scope.apiSecret)"><DocumentCopy /></el-icon></div>
+
+<!--				<el-select v-model="scope.currency" clearable>-->
+<!--					<el-option v-for="item in currencyList.filter(item =>-->
+<!--				channelList-->
+<!--					.find(v => v.code == scope.channelId)-->
+<!--					?.supportedCurrencies.includes(item.id)-->
+<!--			)" :key="item.id" :label="item.label" :value="item.value" />-->
+<!--				</el-select>-->
+			</template>
+		</cl-upsert>
 	</cl-crud>
 </template>
 
 <script lang="ts" name="pay-merchant" setup>
 import { useCrud, useTable, useUpsert, useForm } from '@cool-vue/crud';
 import { useCool } from '/@/cool';
-import md5 from 'md5';
-import { ref } from 'vue';
+import { DocumentCopy } from '@element-plus/icons-vue';
+import { ElMessage } from 'element-plus';
 const { service } = useCool();
 
 // cl-upsert
@@ -105,7 +118,19 @@ const Upsert = useUpsert({
 				]
 			}
 		},
-
+		() => {
+			return {
+				prop: 'apiSecret',
+				label: 'secret',
+				required: true,
+				component: { name: 'slot-secret', props: { disabled: Upsert.value?.mode !== 'add' } },
+				span: 24,
+				hidden(options) {
+					console.log(80, options);
+					return Upsert.value?.mode === 'add'
+				}
+			}
+		},
 		{
 			prop: 'remark',
 			label: '备注',
@@ -145,4 +170,17 @@ const Crud = useCrud(
 		app.refresh();
 	}
 );
+
+
+
+const copyToClipboard = async (secret: string) => {
+	try {
+		// 使用 Clipboard API 复制内容
+		await navigator.clipboard.writeText(secret);
+		ElMessage.success('复制成功');
+	} catch (error) {
+		console.error("复制失败", error);
+		ElMessage.error('复制失败');
+	}
+};
 </script>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 151
stats.html


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.