123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384 |
- <template>
- <div>
- <div style="border: 1px #939393 dashed; padding: 10px; margin-bottom: 5px">
- <div
- class="vue-grid-item"
- :style="{
- display: 'flex',
- height: '100px',
- background: editModelList.backgroundColor,
- }"
- >
- <div style="padding: 0px 20px; text-align: center; margin: auto 0">
- <img :src="editModelList.iconPath" alt="" />
- </div>
- <div style="margin: auto 0">
- <div
- :style="{
- color: editModelList.dataNameColor,
- 'font-size': editModelList.dataNameFont + 'px',
- }"
- >
- {{ editModelList.dataName }}
- </div>
- <div
- :style="{
- color: editModelList.dataValueColor,
- 'font-size': editModelList.dataValueFont + 'px',
- 'font-weight': 800,
- }"
- >
- {{ editModelList.textValue }}
- </div>
- </div>
- </div>
- </div>
- <div style="border: 1px red dashed; padding: 10px">
- <div class="widget-form">
- <div>
- <div class="ant-row">
- <div
- class="ant-col"
- style="display: flex; height: 32px; line-height: 32px"
- >
- <div class="ant-row ant-legacy-form-item">
- <div class="ant-col ant-legacy-form-item-label">
- <label class="" style="margin-right: 10px" title="数据名称:">
- 数据名称:
- </label>
- </div>
- <div class="ant-col ant-legacy-form-item-control-wrapper">
- <div class="ant-legacy-form-item-control">
- <span class="ant-legacy-form-item-children">
- <el-input
- v-model="editModelList.dataName"
- placeholder="Please input"
- />
- </span>
- </div>
- </div>
- </div>
- <div class="ant-row ant-legacy-form-item">
- <div class="ant-col ant-legacy-form-item-label">
- <label class="" style="margin: 0px 10px" title="数据类型">
- 数据类型:
- </label>
- </div>
- <div class="ant-col ant-legacy-form-item-control-wrapper">
- <el-select
- v-model="dataTypeValue"
- filterable
- placeholder="Select"
- >
- <el-option
- v-for="item in dataTypeList"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- />
- </el-select>
- </div>
- </div>
- <div class="ant-row ant-legacy-form-item">
- <div class="ant-col ant-legacy-form-item-label">
- <label class="" style="margin: 0px 10px" title="数据取值">
- 数据取值:
- </label>
- </div>
- <div class="ant-col ant-legacy-form-item-control-wrapper">
- <div class="ant-legacy-form-item-control">
- <el-select
- v-model="dataValue"
- filterable
- placeholder="Select"
- >
- <el-option
- v-for="item in dataValueList"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- />
- </el-select>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div style="margin: 20px 0px 10px">
- <div class="ant-row">
- <div class="ant-col ant-col-3">
- <p>背景颜色</p>
- <el-color-picker
- v-model="editModelList.backgroundColor"
- show-alpha
- />
- </div>
- <div class="ant-col ant-col-3">
- <p>数据名称颜色</p>
- <el-color-picker
- v-model="editModelList.dataNameColor"
- show-alpha
- />
- </div>
- <div class="ant-col ant-col-3">
- <p>数据值颜色</p>
- <el-color-picker
- v-model="editModelList.dataValueColor"
- show-alpha
- />
- </div>
- <div class="ant-col ant-col-3">
- <p>数据名称字体大小</p>
- <el-input-number
- v-model="editModelList.dataNameFont"
- :min="1"
- :max="100"
- controls-position="right"
- @change="nameSizeHandleChange"
- />
- </div>
- <div class="ant-col ant-col-3">
- <p>数据值字体大小</p>
- <el-input-number
- v-model="editModelList.dataValueFont"
- :min="1"
- :max="100"
- label="px"
- controls-position="right"
- @change="nameSizeHandleChange"
- />
- </div>
- <div class="ant-col ant-col-3">
- <p>选择图标</p>
- <div
- class="ant-select ant-select-single ant-select-show-arrow"
- style="width: 60px"
- >
- <el-select
- style="width: 100%"
- v-model="editModelList.iconPath"
- placeholder="请选择图标"
- @change="imgChangeSelection"
- ref="refSelect"
- popper-class="refSelectClass"
- class="refSelectClass"
- >
- <el-option
- v-for="item in imgArray"
- :key="item.id"
- :value="item.value"
- >
- <div class="option_box">
- <el-image class="option_img" :src="item.value"></el-image>
- </div>
- </el-option>
- </el-select>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </template>
- <script>
- import { defineComponent, ref, onMounted } from 'vue'
- export default defineComponent({
- props: {
- editModellist: Object,
- },
- setup(props, context) {
- context
- const refSelect = ref(null)
- const editModelList = ref(props.editModellist)
- const nameSizeHandleChange = (m) => {
- console.log(m)
- }
- const imgChangeSelection = (val) => {
- refSelect.value.$el.children[0].children[0].children[0].setAttribute(
- 'style',
- `
- background: url(${val}) no-repeat;
- background-position: 10px center;
- background-size: 20px 20px;
- font-size: 0px;
- `
- )
- }
- onMounted(() => {
- refSelect.value.$el.children[0].children[0].children[0].setAttribute(
- 'style',
- `
- background: url(${props.editModellist.iconPath}) no-repeat;
- background-position: 10px center;
- background-size: 20px 20px;
- font-size: 0px;
- `
- )
- })
- return {
- editModelList,
- nameSizeHandleChange,
- imgChangeSelection,
- refSelect,
- dataTypeValue: 2,
- dataTypeList: [
- {
- value: 1,
- label: '普通文本',
- },
- {
- value: 2,
- label: '站点管理信息',
- },
- {
- value: 3,
- label: '智能设备数据',
- },
- {
- value: 4,
- label: '站点告警状态',
- },
- {
- value: 5,
- label: '站点通讯状态',
- },
- ],
- dataValue: 1,
- dataValueList: [
- {
- value: 1,
- label: '名称',
- },
- {
- value: 2,
- label: '地址',
- },
- {
- value: 3,
- label: '联系电话',
- },
- {
- value: 4,
- label: '额定容量',
- },
- {
- value: 5,
- label: '供电类型',
- },
- {
- value: 6,
- label: '电压等级',
- },
- {
- value: 7,
- label: '投运时间',
- },
- {
- value: 8,
- label: '运行天数',
- },
- ],
- imgArray: [
- {
- id: 1,
- value: 'static/assets/board_images/site.png',
- },
- {
- id: 2,
- value: 'static/assets/board_images/days.png',
- },
- {
- id: 3,
- value: 'static/assets/board_images/maxLoad.png',
- },
- {
- id: 4,
- value: 'static/assets/board_images/siteAlarm.png',
- },
- {
- id: 5,
- value: 'static/assets/board_images/siteState.png',
- },
- ],
- }
- },
- })
- </script>
- <style lang="less" scoped>
- .vue-grid-item {
- border-radius: 5px;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- }
- </style>
- <style lang="less">
- // 颜色选择器样式 开始
- .el-color-picker__icon {
- display: none;
- }
- .el-color-picker--small,
- .el-color-picker {
- height: auto;
- }
- .el-color-picker--small .el-color-picker__trigger {
- height: auto;
- width: auto;
- cursor: pointer;
- padding: 5px;
- background: rgb(255, 255, 255);
- border-radius: 1px;
- display: inline-block;
- }
- .el-color-picker__color {
- border: none;
- }
- .el-color-picker__color.is-alpha {
- width: 36px;
- height: 14px;
- }
- // 颜色选择器样式 结束
- // input框样式 开始
- .el-input-number--small {
- width: 100px;
- }
- // input框样式 结束
- // select框样式 开始
- .refSelectClass {
- max-width: 60px;
- padding: 0;
- margin: -1px;
- .el-select-dropdown__item {
- padding: 0px;
- .option_box {
- display: flex;
- align-items: center;
- height: 100%;
- width: 100%;
- margin: auto;
- .option_img {
- width: 25px;
- height: 25px;
- margin: 0 auto;
- }
- }
- }
- }
- // select框样式 结束
- </style>
|