Merge branch 'pengyh' into local

# Conflicts:
#	frontend/src/views/virtual/properties/js/index.js
This commit is contained in:
zhouhq@fxft.net 2020-04-03 17:01:40 +08:00
commit b76e127567
6 changed files with 816 additions and 702 deletions

View File

@ -3,7 +3,8 @@ var CONFIG = {
login_background: '/assets/login_background.jpg', login_background: '/assets/login_background.jpg',
logo_big: '/assets/logo_big.png', logo_big: '/assets/logo_big.png',
logo_small: '/assets/logo_small.png', logo_small: '/assets/logo_small.png',
url: (window.location.hostname === 'localhost') ? 'http://vd.dipp.ink/' : '/' url: (window.location.hostname === 'localhost') ? 'http://vd.dipp.ink/' : '/',
ascsUrl: (window.location.hostname === 'localhost') ? 'http://172.16.14.91:8080/' : '/'
}; };
//http://vd.dipp.ink/ //http://vd.dipp.ink/
//http://127.0.0.1:8000/ //http://127.0.0.1:8000/

View File

@ -8,9 +8,9 @@
* @return {[type]} [description] * @return {[type]} [description]
*/ */
export function settings(data) { export function settings(data) {
return service.get('api/virtual/properties/settings', { return service.get('api/virtual/properties/settings', {
params: data params: data
}); });
} }
/** /**
@ -19,9 +19,9 @@ export function settings(data) {
* @return {[type]} [description] * @return {[type]} [description]
*/ */
export function agents(data) { export function agents(data) {
return service.get('api/virtual/properties/agents', { return service.get('api/virtual/properties/agents', {
params: data params: data
}); });
} }
/** /**
@ -30,7 +30,7 @@ export function agents(data) {
* @return {[type]} [description] * @return {[type]} [description]
*/ */
export function settingsStore(data) { export function settingsStore(data) {
return service.post('api/virtual/properties/settings', data); return service.post('api/virtual/properties/settings', data);
} }
/** /**
@ -39,9 +39,9 @@ export function settingsStore(data) {
* @return {[type]} [description] * @return {[type]} [description]
*/ */
export function index(data) { export function index(data) {
return service.get('api/virtual/properties/index', { return service.get('api/virtual/properties/index', {
params: data params: data
}); });
} }
/** /**
@ -50,7 +50,7 @@ export function index(data) {
* @return {[type]} [description] * @return {[type]} [description]
*/ */
export function store(data) { export function store(data) {
return serviceForm.post('api/virtual/properties/store', data); return serviceForm.post('api/virtual/properties/store', data);
} }
/** /**
@ -59,9 +59,9 @@ export function store(data) {
* @return {[type]} [description] * @return {[type]} [description]
*/ */
export function exportExcel(data) { export function exportExcel(data) {
return service.get('api/virtual/properties/export', { return service.get('api/virtual/properties/export', {
params: data params: data
}); });
} }
/** /**
@ -70,15 +70,93 @@ export function exportExcel(data) {
* @return {[type]} [description] * @return {[type]} [description]
*/ */
export function importExcel(file) { export function importExcel(file) {
let config = { let config = {
headers: { headers: {
'Content-Type': 'multipart/form-data' 'Content-Type': 'multipart/form-data'
} }
}; };
let params = new FormData(); let params = new FormData();
params.append('file', file); params.append('file', file);
return service.post('api/virtual/properties/import', params, config); return service.post('api/virtual/properties/import', params, config);
} }
/**
* [getCarAndplatformList 展示所有的平台车辆]
* @param {[type]} data [description]
* @return {[type]} [description]
*/
export function getCarTypeToPlatformList(data) {
return fetch.get('property/list', { params: data })
}
/**
* [import 展示所有的平台车辆]
* @param {[type]} data [description]
* @return {[type]} [description]
*/
export function saveCarTypeToPlatform(data) {
return fetch.post('property/update', data)
}
/**
* [getPlatformList 展示公司应用]
* @param {[type]} data [description]
* @return {[type]} [description]
*/
export function getApplyList(data) {
return fetch.get('properties/platform', { params: data })
}
/**
* [getPlatformList 展示公司下级机构]
* @param {[type]} data [description]
* @return {[type]} [description]
*/
export function getAgentsList(data) {
return fetch.get('properties/agents', { params: data })
}
/**
* [getPlatformList 展示公司所属套餐]
* @param {[type]} data [description]
* @return {[type]} [description]
*/
export function getPackageList(data) {
return fetch.get('properties/package', { params: data })
}
/**
* [getPlatformSetList 展示平台配置列表]
* @param {[type]} data [description]
* @return {[type]} [description]
*/
export function getPlatformSetList(data) {
return fetch.get('setting/list', { params: data })
}
/**
* [savePlatformSet 保存平台配置]
* @param {[type]} data [description]
* @return {[type]} [description]
*/
export function savePlatformSet(data) {
return fetch.post('setting/save', data)
}
/**
* [delPlatformSet 删除平台配置]
* @param {[type]} data [description]
* @return {[type]} [description]
*/
export function delPlatformSet(data) {
return fetch.post('setting/delete', data)
}

