feat(Survey): 更新题目列表图标和样式
- 使用图片替换字体图标 - 优化题目列表布局和样式 - 添加背景渐变样式
@@ -295,3 +295,8 @@ input {
|
|||||||
.el-table thead th {
|
.el-table thead th {
|
||||||
font-weight: unset;
|
font-weight: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.van-popup--bottom.van-popup--round{
|
||||||
|
background: linear-gradient( 180deg, #E8FAD7 0%, #FFFFFF 8%);
|
||||||
|
}
|
||||||
|
//background: linear-gradient( 180deg, #E8FAD7 0%, #FFFFFF 100%);
|
||||||
|
|||||||
@@ -9,21 +9,37 @@ import {
|
|||||||
signQuestion,
|
signQuestion,
|
||||||
nps
|
nps
|
||||||
} from '@/utils/importJsons';
|
} from '@/utils/importJsons';
|
||||||
|
|
||||||
|
import radioPng from '@/views/Design/images/1.png'
|
||||||
|
import checkboxPng from '@/views/Design/images/2.png'
|
||||||
|
import completionPng from '@/views/Design/images/4.png'
|
||||||
|
import ratePng from '@/views/Design/images/5.png'
|
||||||
|
import textImagePng from '@/views/Design/images/6.png'
|
||||||
|
import martrixQuestionCheckboxPng from '@/views/Design/images/10.png'
|
||||||
|
import martrixQuestionRadioPng from '@/views/Design/images/9.png'
|
||||||
|
import martrixQuestionTextPng from '@/views/Design/images/8.png'
|
||||||
|
import uploadPng from '@/views/Design/images/18.png'
|
||||||
|
import signPng from '@/views/Design/images/22.png'
|
||||||
|
import nspPng from '@/views/Design/images/106.png'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const basicQuesTypeList = [
|
const basicQuesTypeList = [
|
||||||
{
|
{
|
||||||
icon: '',
|
icon: radioPng,
|
||||||
name: '单选题',
|
name: '单选题',
|
||||||
question_type: 1,
|
question_type: 1,
|
||||||
json: radio
|
json: radio
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: '',
|
icon: checkboxPng,
|
||||||
name: '多选题',
|
name: '多选题',
|
||||||
question_type: 2,
|
question_type: 2,
|
||||||
json: checkbox
|
json: checkbox
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: '',
|
icon: completionPng,
|
||||||
name: '填空题',
|
name: '填空题',
|
||||||
question_type: 4,
|
question_type: 4,
|
||||||
json: completion
|
json: completion
|
||||||
@@ -35,49 +51,49 @@ const basicQuesTypeList = [
|
|||||||
// json: rate
|
// json: rate
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
icon: '',
|
icon: ratePng,
|
||||||
name: '数值打分',
|
name: '数值打分',
|
||||||
question_type: 5,
|
question_type: 5,
|
||||||
json: rate
|
json: rate
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: '𓱿',
|
icon: martrixQuestionRadioPng,
|
||||||
name: '矩阵单选',
|
name: '矩阵单选',
|
||||||
question_type: 9,
|
question_type: 9,
|
||||||
json: martrixQuestion
|
json: martrixQuestion
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: '',
|
icon:martrixQuestionCheckboxPng,
|
||||||
name: '矩阵多选',
|
name: '矩阵多选',
|
||||||
question_type: 10,
|
question_type: 10,
|
||||||
json: martrixQuestion
|
json: martrixQuestion
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: '',
|
icon: martrixQuestionTextPng,
|
||||||
name: '矩阵填空',
|
name: '矩阵填空',
|
||||||
question_type: 8,
|
question_type: 8,
|
||||||
json: martrixQuestion
|
json: martrixQuestion
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: '',
|
icon: uploadPng,
|
||||||
name: '文件上传',
|
name: '文件上传',
|
||||||
question_type: 18,
|
question_type: 18,
|
||||||
json: fileUpload
|
json: fileUpload
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: '',
|
icon: textImagePng,
|
||||||
name: '图文说明',
|
name: '图文说明',
|
||||||
question_type: 6,
|
question_type: 6,
|
||||||
json: textWithImages
|
json: textWithImages
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: '',
|
icon: signPng,
|
||||||
name: '签名',
|
name: '签名',
|
||||||
question_type: 22,
|
question_type: 22,
|
||||||
json: signQuestion
|
json: signQuestion
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: '',
|
icon:nspPng,
|
||||||
name: 'NPS',
|
name: 'NPS',
|
||||||
question_type: 106,
|
question_type: 106,
|
||||||
json: nps
|
json: nps
|
||||||
|
|||||||
BIN
src/views/Design/images/1.png
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
src/views/Design/images/10.png
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
BIN
src/views/Design/images/106.png
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
BIN
src/views/Design/images/18.png
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
BIN
src/views/Design/images/2.png
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
src/views/Design/images/22.png
Normal file
|
After Width: | Height: | Size: 8.3 KiB |
BIN
src/views/Design/images/4.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
src/views/Design/images/5.png
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
BIN
src/views/Design/images/6.png
Normal file
|
After Width: | Height: | Size: 8.5 KiB |
BIN
src/views/Design/images/8.png
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
BIN
src/views/Design/images/9.png
Normal file
|
After Width: | Height: | Size: 9.3 KiB |
@@ -99,20 +99,24 @@
|
|||||||
<van-col :span="6">添加题目</van-col>
|
<van-col :span="6">添加题目</van-col>
|
||||||
</van-row>
|
</van-row>
|
||||||
|
|
||||||
<van-grid :gutter="10" class="ques_list">
|
<div class="ques_list flex align-center " style="flex-wrap:wrap">
|
||||||
<van-grid-item
|
<div
|
||||||
|
class="icon-item"
|
||||||
v-for="item in quesList"
|
v-for="item in quesList"
|
||||||
:key="item.type"
|
:key="item.type"
|
||||||
:icon="item.icon"
|
|
||||||
icon-color="#70b936"
|
|
||||||
:text="item.name"
|
|
||||||
@click="questionEvent(item)"
|
@click="questionEvent(item)"
|
||||||
>
|
>
|
||||||
<template #icon>
|
|
||||||
<span class="mobilefont grid-icon" v-html="item.icon"></span>
|
<img :src="item.icon" alt="">
|
||||||
</template>
|
<p>{{item.name}}</p>
|
||||||
</van-grid-item>
|
<!-- <template #icon>-->
|
||||||
</van-grid>
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <span class="mobilefont grid-icon" v-html="item.icon"></span>-->
|
||||||
|
<!-- </template>-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</van-popup>
|
</van-popup>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -382,6 +386,7 @@ import { useRoute, useRouter } from 'vue-router';
|
|||||||
import YLPicker from '@/components/YLPicker.vue';
|
import YLPicker from '@/components/YLPicker.vue';
|
||||||
import { getPages } from '@/utils/public';
|
import { getPages } from '@/utils/public';
|
||||||
import { showConfirmDialog, showFailToast, showToast } from 'vant';
|
import { showConfirmDialog, showFailToast, showToast } from 'vant';
|
||||||
|
import {Position} from "@element-plus/icons-vue";
|
||||||
|
|
||||||
// 获取 Store 实例
|
// 获取 Store 实例
|
||||||
const counterStore = useCounterStore();
|
const counterStore = useCounterStore();
|
||||||
@@ -1034,11 +1039,34 @@ onBeforeMount(() => {
|
|||||||
.ques_title {
|
.ques_title {
|
||||||
margin: 20px 0 10px 20px;
|
margin: 20px 0 10px 20px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 16px;
|
font-size: 19px;
|
||||||
|
& div{
|
||||||
|
font-size: 19px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.ques_list {
|
.ques_list {
|
||||||
margin-bottom: 10px;
|
gap: 10px;
|
||||||
|
margin:20px 12px 30px 12px;
|
||||||
|
.icon-item{
|
||||||
|
flex: 1 1 calc(25% - 7.5px); // 每个元素占25%,减去间隙的一半(10px / 2 = 5px)
|
||||||
|
min-width: calc(25% - 7.5px);
|
||||||
|
max-width: calc(25% - 7.5px);
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
height: 88px;
|
||||||
|
& p{
|
||||||
|
|
||||||
|
width:100%;
|
||||||
|
position: absolute;
|
||||||
|
bottom:11px;
|
||||||
|
font-size:14px;
|
||||||
|
text-align:center;
|
||||||
|
color: #000000;
|
||||||
|
font-weight: 500;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1091,6 +1119,16 @@ onBeforeMount(() => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.icon-item{
|
||||||
|
width:76px;
|
||||||
|
height:88px;
|
||||||
|
img{
|
||||||
|
width:100%;
|
||||||
|
height:100%
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.survey-action {
|
.survey-action {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
|||||||