h5-qrcode-config.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <template>
  2. <div class="qrcode-config">
  3. <div class="config-block">
  4. <h3>二维码配置</h3>
  5. <!-- 获客助手跳转 -->
  6. <el-form-item label="获客助手跳转">
  7. <el-switch v-model="localConfig.enableGetCustomerAssistant" @change="handleConfigChange" />
  8. </el-form-item>
  9. <!-- 二维码尺寸 -->
  10. <el-form-item label="二维码尺寸(px)">
  11. <el-input-number
  12. v-model="localConfig.qrcodeSize"
  13. :min="80"
  14. :max="300"
  15. @change="handleConfigChange"
  16. />
  17. </el-form-item>
  18. <!-- 复制微信号区域 -->
  19. <el-divider></el-divider>
  20. <h4>复制微信号按钮</h4>
  21. <el-form-item label="是否启用">
  22. <el-switch v-model="localConfig.showCopyBtn" @change="handleConfigChange" />
  23. </el-form-item>
  24. <template v-if="localConfig.showCopyBtn">
  25. <el-form-item label="按钮文字">
  26. <el-input
  27. v-model="localConfig.copyBtnText"
  28. placeholder="请输入按钮文字"
  29. @change="handleConfigChange"
  30. />
  31. </el-form-item>
  32. <el-form-item label="文字颜色">
  33. <el-color-picker
  34. v-model="localConfig.copyBtnTextColor"
  35. show-alpha
  36. @change="handleConfigChange"
  37. />
  38. </el-form-item>
  39. <el-form-item label="填充颜色">
  40. <el-color-picker
  41. v-model="localConfig.copyBtnColor"
  42. show-alpha
  43. @change="handleConfigChange"
  44. />
  45. </el-form-item>
  46. </template>
  47. <!-- 点击添加老师区域 -->
  48. <el-divider></el-divider>
  49. <h4>点击添加老师按钮</h4>
  50. <el-form-item label="是否启用">
  51. <el-switch v-model="localConfig.showClickBtn" @change="handleConfigChange" />
  52. </el-form-item>
  53. <template v-if="localConfig.showClickBtn">
  54. <el-form-item label="按钮文字">
  55. <el-input
  56. v-model="localConfig.clickBtnText"
  57. placeholder="请输入按钮文字"
  58. @change="handleConfigChange"
  59. />
  60. </el-form-item>
  61. <el-form-item label="文字颜色">
  62. <el-color-picker
  63. v-model="localConfig.clickBtnTextColor"
  64. show-alpha
  65. @change="handleConfigChange"
  66. />
  67. </el-form-item>
  68. <el-form-item label="填充颜色">
  69. <el-color-picker
  70. v-model="localConfig.clickBtnColor"
  71. show-alpha
  72. @change="handleConfigChange"
  73. />
  74. </el-form-item>
  75. <el-form-item label="微信内跳转">
  76. <el-switch v-model="localConfig.clickBtnWechatJump" @change="handleConfigChange" />
  77. </el-form-item>
  78. </template>
  79. <!-- 其他选项 -->
  80. <el-divider></el-divider>
  81. <h4>其他设置</h4>
  82. <el-form-item label="默认尝试拉起微信">
  83. <el-switch v-model="localConfig.enableDefaultWechat" @change="handleConfigChange" />
  84. </el-form-item>
  85. <el-form-item label="启用小程序授权">
  86. <el-switch v-model="localConfig.enableMiniProgram" @change="handleConfigChange" />
  87. </el-form-item>
  88. </div>
  89. </div>
  90. </template>
  91. <script>
  92. export default {
  93. name: 'QrcodeConfigComponent',
  94. props: {
  95. config: {
  96. type: Object,
  97. required: false,
  98. default: () => ({
  99. qrcodeImage: '',
  100. qrcodeSize: 140,
  101. showCopyBtn: true,
  102. copyBtnText: '复制并添加老师',
  103. copyBtnColor: '#FF9500',
  104. copyBtnTextColor: '#ffffff',
  105. showClickBtn: true,
  106. clickBtnText: '点击添加老师',
  107. clickBtnColor: '#FF9500',
  108. clickBtnTextColor: '#ffffff',
  109. clickBtnWechatJump: false,
  110. enableGetCustomerAssistant: false,
  111. enableDefaultWechat: false,
  112. enableMiniProgram: false
  113. })
  114. }
  115. },
  116. data() {
  117. return {
  118. localConfig: JSON.parse(JSON.stringify(this.config))
  119. }
  120. },
  121. methods: {
  122. handleConfigChange() {
  123. this.$emit('update:config', JSON.parse(JSON.stringify(this.localConfig)))
  124. }
  125. },
  126. watch: {
  127. config: {
  128. handler(newVal) {
  129. this.localConfig = JSON.parse(JSON.stringify(newVal))
  130. },
  131. deep: true
  132. }
  133. }
  134. }
  135. </script>
  136. <style scoped>
  137. .qrcode-config {
  138. width: 100%;
  139. font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif;
  140. }
  141. .config-block {
  142. padding: 0px 15px;
  143. }
  144. h3 {
  145. font-weight: 500;
  146. margin: 15px 0 10px 0;
  147. color: #303133;
  148. font-size: 16px;
  149. border-bottom: 1px solid #EBEEF5;
  150. padding-bottom: 10px;
  151. }
  152. h4 {
  153. font-weight: 500;
  154. margin: 10px 0 8px 0;
  155. color: #606266;
  156. font-size: 14px;
  157. }
  158. .el-form-item {
  159. margin-bottom: 16px;
  160. }
  161. .el-divider {
  162. margin: 15px 0;
  163. }
  164. </style>