relation-edit.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. <?php
  2. use common\helpers\ComponentHelper;
  3. ComponentHelper::loadComponentView('com-dialog-select');
  4. ComponentHelper::loadComponentView('com-select-cat');
  5. ?>
  6. <div id="app" v-cloak>
  7. <el-card class="box-card" style="border:0" shadow="never" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  8. <div slot="header">
  9. <span>分享设置</span>
  10. <div style="float: right; margin: -5px 0">
  11. <el-button class="button-item" :loading="btnLoading" type="primary" @click="submit('ruleForm')" size="small">
  12. 保存
  13. </el-button>
  14. </div>
  15. </div>
  16. <div class="form-body">
  17. <el-row>
  18. <el-form :model="ruleForm" size="small" ref="ruleForm" label-width="200px">
  19. <div slot="header">关系设置</div>
  20. <el-col :span="24">
  21. <el-form-item label="是否记录推广来源" prop="use_relation">
  22. <el-switch v-model="ruleForm.status" :active-value="1" :inactive-value="0"></el-switch>
  23. </el-form-item>
  24. <div v-show="ruleForm.status==1">
  25. <el-form-item label="权利获取条件">
  26. <el-radio-group v-model="ruleForm.get_power_way">
  27. <el-radio :label="1" border>无条件</el-radio>
  28. <el-radio :label="3" border>或</el-radio>
  29. <el-radio :label="4" border>与</el-radio>
  30. </el-radio-group>
  31. <div>
  32. <span class="text-danger">[或]满足以下任意条件都可以升级</span><br>
  33. <span class="text-danger">[与]满足以下所有条件才可以升级</span><br>
  34. </div>
  35. <div v-if="ruleForm.get_power_way>2">
  36. <el-form-item>
  37. <el-row :gutter="20">
  38. <el-col :span="7">
  39. <el-switch v-model="ruleForm.buy_num_selected" active-text="消费次数" :active-value="1" :inactive-value="0">
  40. </el-switch>
  41. </el-col>
  42. <el-col :span="26">
  43. <el-input v-model="ruleForm.buy_num" type="number" oninput="value=value.replace(/[^0-9]/g,'')">
  44. <template slot="append">次</template>
  45. </el-input>
  46. </el-col>
  47. </el-row>
  48. </el-form-item>
  49. <el-form-item>
  50. <el-row :gutter="20">
  51. <el-col :span="7">
  52. <el-switch v-model="ruleForm.buy_price_selected" active-text="消费金额" :active-value="1" :inactive-value="0">
  53. </el-switch>
  54. </el-col>
  55. <el-col :span="26">
  56. <el-input v-model="ruleForm.buy_price" type="number" oninput="value=value.replace(/[^0-9]/g,'')">
  57. <template slot="append">元</template>
  58. </el-input>
  59. </el-col>
  60. </el-row>
  61. </el-form-item>
  62. <el-form-item>
  63. <el-col :span="8">
  64. <el-switch v-model="ruleForm.buy_goods_selected" active-text="购买商品" :active-value="1" :inactive-value="0">
  65. </el-switch>
  66. </el-col>
  67. </el-form-item>
  68. <el-form-item v-if="ruleForm.buy_goods_selected==1">
  69. <el-col :span="26">
  70. <el-radio-group v-model="ruleForm.buy_goods_way">
  71. <el-radio :label="1">任意商品</el-radio>
  72. <el-radio :label="2">
  73. <div style="display: inline-block;">
  74. <div flex="cross:center">
  75. <div>指定商品</div>
  76. <div style="margin-left: 10px;" v-if="ruleForm.buy_goods_way==2">
  77. <com-dialog-select :multiple="true" @selected="goodsSelect" title="商品选择">
  78. <el-button type="primary">选择商品</el-button>
  79. </com-dialog-select>
  80. </div>
  81. </div>
  82. </div>
  83. </el-radio>
  84. <el-radio :label="3">
  85. <div style="display: inline-block;">
  86. <div flex="cross:center">
  87. <div>指定分类</div>
  88. <div style="margin-left: 10px;" v-if="ruleForm.buy_goods_way==3">
  89. <div style="display: inline-block">
  90. <el-button type="primary" @click="cat_show=true">选择分类
  91. </el-button>
  92. </div>
  93. </div>
  94. <com-select-cat :show="cat_show" v-model="ruleForm.cat_list" @cancel="cat_show=false"></com-select-cat>
  95. </div>
  96. </div>
  97. </el-radio>
  98. </el-radio-group>
  99. </el-col>
  100. </el-form-item>
  101. <el-form-item prop="goods_ids">
  102. <template v-if="ruleForm.buy_goods_way==2">
  103. <div style="color: #ff4544;">最多可添加20个商品</div>
  104. <div style="max-height: 300px;overflow-y: auto">
  105. <el-table :data="ruleForm.goods_list" :show-header="false" border>
  106. <el-table-column label="">
  107. <template slot-scope="scope">
  108. <div flex>
  109. <div style="padding-right: 10px;flex-grow: 0">
  110. <com-image mode="aspectFill" :src="scope.row.cover_pic"></com-image>
  111. </div>
  112. <div style="flex-grow: 1;">
  113. <com-ellipsis :line="2">{{scope.row.name}}
  114. </com-ellipsis>
  115. </div>
  116. <div style="flex-grow: 0;">
  117. <el-button @click="deleteGoods(scope.$index)" type="text" circle size="mini">
  118. <el-tooltip class="item" effect="dark" content="删除" placement="top">
  119. <img src="resources/img/mall/del.png" alt="">
  120. </el-tooltip>
  121. </el-button>
  122. </div>
  123. </div>
  124. </template>
  125. </el-table-column>
  126. </el-table>
  127. </div>
  128. </template>
  129. <template v-if="ruleForm.buy_goods_way == 3">
  130. <label>已选择分类:</label>
  131. <el-tag style="margin-right: 5px;margin-bottom: 5px;" v-for="(item,index) in ruleForm.cat_list" :key="item.value" v-model="ruleForm.cat_list" type="warning" closable disable-transitions @close="deleteCat(item.value,index)">
  132. {{item.label}}
  133. </el-tag>
  134. </template>
  135. <div style="margin-top: 20px;">
  136. <label>消费条件统计的方式:</label>
  137. <el-radio-group v-model="ruleForm.buy_compute_way">
  138. <el-radio :label="1" border>付款后</el-radio>
  139. <el-radio :label="2" border>完成后</el-radio>
  140. </el-radio-group>
  141. </div>
  142. </el-form-item>
  143. </div>
  144. </el-form-item>
  145. <el-form-item label="记录来源方式">
  146. <el-radio-group v-model="ruleForm.become_child_way">
  147. <el-radio :label="1" border>首次点击分享海报</el-radio>
  148. <el-radio :label="2" border>首次完成订单</el-radio>
  149. <el-radio :label="3" border>首次付款</el-radio>
  150. <el-radio :label="4" border>填写推广手机号</el-radio>
  151. <el-radio :label="5" border>邀请码绑定</el-radio>
  152. </el-radio-group>
  153. </el-form-item>
  154. <!-- <el-form-item label="申请协议" prop="protocol" v-if="ruleForm.get_power_way>1">-->
  155. <!-- <el-input type="textarea" :rows="4" placeholder="申请协议" v-model="ruleForm.protocol">-->
  156. <!-- </el-input>-->
  157. <!-- </el-form-item>-->
  158. <!-- <el-form-item label="用户须知" prop="notice" v-if="ruleForm.get_power_way>1">-->
  159. <!-- <el-input type="textarea" :rows="4" placeholder="用户须知" v-model="ruleForm.notice">-->
  160. <!-- </el-input>-->
  161. <!-- </el-form-item>-->
  162. </div>
  163. </el-col>
  164. </el-form>
  165. </el-row>
  166. </div>
  167. </el-card>
  168. </div>
  169. <style>
  170. @media screen and (max-width: 1500px) {
  171. #app {
  172. min-width: 1270px;
  173. }
  174. }
  175. .form-body{
  176. padding: 20px 20px 0 10px;
  177. }
  178. </style>
  179. <script>
  180. new Vue({
  181. el: '#app',
  182. data() {
  183. return {
  184. loading: false,
  185. btnLoading: false,
  186. cat_show: false,
  187. show_share_level: false,
  188. dataLoading: false,
  189. submitLoading: false,
  190. dialogInDialogVisible: false,
  191. name: '',
  192. ruleForm: {
  193. get_power_way: 3,
  194. buy_num_selected: 0,
  195. buy_num: 0,
  196. buy_price_selected: 0,
  197. buy_price: 0,
  198. buy_goods_selected: 0,
  199. goods_ids: [],
  200. cat_ids: [],
  201. buy_goods_way: 0,
  202. buy_compute_way: 0,
  203. become_child_way: '',
  204. cat_list: [],
  205. goods_list: [],
  206. notice: '',
  207. protocol: '',
  208. status: 0,
  209. },
  210. rules: {
  211. }
  212. };
  213. },
  214. created() {
  215. this.loadData();
  216. },
  217. mounted() {
  218. },
  219. methods: {
  220. picUrlStatus(list) {
  221. this.ruleForm.status_pic_url = list[0].url;
  222. },
  223. deleteUrlStatus() {
  224. this.ruleForm.status_pic_url = '';
  225. },
  226. goodsSelect(param) {
  227. for (let j in param) {
  228. let item = param[j];
  229. if (this.ruleForm.goods_ids.length >= 20) {
  230. this.$message.error('指定商品不能大于20个');
  231. return;
  232. }
  233. let flag = true;
  234. for (let i in this.ruleForm.goods_ids) {
  235. if (this.ruleForm.goods_ids[i] == item.id) {
  236. flag = false;
  237. break;
  238. }
  239. }
  240. if (flag) {
  241. this.ruleForm.goods_ids.push(item.id);
  242. this.ruleForm.goods_list.push({
  243. id: item.id,
  244. name: item.goods_name,
  245. cover_pic: item.cover_pic,
  246. });
  247. }
  248. }
  249. },
  250. loadData() {
  251. this.loading = true;
  252. let self = this;
  253. request({
  254. params: {
  255. r: 'mall/user/relation-edit',
  256. },
  257. }).then(e => {
  258. this.loading = false;
  259. if (e.data.code === 0) {
  260. e.data.data.get_power_way && (this.ruleForm.get_power_way = e.data.data.get_power_way);
  261. e.data.data.buy_num_selected && (this.ruleForm.buy_num_selected = e.data.data.buy_num_selected);
  262. e.data.data.buy_num && (this.ruleForm.buy_num = e.data.data.buy_num);
  263. e.data.data.buy_price_selected && (this.ruleForm.buy_price_selected = e.data.data.buy_price_selected);
  264. e.data.data.buy_price && (this.ruleForm.buy_price = e.data.data.buy_price);
  265. e.data.data.buy_goods_selected && (this.ruleForm.buy_goods_selected = e.data.data.buy_goods_selected);
  266. e.data.data.buy_goods_way && (this.ruleForm.buy_goods_way = e.data.data.buy_goods_way);
  267. e.data.data.buy_compute_way && (this.ruleForm.buy_compute_way = e.data.data.buy_compute_way);
  268. e.data.data.become_child_way && (this.ruleForm.become_child_way = e.data.data.become_child_way);
  269. e.data.data.notice && (this.ruleForm.notice = e.data.data.notice);
  270. e.data.data.protocol && (this.ruleForm.protocol = e.data.data.protocol);
  271. e.data.data.status && (this.ruleForm.status = e.data.data.status);
  272. e.data.data.goods_ids && (this.ruleForm.goods_ids = e.data.data.goods_ids);
  273. e.data.data.cat_ids && (this.ruleForm.cat_ids = e.data.data.cat_ids);
  274. e.data.data.cat_list && (this.ruleForm.cat_list = e.data.data.cat_list);
  275. e.data.data.goods_list && (this.ruleForm.goods_list = e.data.data.goods_list);
  276. } else {
  277. this.$message.error(e.data.msg);
  278. }
  279. }).catch(e => {});
  280. },
  281. deleteGoods(index) {
  282. this.ruleForm.goods_list.splice(index, 1);
  283. this.ruleForm.goods_ids.splice(index, 1);
  284. },
  285. deleteCat(value, index) {
  286. this.ruleForm.cat_list.splice(index, 1);
  287. this.ruleForm.cat_ids.splice(index, 1);
  288. },
  289. submit(formName) {
  290. this.$refs[formName].validate(valid => {
  291. if (valid) {
  292. this.submitLoading = true;
  293. let cat_ids = [];
  294. if (this.ruleForm.cat_list.length) {
  295. this.ruleForm.cat_list.forEach(function(item) {
  296. cat_ids.push(item.value);
  297. })
  298. this.ruleForm.cat_ids = cat_ids;
  299. }
  300. request({
  301. params: {
  302. r: 'mall/user/relation-edit',
  303. },
  304. method: 'post',
  305. data: this.ruleForm,
  306. }).then(e => {
  307. this.submitLoading = false;
  308. console.log(e);
  309. if (e.data.code === 0) {
  310. this.$message.success(e.data.msg);
  311. } else {
  312. this.$message.error(e.data.msg);
  313. }
  314. }).catch(e => {});
  315. } else {
  316. }
  317. });
  318. },
  319. }
  320. });
  321. </script>