View File

@ -7,7 +7,7 @@ import iView from "iview";
import iviewArea from "iview-area"; import iviewArea from "iview-area";
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import Treeselect from "@riophae/vue-treeselect"; import Treeselect from "@riophae/vue-treeselect";
import { service, serviceForm } from "service/service"; import { service, serviceForm,fetch} from "service/service";
import App from "./App"; import App from "./App";
import router from "./router"; import router from "./router";
import store from "./store"; import store from "./store";
@ -52,3 +52,4 @@ window.md5 = md5;
window.jquery = window.$ = jquery; window.jquery = window.$ = jquery;
window.service = service; window.service = service;
window.serviceForm = serviceForm; window.serviceForm = serviceForm;
window.fetch = fetch;

View File

@ -6,85 +6,104 @@ let domain = window.CONFIG.url;
// 创建axios实例 // 创建axios实例
export const service = axios.create({ export const service = axios.create({
timeout: 1800000, timeout: 1800000,
headers: { headers: {
post: { post: {
'Content-Type': 'application/x-www-form-urlencoded' 'Content-Type': 'application/x-www-form-urlencoded'
} }
}, },
baseURL: domain baseURL: domain
}); });
export const serviceForm = axios.create({ export const serviceForm = axios.create({
timeout: 1800000, timeout: 1800000,
headers: { headers: {
post: { post: {
'Content-Type': 'multipart/form-data' 'Content-Type': 'multipart/form-data'
} }
}, },
baseURL: domain baseURL: domain
}); });
// http request 拦截器 export const fetch = axios.create({
let request = function(config) { timeout: 1800000,
const token = getToken(); headers: {
// 判断是否存在token如果存在的话则每个http header都加上token post: {
if (token) { 'Content-Type': 'application/json; charset=utf-8'
config.headers.Authorization = `Bearer ${token}`; }
} },
baseURL: window.CONFIG.ascsUrl
})
// 配置取消请求 // http request 拦截器
if (window._source) { let request = function (config) {
config.cancelToken = window._source.token; const token = getToken();
} // 判断是否存在token如果存在的话则每个http header都加上token
return config; if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
// 配置取消请求
if (window._source) {
config.cancelToken = window._source.token;
}
return config;
}; };
let request_err = function(err) { //fetch 的 http request 拦截器
Message.error('请求超时'); let fetchRequest = function (config) {
return Promise.reject(err); // 配置取消请求
if (window._source) {
config.cancelToken = window._source.token;
}
return config;
};
let request_err = function (err) {
Message.error('请求超时');
return Promise.reject(err);
}; };
// http response 拦截器 // http response 拦截器
let response = function(res) { let response = function (res) {
const data = res.data; const data = res.data;
const message = data.message || '未知错误'; const message = data.message || '未知错误';
if (res.status) { if (res.status) {
switch (res.status) { switch (res.status) {
case 200: case 200:
if (data.code !== 0) { if (data.code !== 0) {
Message.error(message); Message.error(message);
}
break;
} }
break;
} }
} return data;
return data;
}; };
let response_err = function(err) { let response_err = function (err) {
if (err.response) { if (err.response) {
const data = err.response.data; const data = err.response.data;
const message = data.message ? data.message : '未知错误'; const message = data.message ? data.message : '未知错误';
switch (err.response.status) { switch (err.response.status) {
case 401: case 401:
if ([40001, 40002, 40003, 40008].includes(data.code)) { if ([40001, 40002, 40003, 40008].includes(data.code)) {
// 40001未登录、40002未激活、40003已禁用、40008token未传递 // 40001未登录、40002未激活、40003已禁用、40008token未传递
localStorage.clear(); localStorage.clear();
removeToken(); removeToken();
vm.$router.replace({ path: '/login', query: { redirect: encodeURIComponent(vm.$route.fullPath) } }); vm.$router.replace({ path: '/login', query: { redirect: encodeURIComponent(vm.$route.fullPath) } });
Message.error(message); Message.error(message);
}
break;
case 500:
Message.error('服务器忙,请稍后再试');
break;
default:
Message.error(message);
break;
} }
break;
case 500:
Message.error('服务器忙,请稍后再试');
break;
default:
Message.error(message);
break;
} }
} return Promise.resolve(err);
return Promise.resolve(err);
}; };
service.interceptors.request.use(request, request_err); service.interceptors.request.use(request, request_err);
@ -93,6 +112,9 @@ service.interceptors.response.use(response, response_err);
serviceForm.interceptors.request.use(request, request_err); serviceForm.interceptors.request.use(request, request_err);
serviceForm.interceptors.response.use(response, response_err); serviceForm.interceptors.response.use(response, response_err);
fetch.interceptors.request.use(fetchRequest, request_err);
fetch.interceptors.response.use(response, response_err);
axios.interceptors.response.use(response, response_err); axios.interceptors.response.use(response, response_err);
window.axios = axios; window.axios = axios;

