Browse Source

Merge pull request 'zq-slider-menu' (#49) from zq-slider-menu into master

Reviewed-on: #49
pull/52/head
zhangqi 2 weeks ago
parent
commit
35b0f8450c
  1. 38
      src/components/GlobalLoading1.vue
  2. 4
      src/components/GuipInput.vue
  3. 12
      src/components/GuipRadio.vue
  4. 3
      src/components/GuipSelect.vue
  5. 14
      src/views/elementGroups.vue

38
src/components/GlobalLoading1.vue

@ -1,18 +1,19 @@
<template> <template>
<div class="content-loading-overlay" v-if="isLoading"> <div>
<div class="content-loading-overlay" v-show="isLoading">
<div class="loading-content"> <div class="loading-content">
<div ref="animationContainer" class="animation-container"></div> <div ref="animationContainer" class="animation-container"></div>
</div> </div>
</div> </div>
<div v-else style="height: 100%;"> <div v-show="!isLoading">
<slot></slot> <slot></slot>
</div> </div>
</div>
</template> </template>
<script> <script>
import lottie from 'lottie-web' import lottie from 'lottie-web'
import { mapState } from 'vuex' import { mapState } from 'vuex'
import defaultAnimation from '@/assets/loadingAni.json' // JSON import defaultAnimation from '@/assets/loadingAni.json'
export default { export default {
name: 'Loading', name: 'Loading',
@ -26,41 +27,42 @@ export default {
}, },
watch: { watch: {
isLoading(newVal) { isLoading(newVal) {
if (newVal) {
this.$nextTick(() => { this.$nextTick(() => {
if (newVal) {
this.playAnimation() this.playAnimation()
})
} else { } else {
this.stopAnimation() this.stopAnimation()
} }
})
} }
}, },
mounted() {
if (this.isLoading) {
this.playAnimation()
}
},
beforeDestroy() {
this.stopAnimation()
},
methods: { methods: {
playAnimation() { playAnimation() {
//
if (this.anim) {
this.anim.destroy()
this.anim = null
}
console.log('执行动画')
this.anim = lottie.loadAnimation({ this.anim = lottie.loadAnimation({
container: this.$refs.animationContainer, container: this.$refs.animationContainer,
renderer: 'svg', renderer: 'svg',
loop: true, loop: true,
autoplay: true, autoplay: true,
animationData: defaultAnimation // JSON animationData: defaultAnimation
}) })
if (this.anim) {
this.anim.play()
}
}, },
stopAnimation() { stopAnimation() {
if (this.anim) { if (this.anim) {
this.anim.stop() this.anim.stop()
} }
} }
},
beforeDestroy() {
if (this.anim) {
this.anim.destroy() //
}
} }
} }
</script> </script>

4
src/components/GuipInput.vue

@ -1,5 +1,5 @@
<template> <template>
<el-form-item :style="{ height: height, ...styleObject }" <el-form-item :style="{ ...styleObject }" :required="required"
:class="[{ 'column': column }, { 'w510': addClass == 'w510' }, { 'w388': addClass == 'w388' }, 'form-item']" :label="label" :class="[{ 'column': column }, { 'w510': addClass == 'w510' }, { 'w388': addClass == 'w388' }, 'form-item']" :label="label"
:prop="prop" :rules="rules"> :prop="prop" :rules="rules">
<p v-if="desc" class="desc_right">{{ desc }}</p> <p v-if="desc" class="desc_right">{{ desc }}</p>
@ -36,7 +36,7 @@
<script> <script>
export default { export default {
name: 'GuipInput', name: 'GuipInput',
props: ['value', 'styleObject', 'disabled', 'defaultValue', 'placeholder', props: ['value', 'styleObject', 'disabled', 'defaultValue', 'placeholder','required',
'maxlength', 'minLength', 'clear', 'width', 'height', 'showWordLimit', 'maxlength', 'minLength', 'clear', 'width', 'height', 'showWordLimit',
'label', 'type', 'prop', 'rules', 'column', 'addClass', 'desc', 'unit'], 'label', 'type', 'prop', 'rules', 'column', 'addClass', 'desc', 'unit'],
data() { data() {

12
src/components/GuipRadio.vue

@ -1,7 +1,7 @@
<template> <template>
<el-form-item <el-form-item
:class="[{'column':column},'form-item']" :class="[{'column':column},'form-item']"
:label="label" :prop="prop" :rules="rules"> :label="label" :prop="prop" :rules="rules" :required="required">
<el-radio-group <el-radio-group
v-model="selectedValue" v-model="selectedValue"
v-bind="$attrs" v-bind="$attrs"
@ -14,11 +14,7 @@
:disabled="option.disabled" :disabled="option.disabled"
> >
<!-- 默认展示和选中显示 不同文案 --> <!-- 默认展示和选中显示 不同文案 -->
{{ selectedValue === option.value ? option.selectedLabel : option.label }} {{( selectedValue === option.value ) ? (option.selectedLabel ? option.selectedLabel : option.label) :option.label }}
<!-- 自定义 选中图标 -->
<!-- <template #label>
<span><img src="../assets/radio_checked.svg" alt="custom icon" style="width: 16px; height: 16px;"> {{ text }}</span>
</template> -->
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
@ -30,6 +26,10 @@
props: { props: {
// //
column:{ column:{
type:String,
default:''
},
required:{
type:Boolean, type:Boolean,
default:false default:false
}, },

3
src/components/GuipSelect.vue

@ -1,5 +1,5 @@
<template> <template>
<el-form-item :style="{ ...style, height: height, ...styleObject }" <el-form-item :style="{ ...style, height: height, ...styleObject }" :required="required"
:class="[{ 'column': column }, { 'w510': addClass == 'w510' }, { 'w388': addClass == 'w388' }, 'form-item']" :class="[{ 'column': column }, { 'w510': addClass == 'w510' }, { 'w388': addClass == 'w388' }, 'form-item']"
:label="label" :prop="prop" :rules="rules"> :label="label" :prop="prop" :rules="rules">
<p v-if="desc" class="desc_right">{{ desc }}</p> <p v-if="desc" class="desc_right">{{ desc }}</p>
@ -32,6 +32,7 @@ export default {
}, },
styleObject: Object, styleObject: Object,
disabled: Boolean, disabled: Boolean,
required: Boolean,
defaultValue: [String, Number, Array], defaultValue: [String, Number, Array],
placeholder: String, placeholder: String,
width: String, width: String,

14
src/views/elementGroups.vue

@ -11,7 +11,7 @@
</div> </div>
<div class="ele-item"> <div class="ele-item">
<label for="">下拉框</label> <label for="">下拉框</label>
<GuipSelect width="600px" v-model="form.card" label="卡片" prop="card" :options="options" <GuipSelect width="600px" v-model="form.card" label="卡片" :default-value="form.card" prop="card" :options="options" valueKey="id1" labelKey="id2"
defaultValue="选项1" /> defaultValue="选项1" />
</div> </div>
<div> <div>
@ -263,7 +263,7 @@
<div style="width: 800px;height: 150px;"> <div style="width: 800px;height: 150px;">
<h3>表单上下布局 (宽度 510 388 用的最多 已有这2种宽度类名设置)</h3> <h3>表单上下布局 (宽度 510 388 用的最多 已有这2种宽度类名设置)</h3>
<GuipInput ref="GuipInput" column="column" addClass="w510" label="age" desc="这是是右侧文案" <GuipInput ref="GuipInput" column="column" addClass="w510" required label="age" desc="这是是右侧文案"
v-model="form.age" prop="age" placeholder="这是自定义默认提示语" /> v-model="form.age" prop="age" placeholder="这是自定义默认提示语" />
</div> </div>
@ -640,21 +640,31 @@ export default {
options: [{ options: [{
value: '选项1', value: '选项1',
label1: '黄金hhhhhh', label1: '黄金hhhhhh',
id1:'1',
id2:'啊11哈哈',
label: '黄金糕' label: '黄金糕'
}, { }, {
value: '选项2', value: '选项2',
id1:'12',
id2:'啊22哈哈',
label1: '双皮奶hhhhhhhhh', label1: '双皮奶hhhhhhhhh',
label: '双皮奶' label: '双皮奶'
}, { }, {
value: '选项3', value: '选项3',
id1:'13',
id2:'啊33哈哈',
label1: '蚵仔煎hhhhhhhhh', label1: '蚵仔煎hhhhhhhhh',
label: '蚵仔煎' label: '蚵仔煎'
}, { }, {
value: '选项4', value: '选项4',
id1:'14',
id2:'啊444哈哈',
label1: '双皮奶hhhhhhhhh', label1: '双皮奶hhhhhhhhh',
label: '龙须面' label: '龙须面'
}, { }, {
value: '选项5', value: '选项5',
id1:'155',
id2:'啊55哈哈',
label1: '双皮奶hhhhhhhhh', label1: '双皮奶hhhhhhhhh',
label: '北京烤鸭' label: '北京烤鸭'
}], }],

Loading…
Cancel
Save