<template> <div class="app-container"> <!--工具栏--> <div class="head-container"> <div v-if="crud.props.searchToggle"> <!-- 搜索 --> <el-input v-model="query.value" clearable placeholder="输入搜索内容" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" /> <el-select v-model="query.type" clearable placeholder="类型" class="filter-item" style="width: 130px"> <el-option v-for="item in queryTypeOptions" :key="item.key" :label="item.display_name" :value="item.key" /> </el-select> <rrOperation :crud="crud" /> </div> <!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'--> <crudOperation :permission="permission" /> <!--表单组件--> <el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px"> <el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px"> <el-form-item label="主键"> <el-input v-model="form.id" style="width: 370px;" /> </el-form-item> <el-form-item label="应用ID"> 未设置字典,请手动设置 Select </el-form-item> <el-form-item label="编码"> <MaterialList v-model="charsetArr" style="width: 915px;" type="image" :num="1" :width="150" :height="150" /> </el-form-item> <el-form-item label="类型 固定格式json"> <el-input v-model="form.format" style="width: 370px;" /> </el-form-item> <el-form-item label="网关地址"> <el-input :rows="3" v-model="form.gatewayUrl" type="textarea" style="width: 370px;" /> </el-form-item> <el-form-item label="异步回调"> <el-input v-model="form.notifyUrl" style="width: 370px;" /> </el-form-item> <el-form-item label="私钥"> <el-date-picker v-model="form.privateKey" type="datetime" style="width: 370px;" /> </el-form-item> <el-form-item label="公钥"> <el-input v-model="form.publicKey" style="width: 370px;" /> </el-form-item> <el-form-item label="回调地址"> </el-form-item> <el-form-item label="签名方式"> <el-input v-model="form.signType" style="width: 370px;" /> </el-form-item> <el-form-item label="商户号"> <el-input v-model="form.sysServiceProviderId" style="width: 370px;" /> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="text" @click="crud.cancelCU">取消</el-button> <el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button> </div> </el-dialog> <!--表格渲染--> <el-table ref="table" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;" @selection-change="crud.selectionChangeHandler"> <el-table-column type="selection" width="55" /> <el-table-column v-if="columns.visible('id')" prop="id" label="主键" /> <el-table-column v-if="columns.visible('appId')" prop="appId" label="应用ID" /> <el-table-column v-if="columns.visible('charset')" prop="charset" label="编码"> <template slot-scope="scope"> <a :href="scope.row.charset" style="color: #42b983" target="_blank"> <img :src="scope.row.charset" alt="点击打开" class="table-img" /> </a> </template> </el-table-column> <el-table-column v-if="columns.visible('format')" prop="format" label="类型 固定格式json" /> <el-table-column v-if="columns.visible('gatewayUrl')" prop="gatewayUrl" label="网关地址" /> <el-table-column v-if="columns.visible('notifyUrl')" prop="notifyUrl" label="异步回调" /> <el-table-column v-if="columns.visible('privateKey')" prop="privateKey" label="私钥" /> <el-table-column v-if="columns.visible('publicKey')" prop="publicKey" label="公钥" /> <el-table-column v-if="columns.visible('returnUrl')" prop="returnUrl" label="回调地址"> <template slot-scope="scope"> </template> </el-table-column> <el-table-column v-if="columns.visible('signType')" prop="signType" label="签名方式" /> <el-table-column v-if="columns.visible('sysServiceProviderId')" prop="sysServiceProviderId" label="商户号" /> <el-table-column v-permission="['admin','alipayConfigCopy:edit','alipayConfigCopy:del']" label="操作" width="150px" align="center"> <template slot-scope="scope"> <udOperation :data="scope.row" :permission="permission" /> </template> </el-table-column> </el-table> <!--分页组件--> <pagination /> </div> </div> </template> <script> import crudAlipayConfigCopy from '@/api/alipayConfigCopy' import CRUD, { presenter, header, form, crud } from '@crud/crud' import rrOperation from '@crud/RR.operation' import crudOperation from '@crud/CRUD.operation' import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' import MaterialList from "@/components/material"; // crud交由presenter持有 const defaultCrud = CRUD({ title: 'alipayConfigCopy', url: 'api/alipayConfigCopy', sort: 'id,desc', crudMethod: { ...crudAlipayConfigCopy }}) const defaultForm = { id: null, appId: null, charset: null, format: null, gatewayUrl: null, notifyUrl: null, privateKey: null, publicKey: null, returnUrl: null, signType: null, sysServiceProviderId: null } export default { name: 'AlipayConfigCopy', components: { pagination, crudOperation, rrOperation, udOperation ,MaterialList}, mixins: [presenter(defaultCrud), header(), form(defaultForm), crud()], dicts: ['33'], data() { return { charsetArr:[], permission: { add: ['admin', 'alipayConfigCopy:add'], edit: ['admin', 'alipayConfigCopy:edit'], del: ['admin', 'alipayConfigCopy:del'] }, rules: { }, queryTypeOptions: [ { key: 'appId', display_name: '应用ID' }, { key: 'charset', display_name: '编码' }, { key: 'format', display_name: '类型 固定格式json' }, { key: 'gatewayUrl', display_name: '网关地址' }, { key: 'privateKey', display_name: '私钥' }, { key: 'returnUrl', display_name: '回调地址' } ] } }, watch: { "charsetArr":function(val) { if (val) { this.form.charset = val.join(","); } }, }, methods: { // 获取数据前设置好接口地址 [CRUD.HOOK.beforeRefresh]() { const query = this.query if (query.type && query.value) { this.crud.params[query.type] = query.value }else{ delete this.crud.params.appId delete this.crud.params.charset delete this.crud.params.format delete this.crud.params.gatewayUrl delete this.crud.params.privateKey delete this.crud.params.returnUrl } return true }, // 新增与编辑前做的操作 [CRUD.HOOK.afterToCU](crud, form) { if (form.charset && form.id) { this.charsetArr = form.charset.split(","); }else{ this.charsetArr=[] } }, } } </script> <style scoped> .table-img { display: inline-block; text-align: center; background: #ccc; color: #fff; white-space: nowrap; position: relative; overflow: hidden; vertical-align: middle; width: 32px; height: 32px; line-height: 32px; } </style>