|
@@ -1,382 +0,0 @@
|
|
|
-<template>
|
|
|
|
|
- <div v-loading="pageLoading" class="app-container" :element-loading-text="loadingText">
|
|
|
|
|
- <PageSearch ref="searchRef" :search-config="searchConfig" @query-click="handleQueryClick"
|
|
|
|
|
- @reset-click="handleResetClick" />
|
|
|
|
|
-
|
|
|
|
|
- <PageContent ref="contentRef" :content-config="contentConfig">
|
|
|
|
|
- <template #toolbar="{ toolbarRight, onToolbar, removeIds, cols }">
|
|
|
|
|
- <CrudToolbarLeft text="提交申请" :remove-ids="removeIds" :perm-create="['module_payment:facetoface:apply']">
|
|
|
|
|
- <el-button v-hasPerm="['module_payment:facetoface:apply']" type="primary" icon="Plus"
|
|
|
|
|
- @click="handleOpenApplyDialog">
|
|
|
|
|
- 提交申请
|
|
|
|
|
- </el-button>
|
|
|
|
|
- </CrudToolbarLeft>
|
|
|
|
|
-
|
|
|
|
|
- <div class="data-table__toolbar--right">
|
|
|
|
|
- <CrudToolbarRight :buttons="toolbarRight" :cols="cols" :on-toolbar="onToolbar" />
|
|
|
|
|
- </div>
|
|
|
|
|
- </template>
|
|
|
|
|
-
|
|
|
|
|
- <template #table="{ data, loading, tableRef, onSelectionChange }">
|
|
|
|
|
- <div class="data-table__content">
|
|
|
|
|
- <el-table :ref="tableRef as any" v-loading="loading" :data="data" height="100%" border
|
|
|
|
|
- @selection-change="onSelectionChange">
|
|
|
|
|
- <template #empty>
|
|
|
|
|
- <el-empty :image-size="80" description="暂无数据" />
|
|
|
|
|
- </template>
|
|
|
|
|
- <el-table-column v-if="contentCols.find((col) => col.prop === 'selection')?.show" type="selection"
|
|
|
|
|
- min-width="55" align="center" />
|
|
|
|
|
- <el-table-column v-if="contentCols.find((col) => col.prop === 'batch_no')?.show" key="batch_no"
|
|
|
|
|
- label="事务编号" prop="batch_no" min-width="160" show-overflow-tooltip />
|
|
|
|
|
- <el-table-column v-if="contentCols.find((col) => col.prop === 'account')?.show" key="account"
|
|
|
|
|
- label="支付宝账号" prop="account" min-width="180" show-overflow-tooltip />
|
|
|
|
|
- <el-table-column v-if="contentCols.find((col) => col.prop === 'merchant_name')?.show" key="merchant_name"
|
|
|
|
|
- label="商户名称" prop="merchant_name" min-width="120" show-overflow-tooltip />
|
|
|
|
|
- <el-table-column v-if="contentCols.find((col) => col.prop === 'shop_name')?.show" key="shop_name"
|
|
|
|
|
- label="店铺名称" prop="shop_name" min-width="120" show-overflow-tooltip />
|
|
|
|
|
- <el-table-column v-if="contentCols.find((col) => col.prop === 'order_status')?.show" key="order_status"
|
|
|
|
|
- label="状态" prop="order_status" min-width="120">
|
|
|
|
|
- <template #default="scope">
|
|
|
|
|
- <el-tag :type="ORDER_STATUS_TAG_TYPE[scope.row.order_status]">
|
|
|
|
|
- {{ ORDER_STATUS_LABEL[scope.row.order_status] || scope.row.order_status }}
|
|
|
|
|
- </el-tag>
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- <el-table-column v-if="contentCols.find((col) => col.prop === 'rate')?.show" key="rate"
|
|
|
|
|
- label="费率" prop="rate" min-width="80" />
|
|
|
|
|
- <el-table-column v-if="contentCols.find((col) => col.prop === 'reject_reason')?.show" key="reject_reason"
|
|
|
|
|
- label="驳回原因" prop="reject_reason" min-width="150" show-overflow-tooltip />
|
|
|
|
|
- <el-table-column v-if="contentCols.find((col) => col.prop === 'confirm_url')?.show" key="confirm_url"
|
|
|
|
|
- label="确认链接" prop="confirm_url" min-width="100">
|
|
|
|
|
- <template #default="scope">
|
|
|
|
|
- <el-button v-if="scope.row.confirm_url" type="primary" size="small" link
|
|
|
|
|
- @click="handleCopyUrl(scope.row.confirm_url)">
|
|
|
|
|
- 复制链接
|
|
|
|
|
- </el-button>
|
|
|
|
|
- <span v-else>-</span>
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- <el-table-column v-if="contentCols.find((col) => col.prop === 'created_time')?.show" key="created_time"
|
|
|
|
|
- label="创建时间" prop="created_time" min-width="160" sortable />
|
|
|
|
|
- <el-table-column v-if="contentCols.find((col) => col.prop === 'operation')?.show" fixed="right" label="操作"
|
|
|
|
|
- align="center" min-width="180">
|
|
|
|
|
- <template #default="scope">
|
|
|
|
|
- <el-button v-hasPerm="['module_payment:facetoface:list']" type="info" size="small" link icon="View"
|
|
|
|
|
- @click="handleOpenDetailDialog(scope.row.id)">
|
|
|
|
|
- 详情
|
|
|
|
|
- </el-button>
|
|
|
|
|
- <el-button v-hasPerm="['module_payment:facetoface:query']" type="primary" size="small" link
|
|
|
|
|
- icon="Refresh"
|
|
|
|
|
- :disabled="scope.row.order_status === 'SUCCESS' || scope.row.order_status === 'CLOSED'"
|
|
|
|
|
- @click="handleQueryStatus(scope.row.id)">
|
|
|
|
|
- 查询状态
|
|
|
|
|
- </el-button>
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- </el-table>
|
|
|
|
|
- </div>
|
|
|
|
|
- </template>
|
|
|
|
|
- </PageContent>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 申请表单弹窗 -->
|
|
|
|
|
- <EnhancedDialog v-model="applyDialogVisible" title="提交当面付开通申请" width="600px" @close="handleCloseApplyDialog">
|
|
|
|
|
- <el-form ref="applyFormRef" :model="applyForm" :rules="applyRules" label-width="120px">
|
|
|
|
|
- <el-form-item label="商户名称" prop="merchant_name">
|
|
|
|
|
- <el-input v-model="applyForm.merchant_name" placeholder="请输入商户名称" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="店铺名称" prop="shop_name">
|
|
|
|
|
- <el-input v-model="applyForm.shop_name" placeholder="请输入店铺名称" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="店铺地址" prop="shop_address">
|
|
|
|
|
- <el-input v-model="applyForm.shop_address" placeholder="请输入店铺地址" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="经营类目" prop="mcc_code">
|
|
|
|
|
- <el-select v-model="applyForm.mcc_code" placeholder="请搜索选择经营类目" filterable clearable
|
|
|
|
|
- style="width: 100%">
|
|
|
|
|
- <el-option v-for="item in MCC_OPTIONS" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
|
|
- </el-select>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="费率" prop="rate">
|
|
|
|
|
- <el-input v-model="applyForm.rate" placeholder="如 0.006 表示 0.6%" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="营业执照号" prop="business_license_no">
|
|
|
|
|
- <el-input v-model="applyForm.business_license_no" placeholder="请输入营业执照号" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="联系手机号" prop="business_license_mobile">
|
|
|
|
|
- <el-input v-model="applyForm.business_license_mobile" placeholder="请输入联系手机号" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="同时获取授权" prop="sign_and_auth">
|
|
|
|
|
- <el-switch v-model="applyForm.sign_and_auth" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="备注" prop="remark">
|
|
|
|
|
- <el-input v-model="applyForm.remark" type="textarea" :rows="2" placeholder="备注信息" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </el-form>
|
|
|
|
|
-
|
|
|
|
|
- <template #footer>
|
|
|
|
|
- <div class="dialog-footer">
|
|
|
|
|
- <el-button type="primary" :loading="isSubmitting" @click="handleSubmitApply">提交</el-button>
|
|
|
|
|
- <el-button @click="handleCloseApplyDialog">取消</el-button>
|
|
|
|
|
- </div>
|
|
|
|
|
- </template>
|
|
|
|
|
- </EnhancedDialog>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 详情弹窗 -->
|
|
|
|
|
- <EnhancedDialog v-model="detailDialogVisible" title="申请单详情" width="600px">
|
|
|
|
|
- <el-descriptions v-if="detailData" :column="1" border>
|
|
|
|
|
- <el-descriptions-item label="事务编号">{{ detailData.batch_no || '-' }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="申请单号">{{ detailData.order_no || '-' }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="商户支付宝账号">{{ detailData.account || '-' }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="状态">
|
|
|
|
|
- <el-tag :type="ORDER_STATUS_TAG_TYPE[detailData.order_status]">
|
|
|
|
|
- {{ ORDER_STATUS_LABEL[detailData.order_status] || detailData.order_status }}
|
|
|
|
|
- </el-tag>
|
|
|
|
|
- </el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="商户名称">{{ detailData.merchant_name || '-' }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="店铺名称">{{ detailData.shop_name || '-' }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="店铺地址">{{ detailData.shop_address || '-' }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="MCC码">{{ detailData.mcc_code || '-' }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="费率">{{ detailData.rate || '-' }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="营业执照号">{{ detailData.business_license_no || '-' }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="联系手机号">{{ detailData.business_license_mobile || '-' }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="同时获取授权">{{ detailData.sign_and_auth ? '是' : '否' }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item v-if="detailData.confirm_url" label="确认链接">
|
|
|
|
|
- <el-link type="primary" :href="detailData.confirm_url" target="_blank">{{ detailData.confirm_url }}</el-link>
|
|
|
|
|
- </el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item v-if="detailData.app_auth_token" label="授权Token">
|
|
|
|
|
- {{ detailData.app_auth_token }}
|
|
|
|
|
- </el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item v-if="detailData.reject_reason" label="驳回原因">
|
|
|
|
|
- <span style="color: #f56c6c">{{ detailData.reject_reason }}</span>
|
|
|
|
|
- </el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item v-if="detailData.remark" label="备注">{{ detailData.remark }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="查询次数">{{ detailData.query_count }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="最后查询时间">{{ detailData.last_query_time || '-' }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="创建时间">{{ detailData.created_time }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="更新时间">{{ detailData.updated_time }}</el-descriptions-item>
|
|
|
|
|
- </el-descriptions>
|
|
|
|
|
-
|
|
|
|
|
- <template #footer>
|
|
|
|
|
- <el-button type="primary" @click="detailDialogVisible = false">确定</el-button>
|
|
|
|
|
- </template>
|
|
|
|
|
- </EnhancedDialog>
|
|
|
|
|
- </div>
|
|
|
|
|
-</template>
|
|
|
|
|
-
|
|
|
|
|
-<script setup lang="ts">
|
|
|
|
|
-defineOptions({
|
|
|
|
|
- name: "Facetoface",
|
|
|
|
|
- inheritAttrs: false,
|
|
|
|
|
-});
|
|
|
|
|
-
|
|
|
|
|
-import FacetofaceAPI, {
|
|
|
|
|
- ORDER_STATUS_TAG_TYPE,
|
|
|
|
|
- ORDER_STATUS_LABEL,
|
|
|
|
|
- ORDER_STATUS_OPTIONS,
|
|
|
|
|
-} from "@/api/module_payment/facetoface";
|
|
|
|
|
-import { MCC_OPTIONS } from "@/constants/mcc-codes";
|
|
|
|
|
-import CrudToolbarLeft from "@/components/CURD/CrudToolbarLeft.vue";
|
|
|
|
|
-import CrudToolbarRight from "@/components/CURD/CrudToolbarRight.vue";
|
|
|
|
|
-import PageSearch from "@/components/CURD/PageSearch.vue";
|
|
|
|
|
-import PageContent from "@/components/CURD/PageContent.vue";
|
|
|
|
|
-import EnhancedDialog from "@/components/CURD/EnhancedDialog.vue";
|
|
|
|
|
-import type { ISearchConfig, IContentConfig } from "@/components/CURD/types";
|
|
|
|
|
-import { useCrudList } from "@/components/CURD/useCrudList";
|
|
|
|
|
-import { useLoadingAction } from "@/composables/useLoadingAction";
|
|
|
|
|
-import { ElMessage, type FormInstance, type FormRules } from "element-plus";
|
|
|
|
|
-import { ref, reactive } from "vue";
|
|
|
|
|
-
|
|
|
|
|
-const { searchRef, contentRef, handleQueryClick, handleResetClick, refreshList } = useCrudList();
|
|
|
|
|
-const { pageLoading, loadingText, execute: loadingExecute } = useLoadingAction();
|
|
|
|
|
-
|
|
|
|
|
-// ---------- 搜索配置 ----------
|
|
|
|
|
-const searchConfig = reactive<ISearchConfig>({
|
|
|
|
|
- permPrefix: "module_payment:facetoface",
|
|
|
|
|
- colon: true,
|
|
|
|
|
- isExpandable: true,
|
|
|
|
|
- showNumber: 3,
|
|
|
|
|
- form: { labelWidth: "auto" },
|
|
|
|
|
- formItems: [
|
|
|
|
|
- {
|
|
|
|
|
- prop: "merchant_name",
|
|
|
|
|
- label: "商户名称",
|
|
|
|
|
- type: "input",
|
|
|
|
|
- attrs: { placeholder: "请输入商户名称", clearable: true },
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: "shop_name",
|
|
|
|
|
- label: "店铺名称",
|
|
|
|
|
- type: "input",
|
|
|
|
|
- attrs: { placeholder: "请输入店铺名称", clearable: true },
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: "order_status",
|
|
|
|
|
- label: "状态",
|
|
|
|
|
- type: "select",
|
|
|
|
|
- options: ORDER_STATUS_OPTIONS,
|
|
|
|
|
- attrs: { placeholder: "请选择状态", clearable: true, style: { width: "167.5px" } },
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: "created_time",
|
|
|
|
|
- label: "创建时间",
|
|
|
|
|
- type: "date-picker",
|
|
|
|
|
- attrs: {
|
|
|
|
|
- type: "datetimerange",
|
|
|
|
|
- rangeSeparator: "至",
|
|
|
|
|
- startPlaceholder: "开始日期",
|
|
|
|
|
- endPlaceholder: "结束日期",
|
|
|
|
|
- format: "YYYY-MM-DD HH:mm:ss",
|
|
|
|
|
- valueFormat: "YYYY-MM-DD HH:mm:ss",
|
|
|
|
|
- style: { width: "340px" },
|
|
|
|
|
- },
|
|
|
|
|
- },
|
|
|
|
|
- ],
|
|
|
|
|
-});
|
|
|
|
|
-
|
|
|
|
|
-// ---------- 表格配置 ----------
|
|
|
|
|
-const contentCols = reactive<Array<{ prop?: string; label?: string; show?: boolean }>>([
|
|
|
|
|
- { prop: "selection", label: "选择框", show: false },
|
|
|
|
|
- { prop: "batch_no", label: "事务编号", show: true },
|
|
|
|
|
- { prop: "account", label: "支付宝账号", show: true },
|
|
|
|
|
- { prop: "merchant_name", label: "商户名称", show: true },
|
|
|
|
|
- { prop: "shop_name", label: "店铺名称", show: true },
|
|
|
|
|
- { prop: "order_status", label: "状态", show: true },
|
|
|
|
|
- { prop: "rate", label: "费率", show: true },
|
|
|
|
|
- { prop: "reject_reason", label: "驳回原因", show: false },
|
|
|
|
|
- { prop: "confirm_url", label: "确认链接", show: true },
|
|
|
|
|
- { prop: "created_time", label: "创建时间", show: true },
|
|
|
|
|
- { prop: "operation", label: "操作", show: true },
|
|
|
|
|
-]);
|
|
|
|
|
-
|
|
|
|
|
-const contentConfig = reactive<IContentConfig<any>>({
|
|
|
|
|
- permPrefix: "module_payment:facetoface",
|
|
|
|
|
- pk: "id",
|
|
|
|
|
- cols: contentCols as IContentConfig["cols"],
|
|
|
|
|
- hideColumnFilter: false,
|
|
|
|
|
- toolbar: [],
|
|
|
|
|
- defaultToolbar: ["refresh", "filter"],
|
|
|
|
|
- pagination: true,
|
|
|
|
|
- request: { page_no: "page_no", page_size: "page_size" },
|
|
|
|
|
- indexAction: async (params) => {
|
|
|
|
|
- const search: Record<string, any> = {};
|
|
|
|
|
- if (params.merchant_name) search.merchant_name = params.merchant_name;
|
|
|
|
|
- if (params.shop_name) search.shop_name = params.shop_name;
|
|
|
|
|
- if (params.order_status) search.order_status = params.order_status;
|
|
|
|
|
- if (params.created_time && params.created_time.length === 2) {
|
|
|
|
|
- search.start_time = params.created_time[0];
|
|
|
|
|
- search.end_time = params.created_time[1];
|
|
|
|
|
- }
|
|
|
|
|
- const res = await FacetofaceAPI.list(params.page_no, params.page_size, search);
|
|
|
|
|
- return {
|
|
|
|
|
- list: res.data?.data?.items || res.data?.data?.list || [],
|
|
|
|
|
- total: res.data?.data?.total || 0,
|
|
|
|
|
- };
|
|
|
|
|
- },
|
|
|
|
|
-});
|
|
|
|
|
-
|
|
|
|
|
-// ---------- 申请表单 ----------
|
|
|
|
|
-const applyDialogVisible = ref(false);
|
|
|
|
|
-const applyFormRef = ref<FormInstance>();
|
|
|
|
|
-const isSubmitting = ref(false);
|
|
|
|
|
-
|
|
|
|
|
-const applyForm = reactive({
|
|
|
|
|
- merchant_name: "",
|
|
|
|
|
- shop_name: "",
|
|
|
|
|
- shop_address: "",
|
|
|
|
|
- mcc_code: "",
|
|
|
|
|
- rate: "",
|
|
|
|
|
- business_license_no: "",
|
|
|
|
|
- business_license_mobile: "",
|
|
|
|
|
- sign_and_auth: false,
|
|
|
|
|
- remark: "",
|
|
|
|
|
-});
|
|
|
|
|
-
|
|
|
|
|
-const applyRules = reactive<FormRules>({
|
|
|
|
|
- merchant_name: [{ required: true, message: "请输入商户名称", trigger: "blur" }],
|
|
|
|
|
- shop_name: [{ required: true, message: "请输入店铺名称", trigger: "blur" }],
|
|
|
|
|
-});
|
|
|
|
|
-
|
|
|
|
|
-function handleOpenApplyDialog() {
|
|
|
|
|
- Object.assign(applyForm, {
|
|
|
|
|
- merchant_name: "",
|
|
|
|
|
- shop_name: "",
|
|
|
|
|
- shop_address: "",
|
|
|
|
|
- mcc_code: "",
|
|
|
|
|
- rate: "",
|
|
|
|
|
- business_license_no: "",
|
|
|
|
|
- business_license_mobile: "",
|
|
|
|
|
- sign_and_auth: false,
|
|
|
|
|
- remark: "",
|
|
|
|
|
- });
|
|
|
|
|
- applyDialogVisible.value = true;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-function handleCloseApplyDialog() {
|
|
|
|
|
- applyDialogVisible.value = false;
|
|
|
|
|
- applyFormRef.value?.resetFields();
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-async function handleSubmitApply() {
|
|
|
|
|
- if (!applyFormRef.value) return;
|
|
|
|
|
- await applyFormRef.value.validate();
|
|
|
|
|
-
|
|
|
|
|
- isSubmitting.value = true;
|
|
|
|
|
- try {
|
|
|
|
|
- const submitData: Record<string, any> = {
|
|
|
|
|
- merchant_name: applyForm.merchant_name,
|
|
|
|
|
- shop_name: applyForm.shop_name,
|
|
|
|
|
- sign_and_auth: applyForm.sign_and_auth,
|
|
|
|
|
- };
|
|
|
|
|
- if (applyForm.shop_address) submitData.shop_address = applyForm.shop_address;
|
|
|
|
|
- if (applyForm.mcc_code) submitData.mcc_code = applyForm.mcc_code;
|
|
|
|
|
- if (applyForm.rate) submitData.rate = applyForm.rate;
|
|
|
|
|
- if (applyForm.business_license_no) submitData.business_license_no = applyForm.business_license_no;
|
|
|
|
|
- if (applyForm.business_license_mobile) submitData.business_license_mobile = applyForm.business_license_mobile;
|
|
|
|
|
- if (applyForm.remark) submitData.remark = applyForm.remark;
|
|
|
|
|
-
|
|
|
|
|
- await FacetofaceAPI.apply(submitData as any);
|
|
|
|
|
- ElMessage.success("当面付开通申请已提交");
|
|
|
|
|
- handleCloseApplyDialog();
|
|
|
|
|
- refreshList();
|
|
|
|
|
- } catch (e: any) {
|
|
|
|
|
- ElMessage.error(e?.response?.data?.msg || "提交失败");
|
|
|
|
|
- } finally {
|
|
|
|
|
- isSubmitting.value = false;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// ---------- 详情弹窗 ----------
|
|
|
|
|
-const detailDialogVisible = ref(false);
|
|
|
|
|
-const detailData = ref<any>(null);
|
|
|
|
|
-
|
|
|
|
|
-async function handleOpenDetailDialog(orderId: number) {
|
|
|
|
|
- try {
|
|
|
|
|
- const res = await FacetofaceAPI.detail(orderId);
|
|
|
|
|
- detailData.value = res.data?.data;
|
|
|
|
|
- detailDialogVisible.value = true;
|
|
|
|
|
- } catch {
|
|
|
|
|
- ElMessage.error("查询详情失败");
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// ---------- 查询状态 ----------
|
|
|
|
|
-async function handleQueryStatus(orderId: number) {
|
|
|
|
|
- await loadingExecute({
|
|
|
|
|
- loadingText: "正在查询申请单状态...",
|
|
|
|
|
- action: () => FacetofaceAPI.queryStatus(orderId),
|
|
|
|
|
- onSuccess: () => {
|
|
|
|
|
- ElMessage.success("状态已刷新");
|
|
|
|
|
- refreshList();
|
|
|
|
|
- },
|
|
|
|
|
- });
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// ---------- 复制链接 ----------
|
|
|
|
|
-function handleCopyUrl(url: string) {
|
|
|
|
|
- navigator.clipboard.writeText(url).then(() => {
|
|
|
|
|
- ElMessage.success("链接已复制到剪贴板");
|
|
|
|
|
- }).catch(() => {
|
|
|
|
|
- ElMessage.error("复制失败");
|
|
|
|
|
- });
|
|
|
|
|
-}
|
|
|
|
|
-</script>
|
|
|