Commit ee240893 by 吕海涛

司机端语音配置

parent 0c9bf88c
......@@ -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'
......@@ -1153,4 +1154,15 @@ export function complaintAdd(data) {
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)
}
\ No newline at end of file
......@@ -275,14 +275,14 @@ export const routes = [{
import ('@/views/transports/transport.vue'),
meta: { title: '运力方管理', icon: 'el-icon-s-home' }
},
{
path: 'transport-detail',
name: 'transportDetail',
component: () =>
import ('@/views/transports/transportDetail.vue'),
meta: {title: '运力方管理', icon: 'el-icon-s-home'},
hidden: true
},
{
path: 'transport-detail',
name: 'transportDetail',
component: () =>
import ('@/views/transports/transportDetail.vue'),
meta: { title: '运力方管理', icon: 'el-icon-s-home' },
hidden: true
},
{
path: 'car',
name: 'Car',
......@@ -331,6 +331,13 @@ export const routes = [{
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' }
},
]
}
......@@ -399,4 +406,4 @@ router.beforeEach(async(to, from, next) => {
}
})
export default router
export default router
\ No newline at end of file
<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;
border-bottom: 1px solid #ccc;
padding-left: 5px;
"
id="obj"
></div>
<div
style="
padding: 0 5px;
padding: 0px 5px;
display: flex;
align-items: center;
"
>
<el-button type="text" @click="setText('PHONE')"
>#乘客手机尾号#</el-button
>
<el-button type="text" @click="setText('STARTADDRESS')"
>#乘客上车地址#</el-button
>
<el-button type="text" @click="setText('ENDADDRESS')"
>#乘客目的地#</el-button
>
<el-button type="text" @click="setText('APPOINTTIME')"
>#乘客预约时间#</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: "",
},
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));
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) {
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"
);
let json = {
id: this.form.id,
inspectData: this.form.inspectData,
operationNode: this.form.operationNode,
remindType: this.form.remindType,
remindContent: t.replace(/<[^>]+>/g, " "),
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>
......@@ -97,7 +97,7 @@ export default {
],
labelName: [
{ required: true, message: "请输入控诉原因", trigger: "blur" },
{ max: 10, message: "最多可输入五十个字" },
{ max: 50, message: "最多可输入五十个字" },
],
},
complaintModelist: [
......
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