|
@@ -0,0 +1,733 @@
|
|
|
|
|
+<template>
|
|
|
|
|
+ <div class="app-container">
|
|
|
|
|
+ <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
|
|
|
|
|
+ <el-form-item label="商户类型" prop="merchantType">
|
|
|
|
|
+ <el-select v-model="queryParams.merchantType" placeholder="请选择商户类型" clearable size="small">
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="dict in sysPayModes"
|
|
|
|
|
+ :key="dict.dictValue"
|
|
|
|
|
+ :label="dict.dictLabel"
|
|
|
|
|
+ :value="dict.dictValue"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <!-- 商户号 -->
|
|
|
|
|
+ <el-form-item label="商户号" prop="merchantId">
|
|
|
|
|
+ <el-input v-model="queryParams.merchantId" placeholder="请输入商户号" clearable size="small" @keyup.enter.native="handleQuery" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+<!-- <el-form-item label="应用ID" prop="appIds">-->
|
|
|
|
|
+<!-- <el-select-->
|
|
|
|
|
+<!-- v-model="queryParams.appIds"-->
|
|
|
|
|
+<!-- placeholder="请选择应用ID"-->
|
|
|
|
|
+<!-- clearable-->
|
|
|
|
|
+<!-- size="small"-->
|
|
|
|
|
+<!-- >-->
|
|
|
|
|
+<!-- <el-option-->
|
|
|
|
|
+<!-- v-for="dict in appIdOptions"-->
|
|
|
|
|
+<!-- :key="dict.appid"-->
|
|
|
|
|
+<!-- :label="dict.name"-->
|
|
|
|
|
+<!-- :value="dict.appid"-->
|
|
|
|
|
+<!-- />-->
|
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
|
+<!-- <el-form-item label="创建时间">-->
|
|
|
|
|
+<!-- <el-date-picker-->
|
|
|
|
|
+<!-- v-model="daterangeCreatedTime"-->
|
|
|
|
|
+<!-- size="small"-->
|
|
|
|
|
+<!-- style="width: 240px"-->
|
|
|
|
|
+<!-- value-format="yyyy-MM-dd"-->
|
|
|
|
|
+<!-- type="daterange"-->
|
|
|
|
|
+<!-- range-separator="-"-->
|
|
|
|
|
+<!-- start-placeholder="开始日期"-->
|
|
|
|
|
+<!-- end-placeholder="结束日期"-->
|
|
|
|
|
+<!-- ></el-date-picker>-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
|
+ <el-form-item label="状态" prop="isDeleted">
|
|
|
|
|
+ <el-select v-model="queryParams.isDeleted" placeholder="请选择状态" clearable size="small">
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="dict in isDeletedOptions"
|
|
|
|
|
+ :key="dict.dictValue"
|
|
|
|
|
+ :label="dict.dictLabel"
|
|
|
|
|
+ :value="dict.dictValue"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item>
|
|
|
|
|
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
|
|
|
|
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+
|
|
|
|
|
+ <el-row :gutter="10" class="mb8">
|
|
|
|
|
+ <el-col :span="1.5">
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ plain
|
|
|
|
|
+ icon="el-icon-plus"
|
|
|
|
|
+ size="mini"
|
|
|
|
|
+ @click="handleAdd"
|
|
|
|
|
+ v-hasPermi="['merchantAppConfig:merchantAppConfig:add']"
|
|
|
|
|
+ >新增</el-button>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+<!-- <el-col :span="1.5">-->
|
|
|
|
|
+<!-- <el-button-->
|
|
|
|
|
+<!-- type="success"-->
|
|
|
|
|
+<!-- plain-->
|
|
|
|
|
+<!-- icon="el-icon-edit"-->
|
|
|
|
|
+<!-- size="mini"-->
|
|
|
|
|
+<!-- :disabled="single"-->
|
|
|
|
|
+<!-- @click="handleUpdate"-->
|
|
|
|
|
+<!-- v-hasPermi="['merchantAppConfig:merchantAppConfig:edit']"-->
|
|
|
|
|
+<!-- >修改</el-button>-->
|
|
|
|
|
+<!-- </el-col>-->
|
|
|
|
|
+<!-- <el-col :span="1.5">-->
|
|
|
|
|
+<!-- <el-button-->
|
|
|
|
|
+<!-- type="danger"-->
|
|
|
|
|
+<!-- plain-->
|
|
|
|
|
+<!-- icon="el-icon-delete"-->
|
|
|
|
|
+<!-- size="mini"-->
|
|
|
|
|
+<!-- :disabled="multiple"-->
|
|
|
|
|
+<!-- @click="handleDelete"-->
|
|
|
|
|
+<!-- v-hasPermi="['merchantAppConfig:merchantAppConfig:remove']"-->
|
|
|
|
|
+<!-- >删除</el-button>-->
|
|
|
|
|
+<!-- </el-col>-->
|
|
|
|
|
+<!-- <el-col :span="1.5">-->
|
|
|
|
|
+<!-- <el-button-->
|
|
|
|
|
+<!-- type="warning"-->
|
|
|
|
|
+<!-- plain-->
|
|
|
|
|
+<!-- icon="el-icon-download"-->
|
|
|
|
|
+<!-- size="mini"-->
|
|
|
|
|
+<!-- :loading="exportLoading"-->
|
|
|
|
|
+<!-- @click="handleExport"-->
|
|
|
|
|
+<!-- v-hasPermi="['merchantAppConfig:merchantAppConfig:export']"-->
|
|
|
|
|
+<!-- >导出</el-button>-->
|
|
|
|
|
+<!-- </el-col>-->
|
|
|
|
|
+ <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
|
|
|
|
+ </el-row>
|
|
|
|
|
+
|
|
|
|
|
+ <el-table border v-loading="loading" :data="merchantAppConfigList" @selection-change="handleSelectionChange">
|
|
|
|
|
+ <el-table-column type="selection" width="55" align="center" />
|
|
|
|
|
+ <el-table-column label="主键ID" align="center" prop="id" />
|
|
|
|
|
+ <el-table-column label="商户号" align="center" prop="merchantId" />
|
|
|
|
|
+ <el-table-column label="商户类型" align="center" prop="merchantType">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <dict-tag :options="sysPayModes" :value="scope.row.merchantType"/>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- appId 转化 appIdOptions -->
|
|
|
|
|
+ <el-table-column label="应用名称" align="center" prop="appId">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <span v-if="scope.row.appId">
|
|
|
|
|
+ {{ getAppNames(scope.row.appId) }}
|
|
|
|
|
+ </span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="应用ID" align="center" prop="appId">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <span>{{ scope.row.appId }}</span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="回调地址" align="center" prop="callbackUrl" />
|
|
|
|
|
+ <el-table-column label="配置详情" align="center" prop="dataJson">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ size="mini"
|
|
|
|
|
+ type="text"
|
|
|
|
|
+ icon="el-icon-edit"
|
|
|
|
|
+ @click="handleView(scope.row)"
|
|
|
|
|
+ >详情</el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="创建时间" align="center" prop="createdTime" width="180">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <span>{{ parseTime(scope.row.createdTime, '{y}-{m}-{d}') }}</span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="修改时间" align="center" prop="updatedTime" width="180">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <span>{{ parseTime(scope.row.updatedTime, '{y}-{m}-{d}') }}</span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="状态" align="center" prop="isDeleted">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <dict-tag :options="isDeletedOptions" :value="scope.row.isDeleted"/>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ size="mini"
|
|
|
|
|
+ type="text"
|
|
|
|
|
+ icon="el-icon-edit"
|
|
|
|
|
+ @click="handleUpdate(scope.row)"
|
|
|
|
|
+ v-hasPermi="['merchantAppConfig:merchantAppConfig:edit']"
|
|
|
|
|
+ >修改</el-button>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ size="mini"
|
|
|
|
|
+ type="text"
|
|
|
|
|
+ icon="el-icon-delete"
|
|
|
|
|
+ @click="handleDelete(scope.row)"
|
|
|
|
|
+ v-hasPermi="['merchantAppConfig:merchantAppConfig:remove']"
|
|
|
|
|
+ >删除</el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table>
|
|
|
|
|
+
|
|
|
|
|
+ <pagination
|
|
|
|
|
+ v-show="total>0"
|
|
|
|
|
+ :total="total"
|
|
|
|
|
+ :page.sync="queryParams.pageNum"
|
|
|
|
|
+ :limit.sync="queryParams.pageSize"
|
|
|
|
|
+ @pagination="getList"
|
|
|
|
|
+ />
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 添加或修改商户应用配置对话框 -->
|
|
|
|
|
+ <el-dialog :title="title" :visible.sync="dialogVisible" width="800px" append-to-body>
|
|
|
|
|
+ <el-form ref="form" :model="form" :rules="!isViewMode ? rules : {}" label-width="160px" :disabled="isViewMode">
|
|
|
|
|
+ <el-form-item label="商户类型" prop="merchantType">
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="form.merchantType"
|
|
|
|
|
+ placeholder="请选择商户类型"
|
|
|
|
|
+ :disabled="form.id !== null"
|
|
|
|
|
+ @change="handleMerchantTypeChange"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="dict in sysPayModes"
|
|
|
|
|
+ :key="dict.dictValue"
|
|
|
|
|
+ :label="dict.dictLabel"
|
|
|
|
|
+ :value="dict.dictValue"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="应用ID" prop="appIds">
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="form.appIds"
|
|
|
|
|
+ placeholder="请选择应用ID"
|
|
|
|
|
+ clearable
|
|
|
|
|
+ size="small"
|
|
|
|
|
+ multiple
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="dict in appIdOptions"
|
|
|
|
|
+ :key="dict.appid"
|
|
|
|
|
+ :label="dict.name"
|
|
|
|
|
+ :value="dict.appid"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item>
|
|
|
|
|
+ <el-divider></el-divider>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 动态渲染不同商户类型的配置表单 -->
|
|
|
|
|
+ <div v-if="form.merchantType">
|
|
|
|
|
+ <!-- 易宝支付配置 -->
|
|
|
|
|
+ <div v-if="form.merchantType === 'yb'">
|
|
|
|
|
+ <el-form-item label="易宝商户号" prop="ybAccount">
|
|
|
|
|
+ <el-input v-model="ybConfig.ybAccount" placeholder="请输入易宝商户号"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="易宝Key" prop="ybKey">
|
|
|
|
|
+ <el-input v-model="ybConfig.ybKey" placeholder="请输入易宝Key"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="易宝回调地址" prop="ybNotifyUrl">
|
|
|
|
|
+ <el-input v-model="ybConfig.ybNotifyUrl" placeholder="易宝回调地址"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 台州银行配置 -->
|
|
|
|
|
+ <div v-else-if="form.merchantType === 'tz'">
|
|
|
|
|
+ <el-form-item label="台州商户号" prop="tzPlatMerCstNo">
|
|
|
|
|
+ <el-input v-model="tzConfig.tzPlatMerCstNo" placeholder="请输入台州商户号"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="台州appSecret" prop="tzAppSecret">
|
|
|
|
|
+ <el-input v-model="tzConfig.tzAppSecret" placeholder="请输入台州appSecret"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="台州私钥" prop="tzPrivateKey">
|
|
|
|
|
+ <el-input v-model="tzConfig.tzPrivateKey" placeholder="请输入台州私钥"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="台州平台公钥" prop="tzPlatformPublicKey">
|
|
|
|
|
+ <el-input v-model="tzConfig.tzPlatformPublicKey" placeholder="请输入台州平台公钥"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="台州appKey" prop="tzAppKey">
|
|
|
|
|
+ <el-input v-model="tzConfig.tzAppKey" placeholder="请输入台州appKey"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="台州支付回调地址" prop="tzPayDecrypt">
|
|
|
|
|
+ <el-input v-model="tzConfig.tzPayDecrypt" placeholder="请输入台州支付回调地址"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="退款回调地址" prop="tzRefundDecrypt">
|
|
|
|
|
+ <el-input v-model="tzConfig.tzRefundDecrypt" placeholder="请输入退款回调地址"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="分账回调地址" prop="tzOrderShareDecrypt">
|
|
|
|
|
+ <el-input v-model="tzConfig.tzOrderShareDecrypt" placeholder="请输入台州分账回调地址"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 微信支付配置 -->
|
|
|
|
|
+ <div v-else-if="form.merchantType === 'wx'">
|
|
|
|
|
+ <el-form-item label="微信商户号" prop="wxMchId">
|
|
|
|
|
+ <el-input v-model="wxConfig.wxMchId" placeholder="请输入微信商户号"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="微信Key" prop="wxMchKey">
|
|
|
|
|
+ <el-input v-model="wxConfig.wxMchKey" placeholder="请输入微信Key"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="微信商户V3密钥" prop="wxApiV3Key">
|
|
|
|
|
+ <el-input v-model="wxConfig.wxApiV3Key" placeholder="请输入商户V3密钥"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="微信回调地址(scrm)" prop="notifyUrlScrm">
|
|
|
|
|
+ <el-input v-model="wxConfig.notifyUrlScrm" placeholder="请输入商城微信回调地址"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="p12证书路径" prop="keyPath">
|
|
|
|
|
+ <el-input v-model="wxConfig.keyPath" placeholder="请输入p12证书文件的绝对路径"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 汇付支付配置 -->
|
|
|
|
|
+ <div v-else-if="form.merchantType === 'hf'">
|
|
|
|
|
+ <el-form-item label="汇付产品号" prop="hfProductId">
|
|
|
|
|
+ <el-input v-model="hfConfig.hfProductId" placeholder="汇付产品号"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="系统号" prop="hfSysId">
|
|
|
|
|
+ <el-input v-model="hfConfig.hfSysId" placeholder="系统号Key"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="商户号" prop="hfHuifuId">
|
|
|
|
|
+ <el-input v-model="hfConfig.huifuId" placeholder="商户号"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="商户私钥" prop="hfRsaPrivateKey">
|
|
|
|
|
+ <el-input v-model="hfConfig.hfRsaPrivateKey" placeholder="商户私钥"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="汇付公钥" prop="hfRsaPublicKey">
|
|
|
|
|
+ <el-input v-model="hfConfig.hfRsaPublicKey" placeholder="汇付公钥"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="汇付支付回调地址" prop="hfPayNotifyUrl">
|
|
|
|
|
+ <el-input v-model="hfConfig.hfPayNotifyUrl" placeholder="汇付支付回调地址"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="大额支付回调地址" prop="hfPayOnlineNotifyUrl">
|
|
|
|
|
+ <el-input v-model="hfConfig.hfPayOnlineNotifyUrl" placeholder="汇付支付回调地址"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="汇付退款回调地址" prop="hfRefundNotifyUrl">
|
|
|
|
|
+ <el-input v-model="hfConfig.hfRefundNotifyUrl" placeholder="汇付退款回调地址"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="汇付大额退款回调地址" prop="hfOnlineRefundNotifyUrl">
|
|
|
|
|
+ <el-input v-model="hfConfig.hfOnlineRefundNotifyUrl" placeholder="汇付分账回调地址"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+
|
|
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
|
|
+ <el-button type="primary" @click="submitForm" v-if="!isViewMode">确 定</el-button>
|
|
|
|
|
+ <el-button @click="cancel">取 消</el-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-dialog>
|
|
|
|
|
+
|
|
|
|
|
+ </div>
|
|
|
|
|
+</template>
|
|
|
|
|
+
|
|
|
|
|
+<script>
|
|
|
|
|
+import { listMerchantAppConfig, getMerchantAppConfig, delMerchantAppConfig, addMerchantAppConfig, updateMerchantAppConfig, exportMerchantAppConfig } from "@/api/merchantAppConfig/merchantAppConfig";
|
|
|
|
|
+import { listAll } from "@/api/course/coursePlaySourceConfig";
|
|
|
|
|
+
|
|
|
|
|
+export default {
|
|
|
|
|
+ name: "MerchantAppConfig",
|
|
|
|
|
+ data() {
|
|
|
|
|
+ return {
|
|
|
|
|
+ // 遮罩层
|
|
|
|
|
+ loading: true,
|
|
|
|
|
+ // 导出遮罩层
|
|
|
|
|
+ exportLoading: false,
|
|
|
|
|
+ // 选中数组
|
|
|
|
|
+ ids: [],
|
|
|
|
|
+ // 非单个禁用
|
|
|
|
|
+ single: true,
|
|
|
|
|
+ // 非多个禁用
|
|
|
|
|
+ multiple: true,
|
|
|
|
|
+ // 显示搜索条件
|
|
|
|
|
+ showSearch: true,
|
|
|
|
|
+ // 总条数
|
|
|
|
|
+ total: 0,
|
|
|
|
|
+ // 商户应用配置表格数据
|
|
|
|
|
+ merchantAppConfigList: [],
|
|
|
|
|
+ // 弹出层标题
|
|
|
|
|
+ title: "",
|
|
|
|
|
+ // 创建时间时间范围
|
|
|
|
|
+ daterangeCreatedTime: [],
|
|
|
|
|
+ // 删除状态:0-正常,1-已删除字典
|
|
|
|
|
+ isDeletedOptions: [],
|
|
|
|
|
+ sysPayModes: [],
|
|
|
|
|
+ detailOpen: false, // 详情对话框开关
|
|
|
|
|
+ isViewMode: false, // 是否为查看模式
|
|
|
|
|
+ dialogVisible: false,
|
|
|
|
|
+ // 查询参数
|
|
|
|
|
+ queryParams: {
|
|
|
|
|
+ pageNum: 1,
|
|
|
|
|
+ pageSize: 10,
|
|
|
|
|
+ merchantType: null,
|
|
|
|
|
+ appIds: null,
|
|
|
|
|
+ createdTime: null,
|
|
|
|
|
+ isDeleted: "0",
|
|
|
|
|
+ },
|
|
|
|
|
+ appIdOptions:[],
|
|
|
|
|
+ ybConfig: {}, // 易宝配置
|
|
|
|
|
+ tzConfig: {}, // 台州银行配置
|
|
|
|
|
+ wxConfig: {}, // 微信配置
|
|
|
|
|
+ hfConfig: {}, // 汇付配置
|
|
|
|
|
+ // 表单参数
|
|
|
|
|
+ form: {
|
|
|
|
|
+ id: null,
|
|
|
|
|
+ merchantType: null,
|
|
|
|
|
+ appIds: [],
|
|
|
|
|
+ callbackUrl: null,
|
|
|
|
|
+ dataJson: null,
|
|
|
|
|
+ createdTime: null,
|
|
|
|
|
+ updatedTime: null,
|
|
|
|
|
+ isDeleted: null,
|
|
|
|
|
+ createdBy: null,
|
|
|
|
|
+ updatedBy: null
|
|
|
|
|
+ },
|
|
|
|
|
+ // 表单校验
|
|
|
|
|
+ rules: {
|
|
|
|
|
+ merchantType: [
|
|
|
|
|
+ { required: true, message: "商户类型不能为空", trigger: "change" }
|
|
|
|
|
+ ],
|
|
|
|
|
+ isDeleted: [
|
|
|
|
|
+ { required: true, message: "删除状态:0-正常,1-已删除不能为空", trigger: "change" }
|
|
|
|
|
+ ],
|
|
|
|
|
+ createdBy: [
|
|
|
|
|
+ { required: true, message: "创建人ID或用户名不能为空", trigger: "blur" }
|
|
|
|
|
+ ],
|
|
|
|
|
+ updatedBy: [
|
|
|
|
|
+ { required: true, message: "修改人ID或用户名不能为空", trigger: "blur" }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+ },
|
|
|
|
|
+ created() {
|
|
|
|
|
+
|
|
|
|
|
+ this.getDicts("sys_normal_disable").then(response => {
|
|
|
|
|
+ this.isDeletedOptions = response.data;
|
|
|
|
|
+ });
|
|
|
|
|
+ this.getDicts("sys_pay_mode").then(response => {
|
|
|
|
|
+ this.sysPayModes = response.data;
|
|
|
|
|
+ });
|
|
|
|
|
+ listAll().then(response => {
|
|
|
|
|
+ this.appIdOptions=response.data;
|
|
|
|
|
+ });
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+
|
|
|
|
|
+ },
|
|
|
|
|
+ methods: {
|
|
|
|
|
+ /** 详情按钮操作 */
|
|
|
|
|
+ handleView(row) {
|
|
|
|
|
+ this.isViewMode = true;
|
|
|
|
|
+ this.dialogVisible = true; // 改为设置 dialogVisible
|
|
|
|
|
+ this.title = "查看商户应用配置";
|
|
|
|
|
+
|
|
|
|
|
+ // 加载数据(复用修改逻辑)
|
|
|
|
|
+ getMerchantAppConfig(row.id).then(response => {
|
|
|
|
|
+ // 先设置基础数据
|
|
|
|
|
+ Object.keys(response.data).forEach(key => {
|
|
|
|
|
+ if (key !== 'appIds') { // appIds单独处理
|
|
|
|
|
+ this.$set(this.form, key, response.data[key]);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // 单独处理 appIds,确保它是响应式的数组
|
|
|
|
|
+ let appIdsArray = [];
|
|
|
|
|
+ if (response.data.appId) {
|
|
|
|
|
+ if (typeof response.data.appId === 'string') {
|
|
|
|
|
+ appIdsArray = response.data.appId.split(',').map(item => item.trim()).filter(item => item);
|
|
|
|
|
+ } else if (Array.isArray(response.data.appId)) {
|
|
|
|
|
+ appIdsArray = [...response.data.appId];
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 使用 $set 确保响应式
|
|
|
|
|
+ this.$set(this.form, 'appIds', appIdsArray);
|
|
|
|
|
+
|
|
|
|
|
+ // 解析配置详情JSON
|
|
|
|
|
+ if (this.form.dataJson) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const configData = JSON.parse(this.form.dataJson);
|
|
|
|
|
+ switch(this.form.merchantType) {
|
|
|
|
|
+ case 'yb':
|
|
|
|
|
+ this.ybConfig = { ...configData };
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'tz':
|
|
|
|
|
+ this.tzConfig = { ...configData };
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'wx':
|
|
|
|
|
+ this.wxConfig = { ...configData };
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'hf':
|
|
|
|
|
+ this.hfConfig = { ...configData };
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (e) {
|
|
|
|
|
+ console.error('解析配置详情失败:', e);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ ,
|
|
|
|
|
+ /** 关闭详情对话框 */
|
|
|
|
|
+ closeDetailView() {
|
|
|
|
|
+ this.detailOpen = false;
|
|
|
|
|
+ this.isViewMode = false;
|
|
|
|
|
+ this.reset();
|
|
|
|
|
+ },
|
|
|
|
|
+ getAppNames(appIds) {
|
|
|
|
|
+ if (!appIds) return '';
|
|
|
|
|
+
|
|
|
|
|
+ // 处理逗号分隔的字符串
|
|
|
|
|
+ const appIdArray = typeof appIds === 'string' ? appIds.split(',') : Array.isArray(appIds) ? appIds : [appIds];
|
|
|
|
|
+
|
|
|
|
|
+ // 根据 appIdOptions 查找对应的应用名称
|
|
|
|
|
+ const names = appIdArray
|
|
|
|
|
+ .map(id => {
|
|
|
|
|
+ const option = this.appIdOptions.find(opt => opt.appid === id.trim());
|
|
|
|
|
+ return option ? option.name : id;
|
|
|
|
|
+ })
|
|
|
|
|
+ .filter(name => name); // 过滤掉空值
|
|
|
|
|
+
|
|
|
|
|
+ return names.join(', ');
|
|
|
|
|
+ },
|
|
|
|
|
+ /** 商户类型变化处理 */
|
|
|
|
|
+ handleMerchantTypeChange(value) {
|
|
|
|
|
+ // 清空之前的选择
|
|
|
|
|
+ this.ybConfig = {};
|
|
|
|
|
+ this.tzConfig = {};
|
|
|
|
|
+ this.wxConfig = {};
|
|
|
|
|
+ this.hfConfig = {};
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ /** 提交按钮 */
|
|
|
|
|
+ submitForm() {
|
|
|
|
|
+ this.$refs["form"].validate(valid => {
|
|
|
|
|
+ if (valid) {
|
|
|
|
|
+ // 构建配置详情JSON
|
|
|
|
|
+ let configData = {};
|
|
|
|
|
+ switch(this.form.merchantType) {
|
|
|
|
|
+ case 'yb':
|
|
|
|
|
+ configData = { ...this.ybConfig };
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'tz':
|
|
|
|
|
+ configData = { ...this.tzConfig };
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'wx':
|
|
|
|
|
+ configData = { ...this.wxConfig };
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'hf':
|
|
|
|
|
+ configData = { ...this.hfConfig };
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 正确处理多选应用ID转字符串
|
|
|
|
|
+ if (this.form.appIds && Array.isArray(this.form.appIds) && this.form.appIds.length > 0) {
|
|
|
|
|
+ this.form.appId = this.form.appIds.join(',');
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.form.appId = '';
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 将配置转换为JSON字符串
|
|
|
|
|
+ this.form.dataJson = JSON.stringify(configData);
|
|
|
|
|
+
|
|
|
|
|
+ if (this.form.id != null) {
|
|
|
|
|
+ updateMerchantAppConfig(this.form).then(response => {
|
|
|
|
|
+ this.msgSuccess("修改成功");
|
|
|
|
|
+ this.dialogVisible = false;
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ });
|
|
|
|
|
+ } else {
|
|
|
|
|
+ addMerchantAppConfig(this.form).then(response => {
|
|
|
|
|
+ this.msgSuccess("新增成功");
|
|
|
|
|
+ this.dialogVisible = false;
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ /** 修改按钮操作 */
|
|
|
|
|
+ /** 修改按钮操作 */
|
|
|
|
|
+ handleUpdate(row) {
|
|
|
|
|
+ this.reset();
|
|
|
|
|
+ const id = row.id || this.ids;
|
|
|
|
|
+ getMerchantAppConfig(id).then(response => {
|
|
|
|
|
+ // 先设置基础数据
|
|
|
|
|
+ Object.keys(response.data).forEach(key => {
|
|
|
|
|
+ if (key !== 'appIds') { // appIds单独处理
|
|
|
|
|
+ this.$set(this.form, key, response.data[key]);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // 单独处理 appIds,确保它是响应式的数组
|
|
|
|
|
+ let appIdsArray = [];
|
|
|
|
|
+ if (response.data.appId) {
|
|
|
|
|
+ if (typeof response.data.appId === 'string') {
|
|
|
|
|
+ appIdsArray = response.data.appId.split(',').map(item => item.trim()).filter(item => item);
|
|
|
|
|
+ } else if (Array.isArray(response.data.appId)) {
|
|
|
|
|
+ appIdsArray = [...response.data.appId];
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 使用 $set 确保响应式
|
|
|
|
|
+ this.$set(this.form, 'appIds', appIdsArray);
|
|
|
|
|
+
|
|
|
|
|
+ // 解析配置详情JSON
|
|
|
|
|
+ if (this.form.dataJson) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const configData = JSON.parse(this.form.dataJson);
|
|
|
|
|
+ switch(this.form.merchantType) {
|
|
|
|
|
+ case 'yb':
|
|
|
|
|
+ this.ybConfig = { ...configData };
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'tz':
|
|
|
|
|
+ this.tzConfig = { ...configData };
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'wx':
|
|
|
|
|
+ this.wxConfig = { ...configData };
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'hf':
|
|
|
|
|
+ this.hfConfig = { ...configData };
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (e) {
|
|
|
|
|
+ console.error('解析配置详情失败:', e);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ this.isViewMode = false; // 添加此行
|
|
|
|
|
+ this.dialogVisible = true; // 替代 this.open = true
|
|
|
|
|
+ this.title = "修改商户应用配置";
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ,
|
|
|
|
|
+ /** 查询商户应用配置列表 */
|
|
|
|
|
+ getList() {
|
|
|
|
|
+ this.loading = true;
|
|
|
|
|
+ // if (this.queryParams.appIds && this.queryParams.appIds.length > 0) {
|
|
|
|
|
+ // this.queryParams.appIds = this.queryParams.appIds.join(',');
|
|
|
|
|
+ // }
|
|
|
|
|
+ this.queryParams.params = {};
|
|
|
|
|
+ if (null != this.daterangeCreatedTime && '' != this.daterangeCreatedTime) {
|
|
|
|
|
+ this.queryParams.params["beginCreatedTime"] = this.daterangeCreatedTime[0];
|
|
|
|
|
+ this.queryParams.params["endCreatedTime"] = this.daterangeCreatedTime[1];
|
|
|
|
|
+ }
|
|
|
|
|
+ listMerchantAppConfig(this.queryParams).then(response => {
|
|
|
|
|
+ this.merchantAppConfigList = response.rows;
|
|
|
|
|
+ this.total = response.total;
|
|
|
|
|
+ this.loading = false;
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ // 取消按钮
|
|
|
|
|
+ cancel() {
|
|
|
|
|
+ this.dialogVisible = false;
|
|
|
|
|
+ this.reset();
|
|
|
|
|
+ },
|
|
|
|
|
+ // 表单重置
|
|
|
|
|
+ reset() {
|
|
|
|
|
+ this.form = {
|
|
|
|
|
+ id: null,
|
|
|
|
|
+ merchantType: null,
|
|
|
|
|
+ appId: null, // 应该删除这一行
|
|
|
|
|
+ appIds: [], // 初始化为空数组而不是null
|
|
|
|
|
+ callbackUrl: null,
|
|
|
|
|
+ dataJson: null,
|
|
|
|
|
+ createdTime: null,
|
|
|
|
|
+ updatedTime: null,
|
|
|
|
|
+ isDeleted: null,
|
|
|
|
|
+ createdBy: null,
|
|
|
|
|
+ updatedBy: null
|
|
|
|
|
+ };
|
|
|
|
|
+ this.resetForm("form");
|
|
|
|
|
+ },
|
|
|
|
|
+ /** 搜索按钮操作 */
|
|
|
|
|
+ handleQuery() {
|
|
|
|
|
+ this.queryParams.pageNum = 1;
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ },
|
|
|
|
|
+ /** 重置按钮操作 */
|
|
|
|
|
+ resetQuery() {
|
|
|
|
|
+ this.daterangeCreatedTime = [];
|
|
|
|
|
+ this.resetForm("queryForm");
|
|
|
|
|
+ this.handleQuery();
|
|
|
|
|
+ },
|
|
|
|
|
+ // 多选框选中数据
|
|
|
|
|
+ handleSelectionChange(selection) {
|
|
|
|
|
+ this.ids = selection.map(item => item.id)
|
|
|
|
|
+ this.single = selection.length!==1
|
|
|
|
|
+ this.multiple = !selection.length
|
|
|
|
|
+ },
|
|
|
|
|
+ /** 新增按钮操作 */
|
|
|
|
|
+ handleAdd() {
|
|
|
|
|
+ this.reset();
|
|
|
|
|
+ this.isViewMode = false; // 添加此行
|
|
|
|
|
+ this.dialogVisible = true; // 替代 this.open = true
|
|
|
|
|
+ this.title = "添加商户应用配置";
|
|
|
|
|
+ },
|
|
|
|
|
+ // /** 修改按钮操作 */
|
|
|
|
|
+ // handleUpdate(row) {
|
|
|
|
|
+ // this.reset();
|
|
|
|
|
+ // const id = row.id || this.ids
|
|
|
|
|
+ // getMerchantAppConfig(id).then(response => {
|
|
|
|
|
+ // this.form = response.data;
|
|
|
|
|
+ // this.open = true;
|
|
|
|
|
+ // this.title = "修改商户应用配置";
|
|
|
|
|
+ // });
|
|
|
|
|
+ // },
|
|
|
|
|
+ // /** 提交按钮 */
|
|
|
|
|
+ // submitForm() {
|
|
|
|
|
+ // this.$refs["form"].validate(valid => {
|
|
|
|
|
+ // if (valid) {
|
|
|
|
|
+ // if (this.form.id != null) {
|
|
|
|
|
+ // updateMerchantAppConfig(this.form).then(response => {
|
|
|
|
|
+ // this.msgSuccess("修改成功");
|
|
|
|
|
+ // this.open = false;
|
|
|
|
|
+ // this.getList();
|
|
|
|
|
+ // });
|
|
|
|
|
+ // } else {
|
|
|
|
|
+ // addMerchantAppConfig(this.form).then(response => {
|
|
|
|
|
+ // this.msgSuccess("新增成功");
|
|
|
|
|
+ // this.open = false;
|
|
|
|
|
+ // this.getList();
|
|
|
|
|
+ // });
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // });
|
|
|
|
|
+ // },
|
|
|
|
|
+ /** 删除按钮操作 */
|
|
|
|
|
+ handleDelete(row) {
|
|
|
|
|
+ const ids = row.id || this.ids;
|
|
|
|
|
+ this.$confirm('是否确认删除商户应用配置编号为"' + ids + '"的数据项?', "警告", {
|
|
|
|
|
+ confirmButtonText: "确定",
|
|
|
|
|
+ cancelButtonText: "取消",
|
|
|
|
|
+ type: "warning"
|
|
|
|
|
+ }).then(function() {
|
|
|
|
|
+ return delMerchantAppConfig(ids);
|
|
|
|
|
+ }).then(() => {
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ this.msgSuccess("删除成功");
|
|
|
|
|
+ }).catch(() => {});
|
|
|
|
|
+ },
|
|
|
|
|
+ /** 导出按钮操作 */
|
|
|
|
|
+ handleExport() {
|
|
|
|
|
+ const queryParams = this.queryParams;
|
|
|
|
|
+ this.$confirm('是否确认导出所有商户应用配置数据项?', "警告", {
|
|
|
|
|
+ confirmButtonText: "确定",
|
|
|
|
|
+ cancelButtonText: "取消",
|
|
|
|
|
+ type: "warning"
|
|
|
|
|
+ }).then(() => {
|
|
|
|
|
+ this.exportLoading = true;
|
|
|
|
|
+ return exportMerchantAppConfig(queryParams);
|
|
|
|
|
+ }).then(response => {
|
|
|
|
|
+ this.download(response.msg);
|
|
|
|
|
+ this.exportLoading = false;
|
|
|
|
|
+ }).catch(() => {});
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+};
|
|
|
|
|
+</script>
|