搬运起点

This commit is contained in:
蔡玲
2024-12-19 10:42:08 +08:00
parent 7486ba6078
commit 8611fca1f8
12 changed files with 1215 additions and 682 deletions

View File

@@ -24,6 +24,10 @@ export const queryTaskList = () => post('api/task/queryTaskList', {})
export const deleteTask = (taskNum) => post('api/task/deleteTask', {
task_num: taskNum
})
export const querySingleTask = () => post('api/task/querySingleTask', {})
export const deleteSingleTask = (taskNum) => post('api/task/deleteSingleTask', {
task_num: taskNum
})
// 1.5调整任务顺序
export const updateTask = (arr) => post('api/task/updateTask', {
param: arr

View File

@@ -1,3 +1,4 @@
/* eslint-disable */
import {post} from '@config/http.js'
// import store from '../vuex/store'
@@ -134,6 +135,271 @@ export const updatePass = (newPass, oldPass) => post('api/users/updatePass', {
// 用户登录获取菜单
export const sysMenuBuild = () => post('api/sysMenu/build', {
})
// export const sysMenuBuild = () => {
// let res = [
// {
// "menuId": "1654807438270009344",
// "pid": "1324783485328",
// "label": "首页",
// "router": "",
// "index": "1",
// "children": [
// {
// "menuId": "1654807784312672256",
// "pid": "1654807438270009344",
// "label": "首页",
// "router": "/index/home",
// "index": "1",
// "children": null,
// "title": "首页",
// "zhTitle": "首页",
// "enTitle": "Index",
// "inTitle": null,
// "zh_title": "首页",
// "en_title": "Index",
// "in_title": null
// }
// ],
// "title": "首页",
// "zhTitle": "首页",
// "enTitle": "Index",
// "inTitle": null,
// "zh_title": "首页",
// "en_title": "Index",
// "in_title": null
// },
// {
// "menuId": "1654808014131171328",
// "pid": "1324783485328",
// "label": "任务",
// "router": "",
// "index": "2",
// "children": [
// {
// "menuId": "1654808296076480512",
// "pid": "1654808014131171328",
// "label": "搬运起点",
// "router": "/index/carrypoint",
// "index": "1",
// "children": null,
// "title": "搬运起点",
// "zhTitle": "搬运起点",
// "enTitle": "Carry Point",
// "inTitle": null,
// "zh_title": "搬运起点",
// "en_title": "Carry\nPoint",
// "in_title": null
// }
// ],
// "title": "任务",
// "zhTitle": "任务",
// "enTitle": "Task",
// "inTitle": null,
// "zh_title": "任务",
// "en_title": "Task",
// "in_title": null
// },
// {
// "menuId": "1654808791742550016",
// "pid": "1324783485328",
// "label": "车辆",
// "router": "",
// "index": "4",
// "children": [
// {
// "menuId": "1654808864970903552",
// "pid": "1654808791742550016",
// "label": "车辆状态",
// "router": "/index/vehiclestatus",
// "index": "1",
// "children": null,
// "title": "车辆状态",
// "zhTitle": "车辆状态",
// "enTitle": "Vehicle State ",
// "inTitle": null,
// "zh_title": "车辆状态",
// "en_title": "Vehicle\nState",
// "in_title": null
// },
// {
// "menuId": "1654808966481448960",
// "pid": "1654808791742550016",
// "label": "车辆控制",
// "router": "/index/vehiclecontrol",
// "index": "2",
// "children": null,
// "title": "车辆控制",
// "zhTitle": "车辆控制",
// "enTitle": "Vehicle Control",
// "inTitle": null,
// "zh_title": "车辆控制",
// "en_title": "Vehicle\nControl",
// "in_title": null
// },
// {
// "menuId": "1654808966481448961",
// "pid": "1654808791742550016",
// "label": "恢复定位",
// "router": "/index/slam",
// "index": "3",
// "children": null,
// "title": "恢复定位",
// "zhTitle": "恢复定位",
// "enTitle": "Vehicle Control",
// "inTitle": null,
// "zh_title": "恢复定位",
// "en_title": "Vehicle\nControl",
// "in_title": null
// }
// ],
// "title": "车辆",
// "zhTitle": "车辆",
// "enTitle": "Vehicle",
// "inTitle": null,
// "zh_title": "车辆",
// "en_title": "Vehicle",
// "in_title": null
// },
// {
// "menuId": "1654808657013116928",
// "pid": "1324783485328",
// "label": "故障",
// "router": "",
// "index": "3",
// "children": [
// {
// "menuId": "1654808721102082048",
// "pid": "1654808657013116928",
// "label": "故障信息",
// "router": "/index/errorinfo",
// "index": "1",
// "children": null,
// "title": "故障信息",
// "zhTitle": "故障信息",
// "enTitle": "Fault Information",
// "inTitle": null,
// "zh_title": "故障信息",
// "en_title": "Fault\nInformation",
// "in_title": null
// }
// ],
// "title": "故障",
// "zhTitle": "故障",
// "enTitle": "Fault ",
// "inTitle": null,
// "zh_title": "故障",
// "en_title": "Fault",
// "in_title": null
// },
// {
// "menuId": "1654809097821884416",
// "pid": "1324783485328",
// "label": "示教",
// "router": "/index/teach",
// "index": "5",
// "children": null,
// "title": "示教",
// "zhTitle": "示教",
// "enTitle": "Teach",
// "inTitle": null,
// "zh_title": "示教",
// "en_title": "Teach",
// "in_title": null
// },
// {
// "menuId": "1664808014131171329",
// "pid": "1324783485328",
// "label": "系统",
// "router": "",
// "index": "6",
// "children": [
// {
// "menuId": "1664808014131171330",
// "pid": "1664808014131171329",
// "label": "用户管理",
// "router": "/index/user",
// "index": "1",
// "children": null,
// "title": "用户管理",
// "zhTitle": "用户管理",
// "enTitle": "User Management",
// "inTitle": null,
// "zh_title": "用户管理",
// "en_title": "User\nManagement",
// "in_title": null
// },
// {
// "menuId": "1664808014131171331",
// "pid": "1664808014131171329",
// "label": "角色管理",
// "router": "/index/role",
// "index": "2",
// "children": null,
// "title": "角色管理",
// "zhTitle": "角色管理",
// "enTitle": "Role Management",
// "inTitle": null,
// "zh_title": "角色管理",
// "en_title": "Role\nManagement",
// "in_title": null
// },
// {
// "menuId": "1664808014131171335",
// "pid": "1664808014131171329",
// "label": "系统管理",
// "router": "/index/system",
// "index": "3",
// "children": null,
// "title": "系统管理",
// "zhTitle": "系统管理",
// "enTitle": "System Param",
// "inTitle": null,
// "zh_title": "系统管理",
// "en_title": "System\nParam",
// "in_title": null
// },
// {
// "menuId": "1664808014131171334",
// "pid": "1664808014131171329",
// "label": "开发者选项",
// "router": "/index/developer",
// "index": "4",
// "children": null,
// "title": "开发者选项",
// "zhTitle": "开发者选项",
// "enTitle": "Developer Param",
// "inTitle": null,
// "zh_title": "开发者选项",
// "en_title": "Developer\nParam",
// "in_title": null
// },
// {
// "menuId": "1664808014131171336",
// "pid": "1664808014131171329",
// "label": "远程支持",
// "router": "/index/remote",
// "index": "5",
// "children": null,
// "title": "远程支持",
// "zhTitle": "远程支持",
// "enTitle": "Remote Support",
// "inTitle": null,
// "zh_title": "远程支持",
// "en_title": "Remote\nSupport",
// "in_title": null
// }
// ],
// "title": "系统",
// "zhTitle": "系统",
// "enTitle": "System",
// "inTitle": null,
// "zh_title": "系统",
// "en_title": "System",
// "in_title": null
// }
// ]
// return res
// }
// 用户退出
export const authLogout = () => post('auth/logout', {

View File

@@ -1,4 +1,69 @@
/* eslint-disable */
export const queryTaskList = () => {
let res = {
code: '1',
result: [{next_point_code: '3', task_status: '01'}, {next_point_code: '4', task_status: '00'}, {next_point_code: '5', task_status: '00'}]
}
return res
}
export const querySingleTask = () => {
let res = {
code: '1',
result: {'next_point_code': '4'},
desc: 'ok'
}
return res
}
export const queryPoint = () => {
let res = {
code: '1',
result: [
{
point_code: '01',
code_name: '18-一线起升电机',
en_code_name: 'english-test'
},
{
point_code: '02',
code_name: '二楼中间层休息点位与茶水间的充电桩交叉点1',
en_code_name: 'english-002'
},
{
point_code: '3',
code_name: 'A-ZD103'
},
{
point_code: '4',
code_name: 'A-ZD101'
},
{
point_code: '5',
code_name: 'A-ZD101'
},
{
point_code: '6',
code_name: 'A-ZD101'
},
{
point_code: '7',
code_name: '二楼中间层休息点位与茶水间的充电桩交叉点1'
},
{
point_code: '8',
code_name: '我是一个超级长的标题,显示不下'
},
{
point_code: '9',
code_name: 'aaammm brown head big so daijgsd jigna whcignaig ijanoghoniojojio jsi '
},
{
point_code: '10',
code_name: 'A-ZD101'
}
]
}
return res
}
export const sysMenuBuild = () => {
let res = [
{

View File

@@ -1,10 +1,12 @@
/** 10.4寸屏4:3的1366*768 */
// apt设备尺寸分辨率1024*768 现在新设备2560*1440
(function (doc, win) {
var docEl = doc.documentElement
var resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'
var recalc = function () {
var clientWidth = docEl.clientWidth
if (!clientWidth) return
docEl.style.fontSize = 100 * (clientWidth / 1920) + 'px'
docEl.style.fontSize = 100 * (clientWidth / 1366) + 'px'
}
if (!doc.addEventListener) return
win.addEventListener(resizeEvt, recalc, false)

View File

@@ -28,7 +28,8 @@ module.exports = {
button1: 'Auto Pickup',
button2: 'Auto Release',
button3: 'Input Target Position',
button4: 'Set Target Position'
button4: 'Set Target Position',
button5: 'Task Distribution'
},
tasklists: {
topinfo: 'Task Management',

View File

@@ -28,7 +28,8 @@ module.exports = {
button1: '自动取货',
button2: '自动放货',
button3: '输入点位',
button4: '定位目标站点'
button4: '定位目标站点',
button5: '任务下发'
},
tasklists: {
topinfo: '任务管理',

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -5,448 +5,184 @@
<div class="title_wrap">
<h2>{{ $t('carrypoint.topinfo') }}</h2>
</div>
<div class="box1">
<div class="point-box">
<div class="point" :class="{'statusbg':startObj === e.point_code,'returnbg':returnObj === e.point_code}" v-for="e in dataList" :key="e.point_code" @click="toRadio(e)">
<div class="popover" v-if="hover.length > 20 && hover === e.code_name">
{{hover}}
<span class="popper_arrow"></span>
</div>
{{e.code_name}}
<!-- <span class="ellipsis">{{e.code_name}}</span> -->
<!-- <span style="display: inline-block; width: 0;">{{e.code_name}}</span> -->
<div class="page_container">
<div class="grid_wrapper">
<div class="point_item" v-for="e in dataList" :key="e.point_code" :class="{'point_checked': pkId === e.point_code}" ref="point" @click="toRadio(e)">
<p>{{e.code_name}}</p>
<div v-show="pkId === e.point_code" class="point_item point_item_hover">{{e.code_name}}</div>
</div>
</div>
</div>
<div class="box2 buttons_wrapper">
<!-- <button class="button_control" :class="{'button_control_disabled':returnObj}" @click="toSure(startObj, '3')"><p>{{ $t('carrypoint.button1') }}</p></button> -->
<button class="button_control" @click="toSure(startObj, '3')"><p>{{ $t('carrypoint.button1') }}</p></button>
<button class="button_control" @click="toSure(startObj, '4')"><p>{{ $t('carrypoint.button2') }}</p></button>
<button class="button_control" @click="showDialog('1')"><p>{{ $t('carrypoint.button3') }}</p></button>
<!-- <button class="button_control" @click="showDialog('2')"><p>{{ $t('carrypoint.button4') }}</p></button> -->
<button class="button_control" @click="toSure(startObj, '1', returnObj)"><p>{{ $t('carrypoint.button4') }}</p></button>
</div>
</div>
<jxDialog
ref="child"
:title="type === '1' ? $t('carrypoint.dialoginfo') : $t('carrypoint.dialogtip')"
:type="type"
:unclick="unclick"
@toSure="toSureDialog"
@toCancle="toCancle"
>
<div v-if="type === '1'" class="form_wraper">
<div class="form">
<div class="form_item">
<div class="form_item__label"><i>*</i>{{ $t('carrypoint.pointcode') }}</div>
<div class="form_item__content">
<!-- <input type="text" class="form_item__input" v-model="pointcode" @focus="show" data-layout="normal"> -->
<keyboard-input
inputClass="form_item__input"
keyboardClass="pointcode"
:value="pointcode"
@inputChange="inputChange1"
@inputFocus="inputFocus"
></keyboard-input>
</div>
</div>
<div class="form_item">
<div class="form_item__label">{{ $t('carrypoint.returnsitecode') }}</div>
<div class="form_item__content">
<!-- <input type="text" class="form_item__input" v-model="returnsitecode" @focus="show" data-layout="normal"> -->
<keyboard-input
inputClass="form_item__input"
keyboardClass="returnsitecode"
:value="returnsitecode"
@inputChange="inputChange2"
@inputFocus="inputFocus2"
></keyboard-input>
<div class="buttons_wrapper">
<button class="button_control" :class="{'button_control_gray': !pkId || active}" :disabled="disabled" @click="_confirmPoint('3')"><p>{{ $t('carrypoint.button1') }}</p></button>
<button class="mgl20 button_control" :class="{'button_control_gray': !pkId || active}" :disabled="disabled" @click="_confirmPoint('4')"><p>{{ $t('carrypoint.button2') }}</p></button>
<button class="mgl20 button_control button_control_disabled" :class="{'button_control_gray': !pkId || !active}" :disabled="disabled" @click="_deleteSingleTask"><p>{{ $t('tasklists.button3') }}</p></button>
<button class="mgl20 button_control" :class="{'button_control_gray': !pkId || active}" :disabled="disabled" @click="_confirmPoint('1')"><p>{{ $t('carrypoint.button5') }}</p></button>
</div>
</div>
</div>
</div>
<div v-if="type === '2'" class="form_wraper">
<div class="form">
<div class="form_item">
<div class="form_item__label">{{ $t('carrypoint.returnsite') }}</div>
<div class="form_item__content">
<el-select v-model="value" filterable :placeholder="$t('common.pleaseselect')">
<el-option
v-for="item in options"
:key="item.point_code"
:label="$i18n.locale === 'en-us' ? item.en_code_name : item.code_name"
:value="item.point_code">
</el-option>
</el-select>
</div>
</div>
</div>
</div>
</jxDialog>
</div>
<vue-touch-keyboard id="keyboard" :options="keyoptions" v-if="visible" :layout="layout" :cancel="hide" :accept="accept" :input="input" :next="next" />
</div>
</template>
<script>
import jxDialog from '@components/dialog.vue'
import KeyboardInput from '@components/keyboard-input'
import {queryPoint, confirmPoint} from '@/config/getData.js'
// import {queryPoint, querySingleTask} from '@/config/mork.js'
import {queryPoint, querySingleTask, confirmPoint, deleteSingleTask} from '@/config/getData.js'
export default {
name: 'CarryPoint',
components: {
jxDialog,
KeyboardInput
},
data () {
return {
interTime: this.$store.getters.setTime,
timer: null,
type: '',
title: '',
pointcode: '',
returnsitecode: '',
unclick: false,
disabled: false,
visible: false,
layout: 'normal',
input: null,
keyoptions: {
useKbEvents: false,
preventClickEvent: false
},
statusbg: false,
selectObj: {},
startObj: '', // 起始点
returnObj: '', // 返回点
value: '',
hover: '', // 隐藏内容
dataList: []
// dataList: [
// {
// point_code: '01',
// code_name: '18-一线起升电机',
// en_code_name: 'english-test'
// },
// {
// point_code: '02',
// code_name: 'A-ZD102',
// en_code_name: 'english-002'
// },
// {
// point_code: '3',
// code_name: 'A-ZD103'
// },
// {
// point_code: '4',
// code_name: 'A-ZD101'
// },
// {
// point_code: '5',
// code_name: 'A-ZD101'
// },
// {
// point_code: '6',
// code_name: 'A-ZD101'
// },
// {
// point_code: '7',
// code_name: '二楼中间层休息点位与茶水间的充电桩交叉点1'
// },
// {
// point_code: '8',
// code_name: '我是一个超级长的标题,显示不下'
// },
// {
// point_code: '9',
// code_name: 'aaammm brown head big so daijgsd jigna whcignaig ijanoghoniojojio jsi '
// },
// {
// point_code: '10',
// code_name: 'A-ZD101'
// },
// {
// point_code: '11',
// code_name: 'A-ZD101'
// },
// {
// point_code: '12',
// code_name: 'A-ZD101'
// },
// {
// point_code: '13',
// code_name: 'A-ZD101'
// },
// {
// point_code: '14',
// code_name: 'A-ZD101'
// },
// {
// point_code: '15',
// code_name: 'A-ZD101'
// },
// {
// point_code: '16',
// code_name: 'A-ZD101'
// },
// {
// point_code: '17',
// code_name: 'A-ZD101'
// },
// {
// point_code: '18',
// code_name: 'A-ZD101'
// },
// {
// point_code: '19',
// code_name: 'A-ZD101'
// },
// {
// point_code: '20',
// code_name: 'A-ZD101'
// },
// {
// point_code: '21',
// code_name: 'A-ZD101'
// },
// {
// point_code: '22',
// code_name: 'A-ZD101'
// },
// {
// point_code: '23',
// code_name: 'A-ZD101'
// },
// {
// point_code: '24',
// code_name: 'A-ZD101'
// },
// {
// point_code: '25',
// code_name: 'A-ZD101'
// },
// {
// point_code: '26',
// code_name: 'A-ZD101'
// }
// ]
pkId: '',
dataList: [],
active: false
}
},
created () {
this.initData()
},
beforeDestroy () {
if (this.timer) {
clearInterval(this.timer)
}
},
methods: {
showDialog (type, e) {
this.type = type
this.$refs.child.active = true
switch (type) {
case '1':
this.startObj = ''
this.returnObj = ''
this.pointcode = ''
this.returnsitecode = ''
this.unclick = true
break
case '2':
this.options = [...this.dataList]
this.unclick = true
break
}
refresh () {
this._querySingleTask()
this.timer = setInterval(() => {
this._querySingleTask()
}, this.interTime)
},
toSureDialog (type) {
switch (type) {
case '1':
this.confirmPoint(this.pointcode, '1', this.returnsitecode)
this.$refs.child.active = false
break
case '2':
if (this.value) {
this.confirmPoint(this.startObj, '1', this.value)
this.value = ''
}
break
}
},
toCancle (type) {
switch (type) {
case '1':
break
case '2':
this.confirmPoint(this.startObj, '1', '')
this.value = ''
break
}
this.hide()
},
inputFocus () {
this.visible = false
},
inputFocus2 () {
this.visible = false
},
hide () {
this.visible = false
},
inputChange1 (val) {
this.pointcode = val
// 限制只能输入数字,后端校验
// this.pointcode = val.replace(/[^\d]/g, '')
},
inputChange2 (val) {
this.returnsitecode = val
},
// 这个接口需要放到agv上去才行
async initData () {
let res = await queryPoint()
if (res.code === '1') {
this.dataList = res.result
this.pkId = ''
this.active = false
this.dataList = [...res.result]
this.dataList.map(el => {
this.$set(el, 'checked', false)
})
this.refresh()
} else {
this.toast(res.desc)
}
},
async confirmPoint (pcode, type, ncode) {
let res = await confirmPoint(pcode, type, ncode)
async _querySingleTask () {
let res = await querySingleTask()
if (res.code === '1') {
this.toast(res.desc)
this.selectObj = {}
if (res.hasOwnProperty('result')) {
this.pkId = res.result.next_point_code
this.active = true
this.dataList.map(el => {
el.checked = true
})
} else {
this.active = false
this.dataList.map(el => {
el.checked = false
})
}
} else {
this.toast(res.desc)
}
this.$refs.child.active = false
this.$refs.child.disabled = false
},
async _deleteSingleTask () {
this.disabled = true
if (!this.pkId || !this.active) {
this.disabled = false
return
}
try {
let res = await deleteSingleTask(this.pkId)
if (this.timer) {
clearInterval(this.timer)
}
this.toast(res.desc)
this.pkId = ''
setTimeout(() => {
this.refresh()
}, 1000)
this.disabled = false
} catch (e) {
this.disabled = false
}
},
async _confirmPoint (type) {
this.disabled = true
if (!this.pkId || this.active) {
this.disabled = false
return
}
try {
let res = await confirmPoint(this.pkId, type)
if (this.timer) {
clearInterval(this.timer)
}
this.toast(res.desc)
this.pkId = ''
setTimeout(() => {
this.refresh()
}, 1000)
this.disabled = false
} catch (e) {
this.disabled = false
}
},
toRadio (e) {
console.log('seletobj====', e)
this.selectObj = e
if (this.startObj && this.returnObj) {
// 已选中情况下清空
this.startObj = ''
this.returnObj = ''
// this.toast('已选点已清空')
if (e.checked) {
return
}
if (!this.startObj) {
this.startObj = e.point_code
let tipText = this.$i18n.locale === 'en-us' ? 'End point selected' : '终点已选中'
this.toast(tipText)
// this.toast('终点已选中')
return
this.pkId = this.pkId === e.point_code ? '' : e.point_code
}
if (this.startObj && !this.returnObj) {
let tipText = this.$i18n.locale === 'en-us' ? 'End point selected' : '终点已选中'
this.toast(tipText)
// this.toast('终点已选中')
if (this.startObj !== e.point_code) {
this.returnObj = e.point_code
let tipText = this.$i18n.locale === 'en-us' ? 'Return point selected' : '返回点已选中'
this.toast(tipText)
// this.toast('返回点已选中')
}
}
},
toSure (pcode, type, ncode) {
if ((type === '3' || type === '4') && this.returnObj) {
return
}
if ((type === '3' || type === '4') && this.startObj) {
this.confirmPoint(pcode, type, ncode)
}
if (type === '1' && this.startObj) {
this.confirmPoint(pcode, type, ncode)
}
}
// handleMouseenter (e) {
// console.log('ee', e)
// // this.hover = e.code_name
// }
}
}
</script>
<style lang="stylus" scoped>
.ellipsis {
overflow: hidden; /* 确保超出容器的文本被裁剪 */
white-space: nowrap; /* 确保文本在一行内显示,不换行 */
text-overflow: ellipsis; /* 使用省略号表示文本溢出 */
width: 90%;
}
.con
float left
.box0
width 1586px
height 102px
background center / 100% 100% url(../../../images/new/bg-task-r1.png) no-repeat
.title
font-size 36px
color #F6F9FE
padding-left 39px
padding-top 48px
.box1
// width 1592px
// height 819px
height 800px
background center / 100% 100% url(../../../images/new/bg-task-r2.png) no-repeat
padding-top 28px
padding-left 44px
.point-box
width 100%
height 600px
overflow-y scroll
.page_container
padding 31px 31px 31px 45px
.grid_wrapper
display flex
flex-wrap wrap
.point
width 248px
height 134px
color #e1e9f4
font-size 26px
text-align center
margin-right 3px
margin-bottom 13px
background center / 100% 100% url(../../../images/new/bg2.png) no-repeat
justify-content flex-start
align-content flex-start
height calc(100% - 122px)
overflow-y auto
.buttons_wrapper
display flex
justify-content center
align-items center
.point_item
position relative
overflow hidden
text-overflow ellipsis
.statusbg
box-sizing border-box
color #58e9ff
background center / 100% 100% url(../../../images/new/bg1.png) no-repeat !important
.returnbg
box-sizing border-box
color #ff0
background center / 100% 100% url(../../../images/new/bg1.png) no-repeat !important
.box2
position fixed
left 310px
bottom 50px
.enClass .button_control p
display: flex;
align-items: center;
justify-content: center;
width calc(100% / 6)
height 134px
font-family 'SourceHanSansCN-Bold'
font-size 28px
.popover
top 10px
width 240px
transform-origin center bottom
z-index 2099
// display none
padding 8px 20px
line-height 32px
color #B4C1D8
padding 14px 20px
background center / 100% 100% url(../../../images/new/bg2.png) no-repeat
p
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3; /* 定义显示的行数 */
overflow: hidden;
text-overflow: ellipsis;
.point_checked
color #3CC1FF
background-image url(../../../images/new/bg1.png)
.point_item_hover
position absolute
background #fff
min-width 150px
border-radius 4px
border 1px solid #ebeef5
padding 12px
z-index 2000
color #606266
line-height 1.4
text-align justify
font-size 14px
box-shadow 0 2px 12px 0 rgba(0,0,0,.1)
word-break break-all
.popper_arrow
position relative
width 0px
height 0px
border-style solid
top 81px
left 50%
border-width 10px
border-color #fff transparent transparent transparent
width 100%
height auto
min-height 100%
color #3CC1FF
background #152755 center / 100% 100% url(../../../images/new/bg1.png) no-repeat
top 0
left 0
z-index 10
</style>

View File

@@ -0,0 +1,452 @@
<template>
<div class="main-container">
<div class="right_side">
<div class="content_wrap">
<div class="title_wrap">
<h2>{{ $t('carrypoint.topinfo') }}</h2>
</div>
<div class="box1">
<div class="point-box">
<div class="point" :class="{'statusbg':startObj === e.point_code,'returnbg':returnObj === e.point_code}" v-for="e in dataList" :key="e.point_code" @click="toRadio(e)">
<div class="popover" v-if="hover.length > 20 && hover === e.code_name">
{{hover}}
<span class="popper_arrow"></span>
</div>
{{e.code_name}}
<!-- <span class="ellipsis">{{e.code_name}}</span> -->
<!-- <span style="display: inline-block; width: 0;">{{e.code_name}}</span> -->
</div>
</div>
</div>
<div class="box2 buttons_wrapper">
<!-- <button class="button_control" :class="{'button_control_disabled':returnObj}" @click="toSure(startObj, '3')"><p>{{ $t('carrypoint.button1') }}</p></button> -->
<button class="button_control" @click="toSure(startObj, '3')"><p>{{ $t('carrypoint.button1') }}</p></button>
<button class="button_control" @click="toSure(startObj, '4')"><p>{{ $t('carrypoint.button2') }}</p></button>
<button class="button_control" @click="showDialog('1')"><p>{{ $t('carrypoint.button3') }}</p></button>
<!-- <button class="button_control" @click="showDialog('2')"><p>{{ $t('carrypoint.button4') }}</p></button> -->
<button class="button_control" @click="toSure(startObj, '1', returnObj)"><p>{{ $t('carrypoint.button4') }}</p></button>
</div>
</div>
<jxDialog
ref="child"
:title="type === '1' ? $t('carrypoint.dialoginfo') : $t('carrypoint.dialogtip')"
:type="type"
:unclick="unclick"
@toSure="toSureDialog"
@toCancle="toCancle"
>
<div v-if="type === '1'" class="form_wraper">
<div class="form">
<div class="form_item">
<div class="form_item__label"><i>*</i>{{ $t('carrypoint.pointcode') }}</div>
<div class="form_item__content">
<!-- <input type="text" class="form_item__input" v-model="pointcode" @focus="show" data-layout="normal"> -->
<keyboard-input
inputClass="form_item__input"
keyboardClass="pointcode"
:value="pointcode"
@inputChange="inputChange1"
@inputFocus="inputFocus"
></keyboard-input>
</div>
</div>
<div class="form_item">
<div class="form_item__label">{{ $t('carrypoint.returnsitecode') }}</div>
<div class="form_item__content">
<!-- <input type="text" class="form_item__input" v-model="returnsitecode" @focus="show" data-layout="normal"> -->
<keyboard-input
inputClass="form_item__input"
keyboardClass="returnsitecode"
:value="returnsitecode"
@inputChange="inputChange2"
@inputFocus="inputFocus2"
></keyboard-input>
</div>
</div>
</div>
</div>
<div v-if="type === '2'" class="form_wraper">
<div class="form">
<div class="form_item">
<div class="form_item__label">{{ $t('carrypoint.returnsite') }}</div>
<div class="form_item__content">
<el-select v-model="value" filterable :placeholder="$t('common.pleaseselect')">
<el-option
v-for="item in options"
:key="item.point_code"
:label="$i18n.locale === 'en-us' ? item.en_code_name : item.code_name"
:value="item.point_code">
</el-option>
</el-select>
</div>
</div>
</div>
</div>
</jxDialog>
</div>
<vue-touch-keyboard id="keyboard" :options="keyoptions" v-if="visible" :layout="layout" :cancel="hide" :accept="accept" :input="input" :next="next" />
</div>
</template>
<script>
import jxDialog from '@components/dialog.vue'
import KeyboardInput from '@components/keyboard-input'
import {queryPoint, confirmPoint} from '@/config/getData.js'
export default {
name: 'CarryPoint',
components: {
jxDialog,
KeyboardInput
},
data () {
return {
type: '',
title: '',
pointcode: '',
returnsitecode: '',
unclick: false,
disabled: false,
visible: false,
layout: 'normal',
input: null,
keyoptions: {
useKbEvents: false,
preventClickEvent: false
},
statusbg: false,
selectObj: {},
startObj: '', // 起始点
returnObj: '', // 返回点
value: '',
hover: '', // 隐藏内容
dataList: []
// dataList: [
// {
// point_code: '01',
// code_name: '18-一线起升电机',
// en_code_name: 'english-test'
// },
// {
// point_code: '02',
// code_name: 'A-ZD102',
// en_code_name: 'english-002'
// },
// {
// point_code: '3',
// code_name: 'A-ZD103'
// },
// {
// point_code: '4',
// code_name: 'A-ZD101'
// },
// {
// point_code: '5',
// code_name: 'A-ZD101'
// },
// {
// point_code: '6',
// code_name: 'A-ZD101'
// },
// {
// point_code: '7',
// code_name: '二楼中间层休息点位与茶水间的充电桩交叉点1'
// },
// {
// point_code: '8',
// code_name: '我是一个超级长的标题,显示不下'
// },
// {
// point_code: '9',
// code_name: 'aaammm brown head big so daijgsd jigna whcignaig ijanoghoniojojio jsi '
// },
// {
// point_code: '10',
// code_name: 'A-ZD101'
// },
// {
// point_code: '11',
// code_name: 'A-ZD101'
// },
// {
// point_code: '12',
// code_name: 'A-ZD101'
// },
// {
// point_code: '13',
// code_name: 'A-ZD101'
// },
// {
// point_code: '14',
// code_name: 'A-ZD101'
// },
// {
// point_code: '15',
// code_name: 'A-ZD101'
// },
// {
// point_code: '16',
// code_name: 'A-ZD101'
// },
// {
// point_code: '17',
// code_name: 'A-ZD101'
// },
// {
// point_code: '18',
// code_name: 'A-ZD101'
// },
// {
// point_code: '19',
// code_name: 'A-ZD101'
// },
// {
// point_code: '20',
// code_name: 'A-ZD101'
// },
// {
// point_code: '21',
// code_name: 'A-ZD101'
// },
// {
// point_code: '22',
// code_name: 'A-ZD101'
// },
// {
// point_code: '23',
// code_name: 'A-ZD101'
// },
// {
// point_code: '24',
// code_name: 'A-ZD101'
// },
// {
// point_code: '25',
// code_name: 'A-ZD101'
// },
// {
// point_code: '26',
// code_name: 'A-ZD101'
// }
// ]
}
},
created () {
this.initData()
},
methods: {
showDialog (type, e) {
this.type = type
this.$refs.child.active = true
switch (type) {
case '1':
this.startObj = ''
this.returnObj = ''
this.pointcode = ''
this.returnsitecode = ''
this.unclick = true
break
case '2':
this.options = [...this.dataList]
this.unclick = true
break
}
},
toSureDialog (type) {
switch (type) {
case '1':
this.confirmPoint(this.pointcode, '1', this.returnsitecode)
this.$refs.child.active = false
break
case '2':
if (this.value) {
this.confirmPoint(this.startObj, '1', this.value)
this.value = ''
}
break
}
},
toCancle (type) {
switch (type) {
case '1':
break
case '2':
this.confirmPoint(this.startObj, '1', '')
this.value = ''
break
}
this.hide()
},
inputFocus () {
this.visible = false
},
inputFocus2 () {
this.visible = false
},
hide () {
this.visible = false
},
inputChange1 (val) {
this.pointcode = val
// 限制只能输入数字,后端校验
// this.pointcode = val.replace(/[^\d]/g, '')
},
inputChange2 (val) {
this.returnsitecode = val
},
// 这个接口需要放到agv上去才行
async initData () {
let res = await queryPoint()
if (res.code === '1') {
this.dataList = res.result
} else {
this.toast(res.desc)
}
},
async confirmPoint (pcode, type, ncode) {
let res = await confirmPoint(pcode, type, ncode)
if (res.code === '1') {
this.toast(res.desc)
this.selectObj = {}
} else {
this.toast(res.desc)
}
this.$refs.child.active = false
this.$refs.child.disabled = false
},
toRadio (e) {
console.log('seletobj====', e)
this.selectObj = e
if (this.startObj && this.returnObj) {
// 已选中情况下清空
this.startObj = ''
this.returnObj = ''
// this.toast('已选点已清空')
return
}
if (!this.startObj) {
this.startObj = e.point_code
let tipText = this.$i18n.locale === 'en-us' ? 'End point selected' : '终点已选中'
this.toast(tipText)
// this.toast('终点已选中')
return
}
if (this.startObj && !this.returnObj) {
let tipText = this.$i18n.locale === 'en-us' ? 'End point selected' : '终点已选中'
this.toast(tipText)
// this.toast('终点已选中')
if (this.startObj !== e.point_code) {
this.returnObj = e.point_code
let tipText = this.$i18n.locale === 'en-us' ? 'Return point selected' : '返回点已选中'
this.toast(tipText)
// this.toast('返回点已选中')
}
}
},
toSure (pcode, type, ncode) {
if ((type === '3' || type === '4') && this.returnObj) {
return
}
if ((type === '3' || type === '4') && this.startObj) {
this.confirmPoint(pcode, type, ncode)
}
if (type === '1' && this.startObj) {
this.confirmPoint(pcode, type, ncode)
}
}
// handleMouseenter (e) {
// console.log('ee', e)
// // this.hover = e.code_name
// }
}
}
</script>
<style lang="stylus" scoped>
.ellipsis {
overflow: hidden; /* 确保超出容器的文本被裁剪 */
white-space: nowrap; /* 确保文本在一行内显示,不换行 */
text-overflow: ellipsis; /* 使用省略号表示文本溢出 */
width: 90%;
}
.con
float left
.box0
width 1586px
height 102px
background center / 100% 100% url(../../../images/new/bg-task-r1.png) no-repeat
.title
font-size 36px
color #F6F9FE
padding-left 39px
padding-top 48px
.box1
// width 1592px
// height 819px
height 800px
background center / 100% 100% url(../../../images/new/bg-task-r2.png) no-repeat
padding-top 28px
padding-left 44px
.point-box
width 100%
height 600px
overflow-y scroll
display flex
flex-wrap wrap
.point
width 248px
height 134px
color #e1e9f4
font-size 26px
text-align center
margin-right 3px
margin-bottom 13px
background center / 100% 100% url(../../../images/new/bg2.png) no-repeat
display flex
justify-content center
align-items center
position relative
overflow hidden
text-overflow ellipsis
.statusbg
box-sizing border-box
color #58e9ff
background center / 100% 100% url(../../../images/new/bg1.png) no-repeat !important
.returnbg
box-sizing border-box
color #ff0
background center / 100% 100% url(../../../images/new/bg1.png) no-repeat !important
.box2
position fixed
left 310px
bottom 50px
.enClass .button_control p
font-size 28px
.popover
top 10px
width 240px
transform-origin center bottom
z-index 2099
// display none
padding 8px 20px
position absolute
background #fff
min-width 150px
border-radius 4px
border 1px solid #ebeef5
padding 12px
z-index 2000
color #606266
line-height 1.4
text-align justify
font-size 14px
box-shadow 0 2px 12px 0 rgba(0,0,0,.1)
word-break break-all
.popper_arrow
position relative
width 0px
height 0px
border-style solid
top 81px
left 50%
border-width 10px
border-color #fff transparent transparent transparent
</style>

View File

@@ -96,8 +96,8 @@
<script>
import jxTime from '@components/time.vue'
import jxDialog from '@components/dialog.vue'
import { sysMenuBuild } from '@/config/mork.js'
import { updatePass, authLogout } from '@config/getData2.js'
// import { sysMenuBuild } from '@/config/mork.js'
import { sysMenuBuild, updatePass, authLogout } from '@config/getData2.js'
import { sendWebsocket, closeWebsocket } from '@/config/websocket.js'
import {encrypt} from '../../../main.js'
export default {

View File

@@ -425,6 +425,8 @@
_wh(331px, 88px)
.button_control_disabled
background center url(../images/new/button_disabled.png) no-repeat
.button_control_gray
background center url(../images/new/button_gray.png) no-repeat
.grid_wrapper
width 100%
table

View File

@@ -145,3 +145,7 @@ input::-webkit-input-placeholder {
.mgl10 {
margin-left: .1rem !important;
}
.mgl20 {
margin-left: .2rem !important;
}