Commit 3a7c8495 by 吕海涛

投诉配置页面构建,接口对接

parent a563af8f
...@@ -262,7 +262,7 @@ export function getAllOpenArea(platformId) { ...@@ -262,7 +262,7 @@ export function getAllOpenArea(platformId) {
/* 查询平台所有运力 */ /* 查询平台所有运力 */
export function getAllTransport(data, u) { export function getAllTransport(data, u) {
const url = (u ? u+'/brand' : targetBaseUrl) + '/transport' const url = (u ? u + '/brand' : targetBaseUrl) + '/transport'
return get(url, data) return get(url, data)
} }
...@@ -274,7 +274,7 @@ export function getAllAreaProducts(data) { ...@@ -274,7 +274,7 @@ export function getAllAreaProducts(data) {
/* 查询当前区域开通的所有产品(按条件查询)(新) */ /* 查询当前区域开通的所有产品(按条件查询)(新) */
export function getAllTripProduct(data, u) { export function getAllTripProduct(data, u) {
const url = (u ? u+'/brand' : targetBaseUrl) + '/tripProduct/list' const url = (u ? u + '/brand' : targetBaseUrl) + '/tripProduct/list'
return post(url, data) return post(url, data)
} }
...@@ -394,19 +394,19 @@ export function getYunCubicProductData1(data) { ...@@ -394,19 +394,19 @@ export function getYunCubicProductData1(data) {
/* 多条件查询订单列表 */ /* 多条件查询订单列表 */
export function getAllOrderList(data, u, platformId) { export function getAllOrderList(data, u, platformId) {
const url = (u ? u+'/brand' : targetBaseUrl) + '/xoado/order/query' const url = (u ? u + '/brand' : targetBaseUrl) + '/xoado/order/query'
return post(url, data, platformId) return post(url, data, platformId)
} }
/* 多条件查询订单列表 */ /* 多条件查询订单列表 */
export function getThisorderInfo(data, u, platformId) { export function getThisorderInfo(data, u, platformId) {
const url = (u ? u+'/brand' : targetBaseUrl) + '/xoado/order/select' const url = (u ? u + '/brand' : targetBaseUrl) + '/xoado/order/select'
return post(url, data, platformId) return post(url, data, platformId)
} }
/* 多条件导出订单列表 */ /* 多条件导出订单列表 */
export function exportAllOrderList(data, u, platformId) { export function exportAllOrderList(data, u, platformId) {
const url = (u ? u+'/brand' : targetBaseUrl) + '/xoado/order/export' const url = (u ? u + '/brand' : targetBaseUrl) + '/xoado/order/export'
return postblob(url, data, platformId) return postblob(url, data, platformId)
} }
...@@ -622,7 +622,7 @@ export function SeachfenceInfo(data) { ...@@ -622,7 +622,7 @@ export function SeachfenceInfo(data) {
/* 计算器计价 */ /* 计算器计价 */
export function calculatorPrice(data, platformId, u) { export function calculatorPrice(data, platformId, u) {
const url = (u ? u+'/brand' : process.env.VUE_APP_BASE_API5) + `/xoadoTripProduct/calculator/${platformId}` const url = (u ? u + '/brand' : process.env.VUE_APP_BASE_API5) + `/xoadoTripProduct/calculator/${platformId}`
return post(url, data) return post(url, data)
} }
...@@ -1131,3 +1131,26 @@ export function getplatformList() { ...@@ -1131,3 +1131,26 @@ export function getplatformList() {
const url = targetBaseUrl5 + `/platform/infos` const url = targetBaseUrl5 + `/platform/infos`
return get(url) return get(url)
} }
/* 投诉原因---列表查询 */
export function conditionList(data) {
const url = targetBaseUrl5 + `/complaint/label/condition`
return post(url, data)
}
/* 投诉原因---列表删除 */
export function delconditionList(data) {
const url = targetBaseUrl5 + `/complaint/label`
return deletes(url, data)
}
/* 投诉原因---新增 */
export function complaintAdd(data) {
const url = targetBaseUrl5 + `/complaint/label`
return post(url, data)
}
/* 投诉原因---修改 */
export function complaintUpdate(data) {
const url = targetBaseUrl5 + `/complaint/label`
return put(url, data)
}
\ No newline at end of file
import Vue from 'vue' import Vue from 'vue'
import VueRouter from 'vue-router' import VueRouter from 'vue-router'
import Layout from '@/layout' import Layout from '@/layout'
import {routerMode} from '@/config/index' import { routerMode } from '@/config/index'
import store from '@/store/index' import store from '@/store/index'
Vue.use(VueRouter) Vue.use(VueRouter)
...@@ -11,371 +11,384 @@ Vue.use(VueRouter) ...@@ -11,371 +11,384 @@ Vue.use(VueRouter)
* @type {({path: string, component: (function(): *), hidden: boolean}|{path: string, component: (function(): *), hidden: boolean, name: string}|{path: string, component: (function(): *), hidden: boolean, name: string})[]} * @type {({path: string, component: (function(): *), hidden: boolean}|{path: string, component: (function(): *), hidden: boolean, name: string}|{path: string, component: (function(): *), hidden: boolean, name: string})[]}
*/ */
export const currencyRoutes = [{ export const currencyRoutes = [{
path: '/login', path: '/login',
component: () => component: () =>
import ( /* webpackChunkName: "login" */ '@/views/login/index.vue'), import ( /* webpackChunkName: "login" */ '@/views/login/index.vue'),
hidden: true hidden: true
}, },
{ {
path: '/Real', path: '/Real',
component: () => component: () =>
import('@/views/components/newReal.vue'), import ('@/views/components/newReal.vue'),
meta: { meta: {
title: '实名认证' title: '实名认证'
}, },
hidden: true hidden: true
}, },
{ {
path: '/JoiningEnterprise', path: '/JoiningEnterprise',
component: () => component: () =>
import('@/views/components/newJoiningEnterprise.vue'), import ('@/views/components/newJoiningEnterprise.vue'),
meta: { meta: {
title: '加入企业' title: '加入企业'
}, },
hidden: true hidden: true
}, },
{ {
path: '/401', path: '/401',
name: '401', name: '401',
component: () => component: () =>
import ('@/views/401'), import ('@/views/401'),
hidden: true hidden: true
}, },
{ {
path: '/404', path: '/404',
name: '404', name: '404',
component: () => component: () =>
import ('@/views/404'), import ('@/views/404'),
hidden: true hidden: true
} }
] ]
/** /**
* 动态路由 * 动态路由
* @type {any} * @type {any}
*/ */
export const routes = [ export const routes = [{
{ path: '/',
path: '/', name: 'Company',
name: 'Company', component: Layout,
component: Layout, redirect: '/company',
redirect: '/company', meta: {
meta: { icon: 'el-icon-office-building',
icon: 'el-icon-office-building', title: '企业管理'
title: '企业管理' },
}, children: [{
children: [ path: '/',
{ name: 'CompanyInformation',
path: '/', component: () =>
name: 'CompanyInformation', import ('@/views/dashboard/index.vue'),
component: () => meta: {
import ('@/views/dashboard/index.vue'), title: '企业信息',
meta: { icon: 'el-icon-s-data'
title: '企业信息', }
icon: 'el-icon-s-data' },
} {
}, path: 'account-information',
{ name: 'AccountInformation',
path: 'account-information', component: () =>
name: 'AccountInformation', import ('@/views/accountManagement/index.vue'),
component: () => meta: {
import('@/views/accountManagement/index.vue'), title: '账户管理',
meta: { icon: 'el-icon-s-finance'
title: '账户管理', }
icon: 'el-icon-s-finance' },
} {
}, path: 'bandCard',
{ name: 'bandCard',
path: 'bandCard', component: () =>
name: 'bandCard', import ('@/views/accountManagement/bankCard'),
component: () => meta: {
import('@/views/accountManagement/bankCard'), title: '银行卡管理'
meta: { },
title: '银行卡管理' hidden: true
}, },
hidden: true {
}, path: 'department-information',
{ name: 'DepartmentInformation',
path: 'department-information', component: () =>
name: 'DepartmentInformation', import ('@/views/DepartmentInformation/index.vue'),
component: () => meta: { title: '部门管理', icon: 'el-icon-user-solid' }
import ('@/views/DepartmentInformation/index.vue'), },
meta: {title: '部门管理', icon: 'el-icon-user-solid'} ]
}, },
] {
}, path: '/configure',
{ name: 'configure',
path: '/configure', component: Layout,
name: 'configure', redirect: '/configure',
component: Layout, meta: {
redirect: '/configure', icon: 'el-icon-setting',
meta: { title: '业务配置'
icon: 'el-icon-setting', },
title: '业务配置' children: [{
}, path: 'enclosure',
children: [ name: 'Enclosure',
{ component: () =>
path: 'enclosure', import ('@/views/configure/enclosure.vue'),
name: 'Enclosure', meta: { title: '围栏管理', icon: 'el-icon-aim' }
component: () => },
import ('@/views/configure/enclosure.vue'), {
meta: {title: '围栏管理', icon: 'el-icon-aim'} path: 'site',
}, name: 'Site',
{ component: () =>
path: 'site', import ('@/views/configure/site.vue'),
name: 'Site', meta: { title: '站点管理', icon: 'el-icon-s-home' }
component: () => },
import ('@/views/configure/site.vue'), {
meta: {title: '站点管理', icon: 'el-icon-s-home'} path: 'CarModel',
}, name: 'CarModel',
{ component: () =>
path: 'CarModel', import ('@/views/configure/CarModel.vue'),
name: 'CarModel', meta: { title: '车型管理', icon: 'el-icon-s-data' }
component: () => },
import ('@/views/configure/CarModel.vue'), ]
meta: {title: '车型管理', icon: 'el-icon-s-data'} },
}, {
] path: '/platform',
}, name: 'platform',
{ component: Layout,
path: '/platform', redirect: '/platform',
name: 'platform', meta: {
component: Layout, icon: 'el-icon-setting',
redirect: '/platform', title: '品牌管理'
meta: { },
icon: 'el-icon-setting', children: [{
title: '品牌管理' path: 'setting',
}, name: 'Setting',
children: [ component: () =>
{ import ('@/views/platform/setting.vue'),
path: 'setting', meta: { title: '品牌配置', icon: 'el-icon-aim' }
name: 'Setting', },
component: () => {
import ('@/views/platform/setting.vue'), path: 'setting-info',
meta: {title: '品牌配置', icon: 'el-icon-aim'} name: 'settingInfo',
}, component: () =>
{ import ('@/views/platform/components/settingInfo.vue'),
path: 'setting-info', meta: { title: '添加品牌', icon: 'el-icon-aim' },
name: 'settingInfo', hidden: true
component: () => },
import ('@/views/platform/components/settingInfo.vue'), {
meta: {title: '添加品牌', icon: 'el-icon-aim'}, path: 'setting-detail',
hidden: true name: 'settingDetail',
}, component: () =>
{ import ('@/views/platform/settingDetail.vue'),
path: 'setting-detail', meta: { title: '品牌详情', icon: 'el-icon-aim' },
name: 'settingDetail', hidden: true
component: () => },
import ('@/views/platform/settingDetail.vue'), {
meta: {title: '品牌详情', icon: 'el-icon-aim'}, path: 'region-manage',
hidden: true name: 'regionManage',
}, component: () =>
{ import ('@/views/platform/regionManage.vue'),
path: 'region-manage', meta: { title: '运营管理', icon: 'el-icon-aim' }
name: 'regionManage', },
component: () => {
import ('@/views/platform/regionManage.vue'), path: 'region-detail',
meta: {title: '运营管理', icon: 'el-icon-aim'} name: 'regionDetail',
}, component: () =>
{ import ('@/views/platform/regionDetail.vue'),
path: 'region-detail', meta: { title: '运营管理详情', icon: 'el-icon-aim' },
name: 'regionDetail', hidden: true
component: () => },
import ('@/views/platform/regionDetail.vue'), {
meta: {title: '运营管理详情', icon: 'el-icon-aim'}, path: 'product-setup',
hidden: true name: 'productSetup',
}, component: () =>
{ import ('@/views/platform/productSetup.vue'),
path: 'product-setup', meta: { title: '产品详情', icon: 'el-icon-aim' },
name: 'productSetup', hidden: true
component: () => },
import ('@/views/platform/productSetup.vue'), ]
meta: {title: '产品详情', icon: 'el-icon-aim'}, },
hidden: true {
}, path: '/business',
] name: 'business',
}, component: Layout,
{ redirect: '/business',
path: '/business', meta: {
name: 'business', icon: 'el-icon-setting',
component: Layout, title: '业务单管理'
redirect: '/business', },
meta: { children: [{
icon: 'el-icon-setting', path: 'order-index',
title: '业务单管理' name: 'OrderIndex',
}, component: () =>
children: [ import ('@/views/business/orderManagement/index.vue'),
{ meta: {
path: 'order-index', icon: 'el-icon-upload',
name: 'OrderIndex', title: '订单列表'
component: () => }
import('@/views/business/orderManagement/index.vue'), },
meta: { {
icon: 'el-icon-upload', path: 'order-Detail',
title: '订单列表' name: 'orderDetail',
} component: () =>
}, import ('@/views/business/orderManagement/orderDetail.vue'),
{ meta: {
path: 'order-Detail', icon: 'el-icon-picture',
name: 'orderDetail', title: '订单详情'
component: () => },
import('@/views/business/orderManagement/orderDetail.vue'), hidden: true
meta: { },
icon: 'el-icon-picture', {
title: '订单详情' path: 'waybill-index',
}, name: 'waybillIndex',
hidden: true component: () =>
}, import ('@/views/business/waybillManagement/index.vue'),
{ meta: { icon: 'el-icon-document', title: '运单列表' }
path: 'waybill-index', },
name: 'waybillIndex', {
component: () => path: 'waybill-Detail',
import ('@/views/business/waybillManagement/index.vue'), name: 'waybillDetail',
meta: { icon: 'el-icon-document', title: '运单列表' } component: () =>
}, import ('@/views/business/waybillManagement/waybillDetail.vue'),
{ meta: { title: '运单详情' },
path: 'waybill-Detail', hidden: true
name: 'waybillDetail', },
component: () => {
import ('@/views/business/waybillManagement/waybillDetail.vue'), path: 'complaint-list',
meta: { title: '运单详情' }, name: 'complaintList',
hidden: true component: () =>
}, import ('@/views/business/complaintList/index.vue'),
{ meta: {
path: 'complaint-list', icon: 'el-icon-service',
name: 'complaintList', title: '工单列表'
component: () => }
import('@/views/business/complaintList/index.vue'), },
meta: { {
icon: 'el-icon-service', path: 'complaint-detail',
title: '工单列表' name: 'complaintDetail',
} component: () =>
}, import ('@/views/business/complaintList/complaintDetail.vue'),
{ meta: {
path: 'complaint-detail', icon: 'el-icon-service',
name: 'complaintDetail', title: '工单详情'
component: () => },
import('@/views/business/complaintList/complaintDetail.vue'), hidden: true
meta: { },
icon: 'el-icon-service', ]
title: '工单详情' },
}, {
hidden: true path: '/transports',
}, name: 'transports',
] component: Layout,
}, redirect: '/transports',
{ meta: {
path: '/transports', icon: 'el-icon-setting',
name: 'transports', title: '运力管理'
component: Layout, },
redirect: '/transports', children: [{
meta: { path: 'transport',
icon: 'el-icon-setting', name: 'Transport',
title: '运力管理' component: () =>
}, import ('@/views/transports/transport.vue'),
children: [ meta: { title: '运力方管理', icon: 'el-icon-s-home' }
{ },
path: 'transport', {
name: 'Transport', path: 'car',
component: () => name: 'Car',
import ('@/views/transports/transport.vue'), component: () =>
meta: {title: '运力方管理', icon: 'el-icon-s-home'} import ('@/views/transports/car.vue'),
}, meta: { title: '车辆管理', icon: 'el-icon-s-home' }
{ },
path: 'car', {
name: 'Car', path: 'car-detail',
component: () => name: 'carDetail',
import ('@/views/transports/car.vue'), component: () =>
meta: {title: '车辆管理', icon: 'el-icon-s-home'} import ('@/views/transports/carDetail.vue'),
}, meta: { title: '车辆详情', icon: 'el-icon-s-home' },
{ hidden: true
path: 'car-detail', },
name: 'carDetail', {
component: () => path: 'driver',
import ('@/views/transports/carDetail.vue'), name: 'Driver',
meta: {title: '车辆详情', icon: 'el-icon-s-home'}, component: () =>
hidden: true import ('@/views/transports/driver.vue'),
}, meta: { title: '司机管理', icon: 'el-icon-s-home' }
{ },
path: 'driver', {
name: 'Driver', path: 'driver-detail',
component: () => name: 'driverDetail',
import ('@/views/transports/driver.vue'), component: () =>
meta: {title: '司机管理', icon: 'el-icon-s-home'} import ('@/views/transports/driverDetail.vue'),
}, meta: { title: '司机管理', icon: 'el-icon-s-home' },
{ hidden: true
path: 'driver-detail', },
name: 'driverDetail', ]
component: () => },
import ('@/views/transports/driverDetail.vue'), {
meta: {title: '司机管理', icon: 'el-icon-s-home'}, path: '/disposition',
hidden: true name: 'disposition',
}, component: Layout,
] redirect: '/transports',
} meta: {
icon: 'el-icon-setting',
title: '配置管理'
},
children: [{
path: 'disposition',
name: 'disposition',
component: () =>
import ('@/views/disposition/disposition.vue'),
meta: { title: '控诉原因配置', icon: 'el-icon-s-home' }
},
]
}
] ]
const router = new VueRouter({ const router = new VueRouter({
base: '', base: '',
mode: routerMode, mode: routerMode,
scrollBehavior: () => ({ scrollBehavior: () => ({
y: 0 y: 0
}), }),
routes: currencyRoutes routes: currencyRoutes
}) })
// 解决addRoute不能删除动态路由问题 // 解决addRoute不能删除动态路由问题
export function resetRouter() { export function resetRouter() {
router.matcher = new VueRouter({ router.matcher = new VueRouter({
base: '', base: '',
mode: routerMode, mode: routerMode,
scrollBehavior: () => ({ scrollBehavior: () => ({
y: 0 y: 0
}), }),
routes: currencyRoutes routes: currencyRoutes
}).matcher }).matcher
} }
// 导航守卫 验证是否登录了 没有登录跳转到登录页面 // 导航守卫 验证是否登录了 没有登录跳转到登录页面
router.beforeEach(async (to, from, next) => { router.beforeEach(async(to, from, next) => {
if (to.path === '/login') { if (to.path === '/login') {
next() next()
} else { } else {
let user = store.getters.token let user = store.getters.token
let hasRoles = store.getters.roles let hasRoles = store.getters.roles
let roleType = store.state.user.roleType let roleType = store.state.user.roleType
if (user) { if (user) {
if (hasRoles.length <= 0) { if (hasRoles.length <= 0) {
try { try {
const { const {
roles roles
} = await store.dispatch('user/getRoutes') } = await store.dispatch('user/getRoutes')
let addRoutes; let addRoutes;
// if (roleType == 2) { // if (roleType == 2) {
addRoutes = await store.dispatch('permission/getRoutes', roles) addRoutes = await store.dispatch('permission/getRoutes', roles)
// } else { // } else {
// addRoutes = await store.dispatch('permission/getAsyncRoutes', roles) // addRoutes = await store.dispatch('permission/getAsyncRoutes', roles)
// } // }
router.addRoutes(addRoutes) router.addRoutes(addRoutes)
next({ next({
...to, ...to,
replace: true replace: true
}) })
} catch (error) { } catch (error) {
// Message.error('此路不通') // Message.error('此路不通')
} }
} else { } else {
next() next()
} }
} else { } else {
next({ next({
path: '/login', path: '/login',
query: { query: {
redirect: to.fullPath redirect: to.fullPath
} }
}) })
} }
} }
}) })
export default router export default router
\ No newline at end of file
<template xmlns="http://www.w3.org/1999/html"> <template xmlns="http://www.w3.org/1999/html">
<div> <div>
<el-form class="form-row"> <el-form class="form-row">
<el-row type="flex"> <el-row type="flex">
<el-col> <el-col>
<el-form-item> <el-form-item>
<el-input <el-input
v-model="form.CarModelName" v-model="form.CarModelName"
size="mini" size="mini"
style="max-width: 260px" style="max-width: 260px"
suffix-icon="el-icon-search" suffix-icon="el-icon-search"
placeholder="请输入车型名称" placeholder="请输入车型名称"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col> <el-col>
<el-form-item label="品牌名称:"> <el-form-item label="品牌名称:">
<el-select <el-select
v-model="form.platformListInfo" v-model="form.platformListInfo"
placeholder="请选择" placeholder="请选择"
size="mini" size="mini"
>
<el-option
v-for="item in platformList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col>
<el-form-item>
<Selects :options="dataSource.carTypeList" sizeType="mini"
:selectName="'车辆类别:'" :type="'carTypeList'" @changeList="handlechangeList"></Selects>
</el-form-item>
</el-col>
<el-col
style="display: flex; align-items: center; justify-content: end"
>
<el-button type="primary" size="mini" @click="searchInfo"> 查询</el-button>
<el-button type="primary" size="mini" @click="() => $refs.addDialog.showDialog({})"> 添加品牌类型
</el-button>
</el-col>
</el-row>
</el-form>
<el-table
stripe
:data="data"
border
style="margin-top: 10px"
:header-cell-style="tableHeaderColor"
>
<el-table-column label="序号" align="center" type="index" width="50">
</el-table-column>
<el-table-column label="品牌名称" align="center" prop="platformName">
</el-table-column>
<el-table-column label="车型类别" align="center" prop="type">
<template slot-scope="{row}">
{{carTypeListText(row.carType)}}
</template>
</el-table-column>
<el-table-column label="图标" align="center" prop="imgUrl">
<template slot-scope="scope">
<el-avatar shape="square" :size="80" :src="scope.row.imgUrl">
<div>暂无图片</div>
</el-avatar>
</template>
</el-table-column>
<el-table-column label="车型名称" align="center" prop="typeName">
</el-table-column>
<el-table-column label="车型标识" align="center" prop="typeItem">
</el-table-column>
<el-table-column label="车型定义" align="center" prop="typeContent">
</el-table-column>
<el-table-column label="可接单车型" align="center" prop="runTypes">
<template slot-scope="scope">
<span
v-for="(item, index) in scope.row.rangeOfApplicationName"
:key="'runTypes'+index">
{{index === 0 ? item : '、'+item}}
</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="120">
<template slot-scope="scope">
<el-button size="small" type="text" @click="() => $refs.addDialog.showDialog(scope.row)"> 编辑
</el-button>
<el-button size="small" type="text" style="color: red" @click="delRow(scope.row.id)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination" v-if="total > 10">
<el-pagination
background
layout="prev, pager, next, jumper, total"
:total="total"
:current-page="page"
@current-change="current_change"
> >
</el-pagination> <el-option
</div> v-for="item in platformList"
<addDialog ref="addDialog" :platformList="platformList" @reLoadTable="reLoadTable"></addDialog> :key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col>
<el-form-item>
<Selects
:options="dataSource.carTypeList"
sizeType="mini"
:selectName="'车辆类别:'"
:type="'carTypeList'"
@changeList="handlechangeList"
></Selects>
</el-form-item>
</el-col>
<el-col
style="display: flex; align-items: center; justify-content: end"
>
<el-button type="primary" size="mini" @click="searchInfo">
查询</el-button
>
<el-button
type="primary"
size="mini"
@click="() => $refs.addDialog.showDialog({})"
>
添加品牌类型
</el-button>
</el-col>
</el-row>
</el-form>
<el-table
stripe
:data="data"
border
style="margin-top: 10px"
:header-cell-style="tableHeaderColor"
>
<el-table-column label="序号" align="center" type="index" width="50">
</el-table-column>
<el-table-column label="品牌名称" align="center" prop="platformName">
</el-table-column>
<el-table-column label="车型类别" align="center" prop="type">
<template slot-scope="{ row }">
{{ carTypeListText(row.carType) }}
</template>
</el-table-column>
<el-table-column label="图标" align="center" prop="imgUrl">
<template slot-scope="scope">
<el-avatar shape="square" :size="80" :src="scope.row.imgUrl">
<div>暂无图片</div>
</el-avatar>
</template>
</el-table-column>
<el-table-column label="车型名称" align="center" prop="typeName">
</el-table-column>
<el-table-column label="车型标识" align="center" prop="typeItem">
</el-table-column>
<el-table-column label="车型定义" align="center" prop="typeContent">
</el-table-column>
<el-table-column label="可接单车型" align="center" prop="runTypes">
<template slot-scope="scope">
<span
v-for="(item, index) in scope.row.rangeOfApplicationName"
:key="'runTypes' + index"
>
{{ index === 0 ? item : "、" + item }}
</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="120">
<template slot-scope="scope">
<el-button
size="small"
type="text"
@click="() => $refs.addDialog.showDialog(scope.row)"
>
编辑
</el-button>
<el-button
size="small"
type="text"
style="color: red"
@click="delRow(scope.row.id)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination" v-if="total > 10">
<el-pagination
background
layout="prev, pager, next, jumper, total"
:total="total"
:current-page="page"
@current-change="current_change"
>
</el-pagination>
</div> </div>
<addDialog
ref="addDialog"
:platformList="platformList"
@reLoadTable="reLoadTable"
></addDialog>
</div>
</template> </template>
<script> <script>
import { import { carTypeQuery, carTypeDelete } from "@/port/carModel/carModel";
carTypeQuery, import { getplatformList } from "@/port/set-request";
carTypeDelete
} from "@/port/carModel/carModel";
import {
getplatformList
} from "@/port/set-request";
import addDialog from "./componenets/platformCarType/addDialog"; import addDialog from "./componenets/platformCarType/addDialog";
import dataSource from "@/libs/screen"; import dataSource from "@/libs/screen";
import JudgeType from "@/mixins/judgeType"; import JudgeType from "@/mixins/judgeType";
import Selects from '@/components/Selects' import Selects from "@/components/Selects";
export default { export default {
name: "CarModel", name: "CarModel",
mixins: [JudgeType], mixins: [JudgeType],
components: { components: {
addDialog, addDialog,
Selects Selects,
},
data() {
return {
dataSource: dataSource,
tableLoading: true,
data: [],
platformList: [],
total: 0,
form: {
CarModelName: "",
carTypeList: [1, 2, 3],
platformListInfo: "",
},
page: 1,
size: 10,
};
},
async created() {
await this.listInit();
this.initTable();
},
methods: {
delRow(id) {
this.$confirm("删除后不可撤回,确定删除品牌车型", "删除提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
carTypeDelete({}, id).then((res) => {
if (res.status === 200) {
this.$message.success("删除成功");
this.initTable();
} else {
this.$message.error(res.msg);
}
});
})
.catch(() => {});
}, },
data() { reLoadTable() {
return { this.initTable();
dataSource: dataSource,
tableLoading: true,
data: [],
platformList: [],
total: 0,
form: {
CarModelName: "",
carTypeList: [1, 2, 3],
platformListInfo: "",
},
page: 1,
size: 10,
};
}, },
async created() { searchInfo() {
await this.listInit(); this.page = 1;
this.initTable(); this.initTable();
}, },
methods: { current_change(page) {
delRow(id) { this.page = page;
this.$confirm('删除后不可撤回,确定删除品牌车型', '删除提示', { this.initTable();
confirmButtonText: '确定', },
cancelButtonText: '取消', handlechangeList(val) {
type: 'warning' let source = JSON.parse(JSON.stringify(val));
}) let data = this.filftersFun(source.data);
.then(() => { this.form.carTypeList = data;
carTypeDelete({}, id) },
.then((res) => { async listInit() {
if(res.status === 200) { await getplatformList().then((res) => {
this.$message.success('删除成功'); if (res.status == 200) {
this.initTable(); res.data.forEach((element) => {
}else { if (element.brandUrl) {
this.$message.error(res.msg); this.platformList.push({
} value: element.platformId,
}) label: element.name,
}) });
.catch(() => {})
},
reLoadTable() {
this.initTable();
},
searchInfo() {
this.page = 1;
this.initTable();
},
current_change(page) {
this.page = page;
this.initTable();
},
handlechangeList(val) {
let source = JSON.parse(JSON.stringify(val))
let data = this.filftersFun(source.data)
this.form.carTypeList = data
},
async listInit() {
await getplatformList().then((res) => {
if (res.status == 200) {
res.data.forEach((element) => {
if(element.brandUrl) {
this.platformList.push({
value: element.platformId,
label: element.name,
});
}
});
this.form.platformListInfo = this.platformList[0].value;
}
});
},
initTable() {
let params = {
carTypes: this.form.carTypeList,
platformId: this.form.platformListInfo,
typeItem: '',
typeName: this.form.CarModelName,
pageVo: {
page: this.page,
rows: this.size
}
} }
});
this.form.platformListInfo = this.platformList[0].value;
}
});
},
initTable() {
let params = {
carTypes: this.form.carTypeList,
platformId: this.form.platformListInfo,
typeItem: "",
typeName: this.form.CarModelName,
pageVo: {
page: this.page,
rows: this.size,
},
};
this.tableLoading = true; this.tableLoading = true;
carTypeQuery(params) carTypeQuery(params)
.then((res) => { .then((res) => {
if(res.status === 200) { if (res.status === 200) {
this.data = res.data.content; this.data = res.data.content;
this.total = res.data.total; this.total = res.data.total;
}else { } else {
this.$message.error(res.msg); this.$message.error(res.msg);
} }
this.tableLoading = false; this.tableLoading = false;
}) })
.catch(() => { .catch(() => {
this.tableLoading = false; this.tableLoading = false;
}) });
}, },
// table变色,头 // table变色,头
tableHeaderColor({row, column, rowIndex, columnIndex}) { tableHeaderColor({ row, column, rowIndex, columnIndex }) {
return {"background-color": "#0099ff", color: "#ffffff"}; return { "background-color": "#0099ff", color: "#ffffff" };
},
}, },
},
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
::v-deep.form-row { ::v-deep.form-row {
.el-form-item { .el-form-item {
margin-bottom: 0 !important; margin-bottom: 0 !important;
} }
} }
.pagination { .pagination {
margin-top: 16px; margin-top: 16px;
text-align: right; text-align: right;
} }
</style> </style>
<template>
<el-dialog
:visible.sync="dialogVisible"
:title="title"
width="40%"
class="form-dialog"
@close="clearInfo"
:close-on-click-modal="false"
:close-on-press-escape="false"
>
<el-form
ref="form"
label-position="right"
label-width="150px"
:model="form"
:rules="rules"
>
<el-form-item label="图标:" prop="img">
<el-upload
class="avatar-uploader"
:headers="reqHeaders"
:data="dataUrl"
action="https://apps.xoado.com/cloud/tools/files/upload"
:show-file-list="false"
name="image"
:on-success="photoUrlSuccess"
:before-upload="beforeAvatarUpload"
>
<img v-if="form.labelImgurl" :src="form.labelImgurl" class="avatar" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item label="车辆类别:" prop="type">
<el-select
v-model="form.complaintMode"
collapse-tags
placeholder="请选择"
size="mini"
>
<el-option
v-for="item in complaintModelist"
:key="item.id"
:label="item.name"
:value="item.id"
size="mini"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="控诉原因:" prop="labelName">
<el-input
style="width: 220px"
size="mini"
v-model="form.labelName"
></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small " @click="clearInfo">取 消</el-button>
<el-button size="small" type="primary" @click="complaintLable"
>确 定</el-button
>
</span>
</el-dialog>
</template>
<script>
import { complaintUpdate, complaintAdd } from "@/port/set-request";
export default {
name: "addDialog",
props: ["platformList"],
data() {
return {
title: "",
dialogVisible: false,
dataUrl: {
urlType: "OfflineContract",
},
reqHeaders: {
XOADOAPPACCESSCODE: this.$store.state.user.code,
XOADOTOKENID: this.$store.state.user.token,
XOADOPLATFORMID: this.$store.getters.platformId,
},
form: {
complaintMode: "0",
labelType: "0",
labelImgurl: "",
labelName: "",
labelContent: "",
},
rules: {
labelImgurl: [
{ required: true, message: "请上传图标", trigger: "blur" },
],
complaintMode: [
{ required: true, message: "请选择投诉方式", trigger: "change" },
],
labelName: [
{ required: true, message: "请输入控诉原因", trigger: "blur" },
{ max: 10, message: "最多可输入五十个字" },
],
},
complaintModelist: [
{
name: "表单提交",
id: "0",
},
{
name: "电话直播",
id: "1",
},
],
};
},
created() {},
methods: {
async showDialog(row) {
if (Object.keys(row).length > 0) {
this.title = "编辑控诉原因";
this.form = JSON.parse(JSON.stringify(row)).row;
} else {
this.form = {
complaintMode: "0",
labelType: "",
labelImgurl: "",
labelName: "",
labelContent: "",
};
this.title = "添加控诉原因";
}
this.dialogVisible = true;
},
photoUrlSuccess(response, file, fileList) {
let that = this;
if (file.response.status == 200) {
that.form.labelImgurl = file.response.data[0].url;
}
},
beforeAvatarUpload(file) {
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
}
return isLt2M;
},
clearInfo() {
this.$refs.form.resetFields();
this.dialogVisible = false;
},
complaintLable() {
this.$refs.form.validate((valid) => {
if (valid) {
let params = {
platformId: this.form.platformId,
labelType: "0",
labelName: this.form.labelName,
labelContent: "",
labelImgurl: this.form.labelImgurl,
complaintMode: this.form.complaintMode,
};
if (this.form.hasOwnProperty("id")) {
params["id"] = this.form.id;
complaintUpdate(params).then((res) => {
if (res.status === 200) {
this.$message.success("修改成功");
this.clearInfo();
this.$emit("reLoadTable");
} else {
this.$message.error(res.msg);
}
});
} else {
let params = {
platformId: this.$store.getters.platformId,
labelType: "0",
labelName: this.form.labelName,
labelContent: "",
labelImgurl: this.form.labelImgurl,
complaintMode: this.form.complaintMode,
};
complaintAdd(params).then((res) => {
if (res.status === 200) {
this.$message.success("添加成功");
this.clearInfo();
this.$emit("reLoadTable");
} else {
this.$message.error(res.msg);
}
});
}
}
});
},
},
};
</script>
<style scoped>
::v-deep.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
::v-deep.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 50px;
height: 50px;
line-height: 50px;
text-align: center;
}
.avatar {
width: 50px;
height: 50px;
display: block;
}
</style>
<template>
<el-card>
<el-row>
<div class="title-left" style="padding-left: 10px; font-weight: 800">
控诉原因配置
</div>
</el-row>
<div class="itemBtn">
<el-button
type="primary"
icon="el-icon-plus"
size="small"
@click="$refs.addDialog.showDialog({})"
>新增原因</el-button
>
</div>
<el-table
:data="data"
stripe
v-loading="tableLoading"
:header-cell-style="tableHeaderColor"
style="width: 100%"
border
>
<el-table-column type="index" label="序号" align="center" width="50">
</el-table-column>
<el-table-column label="图标" align="center" width="120">
<template slot-scope="{ row }">
<el-avatar :size="50" shape="square">
<img :src="row.labelImgurl" />
</el-avatar>
</template>
</el-table-column>
<el-table-column label="控诉方式" align="center" prop="labelType">
<template slot-scope="{ row }">
{{ row.complaintMode * 1 == 1 ? "电话直播" : "表单提交" }}
</template>
</el-table-column>
<el-table-column label="控诉原因" align="center" prop="labelName">
</el-table-column>
<el-table-column label="录入时间" align="center" prop="createTime">
</el-table-column>
<el-table-column label="操作" align="center" width="120">
<template slot-scope="{ row }">
<el-button type="text" @click="$refs.addDialog.showDialog({ row })"
>编辑</el-button
>
<el-button type="text" style="color: red" @click="DELcondition(row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<div class="pagination" v-if="total > 10">
<el-pagination
background
layout="prev, pager, next, jumper, total"
:current-page="page"
@current-change="current_change"
:total="total"
>
</el-pagination>
</div>
<addDialog
ref="addDialog"
@reLoadTable="reLoadTable"
:platformList="platformList"
></addDialog>
</el-card>
</template>
<script>
import { conditionList, delconditionList } from "@/port/set-request";
import addDialog from "./componenets/disposition/addDialog";
export default {
name: "disposition",
data() {
return {
page: 1,
size: 10,
total: 0,
tableLoading: true,
data: [],
platformList: [],
};
},
components: {
addDialog,
},
async created() {
await this.initTable();
},
methods: {
current_change(page) {
this.page = page;
this.initTable();
},
reLoadTable() {
this.initTable();
},
initTable() {
let json = {
labelType: "0",
labelName: "",
complaintMode: "",
pageVo: {
page: this.page,
rows: this.size,
},
};
conditionList(json).then((res) => {
if (res.status == 200) {
this.data = res.data.content;
this.total = res.data.total;
} else {
this.data = [];
this.total = 0;
}
this.tableLoading = false;
});
},
DELcondition(row) {
this.$confirm("删除后不可撤回,确定删除?", "删除提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.tableLoading = true;
let json = { labelId: row.id };
delconditionList(json).then((res) => {
if (res.status == 200) {
this.$message({
type: "success",
message: "删除成功!",
});
this.page = 1;
this.initTable();
} else {
this.$message.error("删除失败!");
}
this.tableLoading = false;
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除",
});
});
},
tableRowStyle({ row, rowIndex }) {
if (rowIndex % 2 !== 0) {
return { "background-color": "#e3f4ff" };
}
},
// table变色,头
tableHeaderColor({ row, column, rowIndex, columnIndex }) {
return { "background-color": "#0099ff", color: "#ffffff" };
},
},
};
</script>
<style scoped lang="scss">
.search-form {
margin: 5px 0 5px 0;
.el-form-item {
margin-bottom: 5px;
}
}
.pagination {
margin-top: 16px;
text-align: right;
}
.itemBtn {
display: flex;
align-items: center;
justify-content: flex-end;
margin: 10px 0;
}
</style>
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