Commit 3bb56ece authored by 张冬's avatar 张冬

聊天问题

parent 4aad38f2
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
<!-- 在线对话 --> <!-- 在线对话 -->
<div class="dialogue" style="margin-top: 30px;" v-show="dialogue"> <div class="dialogue" style="margin-top: 30px;" v-show="dialogue">
<JwChat :taleList="dialogueList" scrollType="scroll" @enter="bindEnter" v-model="content" :toolConfig="tool" > <JwChat :taleList="dialogueList" scrollType="scroll" @enter="bindEnter" v-model="content" :toolConfig="tool" >
<el-button slot="tools" style="float:right" class="abs" @click="dialogue=false">关闭聊天框</el-button>
</JwChat> </JwChat>
</div> </div>
<!-- <!--
...@@ -222,9 +223,9 @@ ...@@ -222,9 +223,9 @@
data() { data() {
return { return {
tool: { tool: {
show: [''], show: ['11'],
callback: this.toolEvent, callback: this.toolEvent,
showEmoji: true, showEmoji: false,
}, },
issueTable: false, issueTable: false,
openStatus: '', openStatus: '',
...@@ -681,6 +682,11 @@ ...@@ -681,6 +682,11 @@
</script> </script>
<style scoped> <style scoped>
.abs{
position: absolute;
right:100px;
bottom:-91px
}
.flex-left { .flex-left {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
......
<template> <template>
<div> <div>
<div class="content"> <div class="content">
<dataBreadcrumb :breads="breads"></dataBreadcrumb> <dataBreadcrumb :breads="breads"></dataBreadcrumb>
<div>中国标准时间:{{ currentTime }}</div> <div>中国标准时间:{{ currentTime }}</div>
<div class="hal"> <div class="hal">
<h2 style="text-align: center;">{{projectName}}项目开标大厅</h2> <h2 style="text-align: center">{{ projectName }}项目开标大厅</h2>
<div class="time-message flex-between"> <div class="time-message flex-between">
<div class="flex"> <div class="flex">
<p>截标倒计时:</p> <p>截标倒计时:</p>
<timeDown :remain-time="remaintime" @countDowmEnd="remaintimeEnd"></timeDown> <timeDown :remain-time="remaintime" @countDowmEnd="remaintimeEnd"></timeDown>
</div> </div>
<div class="flex" v-show="openStatus==2"> <div class="flex" v-show="openStatus == 2">
<p>解密倒计时:</p> <p>解密倒计时:</p>
<timeDown :remain-time="decodeTime" @countDowmEnd="decodeTimeEnd"></timeDown> <timeDown :remain-time="decodeTime" @countDowmEnd="decodeTimeEnd"></timeDown>
</div> </div>
<div class="flex" v-show="openStatus==2"> <div class="flex" v-show="openStatus == 2">
<p>签名倒计时:</p> <p>签名倒计时:</p>
<timeDown :remain-time="signatureTime" @countDowmEnd="signatureTimeEnd"></timeDown> <timeDown :remain-time="signatureTime" @countDowmEnd="signatureTimeEnd"></timeDown>
</div> </div>
</div> </div>
<div class="flex"> <div class="flex">
<div class="hal-left"> <div class="hal-left">
<div> <div>
<h1>签到 {{!leftmessage.signIn?"否":"是"}}</h1> <h1>签到 {{ !leftmessage.signIn ? '否' : '是' }}</h1>
<h1>解密 {{!leftmessage.decode?"否":"是"}}</h1> <h1>解密 {{ !leftmessage.decode ? '否' : '是' }}</h1>
<h1>签名 {{!leftmessage.signature?"否":"是"}}</h1> <h1>签名 {{ !leftmessage.signature ? '否' : '是' }}</h1>
</div> </div>
</div> </div>
<div class="hal-center" v-chat-scroll> <div class="hal-center" v-chat-scroll>
<ul > <ul>
<li v-for="(item,index) in halList" :key="index" class="flex-item"> <li v-for="(item, index) in halList" :key="index" class="flex-item">
<div>{{ item.time }}</div> <div>{{ item.time }}</div>
<div>{{ item.role }}</div> <div>{{ item.role }}</div>
<div>{{ item.name }}</div> <div>{{ item.name }}</div>
<div>{{ item.behavior }}</div> <div>{{ item.behavior }}</div>
</li> </li>
</ul> </ul>
</div> </div>
<div class="hal-right"> <div class="hal-right">
<el-button @click="dialogFormVisible=true" style="margin-left:10px">开标规则说明</el-button> <el-button @click="dialogFormVisible = true" style="margin-left: 10px">开标规则说明</el-button>
<el-button @click="isdialogue">在线对话<i class="el-icon-chat-dot-round"></i></el-button> <el-button @click="isdialogue">在线对话<i class="el-icon-chat-dot-round"></i></el-button>
<el-button :disabled="!isDecode" v-show="openStatus==2&&!leftmessage.decode" @click="changeDecode" type="primary">解密投标文件</el-button> <el-button
</div> :disabled="!isDecode"
<!-- 在线对话 --> v-show="openStatus == 2 && !leftmessage.decode"
<div class="dialogue" style="margin-top: 30px;" v-show="dialogue"> @click="changeDecode"
<JwChat :taleList="dialogueList" scrollType="scroll" @enter="bindEnter" v-model="content" :toolConfig="tool" > type="primary"
</JwChat> >解密投标文件</el-button
</div> >
<!-- <div class="dialogue" style="margin-top: 30px;" v-show="dialogue"> </div>
<!-- 在线对话 -->
<div class="dialogue" style="margin-top: 30px" v-show="dialogue">
<JwChat :taleList="dialogueList" scrollType="scroll" @enter="bindEnter" v-model="content" :toolConfig="tool">
<el-button slot="tools" style="float: right" class="abs" @click="dialogue = false">关闭聊天框</el-button>
</JwChat>
</div>
<!-- <div class="dialogue" style="margin-top: 30px;" v-show="dialogue">
<ul class="dialogueList" v-chat-scroll> <ul class="dialogueList" v-chat-scroll>
<li v-for="(item,index) in dialogueList" :key="index" :class="myId==item.userId?'flex-left':'flex-right'"> <li v-for="(item,index) in dialogueList" :key="index" :class="myId==item.userId?'flex-left':'flex-right'">
<div> <div>
...@@ -63,514 +70,489 @@ ...@@ -63,514 +70,489 @@
<el-input placeholder="请输入内容" v-model="content" clearable @keyup.enter.native="send" maxlength="30"> <el-input placeholder="请输入内容" v-model="content" clearable @keyup.enter.native="send" maxlength="30">
</el-input> </el-input>
</div> --> </div> -->
</div> </div>
<div class="flex-center buttons"> <div class="flex-center buttons">
<div> <div>
<el-button icon="el-icon-refresh" @click="refrsh">刷新</el-button> <el-button icon="el-icon-refresh" @click="refrsh">刷新</el-button>
<el-button @click="openInfo" :disabled="!issueTable">查看开标一览表</el-button> <el-button @click="openInfo" :disabled="!issueTable">查看开标一览表</el-button>
<el-button @click="back">退出大厅<i class="el-icon-right"></i></el-button> <el-button @click="back">退出大厅<i class="el-icon-right"></i></el-button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- 开标说明 --> <!-- 开标说明 -->
<el-dialog :visible.sync="dialogFormVisible" title="开标规则说明"> <el-dialog :visible.sync="dialogFormVisible" title="开标规则说明">
<div class="explain"> <div class="explain">
<h1>开标说明</h1> <h1>开标说明</h1>
<div>一系列说明</div> <div>一系列说明</div>
</div> </div>
<div class="flex-center"> <div class="flex-center">
<el-button type="primary" @click="dialogFormVisible = false">关闭</el-button> <el-button type="primary" @click="dialogFormVisible = false">关闭</el-button>
</div> </div>
</el-dialog> </el-dialog>
<!-- 开标一览表 --> <!-- 开标一览表 -->
<el-dialog :visible.sync="isopenInfo" title="开标一览表"> <el-dialog :visible.sync="isopenInfo" title="开标一览表">
<nopageTable :tableData="tableData" :columns="nopagecolumns" :margin-top="0" :margin-bottom="0"> <nopageTable :tableData="tableData" :columns="nopagecolumns" :margin-top="0" :margin-bottom="0"> </nopageTable>
</nopageTable> <div slot="footer" class="dialog-footer">
<div slot="footer" class="dialog-footer"> <el-button @click="isopenInfo = false">关闭 </el-button>
<el-button @click="isopenInfo=false">关闭 </el-button> <el-button
<el-button :disabled="!isSignature" v-show="openStatus==2&&!leftmessage.signature" @click="changeSignature" type="primary">签名</el-button> :disabled="!isSignature"
</div> v-show="openStatus == 2 && !leftmessage.signature"
</el-dialog> @click="changeSignature"
</div> type="primary"
>签名</el-button
>
</div>
</el-dialog>
</div>
</template> </template>
<script> <script>
import { import { signdetail } from '@api/purchaser/bid';
signdetail import { openUrl } from '@utils/common';
} from '@api/purchaser/bid' import { openBidsign, opentimeInfo, openInfolist, decode, signature } from '@api/supply/bid';
import { import { getTime } from '@utils/time';
openUrl import nopageTable from '@components/nopageTable.vue';
} from '@utils/common' import dataBreadcrumb from '@components/dataBreadcrumb.vue';
import { import timeDown from '@components/timeDown.vue';
openBidsign, import dataTable from '@components/dataTable.vue';
opentimeInfo, export default {
openInfolist, components: {
decode, dataBreadcrumb,
signature timeDown,
} from '@api/supply/bid' dataTable,
import { nopageTable
getTime },
} from '@utils/time' data() {
import nopageTable from '@components/nopageTable.vue' return {
import dataBreadcrumb from '@components/dataBreadcrumb.vue' tool: {
import timeDown from '@components/timeDown.vue' show: [''],
import dataTable from '@components/dataTable.vue' callback: this.toolEvent,
export default { showEmoji: true
components: { },
dataBreadcrumb, issueTable: '',
timeDown, openStatus: '',
dataTable, isSignature: false,
nopageTable isDecode: false,
}, dialogue: false,
data() { isopenInfo: false,
return { remaintime: '',
tool: { decodeTime: '',
show: [''], signatureTime: '',
callback: this.toolEvent, projectName: '',
showEmoji: true, pageObj: {
}, size: 10,
issueTable:"", total: 1000,
openStatus: "", currentPage: 1,
isSignature: false, func: (currentPage) => {
isDecode: false, this.pageTurning(currentPage);
dialogue: false, }
isopenInfo: false, },
remaintime: "", dialogFormVisible: false,
decodeTime: "", tableData: [],
signatureTime: "", columns: [
projectName: "", {
pageObj: { label: '中标供应商',
size: 10, prop: 'name'
total: 1000, },
currentPage: 1, {
func: (currentPage) => { label: '中标项目',
this.pageTurning(currentPage) prop: 'project'
} },
}, {
dialogFormVisible: false, label: '中标时间',
tableData: [], prop: 'data',
columns: [{ sortable: true
label: '中标供应商', },
prop: 'name' {
}, label: '备注',
{ prop: 'remark'
label: '中标项目', },
prop: 'project' {
}, slot: 'operate'
{ }
label: '中标时间', ], //
prop: 'data', nopagecolumns: [
sortable: true {
}, label: '投标公司',
{ prop: 'companyName'
label: '备注', },
prop: 'remark' {
}, label: '投标报价(元)',
{ prop: 'price'
slot: 'operate' },
} {
], // label: '是否签名',
nopagecolumns: [{ prop: 'isSign'
label: '投标公司', }
prop: 'companyName' ], //
}, isOpenbid: false,
{ buttonWords: '立即开标',
label: '投标报价(元)', openbidButton: false,
prop: 'price' halList: [
}, {
{ time: '17:56:56',
label: '是否签名', role: '招标人',
prop: 'isSign', person: '谢天',
}, behavior: '进入开标大厅'
], // },
isOpenbid: false, {
buttonWords: '立即开标', time: '17:56:56',
openbidButton: false, role: '投标人',
halList: [{ person: '测试1',
time: '17:56:56', behavior: '确认可开标'
role: '招标人', }
person: '谢天', ],
behavior: '进入开标大厅' minutes: '6',
}, seconds: '60',
{ currentTime: '',
time: '17:56:56', breads: ['招标管理', '招标项目管理', '工作台'],
role: '投标人', leftmessage: '',
person: '测试1', websocket: '',
behavior: '确认可开标' dialogueList: [],
} halList: [],
], content: '',
minutes: '6', myId: ''
seconds: '60', };
currentTime: '', },
breads: ['招标管理', '招标项目管理', '工作台'], mounted() {
leftmessage: "", this.add();
websocket: "", },
dialogueList: [], created() {
halList: [], // 中国标准时间
content: "", let currentTime = getTime();
myId: "" this.currentTime = currentTime;
} this.timer1 = setInterval(() => {
}, let currentTime = getTime();
mounted() { this.currentTime = currentTime;
this.add(); }, 1000);
}, this.projectName = localStorage.getItem('projectName');
created() { this.getsigndetail();
// 中国标准时间 this.openBidsign();
let currentTime = getTime() this.createWebSocket();
this.currentTime = currentTime this.myId = JSON.parse(localStorage.getItem('userInfo')).userId;
this.timer1 = setInterval(() => { // 长轮训获取
let currentTime = getTime() this.timer = setInterval(() => {
this.currentTime = currentTime this.getsigndetail();
}, 1000) }, 5000);
this.projectName = localStorage.getItem("projectName") },
this.getsigndetail(); methods: {
this.openBidsign(); openInfo() {
this.createWebSocket() this.isopenInfo = true;
this.myId = JSON.parse(localStorage.getItem("userInfo")).userId this.getopenInfo();
// 长轮训获取 },
this.timer = setInterval(() => { refrsh() {
this.getsigndetail(); history.go(0);
}, 5000); },
}, // 解密
methods: { async changeDecode() {
openInfo(){ let projectId = localStorage.getItem('projectId');
this.isopenInfo=true try {
this.getopenInfo(); const { msg, code } = await decode(projectId);
}, if (code == 200) {
refrsh(){ this.$message.success(msg);
history.go(0) this.openBidsign();
}, } else {
// 解密 this.$message.error(msg);
async changeDecode() { }
let projectId = localStorage.getItem("projectId") } catch (e) {
try { console.log(e);
const { }
msg, },
code // 签名
} = await decode(projectId) async changeSignature() {
if(code==200){ let projectId = localStorage.getItem('projectId');
this.$message.success(msg) try {
this.openBidsign(); const { msg, code } = await signature(projectId);
}else{ if (code == 200) {
this.$message.error(msg) this.$message.success(msg);
} this.openBidsign();
} catch (e) { } else {
console.log(e) this.$message.error(msg);
} }
}, } catch (e) {
// 签名 console.log(e);
async changeSignature() { }
let projectId = localStorage.getItem("projectId") },
try { isdialogue() {
const { this.dialogue = !this.dialogue;
msg, },
code, // websocket
} = await signature(projectId) createWebSocket() {
if(code==200){ let token = localStorage.getItem('token');
this.$message.success(msg) let projectId = localStorage.getItem('projectId');
this.openBidsign(); this.websocket = new WebSocket(`ws:${openUrl}/webSocket/${projectId}/${token}`);
}else{ // 连接成功时
this.$message.error(msg) this.websocket.onopen = () => {};
} this.websocket.onmessage = (event) => {
} catch (e) { // 后端发送的消息在event.data中
console.log(e) let data = JSON.parse(event.data);
} console.log(data);
}, if (data.type == 1) {
isdialogue() { if (data.userId == this.myId) {
this.dialogue = !this.dialogue data.mine = true;
}, } else {
// websocket data.mine = false;
createWebSocket() { }
let token = localStorage.getItem("token") const msgObj = {
let projectId = localStorage.getItem("projectId") date: data.time,
this.websocket = new WebSocket(`ws:${openUrl}/webSocket/${projectId}/${token}`) text: {
// 连接成功时 text: data.chatContent
this.websocket.onopen = () => {} },
this.websocket.onmessage = event => { mine: data.mine,
// 后端发送的消息在event.data中 name: data.name,
let data = JSON.parse(event.data); img: '@static/images/tou.jpg'
console.log(data) };
if (data.type == 1) { this.dialogueList.push(msgObj);
if(data.userId==this.myId){ } else {
data.mine=true this.halList.push(data);
}else{ }
data.mine=false };
} this.websocket.onclose = function () {
const msgObj = { console.log('关闭了');
"date":data.time , };
"text": { // 监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常
"text": data.chatContent (window.onbeforeunload = function () {
}, this.websocket.close();
"mine": data.mine, }),
"name": data.name, // 路由跳转时结束websocket链接
"img": "@static/images/tou.jpg" this.$router.afterEach(function () {
} this.websocket.close();
this.dialogueList.push(msgObj) });
} else { },
this.halList.push(data) bindEnter() {
} const content = this.content;
} if (!content) return;
this.websocket.onclose = function() { this.websocket.send(content);
console.log('关闭了') },
} back() {
// 监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常 this.$router.go(-1);
window.onbeforeunload = function() { },
this.websocket.close() // 截标时间到了
}, remaintimeEnd(val) {},
// 路由跳转时结束websocket链接 // 解密时间到了
this.$router.afterEach(function() { decodeTimeEnd(val) {
this.websocket.close() this.isDecode = val;
}) },
}, // 签名时间到了
bindEnter() { signatureTimeEnd(val) {
const content = this.content this.isSignature = val;
if (!content) return; },
this.websocket.send(content) // 计算分秒倒计时
}, add: function () {
back() { var _this = this;
this.$router.go(-1) var time = window.setInterval(function () {
}, if (_this.seconds === 0 && _this.minutes !== 0) {
// 截标时间到了 _this.seconds = 59;
remaintimeEnd(val) { _this.minutes -= 1;
} else if (_this.minutes === 0 && _this.seconds === 0) {
}, _this.seconds = 0;
// 解密时间到了 window.clearInterval(time);
decodeTimeEnd(val) { } else {
this.isDecode = val _this.seconds -= 1;
}, }
// 签名时间到了 }, 1000);
signatureTimeEnd(val) { },
this.isSignature = val // 截标时间到了
}, countDowmEnd(val) {
// 计算分秒倒计时 this.openbidButton = val;
add: function() { },
var _this = this // 左边信息栏
var time = window.setInterval(function() { async openBidsign() {
if (_this.seconds === 0 && _this.minutes !== 0) { let projectId = localStorage.getItem('projectId');
_this.seconds = 59 try {
_this.minutes -= 1 const { data, code } = await openBidsign(projectId);
} else if (_this.minutes === 0 && _this.seconds === 0) { this.leftmessage = data;
_this.seconds = 0 } catch (e) {
window.clearInterval(time) console.log(e);
} else { }
_this.seconds -= 1 },
} // 获取时间比较
}, 1000) async getsigndetail() {
}, try {
// 截标时间到了 let projectId = localStorage.getItem('projectId');
countDowmEnd(val) { var { data, code, msg } = await opentimeInfo(projectId);
this.openbidButton = val if (code == 200) {
}, this.remaintime = Number(data.remainTime);
// 左边信息栏 this.storagedecodeTime = Number(data.decodeTime);
async openBidsign() { this.storagesignatureTime = Number(data.signatureTime);
let projectId = localStorage.getItem("projectId") } else {
try { this.$message.error(msg);
const { }
data, var { data, code } = await signdetail(projectId);
code if (code == 200) {
} = await openBidsign(projectId) this.openStatus = data.openStatus;
this.leftmessage = data this.issueTable = data.issueTable;
} catch (e) { let localTime = new Date().getTime();
console.log(e) console.log(this.storagedecodeTime, '..............');
} let comparyTime = this.storagedecodeTime - (localTime - data.openBidTime) / 1000;
}, if (comparyTime > 0) {
// 获取时间比较 this.decodeTime = comparyTime;
async getsigndetail() { console.log('大于');
try { } else {
let projectId = localStorage.getItem("projectId") console.log('小于');
var { this.isDecode = true;
data, }
code, let comparyTime1 = this.storagesignatureTime - (localTime - data.openBidTime) / 1000;
msg if (comparyTime > 0) {
} = await opentimeInfo(projectId) this.signatureTime = comparyTime1;
if (code == 200) { console.log('大于');
this.remaintime = Number(data.remainTime); } else {
this.storagedecodeTime = Number(data.decodeTime) console.log('小于');
this.storagesignatureTime = Number(data.signatureTime) this.isSignature = true;
} else { }
this.$message.error(msg) }
} } catch (e) {
var { console.log(e);
data, }
code },
} = await signdetail(projectId) // 开标一栏表
if (code == 200) { async getopenInfo() {
this.openStatus = data.openStatus try {
this.issueTable=data.issueTable let projectId = localStorage.getItem('projectId');
let localTime = new Date().getTime(); const { data, code } = await openInfolist(projectId);
console.log(this.storagedecodeTime, "..............") if (code == 200) {
let comparyTime = this.storagedecodeTime - (localTime - data.openBidTime) / 1000 for (let item of data) {
if (comparyTime > 0) { if (item.isSign) {
this.decodeTime = comparyTime item.isSign = '是';
console.log("大于") } else {
} else { item.isSign = '否';
console.log("小于") }
this.isDecode = true }
} this.tableData = data;
let comparyTime1 = this.storagesignatureTime - (localTime - data.openBidTime) / 1000 }
if (comparyTime > 0) { } catch (e) {
this.signatureTime = comparyTime1 console.log(e);
console.log("大于") }
} else { }
console.log("小于") },
this.isSignature = true // updated() {
} // // 聊天定位到底部
} // let ele = document.getElementById('chatRecord');
} catch (e) { // ele.scrollTop = ele.scrollHeight;
console.log(e) // let ele1 = document.getElementById('chatRecord1');
} // ele1.scrollTop = ele1.scrollHeight;
}, // },
// 开标一栏表 destroyed() {
async getopenInfo() { //清除定时器
try { clearInterval(this.timer1);
let projectId = localStorage.getItem("projectId") this.websocket.close();
const { }
data, };
code
} = await openInfolist(projectId)
if (code == 200) {
for (let item of data) {
if (item.isSign) {
item.isSign = "是"
} else {
item.isSign = "否"
}
}
this.tableData = data
}
} catch (e) {
console.log(e)
}
},
},
// updated() {
// // 聊天定位到底部
// let ele = document.getElementById('chatRecord');
// ele.scrollTop = ele.scrollHeight;
// let ele1 = document.getElementById('chatRecord1');
// ele1.scrollTop = ele1.scrollHeight;
// },
destroyed() {
//清除定时器
clearInterval(this.timer1);
this.websocket.close()
}
}
</script> </script>
<style scoped> <style scoped>
.flex-left { .abs {
display: flex; position: absolute;
justify-content: flex-start; right: 100px;
} bottom: -91px;
}
.flex-right { .flex-left {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-start;
} }
.hal {
position: relative;
}
.dialogue {
position: absolute;
top: 10%;
right: 10%;
border:1px solid #CCCCCC;
padding:10px
}
.dialogue>.dialogueList {
box-sizing: border-box;
padding: 20px;
overflow: auto;
border: 1px solid #DCDFE6;
width: 400px;
height: 300px;
}
.dialogueList>li { .flex-right {
margin-bottom: 20px; display: flex;
} justify-content: flex-end;
}
.explain>h1 { .hal {
text-align: center; position: relative;
margin: 30px 0 }
}
.buttons { .dialogue {
margin: 100px 0; position: absolute;
} top: 10%;
right: 10%;
border: 1px solid #cccccc;
padding: 10px;
}
.hal-left { .dialogue > .dialogueList {
width: 200px; box-sizing: border-box;
padding: 20px;
overflow: auto;
border: 1px solid #dcdfe6;
width: 400px;
height: 300px;
}
} .dialogueList > li {
margin-bottom: 20px;
}
.hal-left>div { .explain > h1 {
width: 100%; text-align: center;
height: 300px; margin: 30px 0;
border: 1px solid #000; }
box-sizing: border-box;
padding: 40px 20px
}
.buttons {
margin: 100px 0;
}
.hal-left {
width: 200px;
}
.hal-right { .hal-left > div {
width: 200px; width: 100%;
height: 500px; height: 300px;
} border: 1px solid #000;
box-sizing: border-box;
padding: 40px 20px;
}
.hal-right>button { .hal-right {
margin-bottom: 20px; width: 200px;
} height: 500px;
}
.hal-center { .hal-right > button {
flex: 1; margin-bottom: 20px;
height: 500px; }
border: 1px solid #000;
margin: 0 50px;
box-sizing: border-box;
padding: 30px;
overflow: auto;
}
.hal-center>ul>li { .hal-center {
margin-bottom: 30px; flex: 1;
} height: 500px;
border: 1px solid #000;
margin: 0 50px;
box-sizing: border-box;
padding: 30px;
overflow: auto;
}
.hal-center>ul>li>div { .hal-center > ul > li {
margin-right: 10px; margin-bottom: 30px;
font-size: 16px; }
}
.button-pos { .hal-center > ul > li > div {
margin-top: 50px; margin-right: 10px;
} font-size: 16px;
}
.time-message { .button-pos {
width: 60%; margin-top: 50px;
margin: 10px auto; }
font-size: 16px;
}
.hal-left h1 { .time-message {
margin-bottom: 50px; width: 60%;
/* letter-spacing:5px */ margin: 10px auto;
} font-size: 16px;
}
.bid-message { .hal-left h1 {
flex-wrap: wrap; margin-bottom: 50px;
font-size: 16px; /* letter-spacing:5px */
} }
.bid-message>div { .bid-message {
margin-right: 50px; flex-wrap: wrap;
margin-bottom: 30px; font-size: 16px;
} }
.bid-message > div {
margin-right: 50px;
margin-bottom: 30px;
}
</style> </style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment