提交 5234ee62 authored 作者: lihuihui's avatar lihuihui

产品分析1.1开发

上级 10567d42
......@@ -11,10 +11,12 @@
"blueimp-md5": "^2.18.0",
"echarts": "^5.2.0",
"element-ui": "^2.15.6",
"jquery": "^3.6.0",
"query-string": "^7.0.1",
"vue": "^2.6.14",
"vue-codemirror": "^4.0.6",
"vue-router": "^3.5.2",
"vue-slicksort": "^1.2.0",
"vuedraggable": "^2.24.3",
"vuex": "^3.6.2"
},
......@@ -3895,6 +3897,11 @@
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true
},
"node_modules/jquery": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
"integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
},
"node_modules/js-base64": {
"version": "2.6.4",
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
......@@ -5798,6 +5805,14 @@
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.2.tgz",
"integrity": "sha512-807gn82hTnjCYGrnF3eNmIw/dk7/GE4B5h69BlyCK9KHASwSloD1Sjcn06zg9fVG4fYH2DrsNBZkpLtb25WtaQ=="
},
"node_modules/vue-slicksort": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/vue-slicksort/-/vue-slicksort-1.2.0.tgz",
"integrity": "sha512-k1324l+AnYy6MrpySN7PYL165z2EkvZmMe+BS7H/EugzS8IrZYRtoqa3QxSSWB34C7cplV1hj3c+7peKpxpYxg==",
"peerDependencies": {
"vue": ">=2.2.0"
}
},
"node_modules/vue-template-compiler": {
"version": "2.6.14",
"resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz",
......@@ -9028,6 +9043,11 @@
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true
},
"jquery": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
"integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
},
"js-base64": {
"version": "2.6.4",
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
......@@ -10533,6 +10553,12 @@
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.2.tgz",
"integrity": "sha512-807gn82hTnjCYGrnF3eNmIw/dk7/GE4B5h69BlyCK9KHASwSloD1Sjcn06zg9fVG4fYH2DrsNBZkpLtb25WtaQ=="
},
"vue-slicksort": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/vue-slicksort/-/vue-slicksort-1.2.0.tgz",
"integrity": "sha512-k1324l+AnYy6MrpySN7PYL165z2EkvZmMe+BS7H/EugzS8IrZYRtoqa3QxSSWB34C7cplV1hj3c+7peKpxpYxg==",
"requires": {}
},
"vue-template-compiler": {
"version": "2.6.14",
"resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz",
......
......@@ -14,10 +14,12 @@
"blueimp-md5": "^2.18.0",
"echarts": "^5.2.0",
"element-ui": "^2.15.6",
"jquery": "^3.6.0",
"query-string": "^7.0.1",
"vue": "^2.6.14",
"vue-codemirror": "^4.0.6",
"vue-router": "^3.5.2",
"vue-slicksort": "^1.2.0",
"vuedraggable": "^2.24.3",
"vuex": "^3.6.2"
},
......
......@@ -9,7 +9,7 @@
<div class="step-content1" v-if="stepsIndex === 0">
<div class="video-box">
<div class="dy-box" v-if="!registerIndex">
<img src="https://webapp-pub.ezijing.com/x-training-new/dy-bg.png" />
<img src="https://webapp-pub.ezijing.com/x-training-new/dy-bg.png" />
<div class="works-title">{{ form.title }}</div>
<div class="works-dec">{{ form.dec }}</div>
<video :src="form.url" width="375px" class="video"></video>
......@@ -32,7 +32,7 @@
</el-form-item>
<el-form-item label="视频">
<upload-video v-model="form.url" @input="input"></upload-video>
</el-form-item>
ddd'd'd'd'd'd'd'd </el-form-item>
</el-form>
</div>
<div class="dy-box">
......@@ -59,8 +59,8 @@
</div>
<div class="mian-btn">
<el-button type="primary" @click="stepsIndex--" v-if="stepsIndex != 0">上一步</el-button>
<el-button v-if="stepsIndex == 0" type="primary" @click="registerNextBtn">下一步</el-button>
<el-button v-if="stepsIndex == 1" type="primary" @click="formNextBtn">下一步</el-button>
<el-button v-if="stepsIndex == 0" type="primary" @click="registerNextBtn">下一步</el-button>
<el-button v-if="stepsIndex == 1" type="primary" @click="formNextBtn">下一步</el-button>
<el-button type="primary" @click="submitReport" v-if="stepsIndex == 2">完成</el-button>
</div>
</div>
......@@ -99,7 +99,9 @@ export default {
}
},
formNextBtn() {
const isNull = Object.values(this.form).findIndex(item => { return item === '' })
const isNull = Object.values(this.form).findIndex(item => {
return item === ''
})
if (isNull === -1) {
this.stepsIndex++
} else {
......@@ -108,7 +110,9 @@ export default {
},
// 提交报告
submitReport() {
const isNull = Object.values(this.form).findIndex(item => { return item === '' })
const isNull = Object.values(this.form).findIndex(item => {
return item === ''
})
if (isNull !== -1) {
this.$message({ message: '请在发布视频完善信息', type: 'warning' })
return false
......@@ -119,17 +123,19 @@ export default {
return false
}
const params = [{ type: 1, commit_report: this.form }]
submitReport({ reports: JSON.stringify(params) }).then(res => {
this.$message({
message: '保存成功!你可以在作品展示中查看/编辑报告,查看成绩',
type: 'success'
submitReport({ reports: JSON.stringify(params) })
.then(res => {
this.$message({
message: '保存成功!你可以在作品展示中查看/编辑报告,查看成绩',
type: 'success'
})
setTimeout(() => {
this.$router.push({ path: '/works-show' })
}, 3000)
})
.catch(err => {
this.$message.error(err.message || '稍后再试')
})
setTimeout(() => {
this.$router.push({ path: '/works-show' })
}, 3000)
}).catch(err => {
this.$message.error(err.message || '稍后再试')
})
},
// 获取报告
getReport() {
......
......@@ -29,7 +29,19 @@ export function commitCase(data) {
})
}
// // 获取案例(产品)分析结答题结果
// export function getCommitCase() {
// return httpRequest.get('/api/xtraining/api/v1/commit-case-detail', {})
// }
// 获取案例(产品)分析结答题结果
export function getCommitCase() {
return httpRequest.get('/api/xtraining/api/v1/commit-case-detail', {})
export function getCommitCase(id) {
return httpRequest.get(`/api/xtraining/api/v1/answer/${id}/case-report`, {})
}
// 产品分析保存答案
export function cacheCaseAnswer(id, data) {
return httpRequest.post(`/api/xtraining/api/v1/answer/${id}/save-case-record`, data, {
headers: { 'Content-Type': 'application/json' }
})
}
<template>
<div class="box-card">
<div>
<div class="tit-box">
<span class="title">{{ title }}</span>
<span class="err-btn" v-if="isErrorBtn && $route.path !== '/product-analysis/report'" @click="$emit('errorResolution')">错误解析</span>
</div>
<slot></slot>
</div>
......@@ -10,39 +11,50 @@
<script>
export default {
props: {
title: { type: String }
title: { type: String },
isErrorBtn: { type: Number, default: 0 }
}
}
</script>
<style lang="scss" scoped>
.box-card{
.box-card {
padding: 0 22px 30px;
position: relative;
margin-bottom: 30px;
&::after{
&::after {
content: '';
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 620px;
border-bottom: 1px dashed #C0C0C0;
border-bottom: 1px dashed #c0c0c0;
}
.title{
.tit-box {
display: flex;
justify-content: space-between;
color: #4cac94;
cursor: pointer;
}
.err-btn {
position: relative;
z-index: 9999;
}
.title {
font-size: 18px;
font-weight: bold;
color: #666666;
line-height: 100%;
position: relative;
&::after{
&::after {
content: '';
position: absolute;
bottom: 2px;
left: 0;
width: 100%;
height: 5px;
background: rgba(104, 184, 164, .8)
background: rgba(104, 184, 164, 0.8);
}
}
}
......
<template>
<box title="业绩比较基准" class="compares-box" :id="firstItem.id">
<box title="业绩比较基准" class="compares-box" :id="firstItem.id" :isErrorBtn="isErrorBtn()" @errorResolution="errorResolution">
<ul>
<li v-for="(item, index) in inputList" :key="index">
<div class="input-box">
<input type="text" class="input1" placeholder="请输入" v-model="item.input1" />
<input type="text" :class="`input1 isDomActive ${isClass()}`" placeholder="请输入" v-model="item.input1" />
<div class="icon-x"></div>
<div class="character-input">
<div class="character">%</div>
<input type="text" class="input2" placeholder="请输入" v-model="item.input2" />
<input type="text" :class="`input2 isDomActive ${isClass()}`" placeholder="请输入" v-model="item.input2" />
</div>
<div class="el-icon-remove" @click="inputRemove(index)"></div>
</div>
......@@ -37,6 +37,19 @@ export default {
}
},
methods: {
isErrorBtn() {
const findErr = this.data.completions.findIndex(item => !item.is_correct)
return findErr + 1
},
errorResolution() {
this.$emit('errorResolution', this.data)
},
isClass() {
if (this.$route.path === '/product-analysis/result') {
return this.data.completions[0].is_correct ? '' : 'active'
}
return ''
},
inputAdd() {
this.inputList.push({ input1: '', input2: '' })
},
......@@ -49,6 +62,7 @@ export default {
}
},
created() {
console.log(this.data.completions[0].is_correct, '=123456')
if (this.firstItem.commit_answer !== '') {
this.inputList = []
this.firstItem.commit_answer.split(';').forEach(item => {
......@@ -91,10 +105,28 @@ ul {
}
.input1 {
width: 263px;
&.active{
background: #FFFFFF;
border: 1px solid #CF4C4C;
box-shadow: none;
color: rgba(102, 102, 102, 1);
&::-webkit-input-placeholder{
color: rgba(207, 25, 25, 1);
}
}
}
.input2 {
width: 210px;
padding-right: 38px;
&.active{
background: #FFFFFF;
border: 1px solid #CF4C4C;
box-shadow: none;
color: rgba(102, 102, 102, 1);
&::-webkit-input-placeholder{
color: rgba(207, 25, 25, 1);
}
}
}
.character-input {
position: relative;
......
<template>
<box title="基金涉及费用">
<box title="基金涉及费用" :isErrorBtn="isErrorBtn()" @errorResolution="errorResolution">
<div class="cost-box">
<div class="li" v-for="item in data.completions" :key="item.id">
<div :class="`li isDomActive ${isClass(item)}`" v-for="item in data.completions" :key="item.id">
<img
src="https://webapp-pub.ezijing.com/x-training-new/cost-i2.png"
class="icon"
......@@ -29,6 +29,21 @@ export default {
},
data() {
return {}
},
methods: {
isErrorBtn() {
const findErr = this.data.completions.findIndex(item => !item.is_correct)
return findErr + 1
},
errorResolution() {
this.$emit('errorResolution', this.data)
},
isClass(item) {
if (this.$route.path === '/product-analysis/result') {
return item.is_correct ? '' : 'active'
}
return ''
}
}
}
</script>
......@@ -49,6 +64,9 @@ export default {
border-radius: 10px;
display: flex;
align-items: center;
&.active{
border: 1px solid #C11818;
}
.icon {
width: 53px;
height: 53px;
......
<template>
<box title="风险收益特征">
<box title="风险收益特征" :isErrorBtn="isErrorBtn()" @errorResolution="errorResolution">
<div class="tag-box">
<slick-list :transitionDuration="transitiTime" @sort-start="dragStart" @sort-end="dragEnd" axis="x" v-model="dragList" class="tag-flex">
<slick-item v-for="(item, index) in dragList" :key="index" :index="index">
<div class="tag" v-if="item">{{ item }}</div>
</slick-item>
</slick-list>
</div>
<div class="content-box">
<input
v-for="(item, index) in data.completions"
:key="index"
v-model="item.commit_answer"
type="text"
:class="`input-id${index + 1}`"
placeholder="请输入基金类型"
:id="item.id"
/>
<div class="answer-tag">
<slick-list :transitionDuration="transitiTime" v-model="dragTagList" @input="dragInput" @sort-start="dragListStart" @sort-end="dragListEnd">
<slick-item v-for="(item, index) in dragTagList" :key="index" :index="index" :class="isTagShow[index].show ? '' : 'hide'" :id="data.completions[index].id">
<div class="height-box">
<div :class="`input-id${index + 1} ${item ? 'tag-input2' : 'tag-input'} client-dom ${isClass(data.completions[index].is_correct)}`">
{{ item || '请拖拽标签到此处' }}
</div>
</div>
</slick-item>
</slick-list>
</div>
</div>
</box>
</template>
<script>
import $ from 'jquery'
import { SlickList, SlickItem } from 'vue-slicksort'
import Box from './Box.vue'
export default {
components: { Box },
components: { Box, SlickList, SlickItem },
props: {
data: { type: Object }
},
mounted() {
console.log(this.data)
data() {
return {
isTagShow: [
{ show: true },
{ show: true },
{ show: true },
{ show: true }
],
isShow: true,
value: '',
dragList: ['股票型基金', '混合型基金', '债券型基金', '货币型基金'],
dragTagText: '',
dragTagList: ['', '', '', ''],
transitiTime: 0,
True: true,
False: false
}
},
created() {
this.data.completions.forEach((item, index) => {
this.dragTagList[index] = item.commit_answer
// item.commit_answer
const cIndex = this.dragList.findIndex(cItem => { return cItem === item.commit_answer })
this.dragList[cIndex] = ''
})
},
methods: {
isErrorBtn() {
const findErr = this.data.completions.findIndex(item => !item.is_correct)
return findErr + 1
},
errorResolution() {
this.$emit('errorResolution', this.data)
},
isClass(item) {
if (this.$route.path === '/product-analysis/result') {
return item ? '' : 'active-red'
}
return ''
},
dragStart(event) {
// 记录被拖的name
this.dragTagText = this.dragList[event.index]
},
dragEnd(event) {
// 记录竖排tag位置
const domInfo = []
$('.client-dom').each(function (index) {
domInfo.push({
index: index,
top: $(this).offset().top - $(window).scrollTop()
})
})
// 查找横排tag被拽到竖排的那个框里
const clientData = this.findNearestNumber(domInfo, event.event.clientY)
// 判断tag是否拖到指定的区域内 x
const isItemClientX = $('.client-dom').eq(clientData.index).offset().left < event.event.clientX
if (isItemClientX) {
// 判断拖拽 终点位置有没有tag
const isDragEndVal = this.dragTagList[clientData.index]
// 横排tag被拽的索引
const dragTagIndex = this.dragList.findIndex(item => { return item === this.dragTagText })
if (isDragEndVal === '') {
// 没有tag的情况,横排减少一个tag,竖排增加一个
this.dragList[dragTagIndex] = ''
this.dragTagList[clientData.index] = this.dragTagText
} else {
// 有tag的情况,互换tag位置
this.dragList[dragTagIndex] = this.dragTagList[clientData.index]
this.dragTagList[clientData.index] = this.dragTagText
}
}
this.data.completions.map((item, index) => {
item.commit_answer = this.dragTagList[index]
return item
})
},
dragInput() {
this.data.completions.map((item, index) => {
item.commit_answer = this.dragTagList[index]
return item
})
},
dragListStart(event) {
this.isTagShow.map(item => {
item.show = false
return item
})
this.isTagShow[event.index].show = true
},
dragListEnd() {
this.isTagShow.map(item => {
item.show = true
return item
})
},
findNearestNumber(arr, target) {
return arr.reduce((pre, curr) => {
return Math.abs(pre.top - target) > Math.abs(curr.top - target) ? curr : pre
})
}
}
}
</script>
<style lang="scss" scoped>
.tag-box {
margin-top: 5px;
height: 32px;
.tag-flex {
display: flex;
justify-content: right;
}
}
.tag {
font-size: 14px;
line-height: 100%;
color: #666666;
padding: 9px 12px;
border: 1px solid #cbcbcb;
border-radius: 20px;
margin-left: 5px;
}
.content-box {
position: relative;
margin: 29px 0 0 19px;
margin: 22px 0 0 19px;
width: 491px;
height: 325px;
background: url(https://webapp-pub.ezijing.com/x-training-new/features-bg.png);
background-size: 100% 100%;
input {
width: 110px;
font-size: 16px;
color: #666666;
background: none;
outline: none;
}
.input-id1 {
position: absolute;
top: 45px;
right: -10px;
}
.input-id2 {
position: absolute;
top: 106px;
right: -45px;
}
.input-id3 {
position: absolute;
top: 170px;
right: -80px;
}
.input-id4 {
position: absolute;
top: 238px;
right: -118px;
}
.answer-tag{
position: absolute;
top: 30px;
left: 350px;
width: 300px;
height: 280px;
}
.tag-input {
font-size: 16px;
background: none;
outline: none;
font-size: 12px;
line-height: 32px;
height: 32px;
color: #b7b7b7;
border-bottom: 1px solid #72b5a4;
}
.hide{
opacity: 0;
}
.tag-input2{
height: 32px;
background: rgba(48,153,127, .1);
border: 1px solid #68B8A4 !important;
border-radius: 16px;
font-size: 14px;
color: #30997F;
opacity: 1;
line-height: 32px;
padding: 0 12px;
box-sizing: border-box;
&.active-red{
color: rgba(219, 38, 38, 1);
border: 1px solid #D95D5D !important;
background: rgba(219, 38, 38, .1);
}
}
.input-id1 {
margin-left: 40px;
}
.input-id2 {
margin-left: 75px;
}
.input-id3 {
margin-left: 110px;
}
.input-id4 {
margin-left: 150px;
}
.height-box{
// background: #000;
display: flex;
padding: 15px 0;
}
</style>
<template>
<box title="投资策略" :isErrorBtn="isErrorBtn()" @errorResolution="errorResolution">
<textarea :class="`isDomActive ${isClass(item)}`" v-for="(item, index) in data.completions" v-model="item.commit_answer" :key="index" :id="item.id"></textarea>
</box>
</template>
<script>
import Box from './Box.vue'
export default {
components: {
Box
},
props: {
data: {
type: Object
}
},
methods: {
isErrorBtn() {
const findErr = this.data.completions.findIndex(item => !item.is_correct)
return findErr + 1
},
errorResolution() {
this.$emit('errorResolution', this.data)
},
isClass(item) {
if (this.$route.path === '/product-analysis/result') {
return item.is_correct ? '' : 'active'
}
return ''
}
}
}
</script>
<style lang="scss" scoped>
textarea {
width: 603px;
height: 150px;
background: #ececec;
border-radius: 10px;
outline: none;
resize: none;
margin: 20px auto 0;
display: block;
padding: 15px;
box-sizing: border-box;
&.active{
background: #FFFFFF;
border: 1px solid #C11818;
}
}
</style>
<template>
<box title="投资目标">
<textarea v-for="(item, index) in data.completions" v-model="item.commit_answer" :key="index" :id="item.id"></textarea>
<box title="投资目标" :isErrorBtn="isErrorBtn()" @errorResolution="errorResolution">
<textarea :class="`isDomActive ${isClass(item)}`" v-for="(item, index) in data.completions" v-model="item.commit_answer" :key="index" :id="item.id"></textarea>
</box>
</template>
......@@ -15,8 +15,20 @@ export default {
type: Object
}
},
data() {
return {}
methods: {
isErrorBtn() {
const findErr = this.data.completions.findIndex(item => !item.is_correct)
return findErr + 1
},
errorResolution() {
this.$emit('errorResolution', this.data)
},
isClass(item) {
if (this.$route.path === '/product-analysis/result') {
return item.is_correct ? '' : 'active'
}
return ''
}
}
}
</script>
......@@ -33,5 +45,9 @@ textarea {
display: block;
padding: 15px;
box-sizing: border-box;
&.active{
background: #FFFFFF;
border: 1px solid #C11818;
}
}
</style>
<template>
<box title="产品概括">
<box title="产品概括" :isErrorBtn="isErrorBtn()" @errorResolution="errorResolution">
<ul>
<li v-for="(item, index) in data.completions" :key="index" :id="item.id" :class="item.tag">
<li v-for="(item, index) in data.completions" :key="index" :id="item.id" :class="`${item.tag} isDomActive ${isClass(item)}`">
<img :src="iconUrl(item)" class="icon" />
<div class="tag">{{ item.subject }}</div>
<div class="text" v-if="$route.path === '/product-analysis/result'">{{ item.commit_answer }}</div>
......@@ -19,6 +19,10 @@ export default {
data: { type: Object }
},
methods: {
isErrorBtn() {
const findErr = this.data.completions.findIndex(item => !item.is_correct)
return findErr + 1
},
iconUrl(item) {
const map = {
product_overview_completion: 'https://webapp-pub.ezijing.com/x-training-new/products1.png',
......@@ -29,10 +33,18 @@ export default {
fund_principal_completion: 'https://webapp-pub.ezijing.com/x-training-new/products6.png'
}
return map[item.tag]
},
isClass(item) {
if (this.$route.path === '/product-analysis/result') {
return item.is_correct ? '' : 'active'
}
return ''
},
errorResolution() {
this.$emit('errorResolution', this.data)
}
},
mounted() {
console.log(this.data, '123=-=')
}
}
</script>
......@@ -51,6 +63,14 @@ ul {
background: #f1fcf9;
border: 1px solid #b8ebde;
border-radius: 12px;
&.active{
background: #FFFFFF !important;
border: 1px solid #C11818 !important;
box-shadow: 5px 6px 13px rgba(4, 0, 0, 0.18);
textarea{
border-bottom: 1px solid #C11818 !important;
}
}
.text {
width: 151px;
font-size: 22px;
......
<template>
<div class="result-box">
<div class="pop-layer"></div>
<report @getScore="getScore">
<report @getScore="getScore" @errorResolution="errorResolution">
<div class="trophy-box">
<img src="https://webapp-pub.ezijing.com/x-training-new/trophy.png" />
<div class="text">
......@@ -10,6 +10,19 @@
</div>
</div>
</report>
<div class="analysis-box" v-if="isShow">
<div class="content">
<div class="close" @click="close">×</div>
<div class="tit">查看答案</div>
<ul>
<li v-for="(item, index) in answerList" :key="index">
<div class="title">{{ `${index + 1}.${item.subject}` }}</div>
<div class="my">我的答案:{{ item.commit_answer }}</div>
<div class="answer">正确答案:{{ item.answer }}</div>
</li>
</ul>
</div>
</div>
</div>
</template>
......@@ -19,21 +32,93 @@ export default {
components: { Report },
data() {
return {
score: ''
score: '',
isShow: false,
answerList: []
}
},
created() {
document.body.scrollTop = document.documentElement.scrollTop = 0
},
methods: {
errorResolution(data) {
console.log(data)
if (data.tag === 'performance_benchmark') {
const replaceData = data.completions[0].commit_answer.replace(/,/g, '×').replace(/;/g, '+')
data.completions[0].commit_answer = replaceData
}
this.answerList = data.completions
this.isShow = true
},
getScore(res) {
this.score = res.score
},
close() {
this.isShow = false
}
}
}
</script>
<style lang="scss" scoped>
.analysis-box{
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0,0,0,0.3);
z-index: 99999;
.content{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 824px;
padding: 40px 40px 100px;
background: #FFFFFF;
opacity: 1;
border-radius: 16px;
.close{
position: absolute;
top: 10px;
right: 28px;
width: 20px;
height: 20px;
font-size: 40px;
color: #999999;
line-height: 100%;
cursor: pointer;
}
.tit{
font-size: 20px;
line-height: 100%;
color: #333333;
}
ul{
li{
margin-top: 38px;
div{
line-height: 100%;
}
.title{
font-size: 16px;
color: #999999;
margin-bottom: 18px;
}
.my{
font-size: 16px;
color: #333333;
margin-bottom: 12px;
}
.answer{
font-size: 16px;
color: #4DB299;
}
}
}
}
}
.result-box {
margin: 66px auto;
width: 714px;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论