View File

@ -1,139 +1,106 @@
<template> <template>
<div class="page-wrap"> <div class="page-wrap">
<ui-loading :show="page_loading.show"></ui-loading> <ui-loading :show="page_loading.show"></ui-loading>
<div class="page-handle-wrap"> <div class="page-handle-wrap">
<ul class="handle-wraper bd-b"> <ul class="handle-wraper bd-b">
<li class="f-l"> <li class="f-l">
<div class="text-exp"> <div class="text-exp">
<b>全部信息</b> <b>全部信息</b>
</div> </div>
</li> </li>
<li class="f-r"> <li class="f-r">
<div class="handle-item lh-32" v-if="hasPermission('update')"> <div class="handle-item lh-32" v-if="hasPermission('update')">
<b class="umar-r10">编辑模式</b> <b class="umar-r10">编辑模式</b>
<Switch v-model="editModel" size="large"> <Switch v-model="editModel" size="large">
<span slot="open"></span> <span slot="open"></span>
<span slot="close"></span> <span slot="close"></span>
</Switch> </Switch>
</div> </div>
<div class="handle-item"> <div class="handle-item">
<Button <Button @click="ok" icon="md-checkmark" type="primary" v-if="hasPermission('update') && editModel">保存修改</Button>
@click="ok" </div>
icon="md-checkmark"
type="primary"
v-if="hasPermission('update') && editModel"
>保存修改</Button>
</div>
<div class="handle-item"> <div class="handle-item">
<Button <Button @click="settingsShow = true" icon="md-add" type="primary" v-if="hasPermission('create')">配置管理</Button>
@click="settingsShow = true" </div>
icon="md-add"
type="primary"
v-if="hasPermission('create')"
>配置管理</Button>
</div>
<div class="handle-item"> <div class="handle-item">
<Button @click="search.show=!search.show" ghost icon="ios-search" type="primary">搜索</Button> <Button @click="configureShow = true" type="primary">应用类型车辆配置</Button>
</div> </div>
<div class="handle-item"> <div class="handle-item">
<Button @click="request()" icon="md-refresh">刷新</Button> <Button @click="search.show=!search.show" ghost icon="ios-search" type="primary">搜索</Button>
</div> </div>
</li>
</ul>
<div class="search-wrap" v-show="search.show"> <div class="handle-item">
<ul class="handle-wraper"> <Button @click="request()" icon="md-refresh">刷新</Button>
<li class="handle-item w-250"> </div>
<Select placeholder="企业名称" v-model.trim="params.company_id" clearable filterable> </li>
<Option </ul>
:key="index"
:value="item.id"
v-for="(item, index) in companies"
>{{ item.name }}</Option>
</Select>
</li>
<li class="handle-item w-250"> <div class="search-wrap" v-show="search.show">
<Select placeholder="套餐名称" v-model.trim="params.package_id" clearable filterable> <ul class="handle-wraper">
<Option <li class="handle-item w-250">
:key="index" <Select placeholder="企业名称" v-model.trim="params.company_id" clearable filterable>
:value="item.id" <Option :key="index" :value="item.id" v-for="(item, index) in companies">{{ item.name }}</Option>
v-for="(item, index) in packages" </Select>
>{{ item.name }}</Option> </li>
</Select>
</li>
<li class="handle-item w-250"> <li class="handle-item w-250">
<Select placeholder="设置状态" v-model.trim="params.status" clearable> <Select placeholder="套餐名称" v-model.trim="params.package_id" clearable filterable>
<Option :value="0">已设置</Option> <Option :key="index" :value="item.id" v-for="(item, index) in packages">{{ item.name }}</Option>
<Option :value="1">未设置</Option> </Select>
</Select> </li>
</li>
<li class="f-r"> <li class="handle-item w-250">
<div class="handle-item"> <Select placeholder="设置状态" v-model.trim="params.status" clearable>
<Upload :before-upload="importExcel" action="/" :format="['xls','xlsx','csv']"> <Option :value="0">已设置</Option>
<Button type="primary" ghost>导入</Button> <Option :value="1">未设置</Option>
</Upload> </Select>
</li>
<li class="f-r">
<div class="handle-item">
<Upload :before-upload="importExcel" action="/" :format="['xls','xlsx','csv']">
<Button type="primary" ghost>导入</Button>
</Upload>
</div>
<div class="handle-item" v-if="hasPermission('output')">
<Button @click="exportExcel" type="warning" ghost>导出</Button>
</div>
<div class="handle-item">
<Button @click="index(1)" ghost type="primary">立即搜索</Button>
</div>
<div class="handle-item">
<Button @click="resetSearch" ghost type="warning">重置搜索</Button>
</div>
</li>
</ul>
</div> </div>
</div>
<div class="handle-item" v-if="hasPermission('output')"> <div class="page-list-wrap">
<Button @click="exportExcel" type="warning" ghost>导出</Button> <Table ref="table" :columns="columns" :data="showData ? showData : []"></Table>
</div> </div>
<div class="handle-item"> <div class="page-turn-wrap" v-if="showData">
<Button @click="index(1)" ghost type="primary">立即搜索</Button> <Page :current="Number(page.page)" :page-size="Number(page.limit)" :page-size-opts="[10, 20, 50, 100]" :total="Number(page.total)" @on-change="changePage" @on-page-size-change="changeLimit" show-elevator show-total show-sizer></Page>
</div> </div>
<div class="handle-item">
<Button @click="resetSearch" ghost type="warning">重置搜索</Button> <ui-edit :data="editObj.data" :isUpdate="editObj.isUpdate" :show.sync="editObj.show" :provinces="settingsData.province ? settingsData.province : []" @province-success="handleProvinceSuccess"></ui-edit>
</div>
</li> <ui-agent :data="agentObj.data" :isUpdate="agentObj.isUpdate" :show.sync="agentObj.show" :agents="agentsProp ? agentsProp : []" :platforms="settingsData.platform ? settingsData.platform : []" @agent-success="handleAgentSuccess"></ui-agent>
</ul>
</div> <ui-settings :data="settingsData" :show.sync="settingsShow" @store-success="updateSettings"></ui-settings>
<ui-configure :show.sync="configureShow"></ui-configure>
<platform-set :show.sync="platform.show" v-bind="platform"></platform-set>
</div> </div>
<div class="page-list-wrap">
<Table ref="table" :columns="columns" :data="showData ? showData : []"></Table>
</div>
<div class="page-turn-wrap" v-if="showData">
<Page
:current="Number(page.page)"
:page-size="Number(page.limit)"
:page-size-opts="[10, 20, 50, 100]"
:total="Number(page.total)"
@on-change="changePage"
@on-page-size-change="changeLimit"
show-elevator
show-total
show-sizer
></Page>
</div>
<ui-edit
:data="editObj.data"
:isUpdate="editObj.isUpdate"
:show.sync="editObj.show"
:provinces="settingsData.province ? settingsData.province : []"
@province-success="handleProvinceSuccess"
></ui-edit>
<ui-agent
:data="agentObj.data"
:isUpdate="agentObj.isUpdate"
:show.sync="agentObj.show"
:agents="agentsProp ? agentsProp : []"
:platforms="settingsData.platform ? settingsData.platform : []"
@agent-success="handleAgentSuccess"
></ui-agent>
<ui-settings :data="settingsData" :show.sync="settingsShow" @store-success="updateSettings"></ui-settings>
</div>
</template> </template>
<script src="./js/index.js"></script> <script src="./js/index.js"></script>

File diff suppressed because it is too large Load Diff