Commit f9ecf430 authored by Your Name's avatar Your Name

账户管理

parent 1bb1a26a
'use strict' 'use strict'
// Template version: 1.3.1 // Template version: 1.3.1
// see http://vuejs-templates.github.io/webpack for documentation. // see http://vuejs-templates.github.io/webpack for documentation.
const path = require('path') const path = require('path')
module.exports = { module.exports = {
dev: { dev: {
// Paths // Paths
assetsSubDirectory: 'static', assetsSubDirectory: 'static',
assetsPublicPath: '/', assetsPublicPath: '/',
proxyTable: { proxyTable: {
'/mall': { '/mall': {
target: "http://111.203.232.175:8088/mall", target: "http://111.203.232.175:8088/mall",
// target: "http://192.168.110.67/mall", // target: "http://192.168.110.67/mall",
// target: "http://192.168.204.66:8088/mall", // target: "http://192.168.204.66:8088/mall",
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/mall': '/' // 重写接口 '^/mall': '/' // 重写接口
} }
}, },
'/aa': { '/aa': {
target: "http://111.203.232.175:8085", target: "http://111.203.232.175:8085",
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/aa': '/' // 重写接口 '^/aa': '/' // 重写接口
} }
} }
}, },
// Various Dev Server settings // Various Dev Server settings
// host: 'localhost', // can be overwritten by process.env.HOST // host: 'localhost', // can be overwritten by process.env.HOST
host: '0.0.0.0', // can be overwritten by process.env.HOST host: '0.0.0.0', // can be overwritten by process.env.HOST
port: 3000, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined port: 3000, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false, autoOpenBrowser: false,
errorOverlay: true, errorOverlay: true,
notifyOnErrors: true, notifyOnErrors: true,
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
/** /**
* Source Maps * Source Maps
*/ */
// https://webpack.js.org/configuration/devtool/#development // https://webpack.js.org/configuration/devtool/#development
devtool: 'cheap-module-eval-source-map', devtool: 'cheap-module-eval-source-map',
// If you have problems debugging vue-files in devtools, // If you have problems debugging vue-files in devtools,
// set this to false - it *may* help // set this to false - it *may* help
// https://vue-loader.vuejs.org/en/options.html#cachebusting // https://vue-loader.vuejs.org/en/options.html#cachebusting
cacheBusting: true, cacheBusting: true,
cssSourceMap: true cssSourceMap: true
}, },
build: { build: {
// Template for index.html // Template for index.html
index: path.resolve(__dirname, '../plat/index.html'), index: path.resolve(__dirname, '../plat/index.html'),
// Paths // Paths
assetsRoot: path.resolve(__dirname, '../plat'), assetsRoot: path.resolve(__dirname, '../plat'),
assetsSubDirectory: 'static', assetsSubDirectory: 'static',
assetsPublicPath: './', assetsPublicPath: './',
/** /**
* Source Maps * Source Maps
*/ */
productionSourceMap: false, productionSourceMap: false,
// https://webpack.js.org/configuration/devtool/#production // https://webpack.js.org/configuration/devtool/#production
devtool: '#source-map', devtool: '#source-map',
// Gzip off by default as many popular static hosts such as // Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you. // Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to: // Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin // npm install --save-dev compression-webpack-plugin
productionGzip: false, productionGzip: false,
productionGzipExtensions: ['js', 'css'], productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to // Run the build command with an extra argument to
// View the bundle analyzer report after build finishes: // View the bundle analyzer report after build finishes:
// `npm run build --report` // `npm run build --report`
// Set to `true` or `false` to always turn it on or off // Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report bundleAnalyzerReport: process.env.npm_config_report
} }
} }
{ {
"name": "hall", "name": "hall",
"version": "1.0.0", "version": "1.0.0",
"description": "manage", "description": "manage",
"author": "yuyan <yuyan@wisenergy.com.cn>", "author": "yuyan <yuyan@wisenergy.com.cn>",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev", "start": "npm run dev",
"build": "node build/build.js" "build": "node build/build.js"
}, },
"dependencies": { "dependencies": {
"animate.css": "^4.1.1", "animate.css": "^4.1.1",
"axios": "^0.18.0", "axios": "^0.18.0",
"crypto-js": "^4.0.0", "crypto-js": "^4.0.0",
"echarts": "^4.2.0-rc.2", "echarts": "^4.2.0-rc.2",
"element-ui": "^2.7.2", "element-ui": "^2.7.2",
"file-saver": "^2.0.0-rc.3", "file-saver": "^2.0.0-rc.3",
"html2canvas": "^1.0.0-rc.7", "html2canvas": "^1.0.0-rc.7",
"js-base64": "^3.6.0", "js-base64": "^3.6.0",
"jspdf": "^2.3.1", "jspdf": "^2.3.1",
"moment": "^2.22.2", "moment": "^2.22.2",
"qrcode.vue": "^1.6.1", "qrcode.vue": "^1.6.1",
"qs": "^6.5.2", "qs": "^6.5.2",
"qs-stringify": "^1.1.0", "qs-stringify": "^1.1.0",
"swiper": "^5.4.5", "swiper": "^5.4.5",
"video.js": "^7.11.4", "video.js": "^7.11.4",
"vue": "^2.5.2", "vue": "^2.5.2",
"vue-awesome-swiper": "^4.1.1", "vue-awesome-swiper": "^4.1.1",
"vue-qr": "^1.5.2", "vue-qr": "^1.5.2",
"vue-router": "^3.0.1", "vue-router": "^3.0.1",
"vuex": "^3.0.1", "vuex": "^3.0.1",
"xlsx": "^0.14.0" "xlsx": "^0.14.0"
}, },
"devDependencies": { "devDependencies": {
"autoprefixer": "^7.1.2", "autoprefixer": "^7.1.2",
"babel-core": "^6.22.1", "babel-core": "^6.22.1",
"babel-helper-vue-jsx-merge-props": "^2.0.3", "babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-loader": "^7.1.1", "babel-loader": "^7.1.1",
"babel-plugin-syntax-jsx": "^6.18.0", "babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-runtime": "^6.22.0", "babel-plugin-transform-runtime": "^6.22.0",
"babel-plugin-transform-vue-jsx": "^3.5.0", "babel-plugin-transform-vue-jsx": "^3.5.0",
"babel-preset-env": "^1.3.2", "babel-preset-env": "^1.3.2",
"babel-preset-stage-2": "^6.22.0", "babel-preset-stage-2": "^6.22.0",
"chalk": "^2.0.1", "chalk": "^2.0.1",
"copy-webpack-plugin": "^4.0.1", "copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.11", "css-loader": "^0.28.11",
"extract-text-webpack-plugin": "^3.0.0", "extract-text-webpack-plugin": "^3.0.0",
"file-loader": "^1.1.11", "file-loader": "^1.1.11",
"friendly-errors-webpack-plugin": "^1.6.1", "friendly-errors-webpack-plugin": "^1.6.1",
"html-webpack-plugin": "^2.30.1", "html-webpack-plugin": "^2.30.1",
"jquery": "^3.3.1", "jquery": "^3.3.1",
"less": "^3.8.1", "less": "^3.8.1",
"less-loader": "^4.1.0", "less-loader": "^4.1.0",
"node-notifier": "^5.1.2", "node-notifier": "^5.1.2",
"optimize-css-assets-webpack-plugin": "^3.2.0", "optimize-css-assets-webpack-plugin": "^3.2.0",
"ora": "^1.2.0", "ora": "^1.2.0",
"portfinder": "^1.0.13", "portfinder": "^1.0.13",
"postcss-import": "^11.0.0", "postcss-import": "^11.0.0",
"postcss-loader": "^2.0.8", "postcss-loader": "^2.0.8",
"postcss-url": "^7.2.1", "postcss-url": "^7.2.1",
"rimraf": "^2.6.0", "rimraf": "^2.6.0",
"sass-resources-loader": "^2.1.1", "sass-resources-loader": "^2.1.1",
"semver": "^5.3.0", "semver": "^5.3.0",
"shelljs": "^0.7.6", "shelljs": "^0.7.6",
"style-loader": "^0.23.0", "style-loader": "^0.23.0",
"uglifyjs-webpack-plugin": "^1.1.1", "uglifyjs-webpack-plugin": "^1.1.1",
"url-loader": "^1.1.2", "url-loader": "^1.1.2",
"vue-loader": "^13.3.0", "vue-loader": "^13.3.0",
"vue-style-loader": "^3.0.1", "vue-style-loader": "^3.0.1",
"vue-template-compiler": "^2.5.2", "vue-template-compiler": "^2.5.2",
"webpack": "^3.6.0", "webpack": "^3.6.0",
"webpack-bundle-analyzer": "^2.9.0", "webpack-bundle-analyzer": "^2.9.0",
"webpack-dev-server": "^2.9.1", "webpack-dev-server": "^2.9.1",
"webpack-merge": "^4.1.0" "webpack-merge": "^4.1.0"
}, },
"engines": { "engines": {
"node": ">= 6.0.0", "node": ">= 6.0.0",
"npm": ">= 3.0.0" "npm": ">= 3.0.0"
}, },
"browserslist": [ "browserslist": [
"> 1%", "> 1%",
"last 2 versions", "last 2 versions",
"not ie <= 8" "not ie <= 8"
] ]
} }
<template> <template>
<el-dialog <el-dialog
class="custom-dialog" class="custom-dialog"
custom-class="party-dialog" custom-class="party-dialog"
title="上传新版安装包" title="上传新版安装包"
width="468px" width="468px"
:visible.sync="formVisible" :visible.sync="formVisible"
:before-close="close" :before-close="close"
> >
<div class="dialog-content"> <div class="dialog-content">
<el-form <el-form
:model="formItem" :model="formItem"
class="party-form version-add" class="party-form version-add"
ref="formItem" ref="formItem"
label-position="top" label-position="top"
:rules="rules" :rules="rules"
> >
<el-form-item label="版本号:" prop="appVersion"> <el-form-item label="版本号:" prop="appVersion">
<el-input <el-input
maxlength="20" maxlength="20"
v-model="formItem.appVersion" v-model="formItem.appVersion"
clearable clearable
placeholder="请输入版本号" placeholder="请输入版本号"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="版本信息:" prop="versionInfo"> <el-form-item label="版本信息:" prop="versionInfo">
<el-input <el-input
maxlength="100" maxlength="100"
type="textarea" type="textarea"
v-model="formItem.versionInfo" v-model="formItem.versionInfo"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="更新内容:" prop="updateLog"> <el-form-item label="更新内容:" prop="updateLog">
<el-input <el-input
maxlength="100" maxlength="100"
type="textarea" type="textarea"
v-model="formItem.updateLog" v-model="formItem.updateLog"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-upload <el-upload
class="text-center" class="text-center"
drag drag
:action="uploadUrl" :action="uploadUrl"
:headers ="headers" :headers ="headers"
:on-success="handleAvatarSuccess" :on-success="handleAvatarSuccess"
:before-upload="handleBeforeUpload" :before-upload="handleBeforeUpload"
:file-list="fileList" :file-list="fileList"
> >
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text"> <div class="el-upload__text">
将安装包拖到此处,或<em>点击上传安装包</em> 将安装包拖到此处,或<em>点击上传安装包</em>
</div> </div>
<div class="el-upload__tip" slot="tip">只能上传apk文件</div> <div class="el-upload__tip" slot="tip">只能上传apk文件</div>
</el-upload> </el-upload>
</el-form> </el-form>
</div> </div>
<div slot="footer" class="dialog-footer btn-group"> <div slot="footer" class="dialog-footer btn-group">
<el-button size="mini" @click="close">取 消</el-button> <el-button size="mini" @click="close">取 消</el-button>
<el-button size="mini" type="primary" @click="submitForm('formItem')">确定</el-button> <el-button size="mini" type="primary" @click="submitForm('formItem')">确定</el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
uploadUrl:'http://111.203.232.175:8088/mall/file/upload/allType', uploadUrl:'http://111.203.232.175:8088/mall/file/upload/allType',
formVisible: false, formVisible: false,
headers:{Authorization: localStorage.getItem('backToken')}, headers:{Authorization: localStorage.getItem('backToken')},
formItem: {}, formItem: {},
fileList: [], fileList: [],
rules: { rules: {
appVersion: [ appVersion: [
{ required: true, message: "请输入版本号", trigger: "blur" }, { required: true, message: "请输入版本号", trigger: "blur" },
], ],
versionInfo: [ versionInfo: [
{ required: true, message: "请输入版本信息", trigger: "blur" }, { required: true, message: "请输入版本信息", trigger: "blur" },
], ],
updateLog: [ updateLog: [
{ required: true, message: "请输入更新内容", trigger: "blur" }, { required: true, message: "请输入更新内容", trigger: "blur" },
], ],
}, },
}; };
}, },
methods: { methods: {
backFn() { backFn() {
this.formVisible = true this.formVisible = true
this.formItem = {} this.formItem = {}
this.fileList = [] this.fileList = []
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.formItem.clearValidate() this.$refs.formItem.clearValidate()
}); });
}, },
// 关闭 // 关闭
close() { close() {
this.formVisible = false; this.formVisible = false;
for (let key in this.formItem) { for (let key in this.formItem) {
this.formItem[key] = null this.formItem[key] = null
} }
this.$refs["formItem"].resetFields() this.$refs["formItem"].resetFields()
}, },
// 格式控制 // 格式控制
handleBeforeUpload(file) { handleBeforeUpload(file) {
if (file.type !== "application/vnd.android.package-archive") { if (file.type !== "application/vnd.android.package-archive") {
this.$message.error("只能上传apk文件") this.$message.error("只能上传apk文件")
return false return false
} }
return true return true
}, },
// 上传数据操作 // 上传数据操作
handleAvatarSuccess(res, file) { handleAvatarSuccess(res, file) {
if(res.resultCode==='200'){ if(res.resultCode==='200'){
this.formItem.apkUrl = res.data.url this.formItem.apkUrl = res.data.url
}else{ }else{
this.$message.error(res.message) this.$message.error(res.message)
} }
}, },
// 保存编辑信息 // 保存编辑信息
submitForm() { submitForm() {
let _this = this let _this = this
_this.$refs.formItem.validate((valid) => { _this.$refs.formItem.validate((valid) => {
if (valid) { if (valid) {
if (!this.formItem.apkUrl) { if (!this.formItem.apkUrl) {
this.$message.info("请先选取文件!") this.$message.info("请先选取文件!")
return false return false
} }
let param = { let param = {
appVersion: this.formItem.appVersion, appVersion: this.formItem.appVersion,
versionInfo: this.formItem.versionInfo, versionInfo: this.formItem.versionInfo,
updateLog: this.formItem.updateLog, updateLog: this.formItem.updateLog,
apkUrl: this.formItem.apkUrl, apkUrl: this.formItem.apkUrl,
} }
_this _this
.$https( .$https(
{ {
url: "tAppVersion/save", url: "tAppVersion/save",
method: "post", method: "post",
authType: this.backToken, authType: this.backToken,
}, },
_this.$qs.stringify(param) _this.$qs.stringify(param)
) )
.then( .then(
(res) => { (res) => {
if (res.data.resultCode === "200") { if (res.data.resultCode === "200") {
_this.$message.success(res.data.message) _this.$message.success(res.data.message)
_this.formVisible = false _this.formVisible = false
_this.$emit("refreshFn") _this.$emit("refreshFn")
} else { } else {
_this.$message.error(res.data.message) _this.$message.error(res.data.message)
} }
}, },
(error) => { (error) => {
console.log(error) console.log(error)
} }
) )
} }
}) })
}, },
}, },
}; };
</script> </script>
<style lang="less"> <style lang="less">
.version-add { .version-add {
.el-upload-dragger { .el-upload-dragger {
height: 120px; height: 120px;
.el-icon-upload { .el-icon-upload {
margin-top: 10px; margin-top: 10px;
} }
} }
.text-center { .text-center {
text-align: center; text-align: center;
} }
} }
</style> </style>
<template> <template>
<div class="STBbase-wrapper height100"> <div class="STBbase-wrapper height100">
<div class="search-container"> <div class="search-container">
<el-form :inline="true" :model="form"> <el-form :inline="true" :model="form">
<el-form-item> <el-form-item>
<el-select v-model="form.orgId" placeholder="请选择所属单位"> <el-select v-model="form.orgId" placeholder="请选择所属单位">
<el-option <el-option
v-for="item in orgOptions" v-for="item in orgOptions"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id" :value="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-cascader <el-cascader
placeholder="请选择区域" placeholder="请选择区域"
v-model="form.areaId" v-model="form.areaId"
:options="areaOptions" :options="areaOptions"
:props="defaultProps" :props="defaultProps"
change-on-select change-on-select
></el-cascader> ></el-cascader>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-date-picker <el-date-picker
v-model="form.date" v-model="form.date"
type="daterange" type="daterange"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<div class="btn-group"> <div class="btn-group">
<el-button type="primary" @click="onSearch">查询</el-button> <el-button type="primary" @click="onSearch">查询</el-button>
<el-button @click="handleReset">重置</el-button> <el-button @click="handleReset">重置</el-button>
</div> </div>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="page-tip"> <div class="page-tip">
<span class="page-tip-title">页面说明:</span> <span class="page-tip-title">页面说明:</span>
<span class="page-tips" <span class="page-tips"
>机顶盒账号为机顶盒所属单位名称,新建后生成6位数字及字母的随机密码,作为机顶盒的登录密码。</span >机顶盒账号为机顶盒所属单位名称,新建后生成6位数字及字母的随机密码,作为机顶盒的登录密码。</span
> >
</div> </div>
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="btn-group"> <div class="btn-group">
<el-button type="primary" @click="addBox">新建机顶盒账号</el-button> <el-button type="primary" @click="addBox">新建机顶盒账号</el-button>
<el-button class="export" type="primary" @click="handleExport" <el-button class="export" type="primary" @click="handleExport"
>导出</el-button >导出</el-button
> >
</div> </div>
<stb-table <stb-table
:currentPage="page._index" :currentPage="page._index"
:feildList="feildList" :feildList="feildList"
:list="tableData" :list="tableData"
@action="handleAction" @action="handleAction"
/> />
<party-pagination :page="page" @changePage="handleCurrentChange" /> <party-pagination :page="page" @changePage="handleCurrentChange" />
</div> </div>
<add-dialog ref="formItem" @refreshFn="onSearch" /> <add-dialog ref="formItem" @refreshFn="onSearch" />
<edit-dialog ref="editform" @refreshFn="onSearch" /> <edit-dialog ref="editform" @refreshFn="onSearch" />
</div> </div>
</template> </template>
<script> <script>
import { partyPagination } from "@/components/index"; import { partyPagination } from "@/components/index";
import { addDialog, editDialog, stbTable } from "./components/index"; import { addDialog, editDialog, stbTable } from "./components/index";
import { getAreas } from "@/config/area.js"; import { getAreas } from "@/config/area.js";
import { getOrgListWithOutPage } from "@/config/organ.js"; import { getOrgListWithOutPage } from "@/config/organ.js";
export default { export default {
components: { partyPagination, addDialog, editDialog, stbTable }, components: { partyPagination, addDialog, editDialog, stbTable },
data() { data() {
return { return {
page: { page: {
_index: 1, _index: 1,
_size: 10, _size: 10,
total: 0, total: 0,
}, },
feildList: [ feildList: [
{ prop: "mac", label: "MAC地址" }, { prop: "mac", label: "MAC地址" },
{ prop: "organName", label: "所属单位" }, { prop: "organName", label: "所属单位" },
{ prop: "num", label: "展板播放次数" }, { prop: "num", label: "展板播放次数" },
{ prop: "exiredDate", label: "到期时间" }, { prop: "exiredDate", label: "到期时间" },
{ prop: "", label: "操作", isEdit: true, width: 180 }, { prop: "", label: "操作", isEdit: true, width: 180 },
], ],
orgOptions: [], // 单位信息 orgOptions: [], // 单位信息
areaOptions: [], //区域信息 areaOptions: [], //区域信息
defaultProps: { defaultProps: {
label: "name", label: "name",
value: "id", value: "id",
checkStrictly: true, checkStrictly: true,
}, },
form: { form: {
orgId: "", orgId: "",
areaId: [], areaId: [],
}, },
tableData: [], // 表格信息 tableData: [], // 表格信息
}; };
}, },
mounted() { mounted() {
this.getAreas(); this.getAreas();
this.onSearch(); this.onSearch();
this.getOrgList(); this.getOrgList();
}, },
methods: { methods: {
// 获取单位信息 // 获取单位信息
async getOrgList() { async getOrgList() {
this.orgOptions = await getOrgListWithOutPage(); this.orgOptions = await getOrgListWithOutPage();
}, },
// 获取区域信息 // 获取区域信息
async getAreas() { async getAreas() {
this.areaOptions = await getAreas(); this.areaOptions = await getAreas();
}, },
// 查询 // 查询
onSearch() { onSearch() {
this.page._index = 1; this.page._index = 1;
this.requestForm = JSON.parse(JSON.stringify(this.form)); this.requestForm = JSON.parse(JSON.stringify(this.form));
this.getTableData(); this.getTableData();
}, },
// 获得数据接口 // 获得数据接口
getTableData() { getTableData() {
let vm = this; let vm = this;
let dates = {}; let dates = {};
if (this.form.date) { if (this.form.date) {
dates.beginDate = this.form.date[0]; dates.beginDate = this.form.date[0];
dates.endDate = this.form.date[1]; dates.endDate = this.form.date[1];
} }
let param = { let param = {
_index: this.page._index, _index: this.page._index,
_size: this.page._size, _size: this.page._size,
areaId: this.requestForm.areaId.length areaId: this.requestForm.areaId.length
? this.requestForm.areaId[this.requestForm.areaId.length - 1] ? this.requestForm.areaId[this.requestForm.areaId.length - 1]
: "", : "",
organId: this.requestForm.orgId, organId: this.requestForm.orgId,
...dates, ...dates,
}; };
vm.$https( vm.$https(
{ {
url: "boxOperation/selectPageList", url: "boxOperation/selectPageList",
method: "post", method: "post",
authType: this.backToken, authType: this.backToken,
}, },
vm.$qs.stringify(param) vm.$qs.stringify(param)
) )
.then((res) => { .then((res) => {
if (res.data.resultCode === "200") { if (res.data.resultCode === "200") {
let data = res.data.data; let data = res.data.data;
vm.page.total = data.total; vm.page.total = data.total;
vm.tableData = data.records; vm.tableData = data.records;
} else { } else {
this.$message.error(res.data.message); this.$message.error(res.data.message);
} }
}) })
.catch(function (err) { .catch(function (err) {
console.log(err); console.log(err);
}); });
}, },
// 新增弹框打开 // 新增弹框打开
addBox() { addBox() {
this.$refs.formItem.backFn(this.orgOptions); this.$refs.formItem.backFn(this.orgOptions);
}, },
// 重置 // 重置
handleReset() { handleReset() {
this.form = { this.form = {
orgId: "", orgId: "",
areaId: [], areaId: [],
}; };
this.onSearch(); this.onSearch();
}, },
// 分页 // 分页
handleCurrentChange(val) { handleCurrentChange(val) {
this.page._index = val; this.page._index = val;
this.getTableData(); this.getTableData();
}, },
handleAction(params) { handleAction(params) {
this.activeRow = params.row; this.activeRow = params.row;
switch (params.type) { switch (params.type) {
case "detail": case "detail":
this.handleDetail(); this.handleDetail();
break; break;
case "edit": case "edit":
this.handleEdit(); this.handleEdit();
break; break;
default: default:
break; break;
} }
}, },
// 编辑 // 编辑
handleEdit() { handleEdit() {
this.$refs.editform.backFn(this.activeRow); this.$refs.editform.backFn(this.activeRow);
}, },
// 导出 // 导出
handleExport() { handleExport() {
let dates = {}; let dates = {};
if (this.form.date) { if (this.form.date) {
dates.beginDate = this.requestForm.date[0]; dates.beginDate = this.requestForm.date[0];
dates.endDate = this.requestForm.date[1]; dates.endDate = this.requestForm.date[1];
} }
let param = { let param = {
areaId: this.requestForm.areaId.length areaId: this.requestForm.areaId.length
? this.requestForm.areaId[this.requestForm.areaId.length - 1] ? this.requestForm.areaId[this.requestForm.areaId.length - 1]
: "", : "",
organId: this.requestForm.orgId, organId: this.requestForm.orgId,
...dates, ...dates,
}; };
this.$https( this.$https(
{ {
url: "/boxOperation/export", url: "/boxOperation/export",
method: "post", method: "post",
authType: this.backToken, authType: this.backToken,
responseType: "blob", responseType: "blob",
}, },
this.$qs.stringify(param) this.$qs.stringify(param)
).then((res) => { ).then((res) => {
let blobUrl = window.URL.createObjectURL(res.data); let blobUrl = window.URL.createObjectURL(res.data);
const aElement = document.createElement("a"); const aElement = document.createElement("a");
aElement.href = blobUrl; aElement.href = blobUrl;
aElement.download = "机顶盒基础信息.xls"; aElement.download = "机顶盒基础信息.xls";
aElement.click(); aElement.click();
window.URL.revokeObjectURL(blobUrl); window.URL.revokeObjectURL(blobUrl);
}); });
}, },
}, },
}; };
</script> </script>
<style lang="less"> <style lang="less">
</style> </style>
\ No newline at end of file
<template> <template>
<div class="custom-page height100"> <div class="custom-page height100">
<el-card class="height100"> <el-card class="height100">
<div class="page-content"> <div class="page-content">
<div class="page-tip"> <div class="page-tip">
<span class="tip-title">页面说明:</span> <span class="tip-title">页面说明:</span>
<span>可更换app目录界面及运行界面的背景图,可新增背景图,可预览背景图</span> <span>可更换app目录界面及运行界面的背景图,可新增背景图,可预览背景图</span>
</div> </div>
<div class="top-content"> <div class="top-content">
<div class="content-title"> <div class="content-title">
<div class="title">app目录界面设置</div> <div class="title">app目录界面设置</div>
<div class="btn-group"> <div class="btn-group">
<el-upload <el-upload
action="http://111.203.232.175:8088/mall/file/image/upload" action="http://111.203.232.175:8088/mall/file/image/upload"
:on-success="uploadPageImg" :on-success="uploadPageImg"
:before-upload="handleBeforeUpload" :before-upload="handleBeforeUpload"
:headers ="headers" :headers ="headers"
:file-list="dirList" :file-list="dirList"
> >
<el-button type="default">上传背景图</el-button> <el-button type="default">上传背景图</el-button>
</el-upload> </el-upload>
</div> </div>
</div> </div>
<div class="swiper-content top"> <div class="swiper-content top">
<swiper class="swiper" data-title="page" :options="swiperOption"> <swiper class="swiper" data-title="page" :options="swiperOption">
<swiper-slide v-for="(item, index) in pageList" :key="index"> <swiper-slide v-for="(item, index) in pageList" :key="index">
<div class="swiper-item"> <div class="swiper-item">
<el-radio v-model="radioPage" :label="item.id"></el-radio> <el-radio v-model="radioPage" :label="item.id"></el-radio>
<img :src="item.appDirPic" alt /> <img :src="item.appDirPic" alt />
</div> </div>
</swiper-slide> </swiper-slide>
<div class="swiper-button-prev" slot="button-prev"> <div class="swiper-button-prev" slot="button-prev">
<i class="iconfont icon-arrow-left"></i> <i class="iconfont icon-arrow-left"></i>
</div> </div>
<div class="swiper-button-next" slot="button-next"> <div class="swiper-button-next" slot="button-next">
<i class="iconfont icon-arrow-right"></i> <i class="iconfont icon-arrow-right"></i>
</div> </div>
</swiper> </swiper>
</div> </div>
</div> </div>
<div class="down-content"> <div class="down-content">
<div class="content-title"> <div class="content-title">
<div class="title">app运行画面设置</div> <div class="title">app运行画面设置</div>
<div class="btn-group"> <div class="btn-group">
<el-upload <el-upload
action="http://111.203.232.175:8088/mall/file/image/upload" action="http://111.203.232.175:8088/mall/file/image/upload"
:on-success="uploadRunImg" :on-success="uploadRunImg"
:before-upload="handleBeforeUpload" :before-upload="handleBeforeUpload"
:headers ="headers" :headers ="headers"
:file-list="fileRunList" :file-list="fileRunList"
> >
<el-button type="default">上传背景图</el-button> <el-button type="default">上传背景图</el-button>
</el-upload> </el-upload>
</div> </div>
</div> </div>
<div class="swiper-content bottom"> <div class="swiper-content bottom">
<swiper class="swiper" :options="swiperOption"> <swiper class="swiper" :options="swiperOption">
<swiper-slide v-for="(item, index) in runList" :key="index"> <swiper-slide v-for="(item, index) in runList" :key="index">
<div class="swiper-item"> <div class="swiper-item">
<el-radio v-model="radioRun" :label="item.id"></el-radio> <el-radio v-model="radioRun" :label="item.id"></el-radio>
<img :src="item.appRunPic" alt /> <img :src="item.appRunPic" alt />
</div> </div>
</swiper-slide> </swiper-slide>
<div class="swiper-button-prev" slot="button-prev"> <div class="swiper-button-prev" slot="button-prev">
<i class="iconfont icon-arrow-left"></i> <i class="iconfont icon-arrow-left"></i>
</div> </div>
<div class="swiper-button-next" slot="button-next"> <div class="swiper-button-next" slot="button-next">
<i class="iconfont icon-arrow-right"></i> <i class="iconfont icon-arrow-right"></i>
</div> </div>
</swiper> </swiper>
</div> </div>
</div> </div>
</div> </div>
<div class="btn-group footer-btn"> <div class="btn-group footer-btn">
<el-button @click="close">取 消</el-button> <el-button @click="close">取 消</el-button>
<el-button type="primary" @click="submitForm('editform')" <el-button type="primary" @click="submitForm('editform')"
>确定</el-button >确定</el-button
> >
</div> </div>
</el-card> </el-card>
</div> </div>
</template> </template>
<script> <script>
import { Swiper, SwiperSlide } from "vue-awesome-swiper"; import { Swiper, SwiperSlide } from "vue-awesome-swiper";
import "swiper/css/swiper.css"; import "swiper/css/swiper.css";
var vm = {}; var vm = {};
export default { export default {
components: { Swiper, SwiperSlide }, components: { Swiper, SwiperSlide },
data() { data() {
return { return {
headers:{Authorization: localStorage.getItem('backToken')}, headers:{Authorization: localStorage.getItem('backToken')},
radioPage: "", // 选中项 radioPage: "", // 选中项
radioRun: "", radioRun: "",
dirList: [], // 上传列表 dirList: [], // 上传列表
fileRunList: [], fileRunList: [],
swiperOption: { swiperOption: {
slideToClickedSlide: true, //点击后居中展示 slideToClickedSlide: true, //点击后居中展示
slidesPerView: 5, slidesPerView: 5,
spaceBetween: 30, spaceBetween: 30,
centeredSlides: true, centeredSlides: true,
observer: true, observer: true,
observerParents: true, observerParents: true,
// centerInsufficientSlides: true, //不够5个时居中显示 // centerInsufficientSlides: true, //不够5个时居中显示
// loop: true, // 不能同上一个属性同用 // loop: true, // 不能同上一个属性同用
navigation: { navigation: {
nextEl: ".swiper-button-next", nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev", prevEl: ".swiper-button-prev",
}, },
on: { on: {
click: function () { click: function () {
if (this.$el[0].parentNode.className.indexOf("top") > 0) { if (this.$el[0].parentNode.className.indexOf("top") > 0) {
vm.radioPage = this.realIndex; vm.radioPage = this.realIndex;
} }
if (this.$el[0].parentNode.className.indexOf("bottom") > 0) { if (this.$el[0].parentNode.className.indexOf("bottom") > 0) {
vm.radioRun = this.realIndex; vm.radioRun = this.realIndex;
} }
}, },
}, },
}, },
pageList: [], // 数据列表 pageList: [], // 数据列表
runList: [], runList: [],
}; };
}, },
created() {}, created() {},
mounted() { mounted() {
this.getDirPicList(); this.getDirPicList();
this.getAppRunList(); this.getAppRunList();
}, },
methods: { methods: {
// 查询目录列表 // 查询目录列表
getDirPicList() { getDirPicList() {
let _this = this; let _this = this;
_this _this
.$https({ .$https({
url: "tAppDirPic/getList", url: "tAppDirPic/getList",
method: "get", method: "get",
authType: this.backToken, authType: this.backToken,
}) })
.then((res) => { .then((res) => {
if (res.data.resultCode === "200") { if (res.data.resultCode === "200") {
_this.pageList = res.data.data; _this.pageList = res.data.data;
_this.pageList.forEach((item) => { _this.pageList.forEach((item) => {
if (item.isCurrent) { if (item.isCurrent) {
this.radioPage = item.id; this.radioPage = item.id;
} }
}); });
} else { } else {
this.$message.error(res.data.message); this.$message.error(res.data.message);
} }
}) })
.catch(function (err) { .catch(function (err) {
console.log(err); console.log(err);
}); });
}, },
// 查询运行列表 // 查询运行列表
getAppRunList() { getAppRunList() {
let _this = this; let _this = this;
_this _this
.$https({ .$https({
url: "tAppRunPic/getList", url: "tAppRunPic/getList",
method: "get", method: "get",
authType: this.backToken, authType: this.backToken,
}) })
.then((res) => { .then((res) => {
if (res.data.resultCode === "200") { if (res.data.resultCode === "200") {
_this.runList = res.data.data; _this.runList = res.data.data;
_this.runList.forEach((item) => { _this.runList.forEach((item) => {
if (item.isCurrent) { if (item.isCurrent) {
this.radioRun = item.id; this.radioRun = item.id;
} }
}); });
} else { } else {
this.$message.error(res.data.message); this.$message.error(res.data.message);
} }
}) })
.catch(function (err) { .catch(function (err) {
console.log(err); console.log(err);
}); });
}, },
// 上传文件格式限制 // 上传文件格式限制
handleBeforeUpload(file) { handleBeforeUpload(file) {
if (file.type !== "image/jpeg" && file.type !== "image/png") { if (file.type !== "image/jpeg" && file.type !== "image/png") {
this.$message.error("只能上传jpeg、jpg、png格式的文件"); this.$message.error("只能上传jpeg、jpg、png格式的文件");
return false; return false;
} }
return true; return true;
}, },
// 新增目录图片 // 新增目录图片
uploadPageImg(res, file) { uploadPageImg(res, file) {
if (res.resultCode === "200") { if (res.resultCode === "200") {
this.saveItem( this.saveItem(
{ appDirPic: res.data.url, isCurrent: 1 }, { appDirPic: res.data.url, isCurrent: 1 },
"tAppDirPic/save" "tAppDirPic/save"
); );
} else { } else {
this.$message.error(res.message); this.$message.error(res.message);
} }
}, },
// 新增运行图片 // 新增运行图片
uploadRunImg(res, file) { uploadRunImg(res, file) {
if (res.resultCode === "200") { if (res.resultCode === "200") {
this.saveItem( this.saveItem(
{ appRunPic: res.data.url, isCurrent: 1 }, { appRunPic: res.data.url, isCurrent: 1 },
"tAppRunPic/save" "tAppRunPic/save"
); );
} else { } else {
this.$message.error(res.message); this.$message.error(res.message);
} }
}, },
// 新增接口 // 新增接口
saveItem(param, url) { saveItem(param, url) {
let _this = this; let _this = this;
_this _this
.$https( .$https(
{ {
url: url, url: url,
method: "post", method: "post",
authType: this.backToken, authType: this.backToken,
}, },
_this.$qs.stringify(param) _this.$qs.stringify(param)
) )
.then( .then(
(res) => { (res) => {
if (res.data.resultCode === "200") { if (res.data.resultCode === "200") {
_this.$message.success(res.data.message); _this.$message.success(res.data.message);
this.getDirPicList(); this.getDirPicList();
this.getAppRunList(); this.getAppRunList();
} else { } else {
_this.$message.error(res.data.message); _this.$message.error(res.data.message);
} }
}, },
(error) => { (error) => {
console.log(error); console.log(error);
} }
); );
}, },
// 修改当前项 // 修改当前项
submitForm() { submitForm() {
if(vm.radioPage !== undefined){ if(vm.radioPage !== undefined){
this.updateCurrent(this.pageList[vm.radioPage].id, "tAppDirPic/update"); this.updateCurrent(this.pageList[vm.radioPage].id, "tAppDirPic/update");
} }
if(vm.radioRun!== undefined){ if(vm.radioRun!== undefined){
this.updateCurrent(this.runList[vm.radioRun].id, "tAppRunPic/update"); this.updateCurrent(this.runList[vm.radioRun].id, "tAppRunPic/update");
} }
}, },
updateCurrent(id, url) { updateCurrent(id, url) {
let vm = this; let vm = this;
let param = { let param = {
id: id, id: id,
isCurrent: 1, isCurrent: 1,
}; };
vm.$https( vm.$https(
{ {
url: url, url: url,
method: "put", method: "put",
authType: this.backToken, authType: this.backToken,
}, },
vm.$qs.stringify(param) vm.$qs.stringify(param)
) )
.then((res) => { .then((res) => {
if (res.data.resultCode === "200") { if (res.data.resultCode === "200") {
this.$message.success("操作成功"); this.$message.success("操作成功");
this.getDirPicList(); this.getDirPicList();
this.getAppRunList(); this.getAppRunList();
} else { } else {
this.$message.error(res.data.message); this.$message.error(res.data.message);
} }
}) })
.catch(function (err) { .catch(function (err) {
console.log(err); console.log(err);
}); });
}, },
// 取消 // 取消
close() { close() {
this.$router.go(-1); this.$router.go(-1);
}, },
}, },
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.custom-page { .custom-page {
position: relative; position: relative;
.page-title { .page-title {
font-size: 20px; font-size: 20px;
color: #333333; color: #333333;
text-align: center; text-align: center;
padding-bottom: 20px; padding-bottom: 20px;
border-bottom: 1px solid #eee; border-bottom: 1px solid #eee;
} }
.page-tip { .page-tip {
background: #f7f5f2; background: #f7f5f2;
border-radius: 8px; border-radius: 8px;
padding: 16px 20px; padding: 16px 20px;
margin: 20px 0; margin: 20px 0;
font-size: 14px; font-size: 14px;
color: #333333; color: #333333;
.tip-title { .tip-title {
font-weight: 700; font-weight: 700;
margin-right: 5px; margin-right: 5px;
} }
} }
.page-content { .page-content {
width: 800px; width: 800px;
margin: 0 auto; margin: 0 auto;
.content-title { .content-title {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
padding: 20px; padding: 20px;
.title { .title {
position: relative; position: relative;
font-size: 18px; font-size: 18px;
color: #333333; color: #333333;
&::before { &::before {
content: ""; content: "";
position: absolute; position: absolute;
top: 6px; top: 6px;
left: -20px; left: -20px;
width: 4px; width: 4px;
height: 18px; height: 18px;
background: #000; background: #000;
} }
} }
.el-button { .el-button {
padding: 0 20px; padding: 0 20px;
} }
} }
.swiper-content { .swiper-content {
.swiper-item { .swiper-item {
position: relative; position: relative;
width: 100%; width: 100%;
height: 128px; height: 128px;
background-color: #99a9bf; background-color: #99a9bf;
border-radius: 10px; border-radius: 10px;
/deep/.el-radio { /deep/.el-radio {
position: absolute; position: absolute;
right: 12px; right: 12px;
top: 12px; top: 12px;
.el-radio__label { .el-radio__label {
display: none; display: none;
} }
.el-radio__inner { .el-radio__inner {
width: 24px; width: 24px;
height: 24px; height: 24px;
} }
.el-radio__input.is-checked .el-radio__inner { .el-radio__input.is-checked .el-radio__inner {
border-color: #ac9374; border-color: #ac9374;
background: #ac9374; background: #ac9374;
} }
.el-radio__inner:hover { .el-radio__inner:hover {
border-color: #ac9374; border-color: #ac9374;
} }
} }
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.swiper-button-next { .swiper-button-next {
right: 0; right: 0;
} }
.swiper-button-prev { .swiper-button-prev {
left: 0; left: 0;
} }
.swiper-button-prev, .swiper-button-prev,
.swiper-button-next { .swiper-button-next {
background: #ac9374; background: #ac9374;
width: 36px; width: 36px;
height: 36px; height: 36px;
border-radius: 50%; border-radius: 50%;
} }
.swiper-button-next:after, .swiper-button-next:after,
.swiper-button-prev:after { .swiper-button-prev:after {
font-size: 14px; font-size: 14px;
font-weight: 700; font-weight: 700;
color: #fff; color: #fff;
} }
.swiper-slide { .swiper-slide {
text-align: center; text-align: center;
font-size: 18px; font-size: 18px;
background: #fff; background: #fff;
display: -webkit-box; display: -webkit-box;
display: -ms-flexbox; display: -ms-flexbox;
display: -webkit-flex; display: -webkit-flex;
display: flex; display: flex;
-webkit-box-pack: center; -webkit-box-pack: center;
-ms-flex-pack: center; -ms-flex-pack: center;
-webkit-justify-content: center; -webkit-justify-content: center;
justify-content: center; justify-content: center;
-webkit-box-align: center; -webkit-box-align: center;
-ms-flex-align: center; -ms-flex-align: center;
-webkit-align-items: center; -webkit-align-items: center;
align-items: center; align-items: center;
transition: 300ms; transition: 300ms;
transform: scale(0.8); transform: scale(0.8);
} }
.swiper-slide-active, .swiper-slide-active,
.swiper-slide-duplicate-active { .swiper-slide-duplicate-active {
transform: scale(1); transform: scale(1);
} }
} }
} }
/deep/.el-upload-list { /deep/.el-upload-list {
display: none; display: none;
} }
.footer-btn { .footer-btn {
position: absolute; position: absolute;
bottom: 20px; bottom: 20px;
left: 0; left: 0;
right: 0; right: 0;
text-align: center; text-align: center;
padding-top: 20px; padding-top: 20px;
border-top: 1px solid #eee; border-top: 1px solid #eee;
.el-button { .el-button {
width: 160px; width: 160px;
} }
} }
} }
</style> </style>
<template> <template>
<!-- 平台用户单位管理员账号管理 --> <!-- 平台用户单位管理员账号管理 -->
<div class="user-wrapper height100"> <div class="user-wrapper height100">
<div class="search-container"> <div class="search-container">
<el-form :inline="true" :model="form"> <el-form :inline="true" :model="form">
<el-form-item> <el-form-item>
<el-input <el-input
v-model="form.userName" v-model="form.userName"
placeholder="请输入管理员姓名" placeholder="请输入管理员姓名"
suffix-icon="el-icon-search" suffix-icon="el-icon-search"
clearable clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-select <el-select
v-model="form.orgId" v-model="form.orgId"
filterable filterable
placeholder="请选择所属单位" placeholder="请选择所属单位"
clearable> clearable>
<el-option <el-option
v-for="item in organList" v-for="item in organList"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id" :value="item.id"
> >
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-cascader <el-cascader
v-model="form.areaId" v-model="form.areaId"
change-on-select change-on-select
:props="cascaderProps" :props="cascaderProps"
:options="areaOptions" :options="areaOptions"
placeholder="请选择区域" placeholder="请选择区域"
clearable> clearable>
</el-cascader> </el-cascader>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<div class="btn-group"> <div class="btn-group">
<el-button type="primary" @click="handleSubmit">查询</el-button> <el-button type="primary" @click="handleSubmit">查询</el-button>
<el-button @click="handleReset">重置</el-button> <el-button @click="handleReset">重置</el-button>
</div> </div>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="page-tip"> <div class="page-tip">
<span class="page-tip-title">页面说明:</span> <span class="page-tip-title">页面说明:</span>
<span class="page-tips" <span class="page-tips"
>管理员姓名即管理员用户名。可以新增账号,“*”为必填项。可以对账号信息进行修改及重置密码</span >管理员姓名即管理员用户名。可以新增账号,“*”为必填项。可以对账号信息进行修改及重置密码</span
> >
</div> </div>
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="btn-group"> <div class="btn-group">
<el-button type="primary" @click="handleAdd()">新建账号</el-button> <el-button type="primary" @click="handleAdd()">新建账号</el-button>
</div> </div>
<account-table <account-table
:feildList="feildList" :feildList="feildList"
:list="list" :list="list"
@action="handleAction" @action="handleAction"
:currentPage="page._index" :currentPage="page._index"
/> />
<party-pagination :page="page" @changePage="handleChangeCurrent" /> <party-pagination :page="page" @changePage="handleChangeCurrent" />
</div> </div>
<add-dialog ref="addDialog" @success="getFirstPageList()" /> <add-dialog ref="addDialog" @success="getFirstPageList()" />
<edit-dialog ref="editDialog" @success="getFirstPageList()" /> <edit-dialog ref="editDialog" @success="getFirstPageList()" />
<msg-dialog ref="msgDilaog" :msgInfo="msgInfo" /> <msg-dialog ref="msgDilaog" :msgInfo="msgInfo" />
</div> </div>
</template> </template>
<script> <script>
import { partyPagination } from "@/components/index"; import { partyPagination } from "@/components/index";
import accountTable from "./components/accountTable"; import accountTable from "./components/accountTable";
import { addDialog, editDialog } from "./unitAdminDialog"; import { addDialog, editDialog } from "./unitAdminDialog";
import msgDialog from "./msgDialog.vue"; import msgDialog from "./msgDialog.vue";
import { getAreas } from "@/config/area"; import { getAreas } from "@/config/area";
import { getOrgListWithOutPage } from "@/config/organ"; import { getOrgListWithOutPage } from "@/config/organ";
export default { export default {
data() { data() {
return { return {
form: { form: {
userName: "", userName: "",
orgId:'', orgId:'',
type: 2, //1.用户账号 2.平台单位单位管理员账号 3.机顶盒账号 4.运维账号 type: 2, //1.用户账号 2.平台单位单位管理员账号 3.机顶盒账号 4.运维账号
areaId:[] areaId:[]
}, },
feildList: [ feildList: [
{ prop: "userName", label: "管理员姓名" }, { prop: "userName", label: "管理员姓名" },
// { prop:'typeName', label: '管理员类型' }, { prop:'roleName', label: '管理员类型' },
{ prop: "phone", label: "手机号码" }, { prop: "phone", label: "手机号码" },
{ prop: "telephone", label: "固定电话" }, { prop: "telephone", label: "固定电话" },
{ prop: "weChat", label: "微信号" }, { prop: "weChat", label: "微信号" },
{ prop: "email", label: "邮箱" }, { prop: "email", label: "邮箱" },
{ prop: "orgName", label: "所属单位" }, { prop: "orgName", label: "所属单位" },
{ prop: "exiredDate", label: "到期时间" }, { prop: "exiredDate", label: "到期时间" },
{ prop: "statusName", label: "账号状态" }, { prop: "statusName", label: "账号状态" },
{ prop: "", label: "操作", isEdit: true, width: 280 }, { prop: "", label: "操作", isEdit: true, width: 280 },
], ],
list: [], list: [],
page: { page: {
_index: 1, _index: 1,
_size: 10, _size: 10,
total: 0, total: 0,
}, },
activeRow: {}, activeRow: {},
msgInfo: {}, msgInfo: {},
organList: [], organList: [],
areaOptions: [], areaOptions: [],
cascaderProps: { cascaderProps: {
label: "name", label: "name",
value: "code", value: "code",
checkStrictly: true, checkStrictly: true,
}, },
}; };
}, },
components: { components: {
partyPagination, partyPagination,
accountTable, accountTable,
addDialog, addDialog,
editDialog, editDialog,
msgDialog, msgDialog,
}, },
mounted() { mounted() {
this.getOrgList(); this.getOrgList();
this.getAreas(); this.getAreas();
this.getFirstPageList(); this.getFirstPageList();
}, },
methods: { methods: {
// 获取区域数据 // 获取区域数据
getAreas() { getAreas() {
getAreas().then((res) => { getAreas().then((res) => {
this.areaOptions = res; this.areaOptions = res;
}); });
}, },
// 获取机构列表 // 获取机构列表
getOrgList() { getOrgList() {
getOrgListWithOutPage().then((res) => { getOrgListWithOutPage().then((res) => {
this.organList = res; this.organList = res;
}); });
}, },
// 获取第一页数据列表 // 获取第一页数据列表
getFirstPageList() { getFirstPageList() {
this.page._index = 1; this.page._index = 1;
this.getPageList(); this.getPageList();
}, },
// 查询数据 // 查询数据
handleSubmit() { handleSubmit() {
this.getFirstPageList(); this.getFirstPageList();
}, },
// 重置查询 // 重置查询
handleReset() { handleReset() {
this.form = { this.form = {
userName: "", userName: "",
orgId:'', orgId:'',
type:2, type:2,
areaId:[] areaId:[]
} }
this.getFirstPageList(); this.getFirstPageList();
}, },
getPageList() { getPageList() {
let requestParams = {}; let requestParams = {};
requestParams._index = this.page._index; requestParams._index = this.page._index;
requestParams._size = this.page._size; requestParams._size = this.page._size;
requestParams.type = this.form.type; requestParams.type = this.form.type;
if (this.form.userName) { if (this.form.userName) {
requestParams.userName = this.form.userName; requestParams.userName = this.form.userName;
} }
if (this.form.orgId) { if (this.form.orgId) {
requestParams.orgId = this.form.orgId; requestParams.orgId = this.form.orgId;
} }
if(this.form.areaId.length>0){ if(this.form.areaId.length>0){
requestParams.areaId = [...this.form.areaId].pop(); requestParams.areaId = [...this.form.areaId].pop();
} }
this.$https( this.$https(
{ {
method: "get", method: "get",
url: "tUser/getPageList", url: "tUser/getPageList",
authType: this.backToken, authType: this.backToken,
}, },
requestParams requestParams
) )
.then((res) => { .then((res) => {
if (res.status != 200) { // console.log(res)
this.getResWithOutData(); if (res.status != 200) {
} else { this.getResWithOutData();
if (res.data.resultCode == 200) { } else {
this.list = res.data.data.records; if (res.data.resultCode == 200) {
this.page._size = res.data.data.size; this.list = res.data.data.records;
this.page.total = res.data.data.total; this.page._size = res.data.data.size;
} else { this.page.total = res.data.data.total;
this.getResWithOutData(); } else {
} this.getResWithOutData();
} }
}) }
.catch((err) => { })
console.log(err); .catch((err) => {
}); console.log(err);
}, });
// 页面返回值为空 },
getResWithOutData(){ // 页面返回值为空
this.list = [] getResWithOutData(){
this.page = { this.list = []
_index:1, this.page = {
_size:10, _index:1,
total:0 _size:10,
} total:0
}, }
// 新增账号 },
handleAdd() { // 新增账号
this.$refs.addDialog.dialogVisible = true; handleAdd() {
}, this.$refs.addDialog.dialogVisible = true;
// 编辑 },
handleEdit() { // 编辑
this.$refs.editDialog.id = this.activeRow.id; handleEdit() {
this.$refs.editDialog.getDetailById(); this.$refs.editDialog.id = this.activeRow.id;
this.$refs.editDialog.dialogVisible = true; this.$refs.editDialog.getDetailById();
}, this.$refs.editDialog.dialogVisible = true;
// 重置密码 },
handleResetPwd() { // 重置密码
let _this = this; handleResetPwd() {
this.$https({ let _this = this;
method: "put", this.$https({
url: `tUser/resetPassword?userId=${this.activeRow.id}`, method: "put",
authType: this.backToken, url: `tUser/resetPassword?userId=${this.activeRow.id}`,
}) authType: this.backToken,
.then((res) => { })
if (res.status != 200) { .then((res) => {
_this.$message.error(res.data.message); if (res.status != 200) {
} else { _this.$message.error(res.data.message);
if (res.data.resultCode == 200) { } else {
_this.msgInfo = { if (res.data.resultCode == 200) {
type: "success", _this.msgInfo = {
des: `用户${this.activeRow.userName}密码已重置!`, type: "success",
}; des: `用户${this.activeRow.userName}密码已重置!`,
_this.$refs.msgDilaog.dialogVisible = true; };
} else { _this.$refs.msgDilaog.dialogVisible = true;
_this.$message.error(res.data.message); } else {
} _this.$message.error(res.data.message);
} }
}) }
.catch((err) => { })
console.log(err); .catch((err) => {
}); console.log(err);
}, });
// 禁用 },
handleDisable() { // 禁用
let _this = this; handleDisable() {
this.$https({ let _this = this;
method: "put", this.$https({
url: `tUser/disable?userId=${this.activeRow.id}`, method: "put",
authType: this.backToken, url: `tUser/disable?userId=${this.activeRow.id}`,
}) authType: this.backToken,
.then((res) => { })
if (res.status != 200) { .then((res) => {
_this.$message.error(res.data.message); if (res.status != 200) {
} else { _this.$message.error(res.data.message);
if (res.data.resultCode == 200) { } else {
_this.msgInfo = { if (res.data.resultCode == 200) {
type: "wait", _this.msgInfo = {
des: `${this.activeRow.userName}账号禁用申请已提交,待审核…`, type: "wait",
}; des: `${this.activeRow.userName}账号禁用申请已提交,待审核…`,
_this.$refs.msgDilaog.dialogVisible = true; };
_this.getPageList(); _this.$refs.msgDilaog.dialogVisible = true;
} else { _this.getPageList();
_this.$message.error(res.data.message); } else {
} _this.$message.error(res.data.message);
} }
}) }
.catch((err) => { })
console.log(err); .catch((err) => {
}); console.log(err);
}, });
// 激活 },
handleActive() { // 激活
let _this = this; handleActive() {
this.$https({ let _this = this;
method: "put", this.$https({
url: `tUser/enable?userId=${this.activeRow.id}`, method: "put",
authType: this.backToken, url: `tUser/enable?userId=${this.activeRow.id}`,
}) authType: this.backToken,
.then((res) => { })
if (res.status != 200) { .then((res) => {
_this.$message.error(res.data.message); if (res.status != 200) {
} else { _this.$message.error(res.data.message);
if (res.data.resultCode == 200) { } else {
_this.msgInfo = { if (res.data.resultCode == 200) {
type: "success", _this.msgInfo = {
des: `用户${this.activeRow.userName}账号激活成功!`, type: "success",
}; des: `用户${this.activeRow.userName}账号激活成功!`,
_this.$refs.msgDilaog.dialogVisible = true; };
_this.getPageList(); _this.$refs.msgDilaog.dialogVisible = true;
} else { _this.getPageList();
this.$message.error(res.data.message); } else {
} this.$message.error(res.data.message);
} }
}) }
.catch((err) => { })
console.log(err); .catch((err) => {
}); console.log(err);
}, });
handleAction(params) { },
this.activeRow = params.row; handleAction(params) {
switch (params.type) { this.activeRow = params.row;
case "enable": switch (params.type) {
this.handleActive(); case "enable":
break; this.handleActive();
case "disable": break;
this.handleDisable(); case "disable":
break; this.handleDisable();
case "reset": break;
this.handleResetPwd(); case "reset":
break; this.handleResetPwd();
case "edit": break;
this.handleEdit(); case "edit":
break; this.handleEdit();
default: break;
break; default:
} break;
}, }
// 翻页 },
handleChangeCurrent(val) { // 翻页
this.page._index = val; handleChangeCurrent(val) {
this.getPageList(); this.page._index = val;
}, this.getPageList();
}, },
}; },
</script> };
<style lang="less" scoped> </script>
<style lang="less" scoped>
</style> </style>
\ No newline at end of file
<template> <template>
<el-dialog <el-dialog
custom-class="party-dialog" custom-class="party-dialog"
title="新建账号" title="新建账号"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
width="720px" width="720px"
:before-close="handleClose" :before-close="handleClose"
> >
<div class="dialog-content"> <div class="dialog-content">
<el-form <el-form
ref="form" ref="form"
:model="form" :model="form"
:rules="rules" :rules="rules"
label-width="80px" label-width="80px"
label-position="top" label-position="top"
class="party-form" class="party-form"
> >
<div class="form-row"> <div class="form-row">
<div> <div>
<el-form-item label="管理员姓名" prop="userName"> <el-form-item label="管理员姓名" prop="userName">
<el-input <el-input
v-model="form.userName" v-model="form.userName"
placeholder="请填写管理员姓名" placeholder="请填写管理员姓名"
oninput="value = value.trim()" oninput="value = value.trim()"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item label="管理员类型" prop="typeName"> <!-- <el-form-item label="管理员类型" prop="typeName">
<el-input <el-input
v-model="form.typeName" v-model="form.typeName"
placeholder="请填写管理员类型" placeholder="请填写管理员类型"
></el-input> ></el-input>
</el-form-item> --> </el-form-item> -->
<el-form-item label="固定电话" prop="telephone"> <el-form-item label="固定电话" prop="telephone">
<el-input <el-input
v-model="form.telephone" v-model="form.telephone"
placeholder="请填写固定电话" placeholder="请填写固定电话"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="单位名称" prop="orgId"> <el-form-item label="单位名称" prop="orgId">
<el-select v-model="form.orgId" filterable placeholder="请选择"> <el-select v-model="form.orgId" filterable placeholder="请选择">
<el-option <el-option
v-for="item in organList" v-for="item in organList"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id" :value="item.id"
> >
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="账号有效期" prop="permanent"> <el-form-item label="账号有效期" prop="permanent">
<el-radio-group v-model="form.permanent"> <el-radio-group v-model="form.permanent">
<el-radio :label="true">永久有效</el-radio> <el-radio :label="true">永久有效</el-radio>
<el-radio :label="false">设置有效期</el-radio> <el-radio :label="false">设置有效期</el-radio>
</el-radio-group> </el-radio-group>
<div v-if="!form.permanent"> <div v-if="!form.permanent">
<el-date-picker <el-date-picker
class="mt16" class="mt16"
v-model="form.date" v-model="form.date"
type="daterange" type="daterange"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
> >
</el-date-picker> </el-date-picker>
</div> </div>
</el-form-item> </el-form-item>
</div> </div>
<div> <div>
<!-- <el-form-item label="管理员类型" prop="typeName"> <el-form-item label="管理员类型" prop="roleId">
<el-input <el-select v-model="form.roleId" placeholder="请选择管理员类型">
v-model="form.typeName" <el-option
placeholder="请填写管理员类型" v-for="item in typeList"
></el-input> :key="item.id"
</el-form-item> --> :label="item.value"
<el-form-item label="手机号码" prop="phone"> :value="item.id"
<el-input >
v-model="form.phone" </el-option>
placeholder="请填写手机号码" </el-select>
></el-input> </el-form-item>
</el-form-item> <el-form-item label="手机号码" prop="phone">
<el-form-item label="微信" prop="wechat"> <el-input
<el-input v-model="form.phone"
v-model="form.weChat" placeholder="请填写手机号码"
placeholder="请填写微信号" ></el-input>
></el-input> </el-form-item>
</el-form-item> <el-form-item label="微信" prop="wechat">
<el-form-item label="邮箱" prop="email"> <el-input
<el-input v-model="form.weChat"
v-model="form.email" placeholder="请填写微信号"
placeholder="请填写邮箱地址" ></el-input>
></el-input> </el-form-item>
</el-form-item> <el-form-item label="邮箱" prop="email">
</div> <el-input
</div> v-model="form.email"
</el-form> placeholder="请填写邮箱地址"
</div> ></el-input>
<div slot="footer" class="dialog-footer btn-group"> </el-form-item>
<el-button @click="handleClose()">取 消</el-button> </div>
<el-button type="primary" @click="handleSubmit()">确 定</el-button> </div>
</div> </el-form>
</el-dialog> </div>
</template> <div slot="footer" class="dialog-footer btn-group">
<script> <el-button @click="handleClose()">取 消</el-button>
import { getOrgListWithOutPage } from "@/config/organ"; <el-button type="primary" @click="handleSubmit()">确 定</el-button>
import { getRoles } from "@/config/roles"; </div>
export default { </el-dialog>
data() { </template>
var validateMobilePhone = (rule, value, callback) => { <script>
if (value === "") { import { getOrgListWithOutPage } from "@/config/organ";
callback(new Error("手机号不可为空")); import { getRoles } from "@/config/roles";
} else { export default {
if (value !== "") { data() {
var reg = /^1[3456789]\d{9}$/; var validateMobilePhone = (rule, value, callback) => {
if (!reg.test(value)) { if (value === "") {
callback(new Error("请输入有效的手机号码")); callback(new Error("手机号不可为空"));
} } else {
} if (value !== "") {
callback(); var reg = /^1[3456789]\d{9}$/;
} if (!reg.test(value)) {
}; callback(new Error("请输入有效的手机号码"));
return { }
dialogVisible: false, }
organList: [], callback();
form: { }
userName: "", };
telephone: "", return {
orgId: "", dialogVisible: false,
permanent: true, organList: [],
date: "", typeList: [{id:2, value:'单位管理员'},{id:17, value: '互动审核员'}],
phone: "", form: {
weChat: "", userName: "",
email: "", telephone: "",
type: 2, //1.用户账号 2.平台单位管理员账号 3.机顶盒账号 4.运维账号 orgId: "",
}, permanent: true,
rules: { date: "",
userName: [ phone: "",
{ required: true, message: "请填写管理员姓名", trigger: "change" }, weChat: "",
{ min: 1, max: 20, message: "请输入1到20个字" } email: "",
], type: 2, //1.用户账号 2.平台单位管理员账号 3.机顶盒账号 4.运维账号
orgId: [ roleId: ''
{ required: true, message: "请输入所在机构", trigger: "change" }, },
], rules: {
permanent: [ roleId: [
{ required: true, message: "请选择账号有效期", trigger: "change" }, { required: true, message: "请选择管理员类型", trigger: "change" },
], ],
phone: [ userName: [
{ required: true, validator: validateMobilePhone, trigger: "change" }, { required: true, message: "请填写管理员姓名", trigger: "change" },
], { min: 1, max: 20, message: "请输入1到20个字" }
}, ],
}; orgId: [
}, { required: true, message: "请输入所在机构", trigger: "change" },
mounted() { ],
this.getOrgList(); permanent: [
}, { required: true, message: "请选择账号有效期", trigger: "change" },
methods: { ],
// 获取机构列表 phone: [
getOrgList() { { required: true, validator: validateMobilePhone, trigger: "change" },
getOrgListWithOutPage().then((res) => { ],
this.organList = res; },
}); };
}, },
// 弹窗关闭 mounted() {
handleClose() { this.getOrgList();
this.$confirm("确认关闭?") },
.then((_) => { methods: {
this.handleReset(); // 获取机构列表
}) getOrgList() {
.catch((_) => {}); getOrgListWithOutPage().then((res) => {
}, this.organList = res;
handleReset() { });
this.dialogVisible = false; },
this.$refs.form.resetFields(); // 弹窗关闭
this.form = { handleClose() {
userName: "", this.$confirm("确认关闭?")
orgId: "", .then((_) => {
permanent: true, this.handleReset();
date: "", })
roleList: [], .catch((_) => {});
type: 2, },
}; handleReset() {
}, this.dialogVisible = false;
// 提交 this.$refs.form.resetFields();
handleSubmit() { this.form = {
// 校验用户输入值 userName: "",
let _this = this; orgId: "",
this.$refs.form.validate((valid) => { permanent: true,
if (valid) { date: "",
let user = {}; roleList: [],
if (!this.form.permanent && !this.form.date) { type: 2,
this.$message.error("请选择有效期"); roleId:''
return false; };
} },
if (!this.form.permanent) { // 提交
user.effectiveDate = this.form.date[0]; handleSubmit() {
user.exiredDate = this.form.date[1]; // 校验用户输入值
} let _this = this;
user.telephone = this.form.telephone || ""; this.$refs.form.validate((valid) => {
user.email = this.form.email || ""; if (valid) {
user.weChat = this.form.weChat || ""; let user = {};
user.phone = this.form.phone; if (!this.form.permanent && !this.form.date) {
user.permanent = this.form.permanent; this.$message.error("请选择有效期");
user.userName = this.form.userName; return false;
user.orgId = this.form.orgId; }
user.type = this.form.type; if (!this.form.permanent) {
user.phone = this.form.phone; user.effectiveDate = this.form.date[0];
this.$https( user.exiredDate = this.form.date[1];
{ }
method: "post", user.telephone = this.form.telephone || "";
url: "tUser/add", user.email = this.form.email || "";
authType: this.backToken, user.weChat = this.form.weChat || "";
}, user.phone = this.form.phone;
user user.permanent = this.form.permanent;
) user.userName = this.form.userName;
.then((res) => { user.orgId = this.form.orgId;
if (res.status == 200) { user.type = this.form.type;
if (res.data.resultCode == 200) { user.phone = this.form.phone;
this.$message({ user.roleId = this.form.roleId
type: "success", this.$https(
message: res.data.message, {
}); method: "post",
this.handleReset(); url: "tUser/add",
this.$emit("success", true); authType: this.backToken,
} else { },
this.$message.error(res.data.message); user
} )
} else { .then((res) => {
this.$message.error(res.data); if (res.status == 200) {
} if (res.data.resultCode == 200) {
}) this.$message({
.catch((err) => { type: "success",
console.log(err); message: res.data.message,
}); });
} else { this.handleReset();
console.log("error submit!!"); this.$emit("success", true);
return false; } else {
} this.$message.error(res.data.message);
}); }
}, } else {
}, this.$message.error(res.data);
}; }
</script> })
<style lang="less" scoped> .catch((err) => {
.form-row { console.log(err);
display: flex; });
justify-content: space-between; } else {
} console.log("error submit!!");
return false;
}
});
},
},
};
</script>
<style lang="less" scoped>
.form-row {
display: flex;
justify-content: space-between;
}
</style> </style>
\ No newline at end of file
<template> <template>
<el-dialog <el-dialog
custom-class="party-dialog" custom-class="party-dialog"
title="编辑账号" title="编辑账号"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
width="720px" width="720px"
:before-close="handleClose" :before-close="handleClose"
> >
<div class="dialog-content"> <div class="dialog-content">
<el-form <el-form
ref="form" ref="form"
:model="form" :model="form"
:rules="rules" :rules="rules"
label-width="80px" label-width="80px"
label-position="top" label-position="top"
class="party-form" class="party-form"
> >
<div class="form-row"> <div class="form-row">
<div> <div>
<el-form-item label="管理员姓名" prop="userName"> <el-form-item label="管理员姓名" prop="userName">
<el-input <el-input
v-model="form.userName" v-model="form.userName"
placeholder="请填写管理员姓名" placeholder="请填写管理员姓名"
oninput="value = value.trim()" oninput="value = value.trim()"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item label="管理员类型" prop="typeName"> <el-form-item label="固定电话" prop="telephone">
<el-input <el-input
v-model="form.typeName" v-model="form.telephone"
placeholder="请填写管理员类型" placeholder="请填写固定电话"
></el-input> ></el-input>
</el-form-item> --> </el-form-item>
<el-form-item label="固定电话" prop="telephone"> <el-form-item label="单位名称" prop="orgId">
<el-input <el-select v-model="form.orgId" filterable placeholder="请选择">
v-model="form.telephone" <el-option
placeholder="请填写固定电话" v-for="item in organList"
></el-input> :key="item.id"
</el-form-item> :label="item.name"
<el-form-item label="单位名称" prop="orgId"> :value="item.id"
<el-select v-model="form.orgId" filterable placeholder="请选择"> >
<el-option </el-option>
v-for="item in organList" </el-select>
:key="item.id" </el-form-item>
:label="item.name" <el-form-item label="账号有效期" prop="permanent">
:value="item.id" <el-radio-group v-model="form.permanent">
> <el-radio :label="true">永久有效</el-radio>
</el-option> <el-radio :label="false">设置有效期</el-radio>
</el-select> </el-radio-group>
</el-form-item> <div v-if="!form.permanent">
<el-form-item label="账号有效期" prop="permanent"> <el-date-picker
<el-radio-group v-model="form.permanent"> class="mt16"
<el-radio :label="true">永久有效</el-radio> v-model="form.date"
<el-radio :label="false">设置有效期</el-radio> type="daterange"
</el-radio-group> value-format="yyyy-MM-dd"
<div v-if="!form.permanent"> range-separator="至"
<el-date-picker start-placeholder="开始日期"
class="mt16" end-placeholder="结束日期"
v-model="form.date" >
type="daterange" </el-date-picker>
value-format="yyyy-MM-dd" </div>
range-separator="至" </el-form-item>
start-placeholder="开始日期" </div>
end-placeholder="结束日期" <div>
> <el-form-item label="管理员类型" prop="roleId">
</el-date-picker> <el-select v-model="form.roleId" placeholder="请选择管理员类型">
</div> <el-option
</el-form-item> v-for="item in typeList"
</div> :key="item.id"
<div> :label="item.value"
<el-form-item label="手机号码" prop="phone"> :value="item.id"
<el-input >
v-model="form.phone" </el-option>
placeholder="请填写手机号码" </el-select>
></el-input> </el-form-item>
</el-form-item> <el-form-item label="手机号码" prop="phone">
<el-form-item label="微信" prop="wechat"> <el-input
<el-input v-model="form.phone"
v-model="form.weChat" placeholder="请填写手机号码"
placeholder="请填写微信号" ></el-input>
></el-input> </el-form-item>
</el-form-item> <el-form-item label="微信" prop="wechat">
<el-form-item label="邮箱" prop="email"> <el-input
<el-input v-model="form.weChat"
v-model="form.email" placeholder="请填写微信号"
placeholder="请填写邮箱地址" ></el-input>
></el-input> </el-form-item>
</el-form-item> <el-form-item label="邮箱" prop="email">
</div> <el-input
</div> v-model="form.email"
</el-form> placeholder="请填写邮箱地址"
</div> ></el-input>
<div slot="footer" class="dialog-footer btn-group"> </el-form-item>
<el-button @click="handleClose()">取 消</el-button> </div>
<el-button type="primary" @click="handleSubmit()">确 定</el-button> </div>
</div> </el-form>
</el-dialog> </div>
</template> <div slot="footer" class="dialog-footer btn-group">
<script> <el-button @click="handleClose()">取 消</el-button>
import { getOrgListWithOutPage } from "@/config/organ"; <el-button type="primary" @click="handleSubmit()">确 定</el-button>
export default { </div>
data() { </el-dialog>
var validateMobilePhone = (rule, value, callback) => { </template>
if (value === "") { <script>
callback(new Error("手机号不可为空")); import { getOrgListWithOutPage } from "@/config/organ";
} else { export default {
if (value !== "") { data() {
var reg = /^1[3456789]\d{9}$/; var validateMobilePhone = (rule, value, callback) => {
if (!reg.test(value)) { if (value === "") {
callback(new Error("请输入有效的手机号码")); callback(new Error("手机号不可为空"));
} } else {
} if (value !== "") {
callback(); var reg = /^1[3456789]\d{9}$/;
} if (!reg.test(value)) {
}; callback(new Error("请输入有效的手机号码"));
return { }
dialogVisible: false, }
organList: [], callback();
rolesList: [], }
id: "", };
form: { return {
id: "", dialogVisible: false,
userName: "", organList: [],
telephone: "", rolesList: [],
orgId: "", id: "",
permanent: true, form: {
date: "", id: "",
phone: "", userName: "",
weChat: "", telephone: "",
email: "", orgId: "",
roleList: [], permanent: true,
type: 2, //1.用户账号 2.平台单位管理员账号 3.机顶盒账号 4.运维账号 date: "",
}, phone: "",
rules: { weChat: "",
userName: [ email: "",
{ required: true, message: "请选择系统用户名", trigger: "change" }, roleId:null,
{ min: 1, max: 20, message: "请输入1到20个字" }, // roleList: [],
], type: 2, //1.用户账号 2.平台单位管理员账号 3.机顶盒账号 4.运维账号
orgId: [ },
{ required: true, message: "请输入所在机构", trigger: "change" }, typeList: [{id:2, value:'单位管理员'},{id:17, value: '互动审核员'}],
], rules: {
permanent: [ roleId: [
{ required: true, message: "请选择账号有效期", trigger: "change" }, { required: true, message: "请选择管理员类型", trigger: "change" },
], ],
roleList: [ userName: [
{ { required: true, message: "请输入管理员姓名", trigger: "change" },
type: "array", { min: 1, max: 20, message: "请输入1到20个字" },
required: true, ],
message: "请选择账号类型", orgId: [
trigger: "change", { required: true, message: "请输入所在机构", trigger: "change" },
}, ],
], permanent: [
}, { required: true, message: "请选择账号有效期", trigger: "change" },
}; ],
}, phone: [
mounted() { { required: true, validator: validateMobilePhone, trigger: "change" },
this.getOrgList(); ],
}, roleList: [
methods: { {
// 获取机构列表 type: "array",
getOrgList() { required: true,
getOrgListWithOutPage().then((res) => { message: "请选择账号类型",
this.organList = res; trigger: "change",
}); },
}, ],
// 根据id获取获取详情内容 },
getDetailById() { };
let _this = this; },
this.$https( mounted() {
{ this.getOrgList();
method: "get", },
url: "tUser/getById", methods: {
authType: this.backToken, // 获取机构列表
}, getOrgList() {
{ id: _this.id } getOrgListWithOutPage().then((res) => {
) this.organList = res;
.then((res) => { });
if (res.status == 200) { },
if (res.data.resultCode == 200) { // 根据id获取获取详情内容
let resData = res.data.data; getDetailById() {
for (let key in _this.form) { let _this = this;
this.form[key] = resData[key]; this.$https(
} {
if (!this.form.permanent) { method: "get",
this.form.date = [resData.effectiveDate, resData.exiredDate]; url: "tUser/getById",
} authType: this.backToken,
} else { },
_this.$message.error(res.data.message); { id: _this.id }
} )
} else { .then((res) => {
_this.$message.error(res.data); if (res.status == 200) {
} if (res.data.resultCode == 200) {
}) // console.log(1111,+res.data.data.roleList[0])
.catch((err) => { // this.form.roleId = +res.data.data.roleList[0]
console.log(err); let resData = res.data.data;
}); for (let key in _this.form) {
}, this.form[key] = resData[key];
// 弹窗关闭 }
handleClose() { if (!this.form.permanent) {
this.$confirm("确认关闭?") this.form.date = [resData.effectiveDate, resData.exiredDate];
.then((_) => { }
this.handleReset(); } else {
}) _this.$message.error(res.data.message);
.catch((_) => {}); }
}, this.form.roleId = +res.data.data.roleList[0]
handleReset() { } else {
this.dialogVisible = false; _this.$message.error(res.data);
this.$refs.form.resetFields(); }
this.form = { })
userName: "", .catch((err) => {
orgId: "", console.log(err);
phone: "", });
permanent: true, },
date: "", // 弹窗关闭
roleList: [], handleClose() {
type: 2, this.$confirm("确认关闭?")
}; .then((_) => {
}, this.handleReset();
// 提交 })
handleSubmit() { .catch((_) => {});
// 校验用户输入值 },
let _this = this; handleReset() {
_this.$refs.form.validate((valid) => { this.dialogVisible = false;
if (valid) { this.$refs.form.resetFields();
let user = {}; this.form = {
if (!_this.form.permanent && !_this.form.date) { userName: "",
_this.$message.error("请选择有效期"); orgId: "",
return false; phone: "",
} permanent: true,
if (!_this.form.permanent) { date: "",
user.effectiveDate = _this.form.date[0]; roleList: [],
user.exiredDate = _this.form.date[1]; roleId:null,
} type: 2,
user.id = _this.id; };
user.telephone = this.form.telephone || ""; },
user.email = this.form.email || ""; // 提交
user.weChat = this.form.weChat || ""; handleSubmit() {
user.phone = this.form.phone; // 校验用户输入值
user.permanent = this.form.permanent; let _this = this;
user.userName = this.form.userName; _this.$refs.form.validate((valid) => {
user.orgId = this.form.orgId; if (valid) {
user.type = this.form.type; let user = {};
this.$https( if (!_this.form.permanent && !_this.form.date) {
{ _this.$message.error("请选择有效期");
method: "put", return false;
url: "tUser/update", }
authType: _this.backToken, if (!_this.form.permanent) {
}, user.effectiveDate = _this.form.date[0];
user user.exiredDate = _this.form.date[1];
) }
.then((res) => { user.id = _this.id;
if (res.status == 200) { user.telephone = this.form.telephone || "";
if (res.data.resultCode == 200) { user.email = this.form.email || "";
this.$message({ user.weChat = this.form.weChat || "";
type: "success", user.phone = this.form.phone;
message: res.data.message, user.permanent = this.form.permanent;
}); user.userName = this.form.userName;
_this.dialogVisible = false; user.orgId = this.form.orgId;
this.$emit("success", true); user.type = this.form.type;
} else { user.roleId = this.form.roleId
this.$message.error(res.data.message); this.$https(
this.$emit("success", false); {
} method: "put",
} else { url: "tUser/update",
this.$message.error(res.data); authType: _this.backToken,
this.$emit("success", false); },
} user
}) )
.catch((err) => { .then((res) => {
console.log(err); if (res.status == 200) {
}); if (res.data.resultCode == 200) {
} else { this.$message({
console.log("error submit!!"); type: "success",
return false; message: res.data.message,
} });
}); _this.dialogVisible = false;
}, this.$emit("success", true);
}, } else {
}; this.$message.error(res.data.message);
</script> this.$emit("success", false);
<style lang="less" scoped> }
.form-row { } else {
display: flex; this.$message.error(res.data);
justify-content: space-between; this.$emit("success", false);
} }
})
.catch((err) => {
console.log(err);
});
} else {
console.log("error submit!!");
return false;
}
});
},
},
};
</script>
<style lang="less" scoped>
.form-row {
display: flex;
justify-content: space-between;
}
</style> </style>
\ No newline at end of file
<template> <template>
<div> <div>
<el-upload <el-upload
accept=".jpg,.jpeg,.png.JPG,.JPEG,.PNG" accept=".jpg,.jpeg,.png.JPG,.JPEG,.PNG"
:class="{disabled:uploadDisabled}" :class="{disabled:uploadDisabled}"
action="http://111.203.232.175:8088/mall/file/image/upload" action="http://111.203.232.175:8088/mall/file/image/upload"
list-type="picture-card" list-type="picture-card"
:on-preview="handlePictureCardPreview" :on-preview="handlePictureCardPreview"
:on-remove="handleRemove" :on-remove="handleRemove"
:on-success="handleAvatarSuccess" :on-success="handleAvatarSuccess"
:headers="headers" :headers="headers"
:file-list="fileList" :file-list="fileList"
:limit="1" :limit="1"
:multiple ="false" :multiple ="false"
> >
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
<div slot="tip" class="el-upload__tip color_red">只能上传.jpg/.jpeg/.png文件</div> <div slot="tip" class="el-upload__tip color_red">只能上传.jpg/.jpeg/.png文件</div>
</el-upload> </el-upload>
<el-dialog :visible.sync="dialogVisible"> <el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt /> <img width="100%" :src="dialogImageUrl" alt />
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props:{ props:{
fileList:{ fileList:{
type:Array, type:Array,
default:[] default:[]
}, },
}, },
data() { data() {
return { return {
dialogImageUrl: "", dialogImageUrl: "",
dialogVisible: false, dialogVisible: false,
imageUrl:"" imageUrl:""
}; };
}, },
computed: { computed: {
headers() { headers() {
return { return {
Authorization: localStorage.getItem("backToken") || "", Authorization: localStorage.getItem("backToken") || "",
}; };
}, },
uploadDisabled:function() { uploadDisabled:function() {
return (this.fileList.length>0)||this.imageUrl return (this.fileList.length>0)||this.imageUrl
}, },
}, },
methods: { methods: {
// 图片上传成功的返回值 // 图片上传成功的返回值
handleAvatarSuccess(res, file) { handleAvatarSuccess(res, file) {
if (res.resultCode == 200) { if (res.resultCode == 200) {
this.$emit("imgUrl", res.data.url); this.$emit("imgUrl", res.data.url);
this.imageUrl = res.data.url; this.imageUrl = res.data.url;
} else { } else {
this.$message.error(res.message); this.$message.error(res.message);
} }
}, },
handleRemove(file, fileList) { handleRemove(file, fileList) {
this.$emit("imgUrl", ""); this.$emit("imgUrl", "");
this.imageUrl="" this.imageUrl=""
this.fileList=[] this.fileList=[]
}, },
handlePictureCardPreview(file) { handlePictureCardPreview(file) {
this.dialogImageUrl = file.url; this.dialogImageUrl = file.url;
this.dialogVisible = true; this.dialogVisible = true;
}, },
showImg(cover) { showImg(cover) {
let file = { let file = {
name: "", name: "",
url: cover, url: cover,
}; };
this.fileList = [file] this.fileList = [file]
}, },
}, },
}; };
</script> </script>
<style lang="less"> <style lang="less">
.avatar { .avatar {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.color_red{ .color_red{
color:red; color:red;
} }
.disabled .el-upload--picture-card { .disabled .el-upload--picture-card {
display: none; display: none;
} }
</style> </style>
<template> <template>
<div> <div>
<el-upload <el-upload
accept=".jpg,.jpeg,.png,.JPG,.JPEG,.PBG" accept=".jpg,.jpeg,.png,.JPG,.JPEG,.PBG"
:class="{disabled:uploadDisabled}" :class="{disabled:uploadDisabled}"
action="http://111.203.232.175:8088/mall/file/image/upload" action="http://111.203.232.175:8088/mall/file/image/upload"
list-type="picture-card" list-type="picture-card"
:on-preview="handlePictureCardPreview" :on-preview="handlePictureCardPreview"
:on-remove="handleRemove" :on-remove="handleRemove"
:on-success="handleAvatarSuccess" :on-success="handleAvatarSuccess"
:headers="headers" :headers="headers"
:file-list="fileList" :file-list="fileList"
:limit="1" :limit="1"
:multiple ="false" :multiple ="false"
> >
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
<div slot="tip" class="el-upload__tip color_red">只能上传.jpg/.jpeg/.png文件</div> <div slot="tip" class="el-upload__tip color_red">只能上传.jpg/.jpeg/.png文件</div>
</el-upload> </el-upload>
<el-dialog :visible.sync="dialogVisible"> <el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt /> <img width="100%" :src="dialogImageUrl" alt />
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props:{ props:{
fileList:{ fileList:{
type:Array, type:Array,
default:[ default:[
{ {
name: "", name: "",
url: "", url: "",
}, },
] ]
}, },
}, },
data() { data() {
return { return {
dialogImageUrl: "", dialogImageUrl: "",
dialogVisible: false, dialogVisible: false,
imageUrl:"" imageUrl:""
}; };
}, },
computed: { computed: {
headers() { headers() {
// return { 'token': this.backToken } // return { 'token': this.backToken }
return {'Authorization':localStorage.getItem('backToken')} return {'Authorization':localStorage.getItem('backToken')}
}, },
uploadDisabled:function() { uploadDisabled:function() {
return (this.fileList.length>0)||this.imageUrl return (this.fileList.length>0)||this.imageUrl
}, },
}, },
methods: { methods: {
// 图片上传成功的返回值 // 图片上传成功的返回值
handleAvatarSuccess(res, file) { handleAvatarSuccess(res, file) {
// this.$emit('qrcodeUrl', res.data.url) // this.$emit('qrcodeUrl', res.data.url)
if (res.resultCode == 200) { if (res.resultCode == 200) {
this.$emit('qrcodeUrl', res.data.url) this.$emit('qrcodeUrl', res.data.url)
this.imageUrl = res.data.url; this.imageUrl = res.data.url;
} else { } else {
this.$message.error(res.message); this.$message.error(res.message);
} }
}, },
handleRemove(file, fileList) { handleRemove(file, fileList) {
console.log(file, fileList); console.log(file, fileList);
this.$emit("qrcodeUrl", ""); this.$emit("qrcodeUrl", "");
this.imageUrl="" this.imageUrl=""
this.fileList=[] this.fileList=[]
}, },
handlePictureCardPreview(file) { handlePictureCardPreview(file) {
this.dialogImageUrl = file.url; this.dialogImageUrl = file.url;
this.dialogVisible = true; this.dialogVisible = true;
} }
} }
}; };
</script> </script>
<style> <style>
.color_red{ .color_red{
color:red; color:red;
} }
.disabled .el-upload--picture-card { .disabled .el-upload--picture-card {
display: none; display: none;
} }
</style> </style>
<template> <template>
<div class="listPage H100"> <div class="listPage H100">
<div class="search-container"> <div class="search-container">
<el-form :inline="true" :model="form" class="search-form" onsubmit="return false;"> <el-form :inline="true" :model="form" class="search-form" onsubmit="return false;">
<el-form-item label=""> <el-form-item label="">
<el-input <el-input
placeholder="请输入视频名称" placeholder="请输入视频名称"
v-model="form.nameOrCode" v-model="form.nameOrCode"
@keyup.enter.native="Search" @keyup.enter.native="Search"
clearable clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label=""> <el-form-item label="">
<el-select <el-select
placeholder="请选择视频版权方" placeholder="请选择视频版权方"
@focus="getAssetCopyrightData" @focus="getAssetCopyrightData"
v-model="form.videoContentCopyrightOwnerId" v-model="form.videoContentCopyrightOwnerId"
clearable clearable
> >
<el-option <el-option
v-for="item in copyrightOwner" v-for="item in copyrightOwner"
:label="item.name" :label="item.name"
:value="item.id" :value="item.id"
:key="item.id" :key="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label=""> <el-form-item label="">
<el-select <el-select
placeholder="请选择预设视频分类" placeholder="请选择预设视频分类"
@focus="getAssetTypeData" @focus="getAssetTypeData"
v-model="form.videoContentCatId" v-model="form.videoContentCatId"
clearable clearable
> >
<el-option <el-option
v-for="item in videoContentCat" v-for="item in videoContentCat"
:label="item.name" :label="item.name"
:value="item.id" :value="item.id"
:key="item.id" :key="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<div class="btn-group"> <div class="btn-group">
<el-button size="mini" type="primary" class="btn_form_search" @click="Search">查询</el-button> <el-button size="mini" type="primary" class="btn_form_search" @click="Search">查询</el-button>
<el-button size="mini" class="btn_form_search" @click="Reset">重置</el-button> <el-button size="mini" class="btn_form_search" @click="Reset">重置</el-button>
</div> </div>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="page-tip"> <div class="page-tip">
<span class="page-tip-title">页面说明:</span> <span class="page-tip-title">页面说明:</span>
<span class="page-tips">可使用版权方、视频分类、视频名称模糊搜索对需要汇出的视频进行快速检索,下载至本地。</span> <span class="page-tips">可使用版权方、视频分类、视频名称模糊搜索对需要汇出的视频进行快速检索,下载至本地。</span>
</div> </div>
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="btn-group"> <div class="btn-group">
<el-button type="primary" @click="downloadCipher()">导出加密文件</el-button> <el-button type="primary" @click="downloadCipher()">导出加密文件</el-button>
<el-button type="primary" @click="multipleRemitGet()">汇出</el-button> <el-button type="primary" @click="multipleRemitGet()">汇出</el-button>
<!-- <el-button type="primary" @click="multipleRemit()">汇出</el-button> --> <!-- <el-button type="primary" @click="multipleRemit()">汇出</el-button> -->
</div> </div>
<div class="party-table"> <div class="party-table">
<el-table <el-table
border border
style="width: 100%;height:100%" style="width: 100%;height:100%"
height="100%" height="100%"
ref="multipleTable" ref="multipleTable"
:data="tableData" :data="tableData"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column type="selection" width="55"></el-table-column> <el-table-column type="selection" width="55"></el-table-column>
<el-table-column type="index" width="120" label="序号"> <el-table-column type="index" width="120" label="序号">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ (page.currentPage - 1) * 10 + scope.$index + 1 }}</span> <span>{{ (page.currentPage - 1) * 10 + scope.$index + 1 }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="视频名称" prop="fileName"></el-table-column> <el-table-column label="视频名称" prop="fileName"></el-table-column>
<el-table-column label="版权方" prop="videoContentCopyrightOwnerName"></el-table-column> <el-table-column label="版权方" prop="videoContentCopyrightOwnerName"></el-table-column>
<el-table-column label="视频类别" prop="videoContentCatName"></el-table-column> <el-table-column label="视频类别" prop="videoContentCatName"></el-table-column>
</el-table> </el-table>
</div> </div>
<div class="partyt-pagination"> <div class="partyt-pagination">
<el-pagination <el-pagination
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
:current-page="page.currentPage" :current-page="page.currentPage"
:page-size="page.pageSize" :page-size="page.pageSize"
layout="prev, pager, next, jumper" layout="prev, pager, next, jumper"
:total="page.total" :total="page.total"
></el-pagination> ></el-pagination>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import axios from 'axios' import axios from 'axios'
export default { export default {
data() { data() {
var checkIsNull = (rule, value, callback) => { var checkIsNull = (rule, value, callback) => {
if (value) { if (value) {
if (value.trim() == "") { if (value.trim() == "") {
callback(new Error("不允许只输入空格")); callback(new Error("不允许只输入空格"));
} else { } else {
callback(); callback();
} }
} }
}; };
return { return {
nowDate: "", // 当前日期 nowDate: "", // 当前日期
fullscreenLoading: false, fullscreenLoading: false,
copyrightOwner:[], copyrightOwner:[],
videoContentCat:[], videoContentCat:[],
type: true, type: true,
value1: "", value1: "",
page: { currentPage: 1, pageSize: 10, total: 0 }, page: { currentPage: 1, pageSize: 10, total: 0 },
tableData: [], tableData: [],
FormVisible: false, FormVisible: false,
FormVisible1: false, FormVisible1: false,
formLabelWidth: "100px", formLabelWidth: "100px",
form: { form: {
nameOrCode: "" nameOrCode: ""
}, },
editform: { editform: {
menuName: "", menuName: "",
menuUrl: "", menuUrl: "",
parentId: "", parentId: "",
sort: "", sort: "",
id: "" id: ""
}, },
classForm: { classForm: {
menuName: "", menuName: "",
menuUrl: "", menuUrl: "",
parentId: "", parentId: "",
sort: "" sort: ""
}, },
typeList: [], typeList: [],
rules: { rules: {
sort: [ sort: [
{ required: true, message: "请输入顺序值", trigger: "change" }, { required: true, message: "请输入顺序值", trigger: "change" },
{ pattern: /^(\d{1,5})?$/, message: "排序值为低于5位数的纯数字" } { pattern: /^(\d{1,5})?$/, message: "排序值为低于5位数的纯数字" }
], ],
menuName: [ menuName: [
{ required: true, message: "请输入菜单名称", trigger: "change" }, { required: true, message: "请输入菜单名称", trigger: "change" },
{ max: 20, message: "不能超过20个字符", trigger: "change" }, { max: 20, message: "不能超过20个字符", trigger: "change" },
{ validator: checkIsNull, trigger: "blur" } { validator: checkIsNull, trigger: "blur" }
], ],
menuUrl: [ menuUrl: [
{ required: true, message: "请输入菜单地址", trigger: "change" }, { required: true, message: "请输入菜单地址", trigger: "change" },
{ validator: checkIsNull, trigger: "blur" } { validator: checkIsNull, trigger: "blur" }
], ],
parentId: [ parentId: [
{ required: true, message: "请输入父级菜单", trigger: "change" } { required: true, message: "请输入父级菜单", trigger: "change" }
] ]
}, },
value: "", value: "",
name: "" name: ""
}; };
}, },
computed: {}, computed: {},
mounted() { mounted() {
this.onSearch(); this.onSearch();
// this.getPermis(); // this.getPermis();
}, },
components: {}, components: {},
methods: { methods: {
formatDate() { formatDate() {
let date = new Date(); let date = new Date();
let year = date.getFullYear(); // 年 let year = date.getFullYear(); // 年
let month = date.getMonth() + 1; // 月 let month = date.getMonth() + 1; // 月
let day = date.getDate(); // 日 let day = date.getDate(); // 日
let week = date.getDay(); // 星期 let week = date.getDay(); // 星期
let weekArr = [ "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" ]; let weekArr = [ "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" ];
let hour = date.getHours(); // 时 let hour = date.getHours(); // 时
hour = hour < 10 ? "0" + hour : hour; // 如果只有一位,则前面补零 hour = hour < 10 ? "0" + hour : hour; // 如果只有一位,则前面补零
let minute = date.getMinutes(); // 分 let minute = date.getMinutes(); // 分
minute = minute < 10 ? "0" + minute : minute; // 如果只有一位,则前面补零 minute = minute < 10 ? "0" + minute : minute; // 如果只有一位,则前面补零
let second = date.getSeconds(); // 秒 let second = date.getSeconds(); // 秒
second = second < 10 ? "0" + second : second; // 如果只有一位,则前面补零 second = second < 10 ? "0" + second : second; // 如果只有一位,则前面补零
this.nowDate = `${year}${month}${day}}`; this.nowDate = `${year}${month}${day}}`;
}, },
// 获取展板分类列表 // 获取展板分类列表
getAssetCopyrightData(){ getAssetCopyrightData(){
let vm = this; let vm = this;
vm.$https({ vm.$https({
url: "copyrightOwner/getList", url: "copyrightOwner/getList",
method: "get", method: "get",
authType: this.backToken authType: this.backToken
}, },
{copyrightOwnerType:'VIDEO_CONTENT'}) {copyrightOwnerType:'VIDEO_CONTENT'})
.then(res => { .then(res => {
let data = res.data.data; let data = res.data.data;
this.copyrightOwner = data; this.copyrightOwner = data;
}) })
.catch(function(err) { .catch(function(err) {
console.log(err); console.log(err);
}); });
}, },
// 获取视频分类列表 // 获取视频分类列表
getAssetTypeData() { getAssetTypeData() {
let vm = this; let vm = this;
vm.$https({ vm.$https({
url: "videoContentCat/getList", url: "videoContentCat/getList",
method: "get", method: "get",
authType: this.backToken authType: this.backToken
}) })
.then(res => { .then(res => {
let data = res.data.data; let data = res.data.data;
this.videoContentCat = data; this.videoContentCat = data;
}) })
.catch(function(err) { .catch(function(err) {
console.log(err); console.log(err);
}); });
}, },
// 渲染父级权限 // 渲染父级权限
getPermis() { getPermis() {
let vm = this; let vm = this;
vm.$https({ vm.$https({
method: "get", method: "get",
url: "menu/getRoleMenu?roleId=" + sessionStorage.getItem("roleId"), url: "menu/getRoleMenu?roleId=" + sessionStorage.getItem("roleId"),
authType: this.backToken authType: this.backToken
}).then( }).then(
res => { res => {
let data = res.data; let data = res.data;
vm.typeList = data.map((e, i) => { vm.typeList = data.map((e, i) => {
return { return {
id: e.id, id: e.id,
name: name:
e.menuName.indexOf("-") == -1 e.menuName.indexOf("-") == -1
? e.menuName ? e.menuName
: e.menuName.split("-")[1] : e.menuName.split("-")[1]
}; };
}); });
}, },
error => { error => {
console.log(error); console.log(error);
} }
); );
}, },
// 获得数据接口 // 获得数据接口
getTableData(param) { getTableData(param) {
let vm = this; let vm = this;
vm.$https( vm.$https(
{ {
url: "asset/getPageList", url: "asset/getPageList",
method: "post", method: "post",
authType: this.backToken authType: this.backToken
}, },
vm.$qs.stringify(param) vm.$qs.stringify(param)
// param // param
) )
.then(res => { .then(res => {
let data = res.data.data; let data = res.data.data;
vm.page.pageSize = data.size; vm.page.pageSize = data.size;
vm.page.total = data.total; vm.page.total = data.total;
vm.tableData = data.records; vm.tableData = data.records;
}) })
.catch(function(err) { .catch(function(err) {
console.log(err); console.log(err);
}); });
}, },
// 分页 // 分页
handleCurrentChange(val) { handleCurrentChange(val) {
let _this = this; let _this = this;
_this.page.currentPage = val; _this.page.currentPage = val;
_this.onSearch(); _this.onSearch();
}, },
onSearch() { onSearch() {
let _this = this; let _this = this;
let param = _this.getSearchQuery(); let param = _this.getSearchQuery();
_this.getTableData(param); _this.getTableData(param);
}, },
// 重置 // 重置
Reset(){ Reset(){
this.form = {} this.form = {}
this.Search() this.Search()
}, },
Search() { Search() {
let _this = this; let _this = this;
_this.page.currentPage = 1; _this.page.currentPage = 1;
let searchObj = { let searchObj = {
_index: 1, _index: 1,
_size: _this.page.pageSize, _size: _this.page.pageSize,
nameOrCode: _this.form.nameOrCode, nameOrCode: _this.form.nameOrCode,
videoContentCatId:_this.form.videoContentCatId, videoContentCatId:_this.form.videoContentCatId,
videoContentCopyrightOwnerId:_this.form.videoContentCopyrightOwnerId videoContentCopyrightOwnerId:_this.form.videoContentCopyrightOwnerId
}; };
this.getTableData(searchObj); this.getTableData(searchObj);
}, },
// // 获取当前查询参数 // // 获取当前查询参数
getSearchQuery() { getSearchQuery() {
let _this = this; let _this = this;
let searchObj = { let searchObj = {
_index: _this.page.currentPage, _index: _this.page.currentPage,
_size: _this.page.pageSize _size: _this.page.pageSize
}; };
for (let key in _this.form) { for (let key in _this.form) {
if (_this.form[key]) { if (_this.form[key]) {
searchObj[key] = _this.form[key]; searchObj[key] = _this.form[key];
} }
} }
return searchObj; return searchObj;
}, },
// 批量操作 // 批量操作
handleSelectionChange(selection) { handleSelectionChange(selection) {
let _this = this; let _this = this;
_this.selection = selection; _this.selection = selection;
}, },
getMultipleSelect() { getMultipleSelect() {
let _this = this; let _this = this;
let arr = []; let arr = [];
let str = ""; let str = "";
if (_this.selection) { if (_this.selection) {
_this.selection.forEach(function(e) { _this.selection.forEach(function(e) {
arr.push(e.id); arr.push(e.id);
}); });
str = arr.join(","); str = arr.join(",");
// str = arr; // str = arr;
} else { } else {
str = ""; str = "";
// str = []; // str = [];
} }
return str; return str;
}, },
// 汇出 // 汇出
multipleRemit() { multipleRemit() {
let _this = this; let _this = this;
let str = _this.getMultipleSelect(); let str = _this.getMultipleSelect();
// console.log(str) // console.log(str)
if (str.length > 0) { if (str.length > 0) {
console.log(str); console.log(str);
_this.$https({ _this.$https({
url: "asset/download", url: "asset/download",
method: "post", method: "post",
authType: this.backToken authType: this.backToken
}, },
// {idList:str} // {idList:str}
_this.$qs.stringify({idList:str}) _this.$qs.stringify({idList:str})
) )
.then( .then(
res => { res => {
const blob = new Blob([res.data], { const blob = new Blob([res.data], {
type: type:
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'" "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'"
}) })
const downloadElement = document.createElement('a') const downloadElement = document.createElement('a')
const contentDisposition = res.headers['content-disposition'] const contentDisposition = res.headers['content-disposition']
const patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*') const patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
const result = patt.exec(contentDisposition) const result = patt.exec(contentDisposition)
const filename = decodeURI(result[1]) const filename = decodeURI(result[1])
const href = window.URL.createObjectURL(blob) // 创建下载的链接 const href = window.URL.createObjectURL(blob) // 创建下载的链接
downloadElement.href = href downloadElement.href = href
downloadElement.download = filename // 下载后文件名 downloadElement.download = filename // 下载后文件名
document.body.appendChild(downloadElement) document.body.appendChild(downloadElement)
downloadElement.click() // 点击下载 downloadElement.click() // 点击下载
document.body.removeChild(downloadElement) // 下载完成移除元素 document.body.removeChild(downloadElement) // 下载完成移除元素
window.URL.revokeObjectURL(href) // 释放blob对象 window.URL.revokeObjectURL(href) // 释放blob对象
}, },
error => {} error => {}
); );
} else { } else {
this.$message({ this.$message({
type: "info", type: "info",
message: "请至少选择一个选项!" message: "请至少选择一个选项!"
}); });
} }
}, },
openFullScreen2() { openFullScreen2() {
this.formatDate() this.formatDate()
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: '下载中,请稍候。。。', text: '下载中,请稍候。。。',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)' background: 'rgba(0, 0, 0, 0.7)'
}); });
// setTimeout(() => { // setTimeout(() => {
// loading.close(); // loading.close();
// }, 2000); // }, 2000);
}, },
// 导出机顶盒文件加密秘钥 // 导出机顶盒文件加密秘钥
downloadCipher(){ downloadCipher(){
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: '下载中,请稍候。。。', text: '下载中,请稍候。。。',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)' background: 'rgba(0, 0, 0, 0.7)'
}); });
axios({ axios({
method: "get", method: "get",
url: 'http://111.203.232.175:8088/mall/asset/downloadCipher', url: 'http://111.203.232.175:8088/mall/asset/downloadCipher',
params: { params: {
// idList:str // idList:str
}, },
headers: { headers: {
"Authorization": localStorage.getItem("backToken") || "", "Authorization": localStorage.getItem("backToken") || "",
}, },
responseType: "blob", responseType: "blob",
}).then(res => { }).then(res => {
console.log(res) console.log(res)
loading.close(); loading.close();
let blobUrl = window.URL.createObjectURL(res.data); let blobUrl = window.URL.createObjectURL(res.data);
const aElement = document.createElement("a"); const aElement = document.createElement("a");
aElement.href = blobUrl; aElement.href = blobUrl;
// aElement.download = res.data.fileName; // aElement.download = res.data.fileName;
aElement.download = '密钥.zip'; aElement.download = '密钥.zip';
aElement.click(); aElement.click();
window.URL.revokeObjectURL(blobUrl); window.URL.revokeObjectURL(blobUrl);
}) })
}, },
// get测试 // get测试
multipleRemitGet() { multipleRemitGet() {
let _this = this; let _this = this;
let str = _this.getMultipleSelect(); let str = _this.getMultipleSelect();
if(str){ if(str){
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: '下载中,请稍候。。。', text: '下载中,请稍候。。。',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)' background: 'rgba(0, 0, 0, 0.7)'
}); });
axios({ axios({
method: "get", method: "get",
url: 'http://111.203.232.175:8088/mall/asset/download', url: 'http://111.203.232.175:8088/mall/asset/download',
params: { params: {
// idList: "1382697227765313538" // idList: "1382697227765313538"
idList:str idList:str
}, },
headers: { headers: {
"Authorization": localStorage.getItem("backToken") || "", "Authorization": localStorage.getItem("backToken") || "",
}, },
responseType: "blob", responseType: "blob",
}).then(res => { }).then(res => {
console.log(res) console.log(res)
loading.close(); loading.close();
let blobUrl = window.URL.createObjectURL(res.data); let blobUrl = window.URL.createObjectURL(res.data);
const aElement = document.createElement("a"); const aElement = document.createElement("a");
aElement.href = blobUrl; aElement.href = blobUrl;
// aElement.download = res.data.fileName; // aElement.download = res.data.fileName;
aElement.download = _this.nowDate + '视频集.zip'; aElement.download = _this.nowDate + '视频集.zip';
aElement.click(); aElement.click();
window.URL.revokeObjectURL(blobUrl); window.URL.revokeObjectURL(blobUrl);
}) })
}else{ }else{
this.$message({ this.$message({
type: "info", type: "info",
message: "请至少选择一个选项!" message: "请至少选择一个选项!"
}); });
} }
// let _this = this; // let _this = this;
// let str = _this.getMultipleSelect(); // let str = _this.getMultipleSelect();
// console.log(str); // console.log(str);
// _this.$https({ // _this.$https({
// url: "asset/download", // url: "asset/download",
// method: "get", // method: "get",
// authType: this.backToken, // authType: this.backToken,
// // dataType: 'json', // // dataType: 'json',
// // responseType: 'arraybuffer' // 该条件是重点 // // responseType: 'arraybuffer' // 该条件是重点
// responseType: 'blob' // responseType: 'blob'
// }, // },
// {idList:'1382697227765313538'} // {idList:'1382697227765313538'}
// ) // )
// .then( // .then(
// res => { // res => {
// let blobUrl = window.URL.createObjectURL(res.data); // let blobUrl = window.URL.createObjectURL(res.data);
// const aElement = document.createElement("a"); // const aElement = document.createElement("a");
// aElement.href = blobUrl; // aElement.href = blobUrl;
// aElement.download = 'aaaa.zip'; // aElement.download = 'aaaa.zip';
// aElement.click(); // aElement.click();
// window.URL.revokeObjectURL(blobUrl); // window.URL.revokeObjectURL(blobUrl);
// const content = res // const content = res
// const blob = new Blob([content]) // const blob = new Blob([content])
// const fileName = 'electron-mat.zip' // const fileName = 'electron-mat.zip'
// if ('download' in document.createElement('a')) { // 非IE下载 // if ('download' in document.createElement('a')) { // 非IE下载
// const elink = document.createElement('a') // const elink = document.createElement('a')
// elink.download = fileName // elink.download = fileName
// elink.style.display = 'none' // elink.style.display = 'none'
// elink.href = URL.createObjectURL(blob) // elink.href = URL.createObjectURL(blob)
// document.body.appendChild(elink) // document.body.appendChild(elink)
// elink.click() // elink.click()
// URL.revokeObjectURL(elink.href) // 释放URL 对象 // URL.revokeObjectURL(elink.href) // 释放URL 对象
// document.body.removeChild(elink) // document.body.removeChild(elink)
// } else { // IE10+下载 // } else { // IE10+下载
// // navigator.msSaveBlob(blob, fileName) // // navigator.msSaveBlob(blob, fileName)
// } // }
// const blob = new Blob([res.data], { type: 'application/zip' }) // const blob = new Blob([res.data], { type: 'application/zip' })
// const url = window.URL.createObjectURL(blob) // const url = window.URL.createObjectURL(blob)
// window.location.href = url // window.location.href = url
// if(typeof(res.data) == 'string'){ // if(typeof(res.data) == 'string'){
// var blob = new Blob([res.data], { type: 'application/zip' }) // var blob = new Blob([res.data], { type: 'application/zip' })
// if (window.navigator.msSaveOrOpenBlob) {//msSaveOrOpenBlob方法返回bool值 // if (window.navigator.msSaveOrOpenBlob) {//msSaveOrOpenBlob方法返回bool值
// navigator.msSaveBlob(blob, 'fileName');//本地保存 // navigator.msSaveBlob(blob, 'fileName');//本地保存
// } else { // } else {
// var link = document.createElement('a');//a标签下载 // var link = document.createElement('a');//a标签下载
// link.href = window.URL.createObjectURL(blob); // link.href = window.URL.createObjectURL(blob);
// link.download = 'fileName'; // link.download = 'fileName';
// link.click(); // link.click();
// window.URL.revokeObjectURL(link.href); // window.URL.revokeObjectURL(link.href);
// } // }
// }else{ // }else{
// } // }
// console.log(res) // console.log(res)
// const blob = new Blob([res.data], { type: 'application/zip' }) // const blob = new Blob([res.data], { type: 'application/zip' })
// const url = window.URL.createObjectURL(blob) // const url = window.URL.createObjectURL(blob)
// const link = document.createElement('a') // 创建a标签 // const link = document.createElement('a') // 创建a标签
// link.href = url // link.href = url
// // link.download = data.fileName // 设置下载的文件名 // // link.download = data.fileName // 设置下载的文件名
// document.body.appendChild(link) // document.body.appendChild(link)
// link.click() //执行下载 // link.click() //执行下载
// document.body.removeChild(link) //释放标签 // document.body.removeChild(link) //释放标签
// const downloadElement = document.createElement('a') // const downloadElement = document.createElement('a')
// const contentDisposition = res.headers['content-disposition'] // const contentDisposition = res.headers['content-disposition']
// const patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*') // const patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
// const result = patt.exec(contentDisposition) // const result = patt.exec(contentDisposition)
// const filename = decodeURI(result[1]) // const filename = decodeURI(result[1])
// const href = window.URL.createObjectURL(blob) // 创建下载的链接 // const href = window.URL.createObjectURL(blob) // 创建下载的链接
// downloadElement.href = href // downloadElement.href = href
// downloadElement.download = filename // 下载后文件名 // downloadElement.download = filename // 下载后文件名
// document.body.appendChild(downloadElement) // document.body.appendChild(downloadElement)
// downloadElement.click() // 点击下载 // downloadElement.click() // 点击下载
// document.body.removeChild(downloadElement) // 下载完成移除元素 // document.body.removeChild(downloadElement) // 下载完成移除元素
// window.URL.revokeObjectURL(href) // 释放blob对象 // window.URL.revokeObjectURL(href) // 释放blob对象
// }, // },
// error => {} // error => {}
// ); // );
// } else { // } else {
// this.$message({ // this.$message({
// type: "info", // type: "info",
// message: "请至少选择一个选项!" // message: "请至少选择一个选项!"
// }); // });
// } // }
// if (str) { // if (str) {
// this.$confirm("此操作将删除选中菜单, 是否继续?", "提示", { // this.$confirm("此操作将删除选中菜单, 是否继续?", "提示", {
// confirmButtonText: "确定", // confirmButtonText: "确定",
// cancelButtonText: "取消", // cancelButtonText: "取消",
// type: "warning" // type: "warning"
// }).then(() => { // }).then(() => {
// _this // _this
// .$https({ // .$https({
// url: "menu/batchDel?menuIds=" + str, // url: "menu/batchDel?menuIds=" + str,
// method: "DELETE", // method: "DELETE",
// authType: this.backToken // authType: this.backToken
// }) // })
// .then( // .then(
// res => { // res => {
// if (res.data.status == 201 || res.data.status == 200) { // if (res.data.status == 201 || res.data.status == 200) {
// this.$message({ // this.$message({
// type: "success", // type: "success",
// message: "删除成功!" // message: "删除成功!"
// }); // });
// } // }
// //重新查询数据 // //重新查询数据
// _this.onSearch(); // _this.onSearch();
// }, // },
// error => {} // error => {}
// ); // );
// }); // });
// } else { // } else {
// this.$message({ // this.$message({
// type: "info", // type: "info",
// message: "请至少选择一个选项!" // message: "请至少选择一个选项!"
// }); // });
// } // }
} }
} }
}; };
</script> </script>
<style lang="less"> <style lang="less">
// @import "../../../../style/common"; // @import "../../../../style/common";
// @import "../../style/list"; // @import "../../style/list";
@import "../../../../style/dialog.less"; @import "../../../../style/dialog.less";
@import "../../../../style/table.less"; @import "../../../../style/table.less";
@import "../../../../style/pagination.less"; @import "../../../../style/pagination.less";
</style> </style>
{ {
"baseUrl_backUp": "/mall/", "baseUrl_backUp": "/mall/",
"baseUrl": "/mall/", "baseUrl": "/mall/",
"directory": "/plat" "directory": "/plat"
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment