You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

397 lines
23 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. <template>
  2. <section>
  3. <el-row>
  4. <el-select v-model="filters.category" clearable @change="onCategroySelect" style="width:100%;" :disabled="true">
  5. <el-option v-for="(item,index) in categorys" :label="item" :value="item" :key="index"></el-option>
  6. </el-select>
  7. </el-row>
  8. <el-row ref="table" :style="{height:maxTableHeight+'px',overflow:'auto'}">
  9. <div class="moduleset-lg hidden-md-and-down">
  10. <div class="nav">
  11. <draggable @update="datadragEnd" v-model="datas" style='sort: false' >
  12.    <transition-group >
  13. <div class="nav_item" :class="{itemActive: item.isChecked,curr:item.isCurr}" v-for="(item, index) in datas" :key="index" @click="selectItem(item, index)">
  14. <img :src="item.img" alt="">
  15. <div class="desc">
  16. <p>{{index+1}} {{item.rptName}}</p>
  17. <span>
  18. {{item.desc}}
  19. </span>
  20. </div>
  21. <span class="check"><el-checkbox v-model="item.isChecked" :true-label="'true'" :false-label="'false'" @change="onChange(item,$event)"></el-checkbox></span>
  22. </div>
  23.    </transition-group>
  24. </draggable>
  25. </div>
  26. </div>
  27. <div class="moduleset-sm hidden-lg-and-up">
  28. <div class="nav">
  29. <draggable @update="datadragEnd" v-model="datas" style='sort: false' >
  30.    <transition-group >
  31. <div class="nav_item" :class="{itemActive: item.isChecked,curr:item.isCurr}" v-for="(item, index) in datas" :key="index" @click="selectItem(item, index)">
  32. <div class="title"><p>{{index+1}} {{item.rptName}}</p></div>
  33. <div class="context">
  34. <img :src="item.img" alt=""></img>
  35. <div class="desc">
  36. <span>{{item.desc}}</span>
  37. </div>
  38. </div>
  39. <span class="check"><el-checkbox v-model="item.isChecked" :true-label="'true'" :false-label="'false'" @change="onChange(item,$event)"></el-checkbox></span>
  40. </div>
  41.    </transition-group>
  42. </draggable>
  43. </div>
  44. </div>
  45. </el-row>
  46. </section>
  47. </template>
  48. <script>
  49. import util from '@/common/js/util';//全局公共库
  50. import pieSimple from '../images/pie-simple.png'
  51. import lineStack from '../images/line-stack.png'
  52. import areaStack from '../images/area-stack.png'
  53. import ranjintu from '../images/ranjintu.png'
  54. import datasetLink from '../images/dataset-link.png'
  55. import bar from '../images/bar.png'
  56. import draggable from 'vuedraggable'
  57. import { mapGetters } from 'vuex'
  58. import store from '@/store'
  59. export default {
  60. props: ['category','showCheckedOnly'],
  61. components:{
  62. draggable
  63. },
  64. computed: {
  65. ...mapGetters(['userInfo']),
  66. compsCpd(){
  67. var comps=this.rptListCpd;
  68. if(this.showCheckedOnly){
  69. comps=comps.filter(k=>k.isChecked)
  70. }
  71. comps.sort((i1,i2)=>{
  72. return i1.index-i2.index
  73. })
  74. return comps;
  75. },
  76. rptListCpd(){
  77. if( !this.filters.category){
  78. return this.comps;
  79. }else{
  80. return this.comps.filter(i=>i.category.indexOf(this.filters.category)>=0)
  81. }
  82. },
  83. categorys:function(){
  84. var map={};
  85. var list=[];
  86. this.comps.forEach(e => {
  87. var cateList=e.category.split(",")
  88. cateList.forEach(cate=>{
  89. if(!map[cate]){
  90. list.push(cate);
  91. map[cate]=cate
  92. }
  93. })
  94. });
  95. return list;
  96. },
  97. },
  98. watch: {
  99. category(){
  100. this.filters.category=this.category
  101. },
  102. compsCpd(){
  103. this.datas= this.compsCpd;
  104. }
  105. },
  106. data() {
  107. return {
  108. filterVisible:false,
  109. filters:{
  110. category:'企业级'
  111. },
  112. datas:[],
  113. comps: [
  114. {isChecked:false,isCurr:false,rptName:'迭代总结',category:'迭代级',compId:'xmIterationRptOverview',desc:'显示迭代总体情况',img:pieSimple },
  115. {isChecked:false,isCurr:false,rptName:'迭代燃尽图',category:'迭代级',compId:'xmIterationBurnout',desc:'跟踪迭代的剩余工作量按日期变化趋势,识别迭代当前进度情况',img:ranjintu },
  116. {isChecked:false,isCurr:false,rptName:'需求每日趋势',category:'迭代级',compId:'xmIterationMenuDayTrend',desc:'跟踪未开始、执行中、已完成、已关闭状态的需求数量按日期变化趋势,识别需求工作情况',img:lineStack },
  117. {isChecked:false,isCurr:false,rptName:'需求每日累积',category:'迭代级',compId:'xmIterationMenuDayAccumulate',desc:'跟踪未开始、执行中、已完成、已关闭状态的需求数量按日期累积情况,识别需求工作的瓶颈',img:areaStack },
  118. {isChecked:false,isCurr:false,rptName:'迭代工作项每日趋势',category:'迭代级',compId:'xmIterationWorkItemDayList',desc:'统计迭代每日工作项数量分布情况',img:datasetLink },
  119. {isChecked:false,isCurr:false,rptName:'迭代缺陷每日趋势',category:'迭代级',compId:'xmIterationQuestionDayTrend',desc:'跟踪新提出、执行中、已解决、已关闭状态的缺陷数量按日期变化趋势,识别缺陷处理工作情况',img:lineStack },
  120. {isChecked:false,isCurr:false,rptName:'迭代缺陷每日累积',category:'迭代级',compId:'xmIterationQuestionDayAccumulate',desc:'跟踪一段时间内,各种程度和类别的缺陷累积情况,监控缺陷的变化趋势',img:areaStack },
  121. //企业级报表
  122. //{isChecked:false,isCurr:false,rptName:'企业总结',category:'企业级',compId:'xmBranchRptOverview',desc:'显示企业总体情况',img:pieSimple },
  123. {isChecked:false,isCurr:false,rptName:'企业缺陷每日趋势',category:'企业级',compId:'xmBranchQuestionDayTrend',desc:'跟踪新提出、执行中、已解决、已关闭状态的缺陷数量按日期变化趋势,识别缺陷处理工作情况',img:lineStack },
  124. {isChecked:false,isCurr:false,rptName:'企业工作项每日趋势',category:'企业级',compId:'xmBranchWorkItemDayList',desc:'统计迭代每日工作项数量分布情况',img:datasetLink },
  125. //{isChecked:false,isCurr:false,rptName:'企业缺陷每日趋势',category:'企业级',compId:'xmBranchQuestionDayTrend',desc:'跟踪新提出、执行中、已解决、已关闭状态的缺陷数量按日期变化趋势,识别缺陷处理工作情况',img:lineStack },
  126. {isChecked:false,isCurr:false,rptName:'企业缺陷每日累积',category:'企业级',compId:'xmBranchQuestionDayAccumulate',desc:'跟踪一段时间内,各种程度和类别的缺陷累积情况,监控缺陷的变化趋势',img:areaStack },
  127. {isChecked:false,isCurr:false,rptName:'需求每日趋势',category:'企业级',compId:'xmBranchMenuDayTrend',desc:'跟踪未开始、执行中、已完成、已关闭状态的需求数量按日期变化趋势,识别需求工作情况',img:lineStack },
  128. {isChecked:false,isCurr:false,rptName:'需求每日累积',category:'企业级',compId:'xmBranchMenuDayAccumulate',desc:'跟踪未开始、执行中、已完成、已关闭状态的需求数量按日期累积情况,识别需求工作的瓶颈',img:areaStack },
  129. //产品报表
  130. {isChecked:false,isCurr:false,rptName:'产品总结',category:'产品级',compId:'xmProductRptOverview',desc:'显示产品总体情况',img:pieSimple },
  131. {isChecked:false,isCurr:false,rptName:'产品工作项每日趋势',category:'产品级',compId:'xmProductWorkItemDayList',desc:'统计产品每日工作项数量分布情况',img:datasetLink },
  132. {isChecked:false,isCurr:false,rptName:'需求每日趋势',category:'产品级',compId:'xmMenuDayTrend',desc:'跟踪未开始、执行中、已完成、已关闭状态的需求数量按日期变化趋势,识别需求工作情况',img:lineStack },
  133. {isChecked:false,isCurr:false,rptName:'需求每日累积',category:'产品级',compId:'xmMenuDayAccumulate',desc:'跟踪未开始、执行中、已完成、已关闭状态的需求数量按日期累积情况,识别需求工作的瓶颈',img:areaStack },
  134. {isChecked:false,isCurr:false,rptName:'需求属性分布',category:'产品级,迭代级,企业级',compId:'xmMenuAttDist',desc:'统计所有需求任意属性数量分布情况(实时数据)',img:pieSimple },
  135. {isChecked:false,isCurr:false,rptName:'需求年龄分布',category:'产品级,迭代级,企业级',compId:'xmMenuAgeDist',desc:'统计所有需求年龄分布情况(实时数据)',img:pieSimple },
  136. {isChecked:false,isCurr:false,rptName:'需求排行榜',category:'产品级,迭代级,企业级',compId:'xmMenuSort',desc:'按提出人、负责人、迭代、产品等维度统计用户故事数量按高到低进行排行(实时数据)',img:bar },
  137. {isChecked:false,isCurr:false,rptName:'模块需求数量统计',category:'产品级,迭代级,企业级',compId:'xmMenuFuncSort',initGroupBy:'func_id',desc:'统计每个模块当前的需求数量(实时数据)',img:bar },
  138. {isChecked:false,isCurr:false,rptName:'迭代需求数量统计',category:'产品级,迭代级,企业级',compId:'xmMenuIterationSort',initGroupBy:'iteration_id',desc:'统计每个迭代当前的需求数量(实时数据)',img:bar },
  139. {isChecked:false,isCurr:false,rptName:'产品需求数量统计',category:'产品级,企业级',compId:'xmMenuProductSort',initGroupBy:'product_id',desc:'统计每个产品当前的需求数量(实时数据)',img:bar },
  140. {isChecked:false,isCurr:false,rptName:'产品缺陷每日趋势',category:'产品级',compId:'xmQuestionDayTrend',desc:'跟踪新提出、执行中、已解决、已关闭状态的缺陷数量按日期变化趋势,识别缺陷处理工作情况',img:lineStack },
  141. {isChecked:false,isCurr:false,rptName:'产品缺陷每日累积',category:'产品级',compId:'xmQuestionDayAccumulate',desc:'跟踪一段时间内,各种程度和类别的缺陷累积情况,监控缺陷的变化趋势',img:areaStack },
  142. //项目报表
  143. {isChecked:false,isCurr:false,rptName:'项目总结',category:'项目级',compId:'xmProjectRptOverview',desc:'显示项目总体情况',img:pieSimple },
  144. {isChecked:false,isCurr:false,rptName:'项目工作项每日趋势',category:'项目级',compId:'xmProjectWorkItemDayList',desc:'统计项目每日工作项数量分布情况',img:datasetLink },
  145. {isChecked:false,isCurr:false,rptName:'任务每日趋势',category:'项目级',compId:'xmTaskDayTrend',desc:'跟踪未开始、执行中、已完成、已关闭状态的任务数量按日期变化趋势,识别任务工作情况',img:lineStack },
  146. {isChecked:false,isCurr:false,rptName:'任务每日累积',category:'项目级',compId:'xmTaskDayAccumulate',desc:'跟踪未开始、执行中、已完成、已关闭状态的任务数量按日期累积情况,识别任务工作的瓶颈',img:areaStack },
  147. {isChecked:false,isCurr:false,rptName:'任务属性分布',category:'项目级,企业级',compId:'xmTaskAttDist',desc:'统计所有任务任意属性数量分布情况(实时数据)',img:pieSimple },
  148. {isChecked:false,isCurr:false,rptName:'任务年龄分布',category:'项目级,企业级',compId:'xmTaskAgeDist',desc:'统计所有任务年龄分布情况(实时数据)',img:pieSimple },
  149. {isChecked:false,isCurr:false,rptName:'任务排行榜',category:'项目级,企业级',compId:'xmTaskSort',desc:'任务提出人、负责人的用户故事数量排行(实时数据)',img:bar },
  150. {isChecked:false,isCurr:false,rptName:'项目结算工时每日趋势',category:'项目级',compId:'xmProjectWorkloadSetDayList',desc:'统计项目每日登记工时、结算工时数量分布情况',img:datasetLink },
  151. {isChecked:false,isCurr:false,rptName:'项目结算工时每月趋势',category:'项目级',compId:'xmProjectWorkloadSetMonthList',desc:'统计项目每月登记工时、结算工时数量分布情况',img:datasetLink },
  152. //测试库级报表
  153. {isChecked:false,isCurr:false,rptName:'测试计划总结',category:'测试计划级',compId:'xmTestPlanRptOverview',desc:'显示测试计划总体情况',img:pieSimple },
  154. {isChecked:false,isCurr:false,rptName:'测试库总体测试总结',category:'测试库级',compId:'xmTestCasedbRptOverview',desc:'显示测试库总体情况',img:pieSimple },
  155. {isChecked:false,isCurr:false,rptName:'测试用例规划分析',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmTestCaseToPlanCalc',desc:'显示用例被规划到测试计划中的次数统计',img:pieSimple },
  156. {isChecked:false,isCurr:false,rptName:'测试用例需求覆盖分析',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmTestCaseMenuSort',initGroupBy:'menu_id',desc:'统计测试用例需求覆盖情况',img:bar },
  157. {isChecked:false,isCurr:false,rptName:'测试用例模块覆盖分析',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmTestCaseFuncSort',initGroupBy:'func_id',desc:'统计测试用例覆盖各个模块的情况',img:bar },
  158. {isChecked:false,isCurr:false,rptName:'测试用例负责人排行榜',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmTestCaseCuserSort',initGroupBy:'cuserid',desc:'统计测试团队每个人负责的测试用例数并进行排序',img:bar },
  159. {isChecked:false,isCurr:false,rptName:'测试用例执行状态分布',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmTestPlanCaseExecStatusDist',desc:'按测试用例执行结果统计,通过、失败、忽略、阻塞',img:pieSimple },
  160. {isChecked:false,isCurr:false,rptName:'测试用例执行用户分布',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmTestPlanCaseUserDist',desc:'统计测试用例负责人用例执行情况',img:bar },
  161. {isChecked:false,isCurr:false,rptName:'缺陷回归分布',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmQuestionRetestDist',desc:'统计项目中缺陷在回归测试中分布情况,跟踪缺陷的重新打开率;',img:pieSimple },
  162. {isChecked:false,isCurr:false,rptName:'测试次数每日统计',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmTestDayTimesCalc',desc:'统计每日测试用例执行数量',img:bar },
  163. {isChecked:false,isCurr:false,rptName:'缺陷状态分布',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmQuestionStateDist',desc:'跟踪新提出、执行中、已解决、已关闭状态的缺陷数量按日期变化趋势,识别缺陷处理工作情况',img:pieSimple },
  164. {isChecked:false,isCurr:false,rptName:'缺陷排行榜',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmQuestionSort',desc:'从缺陷提出人、创建人、负责人、故事等维度统计缺陷数量排行榜(实时数据)',img:bar },
  165. {isChecked:false,isCurr:false,rptName:'缺陷提出人排行榜',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmQuestionAskUserSort',initGroupBy:'ask_userid',desc:'从缺陷提出人、创建人、负责人、故事等维度统计缺陷数量排行榜(实时数据)',img:bar },
  166. {isChecked:false,isCurr:false,rptName:'缺陷负责人排行榜',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmQuestionHandlerUserSort',initGroupBy:'handler_userid',desc:'从缺陷提出人、创建人、负责人、故事等维度统计缺陷数量排行榜(实时数据)',img:bar },
  167. {isChecked:false,isCurr:false,rptName:'缺陷模块排行榜',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmQuestionFuncSort',initGroupBy:'func_id',desc:'从缺陷提出人、创建人、负责人、故事等维度统计缺陷数量排行榜(实时数据)',img:bar },
  168. {isChecked:false,isCurr:false,rptName:'缺陷需求排行榜',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmQuestionMenuSort',initGroupBy:'menu_id',desc:'从缺陷提出人、创建人、负责人、故事等维度统计缺陷数量排行榜(实时数据)',img:bar },
  169. {isChecked:false,isCurr:false,rptName:'缺陷属性分布',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmQuestionAttDist',desc:'统计所有缺陷任意属性数量分布情况(实时数据)',img:pieSimple },
  170. {isChecked:false,isCurr:false,rptName:'缺陷年龄分布',category:'测试计划级,测试库级,项目级,产品级,迭代级,企业级',compId:'xmQuestionAgeDist',desc:'统计所有缺陷按照年龄的分布情况,跟踪缺陷的生命周期和响应情况',img:pieSimple },
  171. ],
  172. maxTableHeight:300,
  173. }
  174. },
  175. methods: {
  176. setChecked(compId,checked){
  177. var com=this.comps.find(c=>c.compId==compId)
  178. if(com){
  179. com.isChecked=checked
  180. }
  181. },
  182. setCheckeds(compIds,checked){
  183. this.comps.forEach(k=>{
  184. if(compIds.some(c=>c==k.compId)){
  185. k.isChecked=checked
  186. }else{
  187. k.isChecked=!checked
  188. }
  189. })
  190. },
  191. onChange(comp,checked){
  192. this.$emit('change',comp,checked)
  193. },
  194. onCategroySelect(){
  195. this.selectItem(this.rptListCpd[0])
  196. },
  197. selectItem(item){
  198. this.comps.forEach(k=>k.isCurr=false)
  199. item.isCurr=true
  200. item.isChecked=true;
  201. this.$emit("row-click",item)
  202. },
  203. datadragEnd(evt){
  204. evt.preventDefault();
  205. console.log('拖动前的索引 :' + evt.oldIndex)
  206. console.log('拖动后的索引 :' + evt.newIndex)
  207. this.$emit('sort',evt,this.datas)
  208. }
  209. },
  210. mounted(){
  211. store.dispatch("toggleSideBar",false)
  212. this.comps.forEach((k,index)=>k.index=index)
  213. //this.comps.forEach(k=>k.id=k.id?k.id:k.compId)
  214. this.$nextTick(()=>{
  215. this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el)
  216. if(this.category){
  217. this.filters.category=this.category
  218. }else{
  219. if(this.xmTestPlan && this.xmTestPlan.id){
  220. this.filters.category="测试计划级"
  221. }else if(this.xmIteration && this.xmIteration.id){
  222. this.filters.category="迭代级"
  223. }else if(this.xmTestCasedb && this.xmTestCasedb.id){
  224. this.filters.category="测试库级"
  225. }else if(this.xmProject && this.xmProject.id){
  226. this.filters.category="项目级"
  227. }else if(this.xmProduct && this.xmProduct.id){
  228. this.filters.category="产品级"
  229. }else{
  230. this.filters.category="企业级"
  231. }
  232. }
  233. this.datas=this.compsCpd
  234. })
  235. }
  236. }
  237. </script>
  238. <style lang="scss" scoped>
  239. .moduleset-lg {
  240. .nav {
  241. overflow: hidden;
  242. display:flex;
  243. align-items:center;
  244. justify-content: space-between;
  245. flex-wrap:wrap;
  246. padding-right: 5px;
  247. .nav_item {
  248. padding:5px;
  249. display: flex;
  250. flex-direction: row;
  251. border: 2px solid #EDF0F9;
  252. box-shadow: 0px 3px 4px 0px rgba(186, 184, 184, 0.1);
  253. border-radius: 8px;
  254. align-items: center;
  255. position: relative;
  256. cursor: pointer;
  257. margin-top: 10px;
  258. width:100%;
  259. img {
  260. object-fit:cover;
  261. max-width: 25%;
  262. max-height: 100%;
  263. margin-right: 5px;
  264. }
  265. p {
  266. font-size: 16px;
  267. font-weight: bold;
  268. color: #7D7D7D;
  269. margin-bottom: 10px;
  270. }
  271. span {
  272. font-size: 14px;
  273. color: #7D7D7D;
  274. line-height: 16px;
  275. }
  276. .check {
  277. position: absolute;
  278. top: 5px;
  279. right: 5px;
  280. font-size: 30px;
  281. color: #90B1F4;
  282. }
  283. }
  284. .itemActive {
  285. border: 2px solid #90B1F4;
  286. box-shadow: 0px 3px 4px 0px rgba(186, 184, 184, 0.1);
  287. }
  288. .curr {
  289. background-color: #cbd2df;
  290. }
  291. }
  292. }
  293. .moduleset-sm {
  294. .nav {
  295. overflow: hidden;
  296. display:flex;
  297. align-items:center;
  298. justify-content: space-between;
  299. flex-wrap:wrap;
  300. padding-right: 5px;
  301. .nav_item {
  302. padding:2px;
  303. flex-direction: row;
  304. border: 2px solid #EDF0F9;
  305. box-shadow: 0px 3px 4px 0px rgba(186, 184, 184, 0.1);
  306. border-radius: 8px;
  307. align-items: center;
  308. position: relative;
  309. cursor: pointer;
  310. margin-top: 5px;
  311. width:100%;
  312. .title{
  313. width:100%;
  314. p {
  315. font-size: 14px;
  316. font-weight: bold;
  317. color: #7D7D7D;
  318. margin-bottom: 5px;
  319. margin-top: 5px;
  320. }
  321. }
  322. .context{
  323. display: flex;
  324. width: 100%;
  325. padding: 2px;
  326. img {
  327. object-fit:cover;
  328. max-width: 25%;
  329. max-height: 100%;
  330. padding: 2px;
  331. }
  332. .desc{
  333. width:75%;
  334. span {
  335. font-size: 10px;
  336. color: #7D7D7D;
  337. line-height: 12px;
  338. }
  339. }
  340. }
  341. .check {
  342. position: absolute;
  343. top: 5px;
  344. right: 5px;
  345. font-size: 20px;
  346. color: #90B1F4;
  347. }
  348. }
  349. .itemActive {
  350. border: 2px solid #90B1F4;
  351. box-shadow: 0px 3px 4px 0px rgba(186, 184, 184, 0.1);
  352. }
  353. .curr {
  354. background-color: #90B1F4;
  355. }
  356. }
  357. }
  358. </style>