|
|
@@ -0,0 +1,487 @@
|
|
|
+<template>
|
|
|
+ <el-row>
|
|
|
+ <el-row class="movie-list">
|
|
|
+ <el-col :md="16" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
|
|
|
+ <el-row style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header" class="clearfix">
|
|
|
+ <span>存储配置</span>
|
|
|
+ </div>
|
|
|
+ <div class="text item">
|
|
|
+ <el-table
|
|
|
+ :data="storeConfigList"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ prop="id"
|
|
|
+ label="ID"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="ossType"
|
|
|
+ label="存储类型"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="endpoint"
|
|
|
+ label="Endpoint"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="accessKeyId"
|
|
|
+ label="AccessKeyId"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="accessKeySecret"
|
|
|
+ label="AccessKeyIdSecret"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ fixed="right"
|
|
|
+ label="操作"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ @click="onApprove(scope.row)"
|
|
|
+ >同意</el-button>
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="danger"
|
|
|
+ @click="onDecline(scope.row)"
|
|
|
+ >拒绝</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ <el-col :md="8" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
|
|
|
+ <el-row style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header" class="clearfix">
|
|
|
+ <span>视频分区</span>
|
|
|
+ </div>
|
|
|
+ <div class="text item">
|
|
|
+ <el-tree
|
|
|
+ :accordion="true"
|
|
|
+ :data="treeNode"
|
|
|
+ :props="defaultProps"
|
|
|
+ highlight-current
|
|
|
+ @node-click="handleNodeClick"
|
|
|
+ >
|
|
|
+ <span slot-scope="{ node, data }">
|
|
|
+ <span :class="data.icon">{{ node.label }}</span>
|
|
|
+ </span>
|
|
|
+ </el-tree>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="movie-list">
|
|
|
+ <el-col :md="16" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
|
|
|
+ <el-row style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header" class="clearfix">
|
|
|
+ <span>通知配置</span>
|
|
|
+ </div>
|
|
|
+ <div class="text item">
|
|
|
+ <el-table
|
|
|
+ :data="notifyConfigList"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ prop="id"
|
|
|
+ label="ID"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="smtp"
|
|
|
+ label="SMTP"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="username"
|
|
|
+ label="帐号"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="password"
|
|
|
+ label="密码"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="personal"
|
|
|
+ label="发送人"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="defaultSender"
|
|
|
+ label="是否默认"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ fixed="right"
|
|
|
+ label="操作"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ @click="onApprove(scope.row)"
|
|
|
+ >同意</el-button>
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="danger"
|
|
|
+ @click="onDecline(scope.row)"
|
|
|
+ >拒绝</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ <el-col :md="8" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
|
|
|
+ <el-row style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header" class="clearfix">
|
|
|
+ <span>站点公告</span>
|
|
|
+ </div>
|
|
|
+ <div class="text item">
|
|
|
+ {{ siteNotice }}
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="movie-list">
|
|
|
+ <el-col :md="16" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
|
|
|
+ <el-row style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header" class="clearfix">
|
|
|
+ <span>充值请求</span>
|
|
|
+ </div>
|
|
|
+ <div class="text item">
|
|
|
+ <el-table
|
|
|
+ :data="chargeReqList"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ fixed="left"
|
|
|
+ label="No"
|
|
|
+ type="index"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="chargeId"
|
|
|
+ label="充值 ID"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="quantity"
|
|
|
+ label="金额"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="owner"
|
|
|
+ label="用户"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ fixed="right"
|
|
|
+ label="操作"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ @click="onApprove(scope.row)"
|
|
|
+ >同意</el-button>
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="danger"
|
|
|
+ @click="onDecline(scope.row)"
|
|
|
+ >拒绝</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ <el-col :md="8" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
|
|
|
+ <el-row style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header" class="clearfix">
|
|
|
+ <span>会员计划</span>
|
|
|
+ </div>
|
|
|
+ <div class="text item">
|
|
|
+ <el-table
|
|
|
+ :data="vipPlanList"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ prop="planId"
|
|
|
+ label="ID"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="名字"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="price"
|
|
|
+ label="价格(¥)"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ prop="duration"
|
|
|
+ label="时长(天)"
|
|
|
+ />
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-dialog
|
|
|
+ :title="updateTitle"
|
|
|
+ append-to-body
|
|
|
+ :visible.sync="updateMobileDialog"
|
|
|
+ width="30%"
|
|
|
+ center
|
|
|
+ >
|
|
|
+ <el-row style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px; text-align: center">
|
|
|
+ <el-form ref="form" :model="updateMobileForm" label-width="100px">
|
|
|
+ <el-form-item label="邮箱/手机号" label-width="100px">
|
|
|
+ <el-input
|
|
|
+ v-model="updateMobileForm.principal"
|
|
|
+ placeholder="请输入邮箱或手机号"
|
|
|
+ style="width: 45%; padding-right: 10px"
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ <el-button :disabled="isBtn" @click="sendVerifyCode">{{ code }}</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="验证码" label-width="90px">
|
|
|
+ <el-input
|
|
|
+ v-model="updateMobileForm.verifyCode"
|
|
|
+ placeholder="请输入短信验证码"
|
|
|
+ style="padding-right: 1px"
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="密码">
|
|
|
+ <el-input
|
|
|
+ v-model="updateMobileForm.credential"
|
|
|
+ type="password"
|
|
|
+ placeholder="请输入密码"
|
|
|
+ style="padding-right: 1px"
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ @click.native="updateUserEmail"
|
|
|
+ >更新</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-row>
|
|
|
+ </el-dialog>
|
|
|
+ <el-dialog
|
|
|
+ :title="updateTitle"
|
|
|
+ append-to-body
|
|
|
+ :visible.sync="updatePasswordDialog"
|
|
|
+ width="30%"
|
|
|
+ center
|
|
|
+ >
|
|
|
+ <el-row style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px; text-align: center">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div class="text item">
|
|
|
+ <el-form ref="form" :model="updatePasswordForm" label-width="100px">
|
|
|
+ <el-form-item label="当前密码">
|
|
|
+ <el-input
|
|
|
+ v-model="updatePasswordForm.credential"
|
|
|
+ type="password"
|
|
|
+ placeholder="请输入当前密码"
|
|
|
+ style="padding-right: 1px"
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="新密码">
|
|
|
+ <el-input
|
|
|
+ v-model="updatePasswordForm.credential"
|
|
|
+ type="password"
|
|
|
+ placeholder="请输入新密码"
|
|
|
+ style="padding-right: 1px"
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="确认新密码">
|
|
|
+ <el-input
|
|
|
+ v-model="updatePasswordForm.credential"
|
|
|
+ type="password"
|
|
|
+ placeholder="请确认新密码"
|
|
|
+ style="padding-right: 1px"
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ @click.native="updateUserPassword"
|
|
|
+ >更新</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </el-row>
|
|
|
+ </el-dialog>
|
|
|
+ </el-row>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { userMixin } from 'assets/js/mixin'
|
|
|
+import {
|
|
|
+ getChargeReq,
|
|
|
+ getFileStoreConfig,
|
|
|
+ getNotifyConfig,
|
|
|
+ getSiteNotice,
|
|
|
+ getVideoCategory,
|
|
|
+ getVipPlan
|
|
|
+} from '@/api/admin'
|
|
|
+import {videoCategories} from "@/api/video";
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: 'AdminSiteConfig',
|
|
|
+ mixins: [userMixin],
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ storeConfigList: null,
|
|
|
+ notifyConfigList: [],
|
|
|
+ vipPlanList: [],
|
|
|
+ siteNotice: null,
|
|
|
+ videoCategory: null,
|
|
|
+ chargeReqList: [],
|
|
|
+ treeNode: [],
|
|
|
+ defaultProps: {
|
|
|
+ children: 'children',
|
|
|
+ label: 'label',
|
|
|
+ value: 'value'
|
|
|
+ },
|
|
|
+ updateType: 1,
|
|
|
+ updateTitle: '',
|
|
|
+ updateMobileDialog: false,
|
|
|
+ updateMobileForm: {
|
|
|
+ principal: null,
|
|
|
+ verifyCode: null,
|
|
|
+ credential: null,
|
|
|
+ captchaCode: null,
|
|
|
+ channel: 1,
|
|
|
+ plat: 2
|
|
|
+ },
|
|
|
+ updatePasswordDialog: false,
|
|
|
+ updatePasswordForm: {
|
|
|
+ principal: null,
|
|
|
+ verifyCode: null,
|
|
|
+ credential: null,
|
|
|
+ captchaCode: null,
|
|
|
+ channel: 1,
|
|
|
+ plat: 2
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ document.title = '站点配置'
|
|
|
+ this.getData()
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getData() {
|
|
|
+ getFileStoreConfig().then(resp => {
|
|
|
+ if (resp.code === 0) {
|
|
|
+ this.storeConfigList = resp.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ getNotifyConfig().then(resp => {
|
|
|
+ if (resp.code === 0) {
|
|
|
+ this.notifyConfigList = resp.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ getVipPlan().then(resp => {
|
|
|
+ if (resp.code === 0) {
|
|
|
+ this.vipPlanList = resp.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ getSiteNotice().then(resp => {
|
|
|
+ if (resp.code === 0) {
|
|
|
+ this.siteNotice = resp.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ getVideoCategory().then(resp => {
|
|
|
+ if (resp.code === 0) {
|
|
|
+ }
|
|
|
+ })
|
|
|
+ videoCategories().then(resp => {
|
|
|
+ if (resp.code === 0) {
|
|
|
+ this.treeNode = resp.data
|
|
|
+ } else {
|
|
|
+ this.$notify({
|
|
|
+ title: '提示',
|
|
|
+ message: resp.msg,
|
|
|
+ type: 'error',
|
|
|
+ duration: 3000
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }).catch(error => {
|
|
|
+ this.$notify({
|
|
|
+ title: '提示',
|
|
|
+ message: error.message,
|
|
|
+ type: 'warning',
|
|
|
+ duration: 3000
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ getChargeReq(1).then(resp => {
|
|
|
+ if (resp.code === 0) {
|
|
|
+ this.chargeReqList = resp.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // ****************************************************************************************************************
|
|
|
+ showUpdateDialog(type) {
|
|
|
+ if (type === 1) {
|
|
|
+ this.updateType = 1
|
|
|
+ this.updateTitle = '更新用户手机号'
|
|
|
+ this.updateMobileDialog = true
|
|
|
+ } else if (type === 2) {
|
|
|
+ this.updateType = 2
|
|
|
+ this.updateTitle = '更新用户密码'
|
|
|
+ this.updatePasswordDialog = true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onUpdate() {
|
|
|
+ if (this.updateType === 1) {
|
|
|
+ this.updateMobileDialog = false
|
|
|
+ } else {
|
|
|
+ this.updatePasswordDialog = false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ sendVerifyCode() {
|
|
|
+ this.$message.info('发送验证码')
|
|
|
+ },
|
|
|
+ updateUserEmail() {
|
|
|
+ this.$message.info(this.updateMobileForm)
|
|
|
+ this.updateMobileDialog = false
|
|
|
+ },
|
|
|
+ updateUserPassword() {
|
|
|
+ this.$message.info(this.updatePasswordForm)
|
|
|
+ this.updatePasswordDialog = false
|
|
|
+ },
|
|
|
+ onApprove(row) {
|
|
|
+ this.$message.info('同意充值 ' + row.chargeId)
|
|
|
+ },
|
|
|
+ onDecline(row) {
|
|
|
+ this.$message.info('拒绝充值' + row.chargeId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style>
|
|
|
+</style>
|