max 7 месяцев назад
Родитель
Сommit
030a95c130

+ 12 - 3
src/modules/payment/views/business.vue

@@ -76,6 +76,12 @@ const Upsert = useUpsert({
 			component: { name: 'el-input', props: { clearable: true } },
 			required: true
 		},
+		{
+			label: '城市',
+			prop: 'city',
+			component: { name: 'el-input', props: { clearable: true } },
+			required: true
+		},
 		{
 			label: '地址',
 			prop: 'address_line',
@@ -185,9 +191,12 @@ 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'
+				return Upsert.value?.mode === 'add';
 			}
 		})
 	]
@@ -197,7 +206,7 @@ const Upsert = useUpsert({
 const Table = useTable({
 	columns: [
 		{ type: 'selection' },
-		{ label: '商户ID', prop: 'mchId', minWidth: 140 },
+		{ label: '商户ID', prop: 'merchantId', minWidth: 140 },
 		{ label: '企业名称', prop: 'name', minWidth: 140 },
 		{ label: '类型', prop: 'type', dict: [], minWidth: 120 },
 		{ label: '国家代码', prop: 'country_code', minWidth: 140 },

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

@@ -62,6 +62,12 @@ const Upsert = useUpsert({
 			component: { name: 'el-input', props: { clearable: true } },
 			required: true
 		},
+		{
+			label: '城市',
+			prop: 'city',
+			component: { name: 'el-input', props: { clearable: true } },
+			required: true
+		},
 		{
 			label: '地址',
 			prop: 'address_line',
@@ -130,15 +136,18 @@ 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'
+				return Upsert.value?.mode === 'add';
 			}
 		})
 	],
 	async onOpen() {
 		const typesObj = await service.dict.info.data({
-			types: ['certificate_type'],
+			types: ['certificate_type']
 		});
 		Upsert.value?.setOptions(
 			'certificate_type',
@@ -156,7 +165,7 @@ const Upsert = useUpsert({
 const Table = useTable({
 	columns: [
 		{ type: 'selection' },
-		{ label: '商户ID', prop: 'mch_id', minWidth: 140 },
+		{ label: '商户ID', prop: 'merchantId', minWidth: 140 },
 		{ label: '名字', prop: 'first_name', minWidth: 140 },
 		{ label: '姓氏', prop: 'last_name', minWidth: 140 },
 		{

+ 25 - 17
src/modules/payment/views/merchant.vue

@@ -24,16 +24,17 @@
 		</cl-row>
 		<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>-->
+				<div v-if="scope.apiSecret">
+					{{ scope.apiSecret
+					}}<el-icon style="cursor: pointer" @click="copyToClipboard(scope.apiSecret)"
+						><DocumentCopy
+					/></el-icon>
+				</div>
+				<div v-else>
+					<el-button size="small" :icon="RefreshRight" @click="createSecret(scope)"
+						>重新生成</el-button
+					>
+				</div>
 			</template>
 		</cl-upsert>
 	</cl-crud>
@@ -42,7 +43,7 @@
 <script lang="ts" name="pay-merchant" setup>
 import { useCrud, useTable, useUpsert, useForm } from '@cool-vue/crud';
 import { useCool } from '/@/cool';
-import { DocumentCopy } from '@element-plus/icons-vue';
+import { DocumentCopy, RefreshRight } from '@element-plus/icons-vue';
 import { ElMessage } from 'element-plus';
 const { service } = useCool();
 
@@ -123,13 +124,16 @@ const Upsert = useUpsert({
 				prop: 'apiSecret',
 				label: 'secret',
 				required: true,
-				component: { name: 'slot-secret', props: { disabled: Upsert.value?.mode !== 'add' } },
+				component: {
+					name: 'slot-secret',
+					props: { disabled: Upsert.value?.mode !== 'add' }
+				},
 				span: 24,
 				hidden(options) {
 					console.log(80, options);
-					return Upsert.value?.mode === 'add'
+					return Upsert.value?.mode === 'add';
 				}
-			}
+			};
 		},
 		{
 			prop: 'remark',
@@ -171,16 +175,20 @@ const Crud = useCrud(
 	}
 );
 
-
-
 const copyToClipboard = async (secret: string) => {
 	try {
 		// 使用 Clipboard API 复制内容
 		await navigator.clipboard.writeText(secret);
 		ElMessage.success('复制成功');
 	} catch (error) {
-		console.error("复制失败", error);
+		console.error('复制失败', error);
 		ElMessage.error('复制失败');
 	}
 };
+
+const createSecret = async (row: any) => {
+	const params = await service.payment.merchant.secret(row);
+	console.log(191, params);
+	row.apiSecret = params.apiSecret;
+};
 </script>