<template>
<view class="page_wrap u-flex-col u-row-between">
<view class="content">
<MyNavbar title="检票"></MyNavbar>
<view class="content_middle u-flex-col ">
<view class="content_middle_title">终端绑定</view>
<view class="content_middle_input u-flex-col u-row-center u-col-center">
<view class="content_middle_item u-flex u-row-between">
<view class="label">当前终端:{{ terminalObj.terminalName }}</view>
<view class="moni_button" @click="reSetBindTerminal">终端解绑</view>
</view>
<u-form :model="form" ref="uForm">
<u-form-item :border-bottom="false">
<u-input v-model="form.text" type="select" disabled @click="toSelectOut" :border="border"
placeholder="终端选择" />
<u-picker :show="selectFlag" mode="selector" :columns="terminalColumns"
@confirm="confirmPicker" @cancel="cancelPicker" keyName="label" :default-index="[0]"></u-picker>
</u-form-item>
</u-form>
</view>
<view class="content_middle_button">
<u-button :custom-style="customStyle" @click="bindTerminal">终端绑定</u-button>
</view>
</view>
<view class="content_middle u-flex-col ">
<view class="content_middle_title">语音设置</view>
<view class="content_middle_input u-flex u-row-between u-col-center u-p-l-60 u-p-r-60">
<view class="">
是否开启语音
</view>
<view class="">
<u-switch v-model="isAudio" active-color="#F87428" @change="switchChange"></u-switch>
</view>
</view>
</view>
</view>
<MyFooter />
</view>
</template>
<script>
import {
checkTerminalIsBind,
bindTerminal,
reSetBindTerminal,
findNoBindTerminalList
} from '@/api/check-ticket/index.js';
import MyFooter from '@/components/MyFooter/index.vue';
import {
getUserInfo,
setIsAudio,
getIsAudio
} from '@/util/storage.js';
export default {
components: {
MyFooter
},
data() {
return {
border: false,
selectFlag: false,
form: {
text: '',
terminalNo: ''
},
terminalList: [],
terminalColumns: [],
machineNo: null,
terminalObj: {
positionName: '',
terminalName: '',
terminalNo: '',
terminalId: ''
},
isAudio: false,
customStyle: {
width: '598rpx',
height: '84rpx',
background: '#F87428',
borderRadius: '46rpx 46rpx 46rpx 46rpx',
fontSize: '32rpx',
fontFamily: ' PingFang SC-Regular, PingFang SC',
fontWeight: 400,
color: '#FFFFFF',
lineHeight: '44rpx',
},
};
},
onLoad(option) {},
created() {
this.initPage();
},
methods: {
cancelPicker() {
this.selectFlag = false; // 关闭下拉菜单
},
confirmPicker(e) {
console.log("确认选择的数据:", e);
if (e.value && e.value.length > 0) {
const selected = e.value[0]; // 获取选中的选项对象
this.form.text = selected.label; // 更新 form.text
this.form.terminalNo = selected.value; // 更新 form.terminalNo
}
this.selectFlag = false; // 关闭下拉菜单
},
confirm(e) {
this.form.text = e[0].label;
this.form.terminalNo = e[0].value;
this.selectFlag = false; // 关闭下拉菜单
},
initPage() {
console.log(getApp().globalData.setTerimalStorage)
if (getApp().globalData.setTerimalStorage == 'ticketTerimal') {
this.machineNo = getUserInfo().memberId;
} else {
this.machineNo = getUserInfo().memberNo;
}
if (!this.machineNo) {
uni.redirectTo({
url: 'pages/login/login'
});
}
this.checkTerminalIsBind();
this.findNoBindTerminalList();
let isAudio = getIsAudio()
if (isAudio) {
this.isAudio = isAudio
} else {
this.isAudio = false
}
},
// init回显
checkTerminalIsBind() {
checkTerminalIsBind({
machineNo: this.machineNo
}).then(res => {
if (res.data) {
this.terminalObj = {
positionName: res.data.positionName,
terminalName: res.data.terminalName,
terminalNo: res.data.terminalNo,
terminalId: res.data.terminalId,
scenicSpotId: res.data.scenicSpotId,
};
uni.setStorageSync(getApp().globalData.setTerimalStorage, this.terminalObj)
} else {
this.terminalObj = this.$options.data().terminalObj;
}
});
},
// 查终端列表
findNoBindTerminalList() {
findNoBindTerminalList({
terminalType: getApp().globalData.TERMINALTYPE
}).then(res => {
if (res.data?.list) {
this.terminalList = res.data.list.map(item => ({
label: item.terminalName,
value: item.terminalNo
}));
this.terminalColumns = [this.terminalList];
} else {
this.terminalList = [];
this.terminalColumns = [];
}
});
},
reSetBindTerminal() {
if (!this.terminalObj.terminalName) return;
uni.showToast({
title: '正在解绑中',
icon: 'loading'
});
reSetBindTerminal({
terminalNo: this.terminalObj.terminalNo
})
.then(res => {
this.terminalObj = this.$options.data().terminalObj;
this.form = {};
uni.removeStorageSync(getApp().globalData.setTerimalStorage);
this.checkTerminalIsBind();
})
.finally(() => {
uni.hideToast();
this.findNoBindTerminalList();
});
},
// 呼出下拉
toSelectOut() {
console.log('点击事件触发,当前终端名称:', this.terminalObj.terminalName); // 调试日志
if (this.terminalObj.terminalName) {
console.log('终端已绑定,禁止选择');
return;
}
console.log('打开picker');
this.selectFlag = true;
},
// 选择
toSelect(index) {
this.form.text = e.name;
this.form.terminalNo = e.value;
this.selectFlag = false
// this.form = uni.$u.deepClone(this.terminalList[index]);
},
bindTerminal() {
uni.showToast({
title: '正在绑定中',
icon: 'loading'
});
bindTerminal({
machineNo: this.machineNo,
terminalNo: this.form.terminalNo
})
.then(res => {
this.terminalObj = {
positionName: res.data.positionName,
terminalName: res.data.terminalName,
terminalNo: res.data.terminalNo,
terminalId: res.data.terminalId,
scenicSpotId: res.data.scenicSpotId,
};
uni.setStorageSync(getApp().globalData.setTerimalStorage, this.terminalObj);
})
.finally(() => {
uni.hideToast();
});
},
// 选择开启语音
switchChange(value) {
setIsAudio(value)
}
}
};
</script>
找开发者处理