添加页面及部分多语言切换
This commit is contained in:
+78
-24
@@ -3,9 +3,9 @@
|
||||
<uni-nav-bar leftText=" " :fixed="true" :border="false" leftIcon="back" @clickLeft="leftClick" color="#000000" backgroundColor="#fff" :statusBar="true" title="信息录入"></uni-nav-bar>
|
||||
<view class="content">
|
||||
<view class="cell">
|
||||
<view>客户称呼 <text class="red">*</text></view>
|
||||
<view>客户称呼</view>
|
||||
<view class="right">
|
||||
<input placeholder="输入客户称呼" v-model="form.name" />
|
||||
<input placeholder="输入称呼" v-model="form.contacts" />
|
||||
</view>
|
||||
</view>
|
||||
<u-divider text=""></u-divider>
|
||||
@@ -26,20 +26,27 @@
|
||||
</view>
|
||||
</view>
|
||||
<u-divider text=""></u-divider>
|
||||
<view class="cell">
|
||||
<view>Email</view>
|
||||
<view class="right">
|
||||
<input placeholder="输入Email" v-model="form.email" />
|
||||
</view>
|
||||
</view>
|
||||
<u-divider text=""></u-divider>
|
||||
<view class="cell">
|
||||
<view>客户偏好</view>
|
||||
<view class="right select" @click="showbrand = true">
|
||||
<input placeholder="选择客户偏好" disabled v-model="brandname" />
|
||||
<u-picker :show="showbrand" @cancel="cancel('showbrand')" :columns="brandList" keyName="name" @confirm="changeHandler"></u-picker>
|
||||
<view class="right select" @click="showcartype = true">
|
||||
<input placeholder="选择客户偏好" disabled v-model="car_type_name" />
|
||||
<u-picker :cancel-text="$t('cancel')" :confirm-text="$t('confirm')" :show="showcartype" @cancel="cancel('showcartype')" :columns="carTypeList" keyName="name" @confirm="cartypesChange"></u-picker>
|
||||
<u-icon class="arrowright" name="arrow-right" size="18" color="#747474"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
<u-divider text=""></u-divider>
|
||||
<view class="cell">
|
||||
<view>客户等级</view>
|
||||
<view class="right select" @click="showtype = true">
|
||||
<input placeholder="选择客户等级" disabled v-model="vehicle_type" />
|
||||
<u-picker :show="showtype" @cancel="cancel('showtype')" :columns="typesList" keyName="name" @confirm="typesChange"></u-picker>
|
||||
<view class="right select" @click="showgrade = true">
|
||||
<input placeholder="选择客户等级" disabled v-model="grade_name" />
|
||||
<u-picker :cancel-text="$t('cancel')" :confirm-text="$t('confirm')" :show="showgrade" @cancel="cancel('showgrade')" :columns="getGradeList" keyName="name" @confirm="gradeHandler"></u-picker>
|
||||
<u-icon class="arrowright" name="arrow-right" size="18" color="#747474"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
@@ -47,8 +54,8 @@
|
||||
<view class="cell">
|
||||
<view>国家地区</view>
|
||||
<view class="right select" @click="showenergy = true">
|
||||
<input placeholder="选择国家地区" disabled v-model="vehicle_energy" />
|
||||
<u-picker :show="showenergy" @cancel="cancel('showenergy')" :columns="energyList" keyName="name" @confirm="energyChange"></u-picker>
|
||||
<input placeholder="选择国家地区" disabled v-model="country_name" />
|
||||
<u-picker :cancel-text="$t('cancel')" :confirm-text="$t('confirm')" :show="showenergy" @cancel="cancel('showenergy')" :columns="areaList" keyName="name" @confirm="areaChange"></u-picker>
|
||||
<u-icon class="arrowright" name="arrow-right" size="18" color="#747474"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
@@ -63,7 +70,7 @@
|
||||
<view class="cell1">
|
||||
<view>详细情况</view>
|
||||
<view class="">
|
||||
<textarea auto-height v-model="form.condition_desc" placeholder="详细情况..."/>
|
||||
<textarea auto-height v-model="form.describe" placeholder="详细情况..."/>
|
||||
</view>
|
||||
</view>
|
||||
<u-gap height="100" bgColor="#fff"></u-gap>
|
||||
@@ -79,31 +86,78 @@
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
brandList:[],
|
||||
energyList:[],
|
||||
typesList:[],
|
||||
showgrade: false,
|
||||
showcartype: false,
|
||||
showenergy: false,
|
||||
getGradeList:[],
|
||||
carTypeList:[],
|
||||
areaList:[],
|
||||
grade_name:'',
|
||||
car_type_name:'',
|
||||
country_name:'',
|
||||
form: {
|
||||
name: '',
|
||||
contacts: '',
|
||||
gender: '男',
|
||||
phone: '',
|
||||
preference: '赵野军',
|
||||
level: '初步接触',
|
||||
region: '',
|
||||
firstFollow: '2025-03-11 12:00:01',
|
||||
details: ''
|
||||
email: '',
|
||||
describe: '',
|
||||
grade:'',
|
||||
country_id:'',
|
||||
car_type_id:''
|
||||
}
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
const { windowWidth, windowHeight } = uni.getSystemInfoSync();
|
||||
this.x = windowWidth-70
|
||||
this.y = windowHeight-185
|
||||
},
|
||||
methods: {
|
||||
|
||||
leftClick(){
|
||||
uni.navigateBack({})
|
||||
},
|
||||
getGrade(){
|
||||
request({
|
||||
url:'customer/getGrade',
|
||||
method:'get',
|
||||
}).then(res => {
|
||||
var list = res.data.data
|
||||
this.getGradeList = [list]
|
||||
})
|
||||
},
|
||||
carType(){
|
||||
request({
|
||||
url:'carType/getAll',
|
||||
method:'get',
|
||||
}).then(res => {
|
||||
var list = res.data.data
|
||||
this.carTypeList = [list]
|
||||
})
|
||||
},
|
||||
area(){
|
||||
request({
|
||||
url:'area/getAll',
|
||||
method:'get',
|
||||
}).then(res => {
|
||||
var list = res.data.data
|
||||
this.areaList = [list]
|
||||
})
|
||||
},
|
||||
gradeHandler(val){
|
||||
this.form.grade = val.value[0].brand_id
|
||||
this.grade_name = val.value[0].name
|
||||
this.showgrade = false
|
||||
},
|
||||
areaChange(val){
|
||||
this.form.country_id = val.value[0].energy_id
|
||||
this.country_name = val.value[0].name
|
||||
this.showarea = false
|
||||
},
|
||||
cartypesChange(val){
|
||||
this.form.car_type_id = val.value[0].energy_id
|
||||
this.car_type_name = val.value[0].name
|
||||
this.showcartype = false
|
||||
},
|
||||
cancel(val){
|
||||
this[val] = false
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
+76
-61
@@ -5,7 +5,7 @@
|
||||
<view class="cell">
|
||||
<view>客户称呼</view>
|
||||
<view class="right">
|
||||
<input placeholder="输入客户称呼" v-model="form.name" />
|
||||
<input placeholder="输入称呼" v-model="form.contacts" />
|
||||
</view>
|
||||
</view>
|
||||
<u-divider text=""></u-divider>
|
||||
@@ -20,7 +20,7 @@
|
||||
</view>
|
||||
<u-divider text=""></u-divider>
|
||||
<view class="cell">
|
||||
<view>联系方式 </view>
|
||||
<view>联系方式 <text class="red">*</text></view>
|
||||
<view class="right">
|
||||
<input placeholder="输入联系方式" v-model="form.phone" />
|
||||
</view>
|
||||
@@ -29,24 +29,24 @@
|
||||
<view class="cell">
|
||||
<view>Email</view>
|
||||
<view class="right">
|
||||
<input placeholder="输入Email" v-model="form.phone" />
|
||||
<input placeholder="输入Email" v-model="form.email" />
|
||||
</view>
|
||||
</view>
|
||||
<u-divider text=""></u-divider>
|
||||
<view class="cell">
|
||||
<view>客户偏好</view>
|
||||
<view class="right select" @click="showbrand = true">
|
||||
<input placeholder="选择客户偏好" disabled v-model="brandname" />
|
||||
<u-picker :show="showbrand" @cancel="cancel('showbrand')" :columns="brandList" keyName="name" @confirm="changeHandler"></u-picker>
|
||||
<view class="right select" @click="showcartype = true">
|
||||
<input placeholder="选择客户偏好" disabled v-model="car_type_name" />
|
||||
<u-picker :cancel-text="$t('cancel')" :confirm-text="$t('confirm')" :show="showcartype" @cancel="cancel('showcartype')" :columns="carTypeList" keyName="name" @confirm="cartypesChange"></u-picker>
|
||||
<u-icon class="arrowright" name="arrow-right" size="18" color="#747474"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
<u-divider text=""></u-divider>
|
||||
<view class="cell">
|
||||
<view>客户等级</view>
|
||||
<view class="right select" @click="showtype = true">
|
||||
<input placeholder="选择客户等级" disabled v-model="vehicle_type" />
|
||||
<u-picker :show="showtype" @cancel="cancel('showtype')" :columns="typesList" keyName="name" @confirm="typesChange"></u-picker>
|
||||
<view class="right select" @click="showgrade = true">
|
||||
<input placeholder="选择客户等级" disabled v-model="grade_name" />
|
||||
<u-picker :cancel-text="$t('cancel')" :confirm-text="$t('confirm')" :show="showgrade" @cancel="cancel('showgrade')" :columns="getGradeList" keyName="name" @confirm="gradeHandler"></u-picker>
|
||||
<u-icon class="arrowright" name="arrow-right" size="18" color="#747474"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
@@ -54,8 +54,7 @@
|
||||
<view class="cell">
|
||||
<view>公司</view>
|
||||
<view class="right select" @click="showenergy = true">
|
||||
<input placeholder="去定位" disabled v-model="vehicle_energy" />
|
||||
<u-picker :show="showenergy" @cancel="cancel('showenergy')" :columns="energyList" keyName="name" @confirm="energyChange"></u-picker>
|
||||
<input placeholder="去定位" disabled v-model="country_name" />
|
||||
<u-icon class="arrowright" name="arrow-right" size="18" color="#747474"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
@@ -63,7 +62,7 @@
|
||||
<view class="cell1">
|
||||
<view>备注(非必填)</view>
|
||||
<view class="">
|
||||
<textarea auto-height v-model="form.condition_desc" placeholder="详细情况..."/>
|
||||
<textarea auto-height v-model="form.describe" placeholder="详细情况..."/>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -127,56 +126,24 @@
|
||||
data() {
|
||||
return {
|
||||
id:'',
|
||||
brandList:[],
|
||||
energyList:[],
|
||||
typesList:[],
|
||||
brandList1:[],
|
||||
energyList1:[],
|
||||
typesList1:[],
|
||||
showbrand: false,
|
||||
showtype: false,
|
||||
showgrade: false,
|
||||
showcartype: false,
|
||||
showenergy: false,
|
||||
defaultIndex1:[0],
|
||||
defaultIndex2:[0],
|
||||
defaultIndex3:[0],
|
||||
brandname:'',
|
||||
vehicle_type:'',
|
||||
vehicle_energy:'',
|
||||
form:{
|
||||
name:'',
|
||||
vin:'',
|
||||
brand:'',
|
||||
price:'',
|
||||
vehicle_type:'',
|
||||
vehicle_energy:'',
|
||||
mileage :'',
|
||||
vehicle_age:'',
|
||||
condition_desc:'',
|
||||
front_45_degree:'',
|
||||
front_left_45_degree:'',
|
||||
front_left_headlight:'',
|
||||
front_view:'',
|
||||
lower_front:'',
|
||||
wheel_hub:'',
|
||||
front_right_seat:'',
|
||||
right_lower_side:'',
|
||||
rear_right_taillight:'',
|
||||
rear_right_45_degree:'',
|
||||
lower_rear:'',
|
||||
trunk:'',
|
||||
left_lower_side:'',
|
||||
rear_seats:'',
|
||||
center_console:'',
|
||||
control_panel:'',
|
||||
gear_shift:'',
|
||||
car_key:'',
|
||||
steering_wheel:'',
|
||||
dashboard:'',
|
||||
odometer_reading:'',
|
||||
front_left_door_panel:'',
|
||||
front_left_door_function_area:'',
|
||||
front_left_seat:'',
|
||||
interior_ceiling:'',
|
||||
getGradeList:[],
|
||||
carTypeList:[],
|
||||
areaList:[],
|
||||
grade_name:'',
|
||||
car_type_name:'',
|
||||
country_name:'',
|
||||
form: {
|
||||
contacts: '',
|
||||
gender: '男',
|
||||
phone: '',
|
||||
email: '',
|
||||
describe: '',
|
||||
grade:'',
|
||||
country_id:'',
|
||||
car_type_id:''
|
||||
}
|
||||
|
||||
}
|
||||
@@ -189,6 +156,54 @@
|
||||
methods: {
|
||||
leftClick(){
|
||||
uni.navigateBack({})
|
||||
},
|
||||
getGrade(){
|
||||
request({
|
||||
url:'customer/getGrade',
|
||||
method:'get',
|
||||
}).then(res => {
|
||||
var list = res.data.data
|
||||
this.getGradeList = [list]
|
||||
})
|
||||
},
|
||||
carType(){
|
||||
request({
|
||||
url:'carType/getAll',
|
||||
method:'get',
|
||||
}).then(res => {
|
||||
var list = res.data.data
|
||||
this.carTypeList = [list]
|
||||
})
|
||||
},
|
||||
area(){
|
||||
request({
|
||||
url:'area/getAll',
|
||||
method:'get',
|
||||
}).then(res => {
|
||||
var list = res.data.data
|
||||
this.areaList = [list]
|
||||
})
|
||||
},
|
||||
gradeHandler(val){
|
||||
this.form.grade = val.value[0].brand_id
|
||||
this.grade_name = val.value[0].name
|
||||
this.showgrade = false
|
||||
},
|
||||
areaChange(val){
|
||||
this.form.country_id = val.value[0].energy_id
|
||||
this.country_name = val.value[0].name
|
||||
this.showarea = false
|
||||
},
|
||||
cartypesChange(val){
|
||||
this.form.car_type_id = val.value[0].energy_id
|
||||
this.car_type_name = val.value[0].name
|
||||
this.showcartype = false
|
||||
},
|
||||
cancel(val){
|
||||
this[val] = false
|
||||
},
|
||||
nextFn(){
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+110
-6
@@ -37,7 +37,7 @@
|
||||
<view class="cell1" v-if="form.followType==2">
|
||||
<view>当前位置拍照上传</view>
|
||||
<view style="margin-top: 10px;">
|
||||
<uni-file-picker fileMediatype="image" limit="1" :del-icon="false" disable-preview @select="select" @delete="delfn('front_45_degree')">
|
||||
<uni-file-picker fileMediatype="image" limit="1" :del-icon="false" disable-preview @select="select1" @delete="delfn('front_45_degree')">
|
||||
<image src="/static/image/customer/upimg.png" mode="" class="addimg"></image>
|
||||
</uni-file-picker>
|
||||
</view>
|
||||
@@ -46,15 +46,16 @@
|
||||
<view class="cell1" v-if="form.followType==2">
|
||||
<view>拜访内容</view>
|
||||
<view class="yuyin">
|
||||
<textarea auto-height v-model="form.condition_desc" placeholder="拜访内容..."/>
|
||||
<image src="/static/image/customer/yuyin.png" mode=""></image>
|
||||
<textarea auto-height v-model="form.bf_desc" placeholder="拜访内容..."/>
|
||||
<image src="/static/image/customer/yuyin.png" mode="" @tap="startRecognizebd"></image>
|
||||
</view>
|
||||
</view>
|
||||
<u-divider text="" v-if="form.followType==2"></u-divider>
|
||||
<view class="cell1" v-if="form.followType==2">
|
||||
<view>备注(非必填)</view>
|
||||
<view class="">
|
||||
<view class="yuyin">
|
||||
<textarea auto-height v-model="form.condition_desc" placeholder="详细情况..."/>
|
||||
<image src="/static/image/customer/yuyin.png" mode="" @tap="startRecognize"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -121,8 +122,8 @@
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import permision from "@/common/permission.js"
|
||||
import { request,showToast } from '@/api/apiT.js'
|
||||
// import ldSelect from '@/components/ld-select/ld-select.vue'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@@ -139,7 +140,8 @@
|
||||
level: '初步接触',
|
||||
region: '',
|
||||
firstFollow: '2025-03-11 12:00:01',
|
||||
details: ''
|
||||
details: '',
|
||||
bf_desc:''
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -152,6 +154,9 @@
|
||||
|
||||
leftClick(){
|
||||
uni.navigateBack({})
|
||||
},
|
||||
nextFn(){
|
||||
|
||||
},
|
||||
cancel() {
|
||||
this.show = false
|
||||
@@ -180,6 +185,105 @@
|
||||
return ''
|
||||
}
|
||||
},
|
||||
delfn(name){
|
||||
console.log(name)
|
||||
that.carinfo[name] =''
|
||||
},
|
||||
uploadfn(imgUrl,name){
|
||||
var that = this;
|
||||
uni.uploadFile({
|
||||
url: 'https://api.collect.hs.hnzhwlkj.club/upload',
|
||||
filePath: imgUrl,
|
||||
name: 'image',
|
||||
header:{'content-type': 'application/x-www-form-urlencoded','Authorization': 'Bearer ' + uni.getStorageSync('token')},
|
||||
success: (uploadFileRes) => {
|
||||
const path=JSON.parse(uploadFileRes.data)
|
||||
that.carinfo[name] = path.data.image_name
|
||||
console.log(that.carinfo)
|
||||
}
|
||||
});
|
||||
},
|
||||
select(e){
|
||||
const tempFilePaths = e.tempFilePaths;
|
||||
const imgUrl=tempFilePaths[0]
|
||||
this.uploadfn(imgUrl,'front_45_degree')
|
||||
},
|
||||
select1(e){
|
||||
const tempFilePaths = e.tempFilePaths;
|
||||
const imgUrl=tempFilePaths[0]
|
||||
this.uploadfn(imgUrl,'front_45_degree')
|
||||
},
|
||||
async startRecognizebd () {
|
||||
// #ifdef APP-PLUS
|
||||
let status = await this.checkPermission();
|
||||
if (status !== 1) {
|
||||
return;
|
||||
}
|
||||
// #endif
|
||||
// TODO ios 在没有请求过权限之前无法得知是否有相关权限,这种状态下需要直接调用语音,会弹出正在识别的toast
|
||||
var options = {};
|
||||
var that = this;
|
||||
options.engine = 'baidu';
|
||||
that.valuebd = "";
|
||||
plus.speech.startRecognize(options, function (s) {
|
||||
console.log(s);
|
||||
that.valuebd += s;
|
||||
}, function (e) {
|
||||
console.log("语音识别失败:" + e.message);
|
||||
});
|
||||
},
|
||||
async startRecognize () {
|
||||
// #ifdef APP-PLUS
|
||||
let status = await this.checkPermission();
|
||||
if (status !== 1) {
|
||||
return;
|
||||
}
|
||||
// #endif
|
||||
// TODO ios 在没有请求过权限之前无法得知是否有相关权限,这种状态下需要直接调用语音,会弹出正在识别的toast
|
||||
var options = {};
|
||||
var that = this;
|
||||
that.value = "";
|
||||
options.engine = 'iFly';
|
||||
options.punctuation = false; // 是否需要标点符号
|
||||
options.timeout = 10 * 1000; //语音录入持续时长
|
||||
plus.speech.startRecognize(options, function(s) {
|
||||
console.log(s);
|
||||
that.value += s;
|
||||
// 关闭语音
|
||||
plus.speech.stopRecognize();
|
||||
}, function (e) {
|
||||
console.log("语音识别失败:" + e.message);
|
||||
});
|
||||
},
|
||||
// #ifdef APP-PLUS
|
||||
async checkPermission() {
|
||||
let status = permision.isIOS ? await permision.requestIOS('record') :
|
||||
await permision.requestAndroid('android.permission.RECORD_AUDIO');
|
||||
|
||||
if (status === null || status === 1) {
|
||||
status = 1;
|
||||
} else if (status === 2) {
|
||||
uni.showModal({
|
||||
content: "系统麦克风已关闭",
|
||||
confirmText: "确定",
|
||||
showCancel: false,
|
||||
success: function(res) {
|
||||
}
|
||||
})
|
||||
} else {
|
||||
uni.showModal({
|
||||
content: "需要麦克风权限",
|
||||
confirmText: "设置",
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
permision.gotoAppSetting();
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
return status;
|
||||
}
|
||||
// #endif
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user