style.php 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <template id="carousel-img-style">
  2. <div class="carousel-img-style">
  3. <diy-tabs class="style-com-but" title="组件风格" :default_item="buttonData.typeItem" :list="buttonPattern" :img-style="{height: '30px',width: '30px'}" radio_text='image' @change="buttonSelect"></diy-tabs>
  4. <diy-style-contain title="轮播点">
  5. <el-radio-group v-model="buttonPointData.open" @change="uodateOpenType">
  6. <el-radio :label="true">打开</el-radio>
  7. <el-radio :label="false">关闭</el-radio>
  8. </el-radio-group>
  9. </diy-style-contain>
  10. <diy-tabs v-show="buttonPointData.open" class="style-com-but" title="轮播点样式" radio_text='image' :list="pointPattern" :img-style="{height: '30px',width: '30px'}" :default_item="buttonPointData.pointItem" @change="pointSelect"></diy-tabs>
  11. <diy-style-contain title="轮播点位置" v-show="buttonPointData.open">
  12. <el-image class="point-site-img" v-for="(item,index) in pointSiteImg" :key="index" :src="item"
  13. :class="{'point-site-img-sel': pointSiteIndex == index}" @click="updatePointSite(index)"></el-image>
  14. </diy-style-contain>
  15. <diy-img-setting suggest-size-text="建议图片宽为750,高度420" top-name="轮播图片"
  16. :open-add-img="true" :def-img-url="imgUrl + 'default_banner.png'"
  17. :img-infos="carouselImgArr" max-img-length="8" def-img-count="2"
  18. :default-tabs="['mall', 'other']"
  19. @change="addIconImg"
  20. ></diy-img-setting>
  21. <!-- 公共 -->
  22. <diy-tabs title="样式" radio_text='text' :default_item="defaultForm.default_color" @change="colorSelect"></diy-tabs>
  23. <diy-color :color-infos="defaultForm.colorInfos" :def-color="defaultForm.defColor" @chang="updateColor"></diy-color>
  24. <diy-size-setting top-name="边距" :size-infos-value="[5]" :str-max-size-val="[20]" :size-infos="defaultForm.sizeInfos" :max-value="50" @chang="sliderChange($event, 'margin')"></diy-size-setting>
  25. <diy-size-setting top-name="圆角设置" :size-infos="defaultForm.radiusInfos" :max-value="20" @chang="RadiusChange($event, 'radius')"></diy-size-setting>
  26. </div>
  27. </template>
  28. <script>
  29. const CARD_SCALE = 0.83
  30. Vue.component('carousel-img-style', {
  31. name: "carousel-img-style",
  32. mixins: [basicMixins],
  33. template: '#carousel-img-style',
  34. props: {
  35. activeItem: {
  36. type: Object,
  37. default () {
  38. return {}
  39. }
  40. }
  41. },
  42. data() {
  43. return {
  44. imgUrl: 'resources/img/decorate/',
  45. buttonPattern: [
  46. { label: 'resources/img/decorate/carousel-one.png', value: 'one' },
  47. { label: 'resources/img/decorate/carousel-two.png', value: 'two' },
  48. { label: 'resources/img/decorate/carousel-three.png', value: 'three' },
  49. ],
  50. pointPattern: [
  51. { label: 'resources/img/decorate/point-one.png', value: 'one' },
  52. { label: 'resources/img/decorate/point-two.png', value: 'two' },
  53. { label: 'resources/img/decorate/point-three.png', value: 'three' },
  54. { label: 'resources/img/decorate/point-four.png', value: 'four' },
  55. ],
  56. pointSiteImg: [
  57. "resources/img/decorate/align-left.png",
  58. "resources/img/decorate/align-center.png",
  59. "resources/img/decorate/align-right.png",
  60. ],
  61. buttonData: { //轮播展示风格
  62. typeItem: null,
  63. typeIndex: 0,
  64. },
  65. buttonPointData: { //轮播点
  66. open: true, //是否打开
  67. pointItem: null,//风格
  68. pointIndex: 0,
  69. position: 1,
  70. },
  71. pointSiteIndex: 1,
  72. carouselImgArr: [], //图片
  73. }
  74. },
  75. methods: {
  76. init() {
  77. basicMixins.methods.init.call(this); // 以前的数据调用一下
  78. this.defaultForm.sizeInfos = ['图片间距','上边距', '下边距', '左右边距'];
  79. if(!this.result.data.buttonData){
  80. this.result.data.buttonData = this.buttonData;
  81. } else {
  82. this.buttonData = this.result.data.buttonData;
  83. }
  84. if(!this.result.data.buttonPointData){
  85. this.result.data.buttonPointData = this.buttonPointData;
  86. } else {
  87. this.buttonPointData = this.result.data.buttonPointData;
  88. }
  89. if(this.result.data.pointSiteIndex >= 0){
  90. this.pointSiteIndex = this.result.data.pointSiteIndex;
  91. }
  92. },
  93. buttonSelect(val){
  94. console.info(val);
  95. if(val.index != 0 && this.defaultForm.sizeInfos){
  96. this.defaultForm.sizeInfos[0].hidden = false;
  97. } else {
  98. this.defaultForm.sizeInfos[0].hidden = true;
  99. }
  100. this.buttonData.typeItem = val.item;
  101. this.buttonData.typeIndex = val.index;
  102. this.result.data.buttonData = this.buttonData;
  103. this.updateInfos();
  104. },
  105. pointSelect(val){
  106. this.buttonPointData.pointItem = val.item;
  107. this.buttonPointData.pointIndex = val.index;
  108. this.result.data.buttonPointData = this.buttonPointData;
  109. this.updateInfos();
  110. },
  111. updatePointSite(index){
  112. this.pointSiteIndex = index;
  113. this.result.data.pointSiteIndex = index;
  114. this.updateInfos();
  115. },
  116. uodateOpenType(){
  117. this.result.data.buttonPointData = this.buttonPointData;
  118. this.updateInfos();
  119. },
  120. addIconImg(val){
  121. this.carouselImgArr = val;
  122. if(this.result.data.carouselImgArr){
  123. this.carouselImgArr = this.result.data.carouselImgArr;
  124. } else {
  125. this.result.data.carouselImgArr = this.carouselImgArr;
  126. }
  127. let imgArr = [];
  128. this.carouselImgArr.forEach(v => {
  129. imgArr.push(v.color);
  130. })
  131. this.result.computedStyle.carouselImgArr = imgArr;
  132. this.updateInfos();
  133. },
  134. sliderChange(val){
  135. if(this.buttonData.typeIndex == 0){
  136. val[0].hidden = true;
  137. }
  138. if(this.result.data.spaceInfo){
  139. this.defaultForm.sizeInfos = this.result.data.spaceInfo;
  140. } else {
  141. this.defaultForm.sizeInfos = val;
  142. }
  143. let style = {
  144. marginTop: this.defaultForm.sizeInfos[1].value + this.defaultForm.sizeInfos[1].unit,
  145. marginBottom: this.defaultForm.sizeInfos[2].value + this.defaultForm.sizeInfos[2].unit,
  146. marginLeft: this.defaultForm.sizeInfos[3].value + this.defaultForm.sizeInfos[3].unit,
  147. marginRight: this.defaultForm.sizeInfos[3].value + this.defaultForm.sizeInfos[3].unit
  148. }
  149. // 图片间距
  150. this.result.computedStyle.spaceStyle = style;
  151. this.result.data.spaceInfo = this.defaultForm.sizeInfos
  152. this.updateInfos();
  153. },
  154. updateInfos(){
  155. this.$emit("update", this.result)
  156. }
  157. }
  158. });
  159. </script>
  160. <style>
  161. .carousel-img-style .style-com-but .el-radio-button__inner{
  162. padding: 0;
  163. }
  164. .point-site-img{
  165. padding: 6px;
  166. width: 40px;
  167. height: 40px;
  168. margin-right: 20px;
  169. }
  170. .point-site-img-sel{
  171. padding: 5px;
  172. border: 1px solid #2D8CF0;
  173. }
  174. .point-site-img:hover{
  175. cursor:pointer;
  176. }
  177. /* .avatar-uploader .el-upload {
  178. border: 1px dashed #d9d9d9;
  179. border-radius: 6px;
  180. cursor: pointer;
  181. position: relative;
  182. overflow: hidden;
  183. }
  184. .avatar-uploader .el-upload:hover {
  185. border-color: #409EFF;
  186. }
  187. .avatar-uploader-icon {
  188. font-size: 28px;
  189. color: #8c939d;
  190. width: 92px;
  191. height: 92px;
  192. line-height: 92px;
  193. text-align: center;
  194. }
  195. .avatar {
  196. width: 92px;
  197. height: 92px;
  198. display: block;
  199. } */
  200. </style>