add.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. {include file="/shopro/common/script" /}
  2. <style>
  3. .coupon-form .w-120 {
  4. width: 120px;
  5. }
  6. .coupon-form .el-form-item-inner {
  7. --el-form-label-font-size: 12px;
  8. }
  9. .coupon-form .el-form-item-inner .el-form-item__label {
  10. width: fit-content !important;
  11. }
  12. .coupon-form .key .el-form-item__content {
  13. flex-wrap: nowrap;
  14. }
  15. .coupon-form .el-date-editor {
  16. flex: none;
  17. }
  18. </style>
  19. <div id="addEdit" class="coupon-form" v-cloak>
  20. <el-container class="panel-block">
  21. <el-main>
  22. <el-scrollbar height="100%">
  23. <el-form :model="form.model" :rules="form.rules" ref="formRef" label-width="110px">
  24. <el-form-item label="券名称" prop="name">
  25. <el-input class="sa-w-360" v-model="form.model.name" placeholder="例如:国庆优惠券"></el-input>
  26. </el-form-item>
  27. <el-form-item label="名称备注" prop="description">
  28. <el-input class="sa-w-360" v-model="form.model.description" placeholder="请输入名称备注"></el-input>
  29. </el-form-item>
  30. <el-form-item label="券类型" prop="type">
  31. <el-radio-group v-model="form.model.type" :disabled="state.type == 'edit'">
  32. <el-radio label="reduce">满减券</el-radio>
  33. <!--<el-radio label="discount">折扣券</el-radio>-->
  34. </el-radio-group>
  35. </el-form-item>
  36. <div class="el-form-item-inner">
  37. <el-form-item>
  38. <el-form-item label="消费满" prop="enough">
  39. <el-input class="w-120" type="number" v-model="form.model.enough" :min="0"
  40. :disabled="state.type == 'edit'">
  41. <template #append>元</template>
  42. </el-input>
  43. </el-form-item>
  44. <el-form-item v-if="form.model.type == 'reduce'" class="is-no-asterisk ml-2" label="立减"
  45. prop="amount">
  46. <el-input class="w-120" type="number" v-model="form.model.amount" :min="0"
  47. :disabled="state.type == 'edit'">
  48. <template #append>元</template>
  49. </el-input>
  50. </el-form-item>
  51. <el-form-item v-if="form.model.type == 'discount'" class="is-no-asterisk ml-2" label="打"
  52. prop="amount">
  53. <el-input class="w-120" type="number" v-model="form.model.amount" :min="0" :max="10"
  54. :disabled="state.type == 'edit'">
  55. <template #append>折</template>
  56. </el-input>
  57. </el-form-item>
  58. </el-form-item>
  59. <el-form-item v-if="form.model.type == 'discount'">
  60. <el-form-item label="最多优惠" prop="max_amount">
  61. <el-input class="w-120" type="number" v-model="form.model.max_amount" :min="0"
  62. :disabled="state.type == 'edit'">
  63. <template #append>元</template>
  64. </el-input>
  65. </el-form-item>
  66. </el-form-item>
  67. </div>
  68. <el-form-item label="发券总量" prop="stock">
  69. <el-input class="w-120" type="number" v-model="form.model.stock" :min="0">
  70. <template #append>张</template>
  71. </el-input>
  72. </el-form-item>
  73. <el-form-item label="每人限领次数">
  74. <el-input class="w-120" type="number" v-model="form.model.limit_num" :min="0">
  75. <template #append>张</template>
  76. </el-input>
  77. </el-form-item>
  78. <el-form-item label="领券时间" prop="get_time">
  79. <el-date-picker v-model="form.model.get_time" type="datetimerange"
  80. value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
  81. :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)]"
  82. range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" prefix-icon="Calendar"
  83. :editable="false"></el-date-picker>
  84. </el-form-item>
  85. <el-form-item label="券有效期" prop="use_time_type">
  86. <el-radio-group v-model="form.model.use_time_type">
  87. <el-radio label="days">相对天数</el-radio>
  88. <el-radio label="range">固定区间</el-radio>
  89. </el-radio-group>
  90. </el-form-item>
  91. <div class="el-form-item-inner">
  92. <el-form-item>
  93. <template v-if="form.model.use_time_type == 'days'">
  94. <el-form-item class="is-no-asterisk" label="领券" prop="start_days">
  95. <el-input class="w-120" type="number" v-model="form.model.start_days" :min="0">
  96. <template #append>天</template>
  97. </el-input>
  98. </el-form-item>
  99. <el-form-item class="is-no-asterisk ml-2" label="后生效,有效期" prop="days">
  100. <el-input class="w-120" type="number" v-model="form.model.days" :min="0">
  101. <template #append>天</template>
  102. </el-input>
  103. </el-form-item>
  104. </template>
  105. <el-form-item v-if="form.model.use_time_type == 'range'" class="is-no-asterisk" label="固定时间"
  106. prop="useTime">
  107. <el-date-picker v-model="form.model.use_time" type="datetimerange"
  108. value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
  109. :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)]"
  110. range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
  111. prefix-icon="Calendar" :editable="false"></el-date-picker>
  112. </el-form-item>
  113. </el-form-item>
  114. </div>
  115. <!--<el-form-item label="优惠叠加">
  116. <div>
  117. <div class="sa-flex">
  118. <el-switch v-model="form.model.is_double_discount" :active-value="1"
  119. :inactive-value="0">
  120. </el-switch>
  121. <div class="ml-2" :class="form.model.is_double_discount == 1?'sa-color--primary':''">
  122. {{form.model.is_double_discount == 1?'开启':'关闭'}}
  123. </div>
  124. </div>
  125. <div class="tip"> 开启优惠叠加,优惠券将可以和活动一起使用 </div>
  126. </div>
  127. </el-form-item>-->
  128. <!--<el-form-item label="券状态" prop="status">
  129. <div>
  130. <el-radio-group v-model="form.model.status">
  131. <el-radio label="normal">公开发放</el-radio>
  132. <el-radio label="hidden">后台发放</el-radio>
  133. <el-radio label="disabled">禁止使用</el-radio>
  134. </el-radio-group>
  135. <div class="tip">
  136. 后台发放状态改为别的状态,将导致满赠活动无法赠送该优惠券
  137. </div>
  138. </div>
  139. </el-form-item>-->
  140. <el-form-item label="可用范围" prop="use_scope">
  141. <el-radio-group v-model="form.model.use_scope" @change="form.model.items_value = []">
  142. <el-radio label="all_use">全场通用</el-radio>
  143. <el-radio label="goods">指定商品可用</el-radio>
  144. <el-radio label="disabled_goods">指定商品不可用</el-radio>
  145. <el-radio label="category">指定分类可用</el-radio>
  146. </el-radio-group>
  147. </el-form-item>
  148. <el-form-item>
  149. <el-button v-if="form.model.use_scope == 'goods' || form.model.use_scope == 'disabled_goods'"
  150. type="primary" link @click="onSelectGoods">选择商品</el-button>
  151. <el-button v-if="form.model.use_scope == 'category'" type="primary" link
  152. @click="onSelectCategory">选择分类
  153. </el-button>
  154. </el-form-item>
  155. <el-form-item>
  156. <div v-if="form.model.use_scope == 'goods' || form.model.use_scope == 'disabled_goods'"
  157. class="sa-template-wrap">
  158. <template v-if="form.model.items_value.length > 0">
  159. <div class="header sa-flex">
  160. <div class="key">商品信息</div>
  161. <div class="oper">操作</div>
  162. </div>
  163. <div class="item" v-for="(element, index) in form.model.items_value" :key="element">
  164. <div class="key">
  165. <sa-image class="mr-2" :url="element.image" size="40"></sa-image>
  166. <div class="sa-table-line-1">
  167. {{ element.title }}
  168. </div>
  169. </div>
  170. <div class="oper">
  171. <el-button type="danger" link @click="onDeleteGoods(index)">
  172. 移除
  173. </el-button>
  174. </div>
  175. </div>
  176. </template>
  177. </div>
  178. <div v-if="form.model.use_scope == 'category'" class="sa-template-wrap">
  179. <template v-if="form.model.items_value.length > 0">
  180. <div class="header sa-flex">
  181. <div class="key">分类信息</div>
  182. <div class="oper">操作</div>
  183. </div>
  184. <div class="item" v-for="(element, index) in form.model.items_value" :key="element">
  185. <div class="key">
  186. <div class="goods-title sa-m-b-6">{{ element.name }}</div>
  187. </div>
  188. <div class="oper">
  189. <el-button type="danger" link @click="onDeleteCategory(index)">
  190. 移除
  191. </el-button>
  192. </div>
  193. </div>
  194. </template>
  195. </div>
  196. </el-form-item>
  197. </el-form>
  198. </el-scrollbar>
  199. </el-main>
  200. <el-footer class="sa-footer--submit sa-flex sa-row-right">
  201. <el-button type="primary" @click="onConfirm">确定</el-button>
  202. </el-footer>
  203. </el-container>
  204. </div>