Commit 618308e6 by weix

Merge branch 'master' of https://git.xoado.com/yaohui/xoadoPlatform

# Conflicts: # src/port/set-request.js # src/router/index.js # src/views/disposition/componenets/disposition/addDialog.vue
parents 7fcaa080 af75c493
......@@ -12,6 +12,7 @@ const targetBaseUrl = process.env.VUE_APP_BASE_API5
const targetBaseUrl1 = process.env.VUE_APP_BASE_API6
const targetBaseUrl2 = process.env.VUE_APP_BASE_API7
const targetBaseUrl5 = process.env.VUE_APP_BASE_API15
const targetBaseUrl6 = process.env.VUE_APP_BASE_API16
/* 获取车型列表 */
export function getXoadodAllCarTYpeList(data = {}) {
const url = targetBaseUrl2 + '/carType'
......@@ -1154,3 +1155,14 @@ export function complaintUpdate(data) {
const url = targetBaseUrl5 + `/complaint/label`
return put(url, data)
}
/* 投诉原因---修改 */
export function voicePage() {
const url = process.env.VUE_APP_BASE_API6 + `/dispatchconfig/driver/mesconf`
return get(url)
}
/* 投诉原因---修改 */
export function PutvoicePage(data) {
const url = process.env.VUE_APP_BASE_API6 + `/dispatchconfig/driver/mesconf`
return put(url, data)
}
import Vue from 'vue'
import VueRouter from 'vue-router'
import Layout from '@/layout'
import { routerMode } from '@/config/index'
import {routerMode} from '@/config/index'
import store from '@/store/index'
Vue.use(VueRouter)
......@@ -15,7 +15,7 @@ export const currencyRoutes = [{
component: () =>
import ( /* webpackChunkName: "login" */ '@/views/login/index.vue'),
hidden: true
},
},
{
path: '/Real',
component: () =>
......@@ -98,10 +98,10 @@ export const routes = [{
name: 'DepartmentInformation',
component: () =>
import ('@/views/DepartmentInformation/index.vue'),
meta: { title: '部门管理', icon: 'el-icon-user-solid' }
meta: {title: '部门管理', icon: 'el-icon-user-solid'}
},
]
},
},
{
path: '/configure',
name: 'configure',
......@@ -116,21 +116,21 @@ export const routes = [{
name: 'Enclosure',
component: () =>
import ('@/views/configure/enclosure.vue'),
meta: { title: '围栏管理', icon: 'el-icon-aim' }
meta: {title: '围栏管理', icon: 'el-icon-aim'}
},
{
path: 'site',
name: 'Site',
component: () =>
import ('@/views/configure/site.vue'),
meta: { title: '站点管理', icon: 'el-icon-s-home' }
meta: {title: '站点管理', icon: 'el-icon-s-home'}
},
{
path: 'CarModel',
name: 'CarModel',
component: () =>
import ('@/views/configure/CarModel.vue'),
meta: { title: '车型管理', icon: 'el-icon-s-data' }
meta: {title: '车型管理', icon: 'el-icon-s-data'}
},
]
},
......@@ -148,14 +148,14 @@ export const routes = [{
name: 'Setting',
component: () =>
import ('@/views/platform/setting.vue'),
meta: { title: '品牌配置', icon: 'el-icon-aim' }
meta: {title: '品牌配置', icon: 'el-icon-aim'}
},
{
path: 'setting-info',
name: 'settingInfo',
component: () =>
import ('@/views/platform/components/settingInfo.vue'),
meta: { title: '添加品牌', icon: 'el-icon-aim' },
meta: {title: '添加品牌', icon: 'el-icon-aim'},
hidden: true
},
{
......@@ -163,7 +163,7 @@ export const routes = [{
name: 'settingDetail',
component: () =>
import ('@/views/platform/settingDetail.vue'),
meta: { title: '品牌详情', icon: 'el-icon-aim' },
meta: {title: '品牌详情', icon: 'el-icon-aim'},
hidden: true
},
{
......@@ -171,14 +171,14 @@ export const routes = [{
name: 'regionManage',
component: () =>
import ('@/views/platform/regionManage.vue'),
meta: { title: '运营管理', icon: 'el-icon-aim' }
meta: {title: '运营管理', icon: 'el-icon-aim'}
},
{
path: 'region-detail',
name: 'regionDetail',
component: () =>
import ('@/views/platform/regionDetail.vue'),
meta: { title: '运营管理详情', icon: 'el-icon-aim' },
meta: {title: '运营管理详情', icon: 'el-icon-aim'},
hidden: true
},
{
......@@ -186,7 +186,7 @@ export const routes = [{
name: 'productSetup',
component: () =>
import ('@/views/platform/productSetup.vue'),
meta: { title: '产品详情', icon: 'el-icon-aim' },
meta: {title: '产品详情', icon: 'el-icon-aim'},
hidden: true
},
]
......@@ -226,14 +226,14 @@ export const routes = [{
name: 'waybillIndex',
component: () =>
import ('@/views/business/waybillManagement/index.vue'),
meta: { icon: 'el-icon-document', title: '运单列表' }
meta: {icon: 'el-icon-document', title: '运单列表'}
},
{
path: 'waybill-Detail',
name: 'waybillDetail',
component: () =>
import ('@/views/business/waybillManagement/waybillDetail.vue'),
meta: { title: '运单详情' },
meta: {title: '运单详情'},
hidden: true
},
{
......@@ -273,7 +273,7 @@ export const routes = [{
name: 'Transport',
component: () =>
import ('@/views/transports/transport.vue'),
meta: { title: '运力方管理', icon: 'el-icon-s-home' }
meta: {title: '运力方管理', icon: 'el-icon-s-home'}
},
{
path: 'transport-detail',
......@@ -288,14 +288,14 @@ export const routes = [{
name: 'Car',
component: () =>
import ('@/views/transports/car.vue'),
meta: { title: '车辆管理', icon: 'el-icon-s-home' }
meta: {title: '车辆管理', icon: 'el-icon-s-home'}
},
{
path: 'car-detail',
name: 'carDetail',
component: () =>
import ('@/views/transports/carDetail.vue'),
meta: { title: '车辆详情', icon: 'el-icon-s-home' },
meta: {title: '车辆详情', icon: 'el-icon-s-home'},
hidden: true
},
{
......@@ -303,14 +303,14 @@ export const routes = [{
name: 'Driver',
component: () =>
import ('@/views/transports/driver.vue'),
meta: { title: '司机管理', icon: 'el-icon-s-home' }
meta: {title: '司机管理', icon: 'el-icon-s-home'}
},
{
path: 'driver-detail',
name: 'driverDetail',
component: () =>
import ('@/views/transports/driverDetail.vue'),
meta: { title: '司机管理', icon: 'el-icon-s-home' },
meta: {title: '司机管理', icon: 'el-icon-s-home'},
hidden: true
},
]
......@@ -325,27 +325,35 @@ export const routes = [{
title: '配置管理'
},
children: [{
path: 'disposition',
name: 'disposition',
component: () =>
import ('@/views/disposition/disposition.vue'),
meta: { title: '控诉原因配置', icon: 'el-icon-s-home' }
},
{
path: 'pass-rotation',
name: 'passRotation',
component: () =>
import ('@/views/disposition/passRotation.vue'),
meta: { title: '广告位配置', icon: 'el-icon-s-home' }
meta: {title: '广告位配置', icon: 'el-icon-s-home'}
},
{
path: 'pass-detail',
name: 'passDetail',
component: () =>
import ('@/views/disposition/passDetail.vue'),
meta: { title: '新增广告位配置', icon: 'el-icon-s-home' },
meta: {title: '新增广告位配置', icon: 'el-icon-s-home'},
hidden: true
},
{
path: 'disposition',
name: 'disposition',
component: () =>
import ('@/views/disposition/disposition.vue'),
meta: {title: '控诉原因配置', icon: 'el-icon-s-home'}
},
{
path: 'Voice',
name: 'Voice',
component: () =>
import ('@/views/Voice/voicePage.vue'),
meta: {title: '司机端语音配置', icon: 'el-icon-s-home'}
},
]
}
]
......@@ -372,7 +380,7 @@ export function resetRouter() {
}
// 导航守卫 验证是否登录了 没有登录跳转到登录页面
router.beforeEach(async(to, from, next) => {
router.beforeEach(async (to, from, next) => {
if (to.path === '/login') {
next()
} else {
......
<template>
<el-card>
<el-row>
<div class="title-left" style="padding-left: 10px; font-weight: 800">
司机端语音配置
</div>
</el-row>
<el-table
:data="data"
stripe
v-loading="tableLoading"
:header-cell-style="tableHeaderColor"
style="width: 100%; margin-top: 20px"
border
sty
>
<el-table-column
label="操作节点"
align="center"
width="120"
:formatter="operationNodeText"
>
</el-table-column>
<el-table-column
label="检测数据"
align="center"
:formatter="inspectDataText"
width="200"
>
</el-table-column>
<el-table-column
label="提醒方式"
align="center"
:formatter="remindTypeText"
width="120"
>
</el-table-column>
<el-table-column label="可配置提醒内容" align="center">
<template slot-scope="{ row }">
<span v-html="remindContentText(row)"></span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="120">
<template slot-scope="{ row }">
<el-button
type="text"
@click="showDialog({ row })"
style="padding: 0 2px"
>编辑内容</el-button
>
</template>
</el-table-column>
</el-table>
<el-dialog
:visible.sync="dialogVisible"
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="operationNode">
<div v-text="operationNodeText(form)"></div>
</el-form-item>
<el-form-item label="检测数据:" prop="inspectData">
<div v-text="inspectDataText(form)"></div>
</el-form-item>
<el-form-item label="提醒方式:" prop="remindType">
<div v-text="remindTypeText(form)"></div>
</el-form-item>
<el-form-item label="语音配置:" prop="remindContent">
<div style="border: 1px solid #ccc">
<div
v-html="remindContentText(form)"
contentEditable="true"
ref="remindText"
style="height: 100px; overflow-y: scroll; padding-left: 5px"
id="obj"
></div>
<div style="border-top: 1px solid #ccc" v-if="list.length > 0">
<el-button
type="text"
@click="setText(element.type)"
v-for="(element, index) in list"
:key="index"
style="margin-left: 5px"
>{{ element.name }}</el-button
>
</div>
</div>
</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>
</el-card>
</template>
<script>
import { voicePage, PutvoicePage } from "@/port/set-request";
export default {
name: "voicePage",
data() {
return {
tableLoading: true,
data: [],
form: {
operationNode: "",
inspectData: "",
remindContent: "",
remindType: "",
},
list: [],
dialogVisible: false,
operationNodeobj: [
"开始听单",
"司机接单",
"未开始",
"开始行程",
"已到达",
"已上车",
"已送达",
"抢单成功",
"信息变更",
"抢单推送",
"改派成功",
"取消订单",
"订单支付",
"结束行程",
"申请转单",
],
rules: {
operationNode: [
{ required: true, message: "请填写活动形式", trigger: "blur" },
],
inspectData: [
{ required: true, message: "请填写活动形式", trigger: "blur" },
],
remindType: [
{ required: true, message: "请填写活动形式", trigger: "blur" },
],
remindContent: [
{ required: true, message: "请填写活动形式", trigger: "blur" },
],
},
inspectDataonj: [
"开始听单",
"新订单消息推送",
"行程未开始消息推送",
"开始行程前",
"开始行程后",
"到达乘车点",
"乘客上车后",
"乘客已送达",
"抢单成功",
"信息变更",
"抢单推送",
"改派成功",
"订单取消消息推送",
"订单支付成功",
"运单完成",
"申请转单前",
"申请转单后",
"未上传网约车驾驶证",
"未上传车辆道路运输证",
"当前听单车辆与运单不符",
"未开启听单模式",
],
};
},
async created() {
await this.initTable();
},
methods: {
setText(I) {
I = this.remindContentText2(I);
this.$refs.remindText.innerHTML += " " + I;
},
clearInfo() {
this.$refs.form.resetFields();
this.dialogVisible = false;
},
operationNodeText(row) {
return this.operationNodeobj[row.operationNode - 1];
},
showDialog(row) {
this.form = JSON.parse(JSON.stringify(row.row));
if (
(row.row.remindType * 1 == 1 && row.row.inspectData * 1 == 6) ||
row.row.inspectData * 1 == 7 ||
row.row.inspectData * 1 == 8
) {
this.list = [
{
name: "#乘客手机尾号#",
type: "PHONE",
},
{
name: "#乘客上车地址#",
type: "STARTADDRESS",
},
{
name: "#乘客目的地#",
type: "ENDADDRESS",
},
{
name: "#乘客预约时间#",
type: "APPOINTTIME",
},
];
} else {
this.list = [];
}
this.dialogVisible = true;
},
inspectDataText(row) {
return this.inspectDataonj[row.inspectData - 1];
},
remindTypeText(row) {
return row.remindType * 1 == 1 ? "语音提醒" : "模态弹窗";
},
remindContentText2(text) {
let t = text;
t = t.replace(
/PHONE/g,
"<span contentEditable='false' style='color:#409EFF'>#乘客手机尾号#</span>"
);
t = t.replace(
/STARTADDRESS/g,
"<span contentEditable='false' style='color:#409EFF'>#乘客上车地址#</span>"
);
t = t.replace(
/ENDADDRESS/g,
"<span contentEditable='false' style='color:#409EFF'>#乘客目的地#</span>"
);
t = t.replace(
/APPOINTTIME/g,
"<span contentEditable='false' style='color:#409EFF'>#乘客预约时间#</span>"
);
return t;
},
remindContentText(row) {
let t = row.remindContent;
t = t.replace(
/PHONE/g,
"<span contentEditable='false' style='color:#409EFF' >#乘客手机尾号#</span>"
);
t = t.replace(
/STARTADDRESS/g,
"<span contentEditable='false' style='color:#409EFF'>#乘客上车地址#</span>"
);
t = t.replace(
/ENDADDRESS/g,
"<span contentEditable='false' style='color:#409EFF'>#乘客目的地#</span>"
);
t = t.replace(
/APPOINTTIME/g,
"<span contentEditable='false' style='color:#409EFF'>#乘客预约时间#</span>"
);
return t;
},
initTable() {
voicePage().then((res) => {
if (res.status == 200) {
console.log(res.data);
this.data = res.data;
} else {
this.data = [];
}
this.tableLoading = false;
});
},
tableRowStyle({ row, rowIndex }) {
if (rowIndex % 2 !== 0) {
return { "background-color": "#e3f4ff" };
}
},
// table变色,头
tableHeaderColor({ row, column, rowIndex, columnIndex }) {
return { "background-color": "#0099ff", color: "#ffffff" };
},
complaintLable() {
let t = this.$refs.remindText.innerHTML;
t = t.replace(
/<span(\s+[^="']+=(['"]).*?\2)*\s*>#乘客手机尾号#<\/span>/g,
"PHONE"
);
t = t.replace(
/<span(\s+[^="']+=(['"]).*?\2)*\s*>#乘客目的地#<\/span>/g,
"ENDADDRESS"
);
t = t.replace(
/<span(\s+[^="']+=(['"]).*?\2)*\s*>#乘客预约时间#<\/span>/g,
"APPOINTTIME"
);
t = t.replace(
/<span(\s+[^="']+=(['"]).*?\2)*\s*>#乘客上车地址#<\/span>/g,
"STARTADDRESS"
);
t = t.replace(/<\/?[^>]*>/g, ""); //去除HTML tag
t = t.replace(/[ | ]*\n/g, "\n"); //去除行尾空白
t = t.replace(/&nbsp;/gi, ""); //去掉&nbsp;
let json = {
id: this.form.id,
inspectData: this.form.inspectData,
operationNode: this.form.operationNode,
remindType: this.form.remindType,
remindContent: t,
operation: this.form.operation,
};
if (json.remindContent.length >= 100) {
this.$message({
message: "语音配置文字不能超过100个字符!",
type: "warning",
});
return;
}
PutvoicePage(json).then((res) => {
if (res.status == 200) {
this.$message.success("修改成功");
this.initTable();
this.clearInfo();
} else {
this.$message.error(res.msg);
}
this.tableLoading = false;
});
},
},
};
</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>
......@@ -15,7 +15,7 @@
:model="form"
:rules="rules"
>
<el-form-item label="图标:" prop="labelImgurl">
<el-form-item label="图标:" prop="img">
<el-upload
class="avatar-uploader"
:headers="reqHeaders"
......@@ -26,11 +26,11 @@
:on-success="photoUrlSuccess"
:before-upload="beforeAvatarUpload"
>
<img v-if="form.labelImgurl" :src="form.labelImgurl" class="avatar"/>
<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="complaintMode">
<el-form-item label="车辆类别:" prop="type">
<el-select
v-model="form.complaintMode"
collapse-tags
......@@ -65,8 +65,7 @@
</template>
<script>
import {complaintUpdate, complaintAdd} from "@/port/set-request";
import { complaintUpdate, complaintAdd } from "@/port/set-request";
export default {
name: "addDialog",
props: ["platformList"],
......@@ -91,14 +90,14 @@ export default {
},
rules: {
labelImgurl: [
{required: true, message: "请上传图标", trigger: "blur"},
{ required: true, message: "请上传图标", trigger: "blur" },
],
complaintMode: [
{required: true, message: "请选择投诉方式", trigger: "change"},
{ required: true, message: "请选择投诉方式", trigger: "change" },
],
labelName: [
{required: true, message: "请输入控诉原因", trigger: "blur"},
{max: 10, message: "最多可输入五十个字"},
{ required: true, message: "请输入控诉原因", trigger: "blur" },
{ max: 50, message: "最多可输入五十个字" },
],
},
complaintModelist: [
......@@ -113,8 +112,7 @@ export default {
],
};
},
created() {
},
created() {},
methods: {
async showDialog(row) {
if (Object.keys(row).length > 0) {
......
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