tpl.php 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. <div class="form-body">
  2. <template>
  3. <div style="margin-left: 10px;display:none" >
  4. <com-dialog-select :multiple="true" @selected="conditionGoodsSelect" title="商品选择">
  5. <el-button type="text" ref="cgoods">选择商品</el-button>
  6. </com-dialog-select>
  7. </div>
  8. </template>
  9. <template>
  10. <div style="margin-left: 10px;display:none" >
  11. <com-dialog-select :multiple="true" @selected="conditionCloudStockGoodsSelect" url="cloud-stock/goods/get-cloud-stock-goods-list" title="商品选择">
  12. <el-button type="text" ref="csgoods">选择商品</el-button>
  13. </com-dialog-select>
  14. </div>
  15. </template>
  16. <template>
  17. <div style="margin-left: 10px;display:none" >
  18. <com-dialog-select :multiple="true" @selected="conditionCloudStockGoodsSelectByNums" url="cloud-stock/goods/get-cloud-stock-goods-list" title="商品选择">
  19. <el-button type="text" ref="csgoodscondition">选择商品</el-button>
  20. </com-dialog-select>
  21. </div>
  22. </template>
  23. <el-dialog
  24. :close-on-click-modal="false"
  25. title="选择商品类目"
  26. :visible.sync="goodsCatsDialogVisible"
  27. width="50%">
  28. <el-cascader-panel v-model="currentGoodsCats" @change="onChangGoodsCat" :show-all-levels="false"
  29. :options="cat_list" :props="{ multiple: true, checkStrictly: true }"></el-cascader-panel>
  30. <span slot="footer" class="dialog-footer">
  31. <el-button type="primary" @click="goodsCatsDialogVisible = false">关 闭</el-button>
  32. </span>
  33. </el-dialog>
  34. <template v-if="<?php echo $is_buy_goods;?>">
  35. <el-form-item label="购买商品升级" :label-width="formLabelWidth">
  36. <?php
  37. // if($rule['remark']){
  38. // $html_s='<el-tooltip class="item" effect="dark" content="'.$rule['remark'].'" placement="top">
  39. // <i class="el-icon-info"></i>
  40. // </el-tooltip>';
  41. // echo $html_s;
  42. // }
  43. ?>
  44. <el-form-item>
  45. <el-switch v-model="ruleForm.upgrade_type_goods" :active-value="1" :inactive-value="0"
  46. active-text="开启" inactive-text="关闭">
  47. </el-switch>
  48. </el-form-item>
  49. <el-form-item v-if="ruleForm.upgrade_type_goods==1">
  50. <el-radio-group v-model="ruleForm.buy_goods_type">
  51. <el-radio :label="0">订单完成</el-radio>
  52. <el-radio :label="1">支付完成</el-radio>
  53. </el-radio-group>
  54. </el-form-item>
  55. <el-form-item v-if="ruleForm.upgrade_type_goods==1" style="margin-bottom: 0px;">
  56. <el-radio-group v-model="ruleForm.goods_type">
  57. <el-radio :label="1">任意商品</el-radio>
  58. <el-radio :label="2">指定商品</el-radio>
  59. </el-radio-group>
  60. <div style="margin-top: 10px; display: flex;" v-if="ruleForm.goods_type==2">
  61. <com-dialog-select :multiple="true" @selected="goodsSelect" title="商品选择">
  62. <el-button type="primary" plain>选择商品</el-button>
  63. </com-dialog-select>
  64. <div style="color: #ff4544; margin-left: 10px;">最多可添加99个商品</div>
  65. </div>
  66. </el-form-item>
  67. </el-form-item>
  68. <template v-if="<?php echo $enable_goods_protocol; ?>">
  69. <el-form-item label="商品协议开关" :label-width="formLabelWidth" v-if="ruleForm.upgrade_type_goods > 0">
  70. <el-switch v-model="ruleForm.enable_goods_protocol" :active-value="1" :inactive-value="0"
  71. active-text="开启" inactive-text="关闭">
  72. </el-switch>
  73. <p style="color: #C0C4CC;">开关开启以后设置的商品第一次购买的需要弹出勾选协议(只针对默认等级用户)</p>
  74. </el-form-item>
  75. </template>
  76. <el-form-item v-if="ruleForm.upgrade_type_goods==1"
  77. :label-width="formLabelWidth">
  78. <template v-if="ruleForm.goods_type==2">
  79. <div class="table-body" style="padding-left: 0;padding-top: 0;" :style="is_show_condition_num ? {width: '700px'} : {width: '600px'}">
  80. <template>
  81. <el-table :data="ruleForm.goods_list" border style="width: 100%">
  82. <el-table-column type="index" align="center" label="序号" width="50"></el-table-column>
  83. <el-table-column prop="id" align="center" label="商品id" width="100"></el-table-column>
  84. <el-table-column prop="name,cover_pic" label="商品名称">
  85. <template slot-scope="scope">
  86. <div flex="box:first">
  87. <div style="padding-right: 10px;">
  88. <com-image mode="aspectFill" :src="scope.row.cover_pic"></com-image>
  89. </div>
  90. <div style="display:flex;flex-direction:column;align-items:flex-start;">
  91. <div>{{scope.row.name}}</div>
  92. <div>
  93. <span style="color: #ff4544;" v-if="scope.row.price">¥{{ scope.row.price }}</span>
  94. <span style="margin-left: 20px;" v-if="scope.row.stock">库存:{{ scope.row.stock }}</span>
  95. </div>
  96. </div>
  97. </div>
  98. </template>
  99. </el-table-column>
  100. <el-table-column align="center" label="商品件数" width="200" v-if="is_show_condition_num">
  101. <template #header>
  102. <div style="display: flex; align-items: center; justify-content: center;">
  103. <span>商品件数</span>
  104. <el-tooltip class="item" effect="dark" content="开启之后计算以往所有商品购买件数" placement="top">
  105. <i class="el-icon-info" style="margin-right: 5px; margin-bottom: 5px;"></i>
  106. </el-tooltip>
  107. <el-switch v-model="ruleForm.is_custom_condition_num" :active-value="1" :inactive-value="0">
  108. </el-switch>
  109. </div>
  110. </template>
  111. <template slot-scope="scope">
  112. <el-input-number :disabled="!Number(ruleForm.is_custom_condition_num)" v-model="scope.row.condition_num" :precision="0" size="mini" :min="1"></el-input-number>
  113. </template>
  114. </el-table-column>
  115. <el-table-column label="操作" width="100">
  116. <template slot-scope="scope">
  117. <el-button @click="deleteGoods(scope.$index)" type="primary" size="mini">删除</el-button>
  118. </template>
  119. </el-table-column>
  120. </el-table>
  121. </template>
  122. </div>
  123. </template>
  124. </el-form-item>
  125. </template>
  126. <template v-if="<?php echo $is_buy_store_goods ?? 0;?>">
  127. <el-form-item label="购买门店商品升级" :label-width="formLabelWidth">
  128. <el-form-item>
  129. <el-switch v-model="ruleForm.store_upgrade_type_goods" :active-value="1" :inactive-value="0"
  130. active-text="开启" inactive-text="关闭">
  131. </el-switch>
  132. </el-form-item>
  133. <el-form-item v-if="ruleForm.store_upgrade_type_goods==1">
  134. <el-radio-group v-model="ruleForm.store_buy_goods_type">
  135. <el-radio :label="0">订单完成</el-radio>
  136. <el-radio :label="1">支付完成</el-radio>
  137. </el-radio-group>
  138. </el-form-item>
  139. <el-form-item v-if="ruleForm.store_upgrade_type_goods==1">
  140. <el-radio-group v-model="ruleForm.store_goods_type">
  141. <el-radio :label="1">任意商品</el-radio>
  142. <el-radio :label="2">指定商品</el-radio>
  143. </el-radio-group>
  144. <div style="margin-top: 10px; display: flex;" v-if="ruleForm.store_goods_type==2">
  145. <com-dialog-select-store :multiple="true" @selected="storeGoodsSelect" title="商品选择">
  146. <el-button type="primary" plain>选择商品</el-button>
  147. </com-dialog-select-store>
  148. <div style="color: #ff4544; margin-left: 10px;">最多可添加<?php echo $buy_store_goods_limit;?>个商品</div>
  149. </div>
  150. </el-form-item>
  151. </el-form-item>
  152. <el-form-item v-if="ruleForm.store_upgrade_type_goods==1"
  153. :label-width="formLabelWidth">
  154. <template v-if="ruleForm.store_goods_type==2">
  155. <div class="table-body" style="padding-left: 0;padding-top: 0;">
  156. <template>
  157. <el-table :data="ruleForm.store_goods_list" border style="width: 100%">
  158. <el-table-column type="index" label="序号" width="50"></el-table-column>
  159. <el-table-column prop="id" label="商品id" width="100"></el-table-column>
  160. <el-table-column prop="name,cover_pic" label="商品名称" >
  161. <template slot-scope="scope">
  162. <div flex="box:first">
  163. <div style="padding-right: 10px;">
  164. <com-image mode="aspectFill" :src="scope.row.cover_pic"></com-image>
  165. </div>
  166. <div flex="cross:top cross:center">
  167. {{scope.row.name}}
  168. </div>
  169. </div>
  170. </template>
  171. </el-table-column>
  172. <el-table-column label="操作" width="100">
  173. <template slot-scope="scope">
  174. <el-button @click="deleteStoreGoods(scope.$index)" type="primary" size="mini">删除</el-button>
  175. </template>
  176. </el-table-column>
  177. </el-table>
  178. </template>
  179. </div>
  180. </template>
  181. </el-form-item>
  182. </template>
  183. <!-- <el-form :model="ruleForm" :rules="rules" size="small" ref="ruleForm" label-width="150px">-->
  184. <el-row v-if="<?php echo $is_show_condition;?>">
  185. <el-col :span="32">
  186. <el-form-item label="条件升级">
  187. <el-form-item>
  188. <el-switch v-model="ruleForm.upgrade_type_condition" :active-value="1" :inactive-value="0" active-text="开启" inactive-text="关闭">
  189. </el-switch>
  190. <el-button v-if="ruleForm.upgrade_type_condition==1" style="margin-left: 20px;" type="primary" @click="setCondition" size="mini">添加升级条件</el-button>
  191. </el-form-item>
  192. <el-form-item v-if="ruleForm.upgrade_type_condition==1">
  193. <el-radio-group v-model="ruleForm.condition_type">
  194. <el-radio :label="1">满足其一可升级</el-radio>
  195. <el-radio :label="2">满足所有才可升级</el-radio>
  196. </el-radio-group>
  197. </el-form-item>
  198. <el-checkbox-group v-if="ruleForm.upgrade_type_condition==1" v-model="ruleForm.checked_condition_keys" class="check-group">
  199. <?php
  200. foreach ($rules as $k=>$rule) {
  201. if ($rule['id'] == 56) { // 因为56规则内容有html标签。会何setting 中多选出现重复,所以需要过滤掉
  202. $rule['content'] = preg_replace('/<[^>]*>.*?<\/[^>]*>/', '', $rule['content']);
  203. }
  204. $html = '
  205. <el-col :span="24">
  206. <el-checkbox :label="ruleForm.checked_condition_values['.$k. '].key">
  207. <div style="display: flex;align-items: center">';
  208. $content_arr = explode('____', $rule['content']);
  209. foreach ($content_arr as $key => $content) {
  210. $html .= str_replace('display:none;', '', $content);
  211. if(!isset($rule['setting'][$key])) continue;
  212. $setting = $rule['setting'][$key];
  213. switch ($setting['type']) {
  214. case 'text':
  215. $html .= ' &nbsp;<el-input style="width:100px;" v-model="ruleForm.checked_condition_values['.$k.'].value.' . $setting['name'] . '"></el-input>&nbsp;';
  216. break;
  217. case 'select':
  218. $html.='&nbsp; <el-select v-model="ruleForm.checked_condition_values['.$k.'].value.'. $setting['name'] . '" placeholder="请选择">&nbsp; ';
  219. $html.='<el-option v-for="item in options_list.'.$setting['source']['key'].'" :key="item.level" :label="item.name" :value="item.level" :disabled="false">
  220. </el-option>';
  221. $html .= ' </el-select>';
  222. $html .= '<span style="display:inline-block;padding-right:16px;"></span>';
  223. break;
  224. case 'selectGoods':
  225. $html.=' &nbsp;<el-input style="width:100px;" v-model="ruleForm.checked_condition_values['.$k.'].value.' . $setting['name'] . '"></el-input>&nbsp;';
  226. $html .='&nbsp; <el-button type="text" @click="clickSelectConditionGoods()">选择商品</el-button>';
  227. break;
  228. case 'selectGoodsCats':
  229. $html .='&nbsp; <el-button type="text" @click="clickSelectConditionGoodsCats(ruleForm.checked_condition_values['.$k.'].value.' . $setting['name'] . ', \''.$setting['name'].'\', '.$k.')">选择类目</el-button>';
  230. break;
  231. case 'selectCloudStockGoods':
  232. $html.=' &nbsp;<el-input style="width:100px;" v-model="ruleForm.checked_condition_values['.$k.'].value.' . $setting['name'] . '"></el-input>&nbsp;';
  233. $html .='&nbsp; <el-button type="text" @click="clickSelectCloudStockConditionGoods()">选择商品</el-button>';
  234. break;
  235. case 'selectCloudStockGoodsCondition':
  236. $html .='&nbsp; <el-button type="text" @click="clickSelectCloudStockConditionGoodsByNums()">选择商品</el-button>';
  237. $html .= '&nbsp;&nbsp;&nbsp;<div style="max-height: 300px;overflow-y: auto;max-width: 514px;" v-if="ruleForm.checked_condition_values['.$k.'].value.' . $setting['name'] . '">
  238. <el-table ref="goodsInfos" :data="ruleForm.checked_condition_values['.$k.'].value.' . $setting['name'] . '" style="width: 100%">
  239. <el-table-column
  240. label="商品"
  241. width="200">
  242. <template slot-scope="scope">
  243. <div style="display: flex;align-items: center;">
  244. <el-image style="height:40px;width:40px;min-height:40px;min-width:40px;margin-right:10px;" :src="scope.row.cover_pic"></el-image>
  245. <div>
  246. <div style="color: #000;">{{scope.row.name}}</div>
  247. </div>
  248. </div>
  249. </template>
  250. </el-table-column>
  251. <el-table-column
  252. label="数量"
  253. width="120">
  254. <template slot-scope="scope">
  255. <el-input v-model.number="scope.row.num" style="width: 110px;">
  256. <template slot="append">件</template>
  257. </el-input>
  258. </template>
  259. </el-table-column>
  260. <el-table-column
  261. fixed="right"
  262. label="操作"
  263. width="120">
  264. <template slot-scope="scope">
  265. <el-button
  266. @click.native.prevent="deleteGoodsThree(scope.$index)"
  267. type="text"
  268. size="small">
  269. 删除
  270. </el-button>
  271. </template>
  272. </el-table-column>
  273. </el-table>
  274. </div>';
  275. break;
  276. case 'checkbox':
  277. $html .= '<span style="display:inline-block;padding-left:16px;"></span>';
  278. $html.='<el-checkbox-group style="margin-top:4px;" v-model="ruleForm.checked_condition_values['.$k.'].value.'. $setting['name'] . '">';
  279. $html .='<el-checkbox style="display:inline-block;" v-for="item in checkbox_list.'.$setting['source']['key'].'" :label="item.value" :key="item.value">{{item.label}}</el-checkbox>';
  280. $html .= '</el-checkbox-group>';
  281. $html .= '<span style="display:inline-block;padding-left:16px;"></span>';
  282. break;
  283. case 'radio':
  284. $html .= '<span style="display:inline-block;padding-left:16px;"></span>';
  285. $html.='<el-radio-group style="margin-top:4px;" v-model="ruleForm.checked_condition_values['.$k.'].value.'. $setting['name'] . '">';
  286. $html .='<el-radio style="display:inline-block;" v-for="item in options_list.'.$setting['source']['key'].'" :label="item.key">{{item.value}}</el-radio>';
  287. $html .= '</el-radio-group>';
  288. $html .= '<span style="display:inline-block;padding-left:16px;"></span>';
  289. break;
  290. default:
  291. break;
  292. }
  293. }
  294. if($rule['remark']){
  295. $html.='<el-tooltip class="item" effect="dark" content="'.$rule['remark'].'" placement="top">
  296. <i class="el-icon-info"></i>
  297. </el-tooltip>';
  298. }
  299. $html .= '
  300. </div>
  301. </el-checkbox>
  302. </el-col>
  303. ';
  304. echo $html;
  305. }
  306. ?>
  307. </el-checkbox-group>
  308. </el-form-item>
  309. </el-col>
  310. </el-row>
  311. <!-- </el-form>-->
  312. </div>