From 4afea30fa20c6d689ce0f37e6777663535c0934f Mon Sep 17 00:00:00 2001 From: shishuaikang <280848880@qq.com> Date: 星期五, 01 十二月 2023 09:12:10 +0800 Subject: [PATCH] h5拌合站屏提交 --- web/src/views/MixingInfo/mixRatio.vue | 243 ++++++++++++++++ web/src/assets/mixing/header.png | 0 web/src/views/GoodManage/MixingScreen.vue | 202 +++++++++++++ web/src/router/index.js | 16 + web/src/api/modules/mixing.js | 5 web/src/assets/mixing/container_90.png | 0 web/src/assets/mixing/name_bg.png | 0 web/src/views/MixingInfo/mixing.vue | 310 ++++++++++++++++++++ web/src/assets/mixing/container_40.png | 0 web/src/assets/mixing/container_60.png | 0 web/src/assets/mixing/container_10.png | 0 web/src/assets/mixing/list_r_bg.png | 0 web/src/assets/mixing/list_l_bg.png | 0 web/src/assets/mixing/container_20.png | 0 web/src/assets/mixing/container_80.png | 0 web/src/assets/mixing/list_bg.png | 0 web/src/assets/mixing/container_100.png | 0 web/src/views/GoodManage/MixRatioScreen.vue | 11 web/src/views/MixingInfo/components/List.vue | 91 ++++++ 19 files changed, 877 insertions(+), 1 deletions(-) diff --git a/web/src/api/modules/mixing.js b/web/src/api/modules/mixing.js index c017b66..d91fa20 100644 --- a/web/src/api/modules/mixing.js +++ b/web/src/api/modules/mixing.js @@ -6,5 +6,8 @@ // H5搅拌站大屏展示数据信息 showHmixings: params => axios.get('/materials/suMaterialWarehouse/selectNewOneByTableNum', {params}), - + getMixing: params => + axios.get('/materials/materialRelease/siloList', {params}), + getMixRatio: params => + axios.post('/materials/materialRelease/mixingConsumeList', params), } \ No newline at end of file diff --git a/web/src/assets/mixing/container_10.png b/web/src/assets/mixing/container_10.png new file mode 100644 index 0000000..15291b0 --- /dev/null +++ b/web/src/assets/mixing/container_10.png Binary files differ diff --git a/web/src/assets/mixing/container_100.png b/web/src/assets/mixing/container_100.png new file mode 100644 index 0000000..5b73dda --- /dev/null +++ b/web/src/assets/mixing/container_100.png Binary files differ diff --git a/web/src/assets/mixing/container_20.png b/web/src/assets/mixing/container_20.png new file mode 100644 index 0000000..2bbe0dc --- /dev/null +++ b/web/src/assets/mixing/container_20.png Binary files differ diff --git a/web/src/assets/mixing/container_40.png b/web/src/assets/mixing/container_40.png new file mode 100644 index 0000000..d2f52d3 --- /dev/null +++ b/web/src/assets/mixing/container_40.png Binary files differ diff --git a/web/src/assets/mixing/container_60.png b/web/src/assets/mixing/container_60.png new file mode 100644 index 0000000..5ced4a7 --- /dev/null +++ b/web/src/assets/mixing/container_60.png Binary files differ diff --git a/web/src/assets/mixing/container_80.png b/web/src/assets/mixing/container_80.png new file mode 100644 index 0000000..38348d1 --- /dev/null +++ b/web/src/assets/mixing/container_80.png Binary files differ diff --git a/web/src/assets/mixing/container_90.png b/web/src/assets/mixing/container_90.png new file mode 100644 index 0000000..47ee2ac --- /dev/null +++ b/web/src/assets/mixing/container_90.png Binary files differ diff --git a/web/src/assets/mixing/header.png b/web/src/assets/mixing/header.png new file mode 100644 index 0000000..be0a727 --- /dev/null +++ b/web/src/assets/mixing/header.png Binary files differ diff --git a/web/src/assets/mixing/list_bg.png b/web/src/assets/mixing/list_bg.png new file mode 100644 index 0000000..462f5e3 --- /dev/null +++ b/web/src/assets/mixing/list_bg.png Binary files differ diff --git a/web/src/assets/mixing/list_l_bg.png b/web/src/assets/mixing/list_l_bg.png new file mode 100644 index 0000000..d8c7dc5 --- /dev/null +++ b/web/src/assets/mixing/list_l_bg.png Binary files differ diff --git a/web/src/assets/mixing/list_r_bg.png b/web/src/assets/mixing/list_r_bg.png new file mode 100644 index 0000000..63add79 --- /dev/null +++ b/web/src/assets/mixing/list_r_bg.png Binary files differ diff --git a/web/src/assets/mixing/name_bg.png b/web/src/assets/mixing/name_bg.png new file mode 100644 index 0000000..cf1da41 --- /dev/null +++ b/web/src/assets/mixing/name_bg.png Binary files differ diff --git a/web/src/router/index.js b/web/src/router/index.js index 2d80873..fe7eda0 100644 --- a/web/src/router/index.js +++ b/web/src/router/index.js @@ -15,6 +15,22 @@ } }, { + path: '/mixing/*', + name: 'mixing', + meta: { + title: '管片场拌合站' + }, + component: () => import('../views/MixingInfo/mixing.vue'), + }, + { + path: '/mixratio/*', + name: 'mixratio', + meta: { + title: '管片场拌合站表格' + }, + component: () => import('../views/MixingInfo/mixRatio.vue'), + }, + { path: `/mixingInfo/num=1`, name: 'mixingInfo', meta: { diff --git a/web/src/views/GoodManage/MixRatioScreen.vue b/web/src/views/GoodManage/MixRatioScreen.vue new file mode 100644 index 0000000..74753ca --- /dev/null +++ b/web/src/views/GoodManage/MixRatioScreen.vue @@ -0,0 +1,11 @@ +<template> + <div>222222222222222</div> +</template> + +<script> + +</script> + +<style lang="sass" scoped> +@import '../../style/layout-main.scss'; +</style> \ No newline at end of file diff --git a/web/src/views/GoodManage/MixingScreen.vue b/web/src/views/GoodManage/MixingScreen.vue new file mode 100644 index 0000000..5e6d786 --- /dev/null +++ b/web/src/views/GoodManage/MixingScreen.vue @@ -0,0 +1,202 @@ +<!-- 设备管理 ==> 拌合站屏管理--> +<template> + <div class="main"> + <div class="main_header"> + <div class="header_item"> + <span class="header_label">拌合站屏:</span> + <el-select size="mini" v-model="queryInfo.screen" placeholder="请选择拌合站屏"> + <el-option v-for="item in queryInfoScreens" :key="item.value" :label="item.label" + :value="item.value"></el-option> + </el-select> + </div> + <div class="header_item"> + <span class="header_label">录入方式:</span> + <el-select size="mini" v-model="queryInfo.inmode" placeholder="请选择录入方式"> + <el-option v-for="item in queryInfoInmodes" :key="item.value" :label="item.label" + :value="item.value"></el-option> + </el-select> + </div> + <div class="header_item"> + <span class="header_label">创建时间:</span> + <el-date-picker type="daterange" v-model="times" value-format="yyyy-MM-dd" start-placeholder="起始时间" + end-placeholder="结束时间" @change="changeTime" clear></el-date-picker> + </div> + <div class="header_item"> + <el-button icon="el-icon-search" v-permission="'search'" @click="queryReset">查询</el-button> + <el-button icon="el-icon-plus" v-permission="'insert'" @click="addRow">新增</el-button> + </div> + </div> + <div class="main_content"> + <div class="main_content_item" v-for="(item, index) in ['', '', '', '', '',]" :key="index"> + + </div> + </div> + + <!-- 详情dialog --> + <el-dialog width="400px" class="prop_dialog" v-if="isRenderDialog" title="详情" :visible.sync="asyncVisible"> + + <el-form class="rule_form" label-width="auto"> + + <div class="divider"></div> + + <el-form-item label="巡检任务:">{{ info.task }}</el-form-item> + + <el-form-item label="巡检标准:">{{ info.standard }}</el-form-item> + + <el-form-item label="巡检人员:">{{ info.name }}</el-form-item> + + <div class="divider"><span>巡检路线</span></div> + + <div class="regions"> + <div class="region" v-for=" item in info.regions " :key="item.regionId">{{ + item.region }} + </div> + </div> + </el-form> + </el-dialog> + + </div> +</template> +<script> +export default { + data() { + return { + loading: false, + isRenderDialog: false, + asyncVisible: false, + + info: { // 详情信息 + task: '', + standard: '', + name: '', + regions: [], + }, + userId: '', // 存储点击后的用户id + taskId: '', // 存储点击后的巡检任务id + times: [], // 时间范围 + queryInfo: { + pageNum: 1, + pageSize: 10, + inmode: '', // 录入方式 + screen: '', // 拌合站屏 + startTime: '', + endTime: '', + }, + regionInfos: { // 巡检路线详情 + isRenderDialog: false, + asyncVisible: false, + time: '', // 巡检时间 + region: '', // 巡检区域 + res: '', // 巡检结果 + img: '', // 上传的图片 + location: '', // 位置 + } + } + }, + beforeCreate() { + this.queryInfoInmodes = [ + {value: '0', label: '手动'}, + {value: '1', label: '自动'}, + ] + this.queryInfoScreens = [ + {value: '0', label: '1-1'}, + {value: '1', label: '1-2'}, + ] + this.$http = this.$api.Safety.RiskGrad.polling + }, + created() { + this.setTableColumn() + this.getLists() + }, + methods: { + // 获取table列表数据 + getLists() { + let params = this.queryInfo + this.loading = true + this.$http.taskcardGetlists(params).then(res => { + if (res.statusMsg === 'ok') { + console.log(res) + } + this.loading = false + }) + }, + // 初始化 table 配置 + setTableColumn() { + }, + addRow() { }, + // 查询按钮列表信息 + queryReset() { + this.queryInfo.pageNum = 1 + this.queryInfo.pageSize = 10 + this.getLists() + }, + changeTime(times) { + times = times || ['', ''] + this.queryInfo.startTime = times[0] + this.queryInfo.endTime = times[1] + }, + } +} +</script> + +<style lang="scss" scoped> +@import '@/style/layout-main.scss'; + +.rule_form { + color: #fff; + + ::v-deep .el-form-item__content { + display: block; + } + + .image { + flex: none; + width: 91px; + height: 120px; + margin-right: 15px; + border-radius: 5px; + border: 1px solid #0c5983; + + img { + width: 100%; + } + } +} + +.regions { + text-align: center; + + .region { + line-height: 34px; + margin-bottom: 16px; + background: rgba(56, 175, 247, .25); + cursor: pointer; + } +} + +.divider { + position: relative; + margin-bottom: 30px; + text-indent: 10px; + color: #fff; + border-left: 3px solid #18F6F8; + + &::after { + content: ""; + position: absolute; + left: 0; + bottom: -8px; + width: 100%; + padding: 20px 0; + border-bottom: 1px solid #0C4D6F; + } +} + +.main_content .main_content_item { + float: left; + width: 48%; + height: 200px; + margin: 1%; + border: 1px solid red; +} +</style> \ No newline at end of file diff --git a/web/src/views/MixingInfo/components/List.vue b/web/src/views/MixingInfo/components/List.vue new file mode 100644 index 0000000..4642226 --- /dev/null +++ b/web/src/views/MixingInfo/components/List.vue @@ -0,0 +1,91 @@ +<template> + <div class="list"> + <div class="item" v-for="item in fieldMap" :key="item.name"> + <span class="name">{{ item.name }}:</span> + <template v-if="item.formatter"> + <span class="value" :class="item.class(data)">{{ item.formatter(data) }}</span> + </template> + <template v-else> + <span class="value">{{ data && data[item.type] || '' }}</span> + </template> + + </div> + </div> +</template> +<script> +export default { + data() { + return {} + }, + props: { + data: { + type: Object, + default: () => { } + } + }, + beforeCreate() { + // 字段映射表 + this.fieldMap = [ + {name: '规格型号', type: 'spec'}, + {name: '产地名称', type: 'producer'}, + {name: '炉(批)号', type: 'stove'}, + {name: '进场数量', type: 'inNum'}, + {name: '进场日期', type: 'inDate'}, + {name: '检验日期', type: 'inspectDate'}, + { + name: '检验状态', class(row) { + let state = row && row.inspectState + return {1: 'style1', 2: 'style2', 3: 'style3'}[state] || '' + }, formatter(row) { + let state = row && row.inspectState || '' + return {1: '合格', 2: '不合格', 3: '待检测'}[state] || '' + } + }, + {name: '报告编号', type: 'reportNumber'}, + ] + }, +} +</script> + +<style scoped> +.list { + display: flex; + flex-direction: column; + height: 100%; + + .item { + display: flex; + flex: 1; + margin-top: 4px; + + .name { + margin-right: 4px; + text-indent: 6px; + white-space: nowrap; + } + + .value { + color: #03F1FF; + + &.style1 { + font-size: 1.5rem; + line-height: 1.2rem; + color: #16F849; + } + + &.style2 { + font-size: 1.5rem; + line-height: 1.2rem; + color: red; + } + + &.style3 { + font-size: 1.5rem; + line-height: 1.2rem; + color: #FF6600; + } + } + + } +} +</style> diff --git a/web/src/views/MixingInfo/mixRatio.vue b/web/src/views/MixingInfo/mixRatio.vue new file mode 100644 index 0000000..0662aa1 --- /dev/null +++ b/web/src/views/MixingInfo/mixRatio.vue @@ -0,0 +1,243 @@ +<template> + <div class="wrap"> + <div class="header"> + <div class="header_name">中铁十四局通甬站前I标管片场拌合站</div> + </div> + <div class="table"> + <div class="row title">{{ info.signboardName }}</div> + + <div class="row"> + <div class="name">工程名称</div> + <div class="value">{{ info.proName }}</div> + </div> + + <div class="row"> + <div class="name">施工单位</div> + <div class="value">{{ info.constructionUnit }}</div> + </div> + + <div class="row line"> + <div> + <div class="name">施工日期</div> + <div class="value">{{ info.saveStamp }}</div> + </div> + <div> + <div class="name">施工部位</div> + <div class="value">{{ info.construction }}</div> + </div> + </div> + + <div class="row" v-for="item in dataLists" :key="item.name"> + <div class="name">{{ item.name }}</div> + <div class="column"> + <div class="column-item" v-for="(sub, index) in item.value" :key="index">{{ sub }}</div> + </div> + </div> + + </div> + </div> +</template> + +<script> +const interval = function (fn, Vue) { + let timer = setInterval( + (() => { + fn() + return fn + })(), + 1000 * 60 * 5 + ) + if (Vue) { + Vue.$once('hook:beforeDestroy', function () { + timer && clearInterval(timer) + }) + } +} +export default { + name: 'Page2', + data() { + return { + info: { + signboardName: '', // 标识排 + proName: '', // 工程名称 + constructionUnit: '', // 施工单位 + saveStamp: '', // 施工日期 + construction: '', // 施工部位 + }, + dataLists: [ + {name: '材料名称', type: 'dictName', value: []}, // 材料名称 + {name: '规格型号', type: 'spec', value: []}, // 规格型号 + {name: '生产厂家', type: 'manufacturer', value: []}, // 生产厂家 + {name: '材料含水率(%)', type: 'watFull', value: []}, // 含水率 + {name: '理论用量(kg/m³)', type: 'planAmnt', value: []}, // 理论用量 + {name: '实际用量(kg/m³)', type: 'factAmnt', value: []}, // 实际用量 + ] + } + }, + beforeCreate() { + this.$http = this.$api.Infos + }, + beforeRouteEnter(to, form, next) { + const {path} = to + + const type = path.slice(-1) + + next(vm => { + vm.type = type + interval(vm.getLists, vm) + }) + }, + mounted() { + let width = document.getElementsByClassName('wrap')[0].clientWidth + let $html = document.getElementsByTagName('html')[0] + let fontsize = width / 1920 * 35.2 + $html.style.fontSize = `${fontsize}px` + window.onresize = () => { + let width = document.getElementById('app').clientWidth + let fontsize = width / 1920 * 35.2 + $html.style.fontSize = `${fontsize}px` + } + }, + methods: { + async getLists() { + const params = { + pageNum: --this.type, // 传 0 1对应两个页面 + pageSize: 1, + } + this.$api.Infos.getMixRatio(params).then(res => { + if (res.statusMsg === 'ok' && res.data) { + const {list} = res.data + if (list && list.length) { + const item = list[0] + const {tmixingConsumes} = item + + this.info.signboardName = item.signboardName + this.info.proName = item.proName + this.info.constructionUnit = item.constructionUnit + + if (tmixingConsumes && tmixingConsumes.length) { + this.info.saveStamp = tmixingConsumes[0].saveStamp + this.info.construction = tmixingConsumes[0].construction + + tmixingConsumes.forEach(item => { + this.dataLists.forEach(val => { + item[val.type] && val.value.push(item[val.type]) + }) + }) + } + } + } else { + this.$message.warning('请检查网络或联系管理员!!!') + } + }) + + }, + } +} +</script> +<style scoped> +.wrap { + position: absolute; + width: 100%; + height: 100%; + font-size: 1rem; + background: #040A3F; + overflow: hidden; +} + +.header { + position: absolute; + top: 0; + width: 100%; + height: 3rem; + text-align: center; + color: #fff; + background: url('../../assets/mixing/header.png') no-repeat center center; + background-size: 100% auto; + + .header_name { + font-size: 1.6rem; + font-weight: bold; + line-height: 3.2rem; + letter-spacing: 2px; + text-shadow: 0px 3px 3px rgba(25, 63, 95, 0.05); + background: -webkit-linear-gradient(90deg, #2AC0FF 0%, #FFFFFF 70%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } +} + +.table { + display: flex; + flex-direction: column; + position: absolute; + top: 4rem; + bottom: 2rem; + left: 2rem; + right: 2rem; + font-size: 0.8rem; + color: #fff; + + .title { + display: flex; + justify-content: center; + align-items: center; + color: #BEE2F0; + background: rgba(1, 142, 196, .35); + } + + .row { + flex: 1; + width: 100%; + height: 2rem; + margin: 0 -1px -1px 0; + text-align: center; + line-height: 2rem; + border: 1px solid #01B3EF; + + .name { + display: flex; + justify-content: center; + align-items: center; + float: left; + width: 8rem; + height: 100%; + margin: -1px -1px -1px 0; + color: #BEE2F0; + border: 1px solid #01B3EF; + background: rgba(1, 142, 196, .75); + box-sizing: unset; + } + + .value { + display: flex; + justify-content: center; + align-items: center; + height: 100%; + overflow: hidden; + } + + .column { + display: flex; + height: 100%; + + .column-item { + display: flex; + justify-content: center; + align-items: center; + flex: 1; + margin: -1px -1px -1px 0; + border: 1px solid #01B3EF; + } + } + } + + .row.line { + display: flex; + + >div { + flex: 1; + } + } +} +</style> \ No newline at end of file diff --git a/web/src/views/MixingInfo/mixing.vue b/web/src/views/MixingInfo/mixing.vue new file mode 100644 index 0000000..ce3481b --- /dev/null +++ b/web/src/views/MixingInfo/mixing.vue @@ -0,0 +1,310 @@ +<template> + <div class="wrap"> + <div class="header"> + <div class="header_name">中铁十四局通甬站前I标管片场拌合站</div> + </div> + <div class="container"> + <div class="con_name"> + <div class="line left"></div> + <div class="name"> + <p class="p">{{ infoL.siloName }}</p> + <p class="p">{{ infoR.siloName }}</p> + </div> + <div class="line right"></div> + </div> + <div class="con_main"> + <div class="con_main_item con_main_l"> + <div class="placeholder"></div> + <div class="list_wrap"> + <list :data="infoL.mixing"></list> + </div> + </div> + <div class="con_main_item con_main_c"> + <div :class="`image ${infoL.percentImgName || ''}`"> + <p>{{ infoL.siloName }}</p> + </div> + <div :class="`image ${infoR.percentImgName || ''}`"> + <p>{{ infoR.siloName }}</p> + </div> + </div> + <div class="con_main_item con_main_r"> + <div class="placeholder"></div> + <div class="list_wrap"> + <list :data="infoR.mixing"></list> + </div> + </div> + </div> + </div> + </div> +</template> + +<script> +import List from './components/List' +const interval = function (fn, Vue) { + let timer = setInterval( + (() => { + fn() + return fn + })(), + 1000 * 60 * 5 + ) + if (Vue) { + Vue.$once('hook:beforeDestroy', function () { + timer && clearInterval(timer) + }) + } +} +export default { + name: 'mixing', + data() { + return { + type: '', + infoL: {}, + infoR: {}, + percents: { + 0: 'container_10', + 10: 'container_10', + 20: 'container_20', + 40: 'container_40', + 60: 'container_60', + 80: 'container_80', + 90: 'container_90', + 100: 'container_100', + } + }; + }, + components: { + List + }, + beforeCreate() { + this.$http = this.$api.Infos + }, + beforeRouteEnter(to, form, next) { + const {path} = to + + const type = path.slice(-1) + + next(vm => { + vm.type = type + interval(vm.getLists, vm) + }) + }, + mounted() { + let width = document.getElementsByClassName('wrap')[0].clientWidth + let $html = document.getElementsByTagName('html')[0] + let fontsize = width / 1920 * 35.2 + $html.style.fontSize = `${fontsize}px` + window.onresize = () => { + let width = document.getElementById('app').clientWidth + let fontsize = width / 1920 * 35.2 + $html.style.fontSize = `${fontsize}px` + } + }, + methods: { + getLists() { + const percentArr = Object.keys(this.percents) + this.$api.Infos.getMixing({types: this.type}).then(res => { + if (res.statusMsg === 'ok' && res.data && res.data.length) { + res.data.forEach((item, index) => { + if (item && item.mixing && item.mixing.percentage) { + let targetVal = +item.mixing.percentage + for (let index = 0; index < percentArr.length - 1; index++) { + const val = percentArr[index] + const valNext = percentArr[index + 1] + if (val <= targetVal && targetVal <= valNext) { + item.percentImgName = this.percents[val] + break + } + } + } else { + item.percentImgName = this.percents[0] + } + index === 0 && (this.infoL = item) + index === 1 && (this.infoR = item) + }) + } else { + this.$message.warning('请检查网络或联系管理员!!!') + } + }) + + + + }, + } +} +</script> +<style scoped> +li { + list-style: none; +} + +.wrap { + position: absolute; + width: 100%; + height: 100%; + font-size: 1rem; + background: #040A3F; + overflow: hidden; +} + +.header { + position: absolute; + width: 100%; + height: 3rem; + text-align: center; + font-family: 'Microsoft YaHei'; + color: #fff; + background: url('../../assets/mixing/header.png') no-repeat center center; + background-size: 100% auto; + + .header_name { + font-size: 1.6rem; + font-weight: bold; + line-height: 3.2rem; + letter-spacing: 2px; + text-shadow: 0px 3px 3px rgba(25, 63, 95, 0.05); + background: -webkit-linear-gradient(90deg, #2AC0FF 0%, #FFFFFF 70%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } +} + +.container { + flex: 1; + display: flex; + flex-direction: column; + position: absolute; + left: 20px; + right: 20px; + top: 3.6rem; + bottom: 20px; + color: #fff; + + .con_name { + display: flex; + align-items: center; + height: 2.2rem; + + .name { + width: 20rem; + display: flex; + justify-content: space-evenly; + + .p { + height: 2rem; + padding: 0 2rem; + line-height: 2rem; + font-size: 1.2rem; + font-weight: bold; + white-space: nowrap; + background: url(../../assets/mixing/name_bg.png) no-repeat; + background-size: 100% 100%; + } + } + + .line { + flex: 1; + height: 14px; + + &.left { + background: -webkit-linear-gradient(right, rgba(18, 99, 162, 1) 0, rgba(18, 99, 162, 0) 100%); + } + + &.right { + background: -webkit-linear-gradient(left, rgba(18, 99, 162, 1) 0, rgba(18, 99, 162, 0) 100%); + } + } + } + + .con_main { + margin-top: 10px; + flex: 1; + display: flex; + + .con_main_item { + padding: 15px 15px 0 15px; + position: relative; + flex: 1; + + &.con_main_l, + &.con_main_r { + background: url(../../assets/mixing/list_bg.png) no-repeat; + background-size: 100% 100%; + } + + &.con_main_l .placeholder { + width: 100%; + height: 8%; + background: url(../../assets/mixing/list_l_bg.png) no-repeat; + background-size: 100% 100%; + } + + &.con_main_r .placeholder { + width: 100%; + height: 8%; + background: url(../../assets/mixing/list_r_bg.png) no-repeat; + background-size: 100% 100%; + } + + &.con_main_c .image { + position: relative; + float: left; + width: 50%; + height: 100%; + min-height: 480px; + text-align: center; + + >p { + position: absolute; + left: 50%; + top: 21%; + white-space: nowrap; + transform: translate(-50%, -50%); + } + + &.container_10 { + background: url(../../assets/mixing/container_10.png) center 30% no-repeat; + background-size: auto 70%; + } + + &.container_20 { + background: url(../../assets/mixing/container_20.png) center 30% no-repeat; + background-size: auto 70%; + } + + &.container_40 { + background: url(../../assets/mixing/container_40.png) center 30% no-repeat; + background-size: auto 70%; + } + + &.container_60 { + background: url(../../assets/mixing/container_60.png) center 30% no-repeat; + background-size: auto 70%; + } + + &.container_80 { + background: url(../../assets/mixing/container_80.png) center 30% no-repeat; + background-size: auto 70%; + } + + &.container_90 { + background: url(../../assets/mixing/container_90.png) center 30% no-repeat; + background-size: auto 70%; + } + + &.container_100 { + background: url(../../assets/mixing/container_100.png) center 30% no-repeat; + background-size: auto 70%; + } + } + + .list_wrap { + position: absolute; + top: 12%; + bottom: 0; + } + + } + } +} +</style> \ No newline at end of file -- Gitblit v1.9.3