mirror of
https://gitee.com/y_project/RuoYi-Cloud.git
synced 2026-01-31 22:11:57 +08:00
新增多图片上传pc端返回code 为null
This commit is contained in:
@@ -80,8 +80,8 @@ public class WxBuildingInfo extends BaseEntity
|
|||||||
private String defaultPicture;
|
private String defaultPicture;
|
||||||
|
|
||||||
/** 是否支持在线 */
|
/** 是否支持在线 */
|
||||||
@Excel(name = "是否支持在线")
|
@Excel(name = "支持在线")
|
||||||
private Long isSupportlive;
|
private Boolean isSupportlive;
|
||||||
|
|
||||||
/** 球馆状态 */
|
/** 球馆状态 */
|
||||||
@Excel(name = "球馆状态")
|
@Excel(name = "球馆状态")
|
||||||
@@ -93,7 +93,7 @@ public class WxBuildingInfo extends BaseEntity
|
|||||||
|
|
||||||
/** 是否开放 */
|
/** 是否开放 */
|
||||||
@Excel(name = "是否开放")
|
@Excel(name = "是否开放")
|
||||||
private Long isOpen;
|
private Boolean isOpen;
|
||||||
|
|
||||||
/** 人均价格 */
|
/** 人均价格 */
|
||||||
@Excel(name = "人均价格")
|
@Excel(name = "人均价格")
|
||||||
@@ -246,12 +246,12 @@ public class WxBuildingInfo extends BaseEntity
|
|||||||
{
|
{
|
||||||
return defaultPicture;
|
return defaultPicture;
|
||||||
}
|
}
|
||||||
public void setIsSupportlive(Long isSupportlive)
|
public void setIsSupportlive(Boolean isSupportlive)
|
||||||
{
|
{
|
||||||
this.isSupportlive = isSupportlive;
|
this.isSupportlive = isSupportlive;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getIsSupportlive()
|
public Boolean getIsSupportlive()
|
||||||
{
|
{
|
||||||
return isSupportlive;
|
return isSupportlive;
|
||||||
}
|
}
|
||||||
@@ -273,12 +273,12 @@ public class WxBuildingInfo extends BaseEntity
|
|||||||
{
|
{
|
||||||
return rejectReason;
|
return rejectReason;
|
||||||
}
|
}
|
||||||
public void setIsOpen(Long isOpen)
|
public void setIsOpen(Boolean isOpen)
|
||||||
{
|
{
|
||||||
this.isOpen = isOpen;
|
this.isOpen = isOpen;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getIsOpen()
|
public Boolean getIsOpen()
|
||||||
{
|
{
|
||||||
return isOpen;
|
return isOpen;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="cityName != null and cityName != ''"> and CITY_NAME like concat('%', #{cityName}, '%')</if>
|
<if test="cityName != null and cityName != ''"> and CITY_NAME like concat('%', #{cityName}, '%')</if>
|
||||||
<if test="status != null "> and STATUS = #{status}</if>
|
<if test="status != null "> and STATUS = #{status}</if>
|
||||||
<if test="isOpen != null "> and IS_OPEN = #{isOpen}</if>
|
<if test="isOpen != null "> and IS_OPEN = #{isOpen}</if>
|
||||||
|
<if test="isSupportlive != null "> and IS_SUPPORTLIVE = #{isSupportlive}</if>
|
||||||
<if test="createdId != null "> and CREATED_ID = #{createdId}</if>
|
<if test="createdId != null "> and CREATED_ID = #{createdId}</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -39,11 +39,13 @@
|
|||||||
"url": "https://gitee.com/y_project/RuoYi-Cloud.git"
|
"url": "https://gitee.com/y_project/RuoYi-Cloud.git"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@amap/amap-jsapi-loader": "^1.0.1",
|
||||||
"@riophae/vue-treeselect": "0.4.0",
|
"@riophae/vue-treeselect": "0.4.0",
|
||||||
"axios": "0.24.0",
|
"axios": "0.24.0",
|
||||||
"clipboard": "2.0.8",
|
"clipboard": "2.0.8",
|
||||||
"core-js": "3.19.1",
|
"core-js": "3.19.1",
|
||||||
"echarts": "4.9.0",
|
"echarts": "4.9.0",
|
||||||
|
"element-china-area-data": "^5.0.2",
|
||||||
"element-ui": "2.15.8",
|
"element-ui": "2.15.8",
|
||||||
"file-saver": "2.0.5",
|
"file-saver": "2.0.5",
|
||||||
"fuse.js": "6.4.3",
|
"fuse.js": "6.4.3",
|
||||||
@@ -52,14 +54,17 @@
|
|||||||
"js-cookie": "3.0.1",
|
"js-cookie": "3.0.1",
|
||||||
"jsencrypt": "3.0.0-rc.1",
|
"jsencrypt": "3.0.0-rc.1",
|
||||||
"nprogress": "0.2.0",
|
"nprogress": "0.2.0",
|
||||||
|
"qqmap": "^1.0.1",
|
||||||
"quill": "1.3.7",
|
"quill": "1.3.7",
|
||||||
"screenfull": "5.0.2",
|
"screenfull": "5.0.2",
|
||||||
"sortablejs": "1.10.2",
|
"sortablejs": "1.10.2",
|
||||||
"vue": "2.6.12",
|
"vue": "2.6.12",
|
||||||
"vue-qr": "^2.3.0",
|
"vue-amap": "^0.5.10",
|
||||||
|
"vue-baidu-map": "^0.21.22",
|
||||||
"vue-count-to": "1.0.13",
|
"vue-count-to": "1.0.13",
|
||||||
"vue-cropper": "0.5.5",
|
"vue-cropper": "0.5.5",
|
||||||
"vue-meta": "2.4.0",
|
"vue-meta": "2.4.0",
|
||||||
|
"vue-qr": "^2.3.0",
|
||||||
"vue-router": "3.4.9",
|
"vue-router": "3.4.9",
|
||||||
"vuedraggable": "2.24.3",
|
"vuedraggable": "2.24.3",
|
||||||
"vuex": "3.6.0"
|
"vuex": "3.6.0"
|
||||||
|
|||||||
@@ -25,7 +25,14 @@ export function addWxBuilding(data) {
|
|||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 批量上传图片
|
||||||
|
export function batchUploadFiles(data,url) {
|
||||||
|
return request({
|
||||||
|
url: url,
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
// 修改球场管理
|
// 修改球场管理
|
||||||
export function updateWxBuilding(data) {
|
export function updateWxBuilding(data) {
|
||||||
return request({
|
return request({
|
||||||
|
|||||||
@@ -1,86 +1,109 @@
|
|||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
|
|
||||||
import Cookies from 'js-cookie'
|
import Cookies from 'js-cookie'
|
||||||
|
|
||||||
import Element from 'element-ui'
|
import Element from 'element-ui'
|
||||||
import './assets/styles/element-variables.scss'
|
import './assets/styles/element-variables.scss'
|
||||||
|
|
||||||
import '@/assets/styles/index.scss' // global css
|
import '@/assets/styles/index.scss' // global css
|
||||||
import '@/assets/styles/ruoyi.scss' // ruoyi css
|
import '@/assets/styles/ruoyi.scss' // ruoyi css
|
||||||
import App from './App'
|
import App from './App'
|
||||||
import store from './store'
|
import store from './store'
|
||||||
import router from './router'
|
import router from './router'
|
||||||
import directive from './directive' // directive
|
import directive from './directive' // directive
|
||||||
import plugins from './plugins' // plugins
|
import plugins from './plugins' // plugins
|
||||||
import { download } from '@/utils/request'
|
import { download } from '@/utils/request'
|
||||||
|
|
||||||
import './assets/icons' // icon
|
import './assets/icons' // icon
|
||||||
import './permission' // permission control
|
import './permission' // permission control
|
||||||
import { getDicts } from "@/api/system/dict/data";
|
import { getDicts } from "@/api/system/dict/data";
|
||||||
import { getConfigKey } from "@/api/system/config";
|
import { getConfigKey } from "@/api/system/config";
|
||||||
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi";
|
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi";
|
||||||
// 分页组件
|
// 分页组件
|
||||||
import Pagination from "@/components/Pagination";
|
import Pagination from "@/components/Pagination";
|
||||||
// 自定义表格工具组件
|
// 自定义表格工具组件
|
||||||
import RightToolbar from "@/components/RightToolbar"
|
import RightToolbar from "@/components/RightToolbar"
|
||||||
// 富文本组件
|
// 富文本组件
|
||||||
import Editor from "@/components/Editor"
|
import Editor from "@/components/Editor"
|
||||||
// 文件上传组件
|
// 文件上传组件
|
||||||
import FileUpload from "@/components/FileUpload"
|
import FileUpload from "@/components/FileUpload"
|
||||||
// 图片上传组件
|
// 图片上传组件
|
||||||
import ImageUpload from "@/components/ImageUpload"
|
import ImageUpload from "@/components/ImageUpload"
|
||||||
// 图片预览组件
|
// 图片预览组件
|
||||||
import ImagePreview from "@/components/ImagePreview"
|
import ImagePreview from "@/components/ImagePreview"
|
||||||
// 字典标签组件
|
// 字典标签组件
|
||||||
import DictTag from '@/components/DictTag'
|
import DictTag from '@/components/DictTag'
|
||||||
// 头部标签组件
|
// 头部标签组件
|
||||||
import VueMeta from 'vue-meta'
|
import VueMeta from 'vue-meta'
|
||||||
// 字典数据组件
|
// 字典数据组件
|
||||||
import DictData from '@/components/DictData'
|
import DictData from '@/components/DictData'
|
||||||
|
import VueAMap from 'vue-amap';
|
||||||
// 全局方法挂载
|
|
||||||
Vue.prototype.getDicts = getDicts
|
// 全局方法挂载
|
||||||
Vue.prototype.getConfigKey = getConfigKey
|
Vue.prototype.getDicts = getDicts
|
||||||
Vue.prototype.parseTime = parseTime
|
Vue.prototype.getConfigKey = getConfigKey
|
||||||
Vue.prototype.resetForm = resetForm
|
Vue.prototype.parseTime = parseTime
|
||||||
Vue.prototype.addDateRange = addDateRange
|
Vue.prototype.resetForm = resetForm
|
||||||
Vue.prototype.selectDictLabel = selectDictLabel
|
Vue.prototype.addDateRange = addDateRange
|
||||||
Vue.prototype.selectDictLabels = selectDictLabels
|
Vue.prototype.selectDictLabel = selectDictLabel
|
||||||
Vue.prototype.download = download
|
Vue.prototype.selectDictLabels = selectDictLabels
|
||||||
Vue.prototype.handleTree = handleTree
|
Vue.prototype.download = download
|
||||||
|
Vue.prototype.handleTree = handleTree
|
||||||
// 全局组件挂载
|
|
||||||
Vue.component('DictTag', DictTag)
|
// 全局组件挂载
|
||||||
Vue.component('Pagination', Pagination)
|
Vue.component('DictTag', DictTag)
|
||||||
Vue.component('RightToolbar', RightToolbar)
|
Vue.component('Pagination', Pagination)
|
||||||
Vue.component('Editor', Editor)
|
Vue.component('RightToolbar', RightToolbar)
|
||||||
Vue.component('FileUpload', FileUpload)
|
Vue.component('Editor', Editor)
|
||||||
Vue.component('ImageUpload', ImageUpload)
|
Vue.component('FileUpload', FileUpload)
|
||||||
Vue.component('ImagePreview', ImagePreview)
|
Vue.component('ImageUpload', ImageUpload)
|
||||||
|
Vue.component('ImagePreview', ImagePreview)
|
||||||
Vue.use(directive)
|
Vue.use(VueAMap)
|
||||||
Vue.use(plugins)
|
// 初始化地图
|
||||||
Vue.use(VueMeta)
|
|
||||||
DictData.install()
|
VueAMap.initAMapApiLoader({
|
||||||
|
key: '0ecbb910088383bb6661f414b08b7156',
|
||||||
/**
|
//这些是引入的插件
|
||||||
* If you don't want to use mock-server
|
plugin: ['AMap.Autocomplete',
|
||||||
* you want to use MockJs for mock api
|
'AMap.PlaceSearch',
|
||||||
* you can execute: mockXHR()
|
'AMap.Scale',
|
||||||
*
|
'AMap.ToolBar',
|
||||||
* Currently MockJs will be used in the production environment,
|
'AMap.MapType',
|
||||||
* please remove it before going online! ! !
|
'AMap.Geolocation',
|
||||||
*/
|
'AMap.Geocoder',
|
||||||
|
'AMap.AutoComplete ',
|
||||||
Vue.use(Element, {
|
'AMap.PlaceSearch',
|
||||||
size: Cookies.get('size') || 'medium' // set element-ui default size
|
'AMap.Scale',
|
||||||
})
|
'AMap.OverView',
|
||||||
|
'AMap.PolyEditor',
|
||||||
Vue.config.productionTip = false
|
'AMap.CircleEditor',
|
||||||
|
],
|
||||||
new Vue({
|
//版本
|
||||||
el: '#app',
|
v: '1.4.4'
|
||||||
router,
|
});
|
||||||
store,
|
Vue.use(directive)
|
||||||
render: h => h(App)
|
Vue.use(plugins)
|
||||||
})
|
Vue.use(VueMeta)
|
||||||
|
DictData.install()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If you don't want to use mock-server
|
||||||
|
* you want to use MockJs for mock api
|
||||||
|
* you can execute: mockXHR()
|
||||||
|
*
|
||||||
|
* Currently MockJs will be used in the production environment,
|
||||||
|
* please remove it before going online! ! !
|
||||||
|
*/
|
||||||
|
|
||||||
|
Vue.use(Element, {
|
||||||
|
size: Cookies.get('size') || 'medium' // set element-ui default size
|
||||||
|
})
|
||||||
|
|
||||||
|
Vue.config.productionTip = false
|
||||||
|
|
||||||
|
new Vue({
|
||||||
|
el: '#app',
|
||||||
|
router,
|
||||||
|
store,
|
||||||
|
render: h => h(App)
|
||||||
|
})
|
||||||
|
|||||||
@@ -1,158 +1,158 @@
|
|||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { Notification, MessageBox, Message, Loading } from 'element-ui'
|
import { Notification, MessageBox, Message, Loading } from 'element-ui'
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
import { getToken } from '@/utils/auth'
|
import { getToken } from '@/utils/auth'
|
||||||
import errorCode from '@/utils/errorCode'
|
import errorCode from '@/utils/errorCode'
|
||||||
import { tansParams, blobValidate } from "@/utils/ruoyi";
|
import { tansParams, blobValidate } from "@/utils/ruoyi";
|
||||||
import cache from '@/plugins/cache'
|
import cache from '@/plugins/cache'
|
||||||
import { saveAs } from 'file-saver'
|
import { saveAs } from 'file-saver'
|
||||||
|
|
||||||
let downloadLoadingInstance;
|
let downloadLoadingInstance;
|
||||||
// 是否显示重新登录
|
// 是否显示重新登录
|
||||||
export let isRelogin = { show: false };
|
export let isRelogin = { show: false };
|
||||||
|
|
||||||
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
|
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
|
||||||
// 创建axios实例
|
// 创建axios实例
|
||||||
const service = axios.create({
|
const service = axios.create({
|
||||||
// axios中请求配置有baseURL选项,表示请求URL公共部分
|
// axios中请求配置有baseURL选项,表示请求URL公共部分
|
||||||
baseURL: process.env.VUE_APP_BASE_API,
|
baseURL: process.env.VUE_APP_BASE_API,
|
||||||
// 超时
|
// 超时
|
||||||
timeout: 10000
|
timeout: 10000
|
||||||
})
|
})
|
||||||
|
|
||||||
// request拦截器
|
// request拦截器
|
||||||
service.interceptors.request.use(config => {
|
service.interceptors.request.use(config => {
|
||||||
// 是否需要设置 token
|
// 是否需要设置 token
|
||||||
const isToken = (config.headers || {}).isToken === false
|
const isToken = (config.headers || {}).isToken === false
|
||||||
// 是否需要防止数据重复提交
|
// 是否需要防止数据重复提交
|
||||||
const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
|
const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
|
||||||
if (getToken() && !isToken) {
|
if (getToken() && !isToken) {
|
||||||
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
|
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
|
||||||
}
|
}
|
||||||
// get请求映射params参数
|
// get请求映射params参数
|
||||||
if (config.method === 'get' && config.params) {
|
if (config.method === 'get' && config.params) {
|
||||||
let url = config.url + '?' + tansParams(config.params);
|
let url = config.url + '?' + tansParams(config.params);
|
||||||
url = url.slice(0, -1);
|
url = url.slice(0, -1);
|
||||||
config.params = {};
|
config.params = {};
|
||||||
config.url = url;
|
config.url = url;
|
||||||
}
|
}
|
||||||
if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) {
|
if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) {
|
||||||
const requestObj = {
|
const requestObj = {
|
||||||
url: config.url,
|
url: config.url,
|
||||||
data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data,
|
data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data,
|
||||||
time: new Date().getTime()
|
time: new Date().getTime()
|
||||||
}
|
}
|
||||||
const sessionObj = cache.session.getJSON('sessionObj')
|
const sessionObj = cache.session.getJSON('sessionObj')
|
||||||
if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
|
if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
|
||||||
cache.session.setJSON('sessionObj', requestObj)
|
cache.session.setJSON('sessionObj', requestObj)
|
||||||
} else {
|
} else {
|
||||||
const s_url = sessionObj.url; // 请求地址
|
const s_url = sessionObj.url; // 请求地址
|
||||||
const s_data = sessionObj.data; // 请求数据
|
const s_data = sessionObj.data; // 请求数据
|
||||||
const s_time = sessionObj.time; // 请求时间
|
const s_time = sessionObj.time; // 请求时间
|
||||||
const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交
|
const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交
|
||||||
if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
|
if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
|
||||||
const message = '数据正在处理,请勿重复提交';
|
const message = '数据正在处理,请勿重复提交';
|
||||||
console.warn(`[${s_url}]: ` + message)
|
console.warn(`[${s_url}]: ` + message)
|
||||||
return Promise.reject(new Error(message))
|
return Promise.reject(new Error(message))
|
||||||
} else {
|
} else {
|
||||||
cache.session.setJSON('sessionObj', requestObj)
|
cache.session.setJSON('sessionObj', requestObj)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return config
|
return config
|
||||||
}, error => {
|
}, error => {
|
||||||
console.log(error)
|
console.log(error)
|
||||||
Promise.reject(error)
|
Promise.reject(error)
|
||||||
})
|
})
|
||||||
|
|
||||||
// 响应拦截器
|
// 响应拦截器
|
||||||
service.interceptors.response.use(res => {
|
service.interceptors.response.use(res => {
|
||||||
// 未设置状态码则默认成功状态
|
// 未设置状态码则默认成功状态
|
||||||
const code = res.data.code || 200;
|
const code = res.data.code || 200;
|
||||||
// 获取错误信息
|
// 获取错误信息
|
||||||
const msg = errorCode[code] || res.data.msg || errorCode['default']
|
const msg = errorCode[code] || res.data.msg || errorCode['default']
|
||||||
// 二进制数据则直接返回
|
// 二进制数据则直接返回
|
||||||
if(res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer'){
|
if(res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer'){
|
||||||
return res.data
|
return res.data
|
||||||
}
|
}
|
||||||
if (code === 401) {
|
if (code === 401) {
|
||||||
if (!isRelogin.show) {
|
if (!isRelogin.show) {
|
||||||
isRelogin.show = true;
|
isRelogin.show = true;
|
||||||
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
|
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
|
||||||
confirmButtonText: '重新登录',
|
confirmButtonText: '重新登录',
|
||||||
cancelButtonText: '取消',
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}
|
}
|
||||||
).then(() => {
|
).then(() => {
|
||||||
isRelogin.show = false;
|
isRelogin.show = false;
|
||||||
store.dispatch('LogOut').then(() => {
|
store.dispatch('LogOut').then(() => {
|
||||||
location.href = '/index';
|
location.href = '/index';
|
||||||
})
|
})
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
isRelogin.show = false;
|
isRelogin.show = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
|
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
|
||||||
} else if (code === 500) {
|
} else if (code === 500) {
|
||||||
Message({
|
Message({
|
||||||
message: msg,
|
message: msg,
|
||||||
type: 'error'
|
type: 'error'
|
||||||
})
|
})
|
||||||
return Promise.reject(new Error(msg))
|
return Promise.reject(new Error(msg))
|
||||||
} else if (code !== 200) {
|
} else if (code !== 200) {
|
||||||
Notification.error({
|
Notification.error({
|
||||||
title: msg
|
title: msg
|
||||||
})
|
})
|
||||||
return Promise.reject('error')
|
return Promise.reject('error')
|
||||||
} else {
|
} else {
|
||||||
return res.data
|
return res.data
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
console.log('err' + error)
|
console.log('err' + error)
|
||||||
let { message } = error;
|
let { message } = error;
|
||||||
if (message == "Network Error") {
|
if (message == "Network Error") {
|
||||||
message = "后端接口连接异常";
|
message = "后端接口连接异常";
|
||||||
}
|
}
|
||||||
else if (message.includes("timeout")) {
|
else if (message.includes("timeout")) {
|
||||||
message = "系统接口请求超时";
|
message = "系统接口请求超时";
|
||||||
}
|
}
|
||||||
else if (message.includes("Request failed with status code")) {
|
else if (message.includes("Request failed with status code")) {
|
||||||
message = "系统接口" + message.substr(message.length - 3) + "异常";
|
message = "系统接口" + message.substr(message.length - 3) + "异常";
|
||||||
}
|
}
|
||||||
Message({
|
Message({
|
||||||
message: message,
|
message: message,
|
||||||
type: 'error',
|
type: 'error',
|
||||||
duration: 5 * 1000
|
duration: 5 * 1000
|
||||||
})
|
})
|
||||||
return Promise.reject(error)
|
return Promise.reject(error)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// 通用下载方法
|
// 通用下载方法
|
||||||
export function download(url, params, filename) {
|
export function download(url, params, filename) {
|
||||||
downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
|
downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
|
||||||
return service.post(url, params, {
|
return service.post(url, params, {
|
||||||
transformRequest: [(params) => { return tansParams(params) }],
|
transformRequest: [(params) => { return tansParams(params) }],
|
||||||
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
||||||
responseType: 'blob'
|
responseType: 'blob'
|
||||||
}).then(async (data) => {
|
}).then(async (data) => {
|
||||||
const isLogin = await blobValidate(data);
|
const isLogin = await blobValidate(data);
|
||||||
if (isLogin) {
|
if (isLogin) {
|
||||||
const blob = new Blob([data])
|
const blob = new Blob([data])
|
||||||
saveAs(blob, filename)
|
saveAs(blob, filename)
|
||||||
} else {
|
} else {
|
||||||
const resText = await data.text();
|
const resText = await data.text();
|
||||||
const rspObj = JSON.parse(resText);
|
const rspObj = JSON.parse(resText);
|
||||||
const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
|
const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
|
||||||
Message.error(errMsg);
|
Message.error(errMsg);
|
||||||
}
|
}
|
||||||
downloadLoadingInstance.close();
|
downloadLoadingInstance.close();
|
||||||
}).catch((r) => {
|
}).catch((r) => {
|
||||||
console.error(r)
|
console.error(r)
|
||||||
Message.error('下载文件出现错误,请联系管理员!')
|
Message.error('下载文件出现错误,请联系管理员!')
|
||||||
downloadLoadingInstance.close();
|
downloadLoadingInstance.close();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export default service
|
export default service
|
||||||
|
|||||||
@@ -1,14 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
<el-form-item label="ID" prop="id">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.id"
|
|
||||||
placeholder="请输入ID"
|
|
||||||
clearable
|
|
||||||
@keyup.enter.native="handleQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="名称" prop="buildingName">
|
<el-form-item label="名称" prop="buildingName">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.buildingName"
|
v-model="queryParams.buildingName"
|
||||||
@@ -35,14 +27,35 @@
|
|||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="是否开放" prop="isOpen">
|
<el-form-item label="是否开放" prop="isOpen">
|
||||||
<el-input
|
<el-select v-model="queryParams.isOpen">
|
||||||
v-model="queryParams.isOpen"
|
<el-option
|
||||||
placeholder="请输入是否开放"
|
v-for="item in booleanOptions"
|
||||||
clearable
|
:key="item.value"
|
||||||
@keyup.enter.native="handleQuery"
|
:label="item.label"
|
||||||
/>
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="支持在线" prop="isSupportlive">
|
||||||
|
<el-select v-model="queryParams.isSupportlive">
|
||||||
|
<el-option
|
||||||
|
v-for="item in booleanOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态" prop="status">
|
||||||
|
<el-select v-model="queryParams.status">
|
||||||
|
<el-option
|
||||||
|
v-for="item in options"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||||
@@ -97,14 +110,14 @@
|
|||||||
|
|
||||||
<el-table v-loading="loading" :data="WxBuildingList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="WxBuildingList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<el-table-column label="ID" align="center" prop="id" />
|
<!-- <el-table-column label="ID" align="center" prop="id" />-->
|
||||||
|
|
||||||
<el-table-column label="球队图片" align="center" prop="contactTel" >
|
<el-table-column label="球场图片" align="center" prop="contactTel" >
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-image
|
<el-image
|
||||||
style="width: 200px; height: 100px"
|
style="width: 200px; height: 100px"
|
||||||
:src="scope.row.defaultPicture"
|
:src="scope.row.codeImgUrl"
|
||||||
:preview-src-list="[scope.row.defaultPicture]"
|
:preview-src-list="[scope.row.codeImgUrl]"
|
||||||
:fit="imgfit"></el-image>
|
:fit="imgfit"></el-image>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -115,13 +128,33 @@
|
|||||||
<el-table-column label="市" align="center" prop="cityName" />
|
<el-table-column label="市" align="center" prop="cityName" />
|
||||||
<el-table-column label="区县编码" align="center" prop="countyCode" />-->
|
<el-table-column label="区县编码" align="center" prop="countyCode" />-->
|
||||||
<el-table-column label="城市" align="center" prop="cityName" />
|
<el-table-column label="城市" align="center" prop="cityName" />
|
||||||
<el-table-column label="是否支持在线" align="center" prop="isSupportlive" />
|
<el-table-column label="支持在线" align="center" prop="isSupportlive" >
|
||||||
<el-table-column label="球馆状态" align="center" prop="status" />
|
<template slot-scope="scope">
|
||||||
|
<el-switch
|
||||||
|
disabled
|
||||||
|
v-model="scope.row.isSupportlive"
|
||||||
|
></el-switch>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="球馆状态" align="center" prop="status" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tag v-if="scope.row.status==1" style="color: #5a5e66">待审核</el-tag >
|
||||||
|
<el-tag v-if="scope.row.status==2" style="color:green">审核通过</el-tag >
|
||||||
|
<el-tag v-if="scope.row.status==3" style="color:red">审核拒绝</el-tag >
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="地址" align="center" prop="address" show-overflow-tooltip/>
|
<el-table-column label="地址" align="center" prop="address" show-overflow-tooltip/>
|
||||||
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip/>
|
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip/>
|
||||||
<el-table-column label="是否开放" align="center" prop="isOpen" />
|
<el-table-column label="是否开放" align="center" prop="isOpen" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-switch
|
||||||
|
disabled
|
||||||
|
v-model="scope.row.isOpen"
|
||||||
|
></el-switch>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<!-- <el-table-column label="人均价格" align="center" prop="mittelkurs" show-overflow-tooltip/>-->
|
<!-- <el-table-column label="人均价格" align="center" prop="mittelkurs" show-overflow-tooltip/>-->
|
||||||
<el-table-column label="微信管理员二维码" align="center" show-overflow-tooltip>
|
<el-table-column label="管理员二维码" align="center" show-overflow-tooltip>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-image
|
<el-image
|
||||||
style="width: 100px; height: 100px"
|
style="width: 100px; height: 100px"
|
||||||
@@ -167,8 +200,8 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 添加或修改球场管理对话框 -->
|
<!-- 添加或修改球场管理对话框 -->
|
||||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
<el-dialog :title="title" :visible.sync="open" width="55%" append-to-body>
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||||
<el-form-item label="名称" prop="buildingName">
|
<el-form-item label="名称" prop="buildingName">
|
||||||
<el-input v-model="form.buildingName" placeholder="请输入名称" />
|
<el-input v-model="form.buildingName" placeholder="请输入名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -190,29 +223,82 @@
|
|||||||
<el-form-item label="区县编码" prop="countyCode">
|
<el-form-item label="区县编码" prop="countyCode">
|
||||||
<el-input v-model="form.countyCode" placeholder="请输入区县编码" />
|
<el-input v-model="form.countyCode" placeholder="请输入区县编码" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="在线地图" prop="onlineMap">
|
||||||
|
<el-amap
|
||||||
|
ref="map"
|
||||||
|
:vid="'amapDemo'"
|
||||||
|
:center="center"
|
||||||
|
:zoom="zoom"
|
||||||
|
:events="events"
|
||||||
|
:plugin="plugin"
|
||||||
|
class="amap-demo"
|
||||||
|
style="height: 500px;width: 800px"
|
||||||
|
>
|
||||||
|
<el-amap-marker v-for="(u,i) in markers" :position="u.position" :key="i">
|
||||||
|
</el-amap-marker>
|
||||||
|
</el-amap>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="城市" prop="cityName">
|
<el-form-item label="城市" prop="cityName">
|
||||||
<el-input v-model="form.cityName" placeholder="请输入城市" />
|
<el-input v-model="form.cityName" placeholder="请输入城市" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="默认图片" prop="defaultPicture">
|
<el-form-item label="球场图片" prop="defaultPicture">
|
||||||
<el-input v-model="form.defaultPicture" type="textarea" placeholder="请输入内容" />
|
<el-upload
|
||||||
|
class="upload-demo"
|
||||||
|
ref="upload"
|
||||||
|
:action="uploadUrl"
|
||||||
|
multiple
|
||||||
|
:limit="5"
|
||||||
|
:on-exceed = "handleExceed"
|
||||||
|
:on-preview="handlePictureCardPreview"
|
||||||
|
:on-remove="handleRemove"
|
||||||
|
:before-remove="beforeRemove"
|
||||||
|
:file-list="fileList"
|
||||||
|
list-type="picture-card"
|
||||||
|
:auto-upload="false">
|
||||||
|
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
|
||||||
|
<el-button style="margin-left: 10px;margin-top: 105px" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
|
||||||
|
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过2M</div>
|
||||||
|
</el-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="是否支持在线" prop="isSupportlive">
|
|
||||||
<el-input v-model="form.isSupportlive" placeholder="请输入是否支持在线" />
|
<el-form-item label="支持在线" prop="isSupportlive">
|
||||||
|
<el-switch v-model="form.isSupportlive" ></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态" prop="status">
|
||||||
|
<el-select v-model="form.status">
|
||||||
|
<el-option
|
||||||
|
v-for="item in options"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="拒绝原因" prop="rejectReason">
|
<el-form-item label="拒绝原因" prop="rejectReason">
|
||||||
<el-input v-model="form.rejectReason" placeholder="请输入拒绝原因" />
|
<el-input v-model="form.rejectReason" placeholder="请输入拒绝原因" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="是否开放" prop="isOpen">
|
<el-form-item label="是否开放" prop="isOpen">
|
||||||
<el-input v-model="form.isOpen" placeholder="请输入是否开放" />
|
<el-switch v-model="form.isOpen" ></el-switch>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="人均价格" prop="mittelkurs">
|
<el-form-item label="人均价格" prop="mittelkurs">
|
||||||
<el-input v-model="form.mittelkurs" placeholder="请输入人均价格" />
|
<el-input v-model="form.mittelkurs" placeholder="请输入人均价格" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="微信管理员二维码路径" prop="chatGroupUrl">
|
<el-form-item label="管理员二维码" prop="chatGroupUrl">
|
||||||
<el-input v-model="form.chatGroupUrl" placeholder="请输入微信管理员二维码路径" />
|
<el-upload
|
||||||
|
class="avatar-uploader"
|
||||||
|
action="https://adu.shjmall.cn/liguanghui/file/uploadMore"
|
||||||
|
:show-file-list="false"
|
||||||
|
name="files"
|
||||||
|
:on-success="handleAvatarSuccess"
|
||||||
|
:before-upload="beforeAvatarUpload">
|
||||||
|
<img v-if="imageUrl" :src="imageUrl" class="avatar">
|
||||||
|
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
|
||||||
|
</el-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="描述" prop="desc">
|
<el-form-item label="描述" prop="desc">
|
||||||
<el-input v-model="form.desc" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.desc" type="textarea" placeholder="请输入内容" />
|
||||||
@@ -223,16 +309,110 @@
|
|||||||
<el-button @click="cancel">取 消</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog title="图片预览" :visible.sync="imgPreviewDialogVisible">
|
||||||
|
<img width="100%" :src="dialogImageUrl" alt="">
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listWxBuilding, getWxBuilding, delWxBuilding, addWxBuilding, updateWxBuilding } from "@/api/system/WxBuilding";
|
import { AMapManager } from "vue-amap";
|
||||||
|
import { listWxBuilding, getWxBuilding,batchUploadFiles, delWxBuilding, addWxBuilding, updateWxBuilding } from "@/api/system/WxBuilding";
|
||||||
|
let amapManager = new AMapManager();
|
||||||
export default {
|
export default {
|
||||||
|
amapManager,
|
||||||
name: "WxBuilding",
|
name: "WxBuilding",
|
||||||
data() {
|
data() {
|
||||||
|
var me = this;
|
||||||
|
me.city = '全国';
|
||||||
return {
|
return {
|
||||||
|
geoCoder: null,
|
||||||
|
// 搜索提示
|
||||||
|
AutoComplete: null,
|
||||||
|
center: [104.065861, 30.657401],
|
||||||
|
zoom: 12,
|
||||||
|
markers: [
|
||||||
|
{
|
||||||
|
position: [104.032651, 30.612437]
|
||||||
|
},
|
||||||
|
],
|
||||||
|
events: {
|
||||||
|
init(o){
|
||||||
|
console.log(o.getCenter());
|
||||||
|
// o 是高德地图定位插件实例
|
||||||
|
},
|
||||||
|
zoomchange: (e) => {
|
||||||
|
console.log(e);
|
||||||
|
},
|
||||||
|
zoomend: (e) => {
|
||||||
|
//获取当前缩放zoom值
|
||||||
|
console.log(this.$refs.map.$$getInstance().getZoom());
|
||||||
|
console.log(e);
|
||||||
|
},
|
||||||
|
click: e => {
|
||||||
|
this.markers[0].position = [e.lnglat.lng, e.lnglat.lat]
|
||||||
|
this.form.longitude = e.lnglat.lng;
|
||||||
|
this.form.latitude = e.lnglat.lat;
|
||||||
|
let lnglat = [this.form.longitude, this.form.latitude];
|
||||||
|
this.geoCoder.getAddress(lnglat, (status, result) => {
|
||||||
|
if (status === "complete" && result.regeocode) {
|
||||||
|
this.form.address = result.regeocode.formattedAddress;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//使用其他组件
|
||||||
|
plugin: [
|
||||||
|
{
|
||||||
|
pName: 'Scale',
|
||||||
|
events: {
|
||||||
|
init(instance) {
|
||||||
|
console.log(instance)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pName: 'ToolBar',
|
||||||
|
events: {
|
||||||
|
init(instance) {
|
||||||
|
console.log(instance)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pName: "Geocoder",
|
||||||
|
events: {
|
||||||
|
init(instance){
|
||||||
|
me.geoCoder = new AMap.Geocoder({
|
||||||
|
city: "010", //城市设为北京,默认:“全国”
|
||||||
|
radius: 1000, //范围,默认:500
|
||||||
|
});
|
||||||
|
//地址逆解析插件
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
imageUrl:null,
|
||||||
|
uploadUrl : "https://adu.shjmall.cn/liguanghui/file/uploadMoreFiles",
|
||||||
|
fileList:[],
|
||||||
|
booleanOptions:[{
|
||||||
|
value: true,
|
||||||
|
label: '是'
|
||||||
|
},{
|
||||||
|
value: false,
|
||||||
|
label: '否'
|
||||||
|
}],
|
||||||
|
options: [{
|
||||||
|
value: 1,
|
||||||
|
label: '待审核'
|
||||||
|
}, {
|
||||||
|
value: 2,
|
||||||
|
label: '审核通过'
|
||||||
|
}, {
|
||||||
|
value: 3,
|
||||||
|
label: '审核拒绝'
|
||||||
|
}],
|
||||||
// 遮罩层
|
// 遮罩层
|
||||||
loading: true,
|
loading: true,
|
||||||
// 选中数组
|
// 选中数组
|
||||||
@@ -276,7 +456,9 @@ export default {
|
|||||||
form: {},
|
form: {},
|
||||||
// 表单校验
|
// 表单校验
|
||||||
rules: {
|
rules: {
|
||||||
}
|
},
|
||||||
|
imgPreviewDialogVisible:false,
|
||||||
|
dialogImageUrl:null,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -287,7 +469,15 @@ export default {
|
|||||||
getList() {
|
getList() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
listWxBuilding(this.queryParams).then(response => {
|
listWxBuilding(this.queryParams).then(response => {
|
||||||
this.WxBuildingList = response.rows;
|
response.rows.forEach((item) => {
|
||||||
|
let obj = item;
|
||||||
|
obj.codeImgUrl = item.defaultPicture;
|
||||||
|
if (item.defaultPicture){
|
||||||
|
let arr = item.defaultPicture.split(",");
|
||||||
|
obj.codeImgUrl = arr[0];
|
||||||
|
}
|
||||||
|
this.WxBuildingList.push(obj);
|
||||||
|
});
|
||||||
this.total = response.total;
|
this.total = response.total;
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
});
|
});
|
||||||
@@ -352,17 +542,100 @@ export default {
|
|||||||
/** 修改按钮操作 */
|
/** 修改按钮操作 */
|
||||||
handleUpdate(row) {
|
handleUpdate(row) {
|
||||||
this.reset();
|
this.reset();
|
||||||
const id = row.id || this.ids
|
const id = row.id || this.ids;
|
||||||
|
this.fileList = [];
|
||||||
getWxBuilding(id).then(response => {
|
getWxBuilding(id).then(response => {
|
||||||
this.form = response.data;
|
this.form = response.data;
|
||||||
this.open = true;
|
this.open = true;
|
||||||
|
this.imageUrl = this.form.chatGroupUrl;
|
||||||
|
var defaultPictureKeys = Object.keys(response.data.defaultPicture);
|
||||||
|
// alert(defaultPictureKeys.length == 0);//true 即为空对象
|
||||||
|
if(defaultPictureKeys.length > 0){
|
||||||
|
var array = response.data.defaultPicture.split(",");//逗号是分隔符
|
||||||
|
array.forEach((item) => {
|
||||||
|
let imgItem = {url: item} //单个图片
|
||||||
|
this.fileList.push(imgItem);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
this.title = "修改球场管理";
|
this.title = "修改球场管理";
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
//限制上传文件的个数提示
|
||||||
|
handleExceed(files, fileList) {
|
||||||
|
this.$message.warning(
|
||||||
|
`当前限制选择 5 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
|
||||||
|
files.length + fileList.length
|
||||||
|
} 个文件`);
|
||||||
|
},
|
||||||
|
//删除之前执行的方法
|
||||||
|
beforeRemove(file, fileList) {
|
||||||
|
//移除文件
|
||||||
|
//return this.$confirm(`确定移除 ${file.name}?`);
|
||||||
|
},
|
||||||
|
|
||||||
|
//文件删除的方法
|
||||||
|
handleRemove(file, fileList) {
|
||||||
|
//此处elementui会自动去掉删除的图片,fileList数组会自动清楚删除的图片的地址
|
||||||
|
//所以fileList就是删除成功之后的数组,不需要在进行任何处理
|
||||||
|
console.log(file, fileList);
|
||||||
|
this.fileList = fileList;
|
||||||
|
},
|
||||||
|
//文件上传
|
||||||
|
submitUpload() {
|
||||||
|
let {uploadFiles, action, data} = this.$refs.upload
|
||||||
|
let checkFileType = false
|
||||||
|
let checkFileSize = false
|
||||||
|
uploadFiles.forEach((item) => {
|
||||||
|
if(item.raw){
|
||||||
|
const isJPG = (item.raw.type === 'image/jpeg'||item.raw.type === 'image/png');
|
||||||
|
const isLt2M = item.raw.size / 1024 / 1024 < 2;
|
||||||
|
if (!isJPG) {
|
||||||
|
checkFileType = true;
|
||||||
|
}
|
||||||
|
if (!isLt2M) {
|
||||||
|
checkFileSize = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if(checkFileType){
|
||||||
|
this.$message.error('上传头像图片只能是 JPG/PNG 格式!');
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(checkFileSize){
|
||||||
|
this.$message.error('上传头像图片大小不能超过 2MB!');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const formData = new FormData()
|
||||||
|
uploadFiles.map(file => {
|
||||||
|
formData.append("files",file.raw)
|
||||||
|
})
|
||||||
|
batchUploadFiles(formData,action).then(response => {
|
||||||
|
console.info(response)
|
||||||
|
response.data.forEach((item) => {
|
||||||
|
let imgItem = {url: "https://adu.shjmall.cn/liguanghui/image/"+item} //单个图片
|
||||||
|
this.fileList.push(imgItem);
|
||||||
|
});
|
||||||
|
this.$modal.msgSuccess("文件上传到服务器成功");
|
||||||
|
}).catch(err=>{
|
||||||
|
// this.$message.error(err.message);
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handlePictureCardPreview(file) {
|
||||||
|
this.dialogImageUrl = file.url;
|
||||||
|
this.imgPreviewDialogVisible = true;
|
||||||
|
},
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
submitForm() {
|
submitForm() {
|
||||||
this.$refs["form"].validate(valid => {
|
this.$refs["form"].validate(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
|
let imgs = [];
|
||||||
|
//重新设置图片格式
|
||||||
|
this.fileList.forEach((item) => {
|
||||||
|
imgs.push(item.url);
|
||||||
|
});
|
||||||
|
this.form.defaultPicture = imgs.join(',')
|
||||||
if (this.form.id != null) {
|
if (this.form.id != null) {
|
||||||
updateWxBuilding(this.form).then(response => {
|
updateWxBuilding(this.form).then(response => {
|
||||||
this.$modal.msgSuccess("修改成功");
|
this.$modal.msgSuccess("修改成功");
|
||||||
@@ -389,12 +662,55 @@ export default {
|
|||||||
this.$modal.msgSuccess("删除成功");
|
this.$modal.msgSuccess("删除成功");
|
||||||
}).catch(() => {});
|
}).catch(() => {});
|
||||||
},
|
},
|
||||||
|
handleAvatarSuccess(res, file) {
|
||||||
|
this.imageUrl = URL.createObjectURL(file.raw);
|
||||||
|
let imgUrl = res.data[0];
|
||||||
|
this.form.chatGroupUrl = "https://adu.shjmall.cn/liguanghui/image/"+imgUrl;
|
||||||
|
},
|
||||||
|
beforeAvatarUpload(file) {
|
||||||
|
console.info(file.type)
|
||||||
|
const isJPG = (file.type === 'image/jpeg'||file.type === 'image/png');
|
||||||
|
const isLt2M = file.size / 1024 / 1024 < 2;
|
||||||
|
|
||||||
|
if (!isJPG) {
|
||||||
|
this.$message.error('上传头像图片只能是 JPG/PNG 格式!');
|
||||||
|
}
|
||||||
|
if (!isLt2M) {
|
||||||
|
this.$message.error('上传头像图片大小不能超过 2MB!');
|
||||||
|
}
|
||||||
|
return isJPG && isLt2M;
|
||||||
|
},
|
||||||
/** 导出按钮操作 */
|
/** 导出按钮操作 */
|
||||||
handleExport() {
|
handleExport() {
|
||||||
this.download('system/WxBuilding/export', {
|
this.download('system/WxBuilding/export', {
|
||||||
...this.queryParams
|
...this.queryParams
|
||||||
}, `WxBuilding_${new Date().getTime()}.xlsx`)
|
}, `WxBuilding_${new Date().getTime()}.xlsx`)
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
<style>
|
||||||
|
.avatar-uploader .el-upload {
|
||||||
|
border: 1px dashed #d9d9d9;
|
||||||
|
border-radius: 6px;
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.avatar-uploader .el-upload:hover {
|
||||||
|
border-color: #409EFF;
|
||||||
|
}
|
||||||
|
.avatar-uploader-icon {
|
||||||
|
font-size: 28px;
|
||||||
|
color: #8c939d;
|
||||||
|
width: 178px;
|
||||||
|
height: 178px;
|
||||||
|
line-height: 178px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.avatar {
|
||||||
|
width: 178px;
|
||||||
|
height: 178px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@@ -530,6 +530,7 @@ export default {
|
|||||||
const id = row.id || this.ids
|
const id = row.id || this.ids
|
||||||
getCompetition(id).then(response => {
|
getCompetition(id).then(response => {
|
||||||
this.form = response.data;
|
this.form = response.data;
|
||||||
|
this.imageUrl = this.form.competitionBackImg;
|
||||||
this.open = true;
|
this.open = true;
|
||||||
this.title = "修改赛会信息";
|
this.title = "修改赛会信息";
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user