qingzhengli
7 months ago
8 changed files with 275 additions and 163 deletions
@ -0,0 +1,220 @@ |
|||
<template> |
|||
<div class="body"> |
|||
<div class="left"> |
|||
<div class="title">路测广播列表</div> |
|||
<CheckboxGroup class="checkbox-group" gap="9px" :showIcon="true" v-model="checkList" :options="musicList" |
|||
id="otherConfig" label="deviceName"> |
|||
<template #[otherConfig]="{ data }"> |
|||
<span style="color: #6ee5fe"> {{ data.deviceName }}(当前) </span> |
|||
</template> |
|||
</CheckboxGroup> |
|||
</div> |
|||
<div class="right"> |
|||
<div class="top-content"> |
|||
<Video class="item-video" :pileNum="pileNum" /> |
|||
|
|||
<label>发布内容: </label> |
|||
<ElInput type="textarea" v-model="releaseMessage" :autosize="{ minRows: 3, maxRows: 3 }" :maxlength="150" |
|||
showWordLimit placeholder="请输入发布内容" /> |
|||
</div> |
|||
|
|||
<div class="footer"> |
|||
<Button style="background-color: rgba(0, 179, 204, 0.3)" |
|||
@click.native="(modelVisible = false), (submitting = false)"> |
|||
取消 |
|||
</Button> |
|||
<Button @click.native="handleSubmit" :loading="submitting"> |
|||
确定 |
|||
</Button> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import Dialog from "@screen/components/Dialog/index.vue"; |
|||
import Button from "@screen/components/Buttons/Button.vue"; |
|||
import Video from "@screen/components/Video"; |
|||
import CheckboxGroup from "@screen/components/FormConfig/components/ElCheckboxGroup.vue"; |
|||
|
|||
import request from "@/utils/request"; |
|||
import { getDeviceList } from "@screen/pages/Home/components/RoadAndEvents/utils/httpList.js"; |
|||
|
|||
import { Message } from "element-ui"; |
|||
|
|||
export default { |
|||
name: "BroadcastReleases", |
|||
components: { |
|||
Dialog, |
|||
Button, |
|||
Video, |
|||
CheckboxGroup, |
|||
}, |
|||
model: { |
|||
prop: "visible", |
|||
event: "update:value", |
|||
}, |
|||
props: { |
|||
visible: Boolean, |
|||
pileNum: String, |
|||
otherConfig: String, |
|||
}, |
|||
data() { |
|||
return { |
|||
submitting: false, |
|||
checkList: [], |
|||
releaseMessage: null, |
|||
musicList: [], |
|||
}; |
|||
}, |
|||
computed: { |
|||
modelVisible: { |
|||
get() { |
|||
return this.visible; |
|||
}, |
|||
set(val) { |
|||
this.$emit("update:value", val); |
|||
}, |
|||
}, |
|||
}, |
|||
created() { |
|||
getDeviceList(5).then((data) => { |
|||
if (Array.isArray(data)) |
|||
this.musicList = data.map((item) => ({ |
|||
...item, |
|||
disabled: item.deviceState != 1, |
|||
})); |
|||
}); |
|||
}, |
|||
methods: { |
|||
handleSubmit() { |
|||
if (!this.releaseMessage?.trim()) |
|||
return Message.error("发布内容不能为空!"); |
|||
if (!this.checkList.length) |
|||
return Message.error("请至少选择一个广播设备!"); |
|||
|
|||
this.submitting = true; |
|||
|
|||
request({ |
|||
url: `/broadcast/broadcastFunctionCall`, |
|||
method: "post", |
|||
data: { |
|||
name: "task-3", |
|||
outVol: "6", |
|||
priority: "1", |
|||
text: this.releaseMessage.trim(), |
|||
repeatTimes: "3", |
|||
termList: this.checkList.map((str) => JSON.parse(str)), |
|||
functionType: "startPaTts", |
|||
}, |
|||
}) |
|||
.then((data) => { |
|||
// console.log(data); |
|||
if (data.retCode == "0") { |
|||
Message.success("广播设置成功!"); |
|||
this.modelVisible = false; |
|||
} else { |
|||
Message.error("广播设置失败!"); |
|||
} |
|||
}) |
|||
.finally(() => { |
|||
this.submitting = false; |
|||
}); |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.body { |
|||
display: flex; |
|||
gap: 9px; |
|||
height: 100%; |
|||
|
|||
.left { |
|||
width: 251px; |
|||
border-radius: 3px 3px 3px 3px; |
|||
border: 1px solid #3de8ff; |
|||
padding: 3px 12px; |
|||
display: flex; |
|||
flex-direction: column; |
|||
gap: 9px; |
|||
|
|||
::v-deep .el-checkbox__label { |
|||
display: flex !important; |
|||
justify-content: space-between; |
|||
width: 100%; |
|||
|
|||
.title { |
|||
flex: 1; |
|||
width: 0; |
|||
overflow: hidden; |
|||
text-overflow: ellipsis; |
|||
word-break: keep-all; |
|||
} |
|||
|
|||
.state { |
|||
width: 18px; |
|||
height: 18px; |
|||
margin-right: 4px; |
|||
} |
|||
|
|||
.huiduButton { |
|||
background: transparent; |
|||
border: none; |
|||
height: 18px; |
|||
width: 18px; |
|||
line-height: 20px; |
|||
padding: 0; |
|||
color: #fff; |
|||
font-size: 16px; |
|||
} |
|||
|
|||
.huiduButton:hover { |
|||
color: #05afe3 !important; |
|||
} |
|||
} |
|||
|
|||
.checkbox-group { |
|||
display: flex; |
|||
flex-direction: column; |
|||
gap: 6px; |
|||
overflow: auto; |
|||
height: 100%; |
|||
flex: 1; |
|||
flex-wrap: nowrap; |
|||
} |
|||
} |
|||
|
|||
.right { |
|||
display: flex; |
|||
flex-direction: column; |
|||
justify-content: space-between; |
|||
|
|||
.top-content { |
|||
display: flex; |
|||
flex-direction: column; |
|||
gap: 9px; |
|||
|
|||
.item-video { |
|||
width: 545px; |
|||
} |
|||
|
|||
label { |
|||
font-size: 16px; |
|||
font-family: PingFang SC, PingFang SC; |
|||
font-weight: 400; |
|||
color: #3de8ff; |
|||
line-height: 19px; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
.footer { |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: flex-end; |
|||
gap: 9px; |
|||
} |
|||
</style> |
Loading…
Reference in new issue