pay-setting-edit.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. <?php
  2. /**
  3. * @link:http://www.gdqijianshi.com/
  4. * @copyright: Copyright (c) 2020 广东七件事集团
  5. * Created by PhpStorm
  6. * Author: lun
  7. * Date: 2021-09-02
  8. * Time: 12:36
  9. */
  10. ?>
  11. <div id="app" v-cloak>
  12. <el-card v-loading="loading" style="border:0;min-width: 1200px;" shadow="never" body-style="background-color: #f3f3f3;padding: 0 0;">
  13. <el-form :model="ruleForm"
  14. :rules="rules"
  15. ref="ruleForm"
  16. label-width="172px"
  17. style="position: relative"
  18. size="small">
  19. <el-card shadow="never" class="mt-24">
  20. <div slot="header">
  21. <el-breadcrumb separator-class="el-icon-arrow-right">
  22. <el-breadcrumb-item :to="{path:'/'}"><span @click="$navigate({r:'admin/addons/pay-setting'})">应用列表</span></el-breadcrumb-item>
  23. <el-breadcrumb-item>付费设置</el-breadcrumb-item>
  24. </el-breadcrumb>
  25. </div>
  26. <el-input type="text" v-model="ruleForm.id" style="display: none;"></el-input>
  27. <el-form-item label="应用名称" prop="title">
  28. <el-col :span="12">
  29. {{ruleForm.title}}
  30. </el-col>
  31. </el-form-item>
  32. <el-form-item label="支付方式" prop="payment_type">
  33. <el-col :span="12">
  34. <el-checkbox-group v-model="ruleForm.payment_type" >
  35. <el-checkbox :label="1" >微信支付</el-checkbox>
  36. <el-checkbox :label="2" >支付宝支付</el-checkbox>
  37. </el-checkbox-group>
  38. </el-col>
  39. </el-form-item>
  40. <el-form-item label="设置永久价格">
  41. <el-col :span="12">
  42. <el-radio-group v-model="is_set_price" @change="setPrice">
  43. <el-radio :label="1" >是</el-radio>
  44. <el-radio :label="0">否</el-radio>
  45. </el-radio-group>
  46. </el-col>
  47. </el-form-item>
  48. <el-form-item label="设置售价">
  49. <div v-for="(item,key) in setting">
  50. <!-- 永久价格特殊处理 -->
  51. <div v-if="key == 0 && item.duration == -1">
  52. <el-input placeholder="0.00" style="width:300px" v-model="item.money" onInput="value=toNumber(value,2)">
  53. <template slot="prepend">永久</template>
  54. <template slot="append">元</template>
  55. </el-input>
  56. </div>
  57. <div v-else style="margin-top: 10px;">
  58. <el-input style="width:150px" type="number" v-model="item.duration" onInput="value=toNumber(value)">
  59. </el-input>
  60. <el-select v-model="item.unit" style="width: 64px;">
  61. <el-option label="月" value="1">月</el-option>
  62. <el-option label="年" value="2">年</el-option>
  63. </el-select><el-input placeholder="0.00" style="width:150px" v-model="item.money" onInput="value=toNumber(value,2)">
  64. <template slot="append">元</template>
  65. </el-input>
  66. <el-button type="text" @click="handle('delete',key)" style="margin-left: 10px;">删除</el-button>
  67. </div>
  68. </div>
  69. <div v-if="setting && setting.length <= 3 && is_set_price == 1 || setting && setting.length < 3 && is_set_price == 0"><el-button type="text" @click="handle('add')">+添加售价</el-button> <span style="font-size: 12px; color: #cccbcb;">最多可添加3条</span></div>
  70. </el-form-item>
  71. <el-form-item>
  72. <el-col :span="12">
  73. <el-button :loading="submitLoading" size="small" type="primary"
  74. @click="submit('ruleForm')">保存
  75. </el-button>
  76. </el-col>
  77. </el-form-item>
  78. </el-card>
  79. </el-form>
  80. </el-card>
  81. </div>
  82. <script>
  83. const app = new Vue({
  84. el: '#app',
  85. data() {
  86. return {
  87. loading: false,
  88. submitLoading: false,
  89. del_setting:null,
  90. post_data:[],
  91. is_set_price: 0,
  92. ruleForm: {
  93. id: 0,
  94. title: '',
  95. status: 0,
  96. payment_type:[],
  97. },
  98. setting: [
  99. {
  100. "unit":"0",
  101. "money":"0",
  102. "duration":"-1",
  103. }
  104. ],
  105. rules: {
  106. payment_type: [
  107. {required: true, message: '支付方式必须选择', trigger: 'blur'},
  108. ],
  109. }
  110. };
  111. },
  112. created() {
  113. this.loadData();
  114. },
  115. methods: {
  116. setPrice(event) {
  117. this.handle('set',event)
  118. },
  119. handle(type, data = null) {
  120. switch (type) {
  121. case 'add':// 添加规格
  122. this.setting.push({
  123. unit:"1",
  124. money:"0",
  125. duration:"",
  126. });
  127. break;
  128. case 'delete':// 删除规格
  129. this.setting.splice(data,1);
  130. break;
  131. case 'set':// 是否设置永久价格
  132. if(data == 0 && this.setting.length>0 && this.setting[0].duration == -1) {
  133. this.setting.splice(0, 1);
  134. // if(this.del_setting && this.setting && this.setting.length==3){
  135. // this.setting[3] = this.del_setting;
  136. // }
  137. }
  138. if(data == 1 && this.setting.length>0 && this.setting[0].duration != -1) {
  139. this.setting.unshift({
  140. unit:"0",
  141. money:"0",
  142. duration:"-1",
  143. });
  144. if(this.setting && this.setting.length>=4){
  145. this.del_setting = this.setting[4];
  146. this.setting.splice(4,1);
  147. }
  148. }
  149. if(data == 1 && this.setting.length<=0){
  150. this.setting.unshift({
  151. unit:"0",
  152. money:"0",
  153. duration:"-1",
  154. });
  155. }
  156. break;
  157. }
  158. },
  159. loadData() {
  160. this.loading = true;
  161. request({
  162. params: {
  163. r: 'admin/addons/pay-setting-edit',
  164. name: getQuery('name')
  165. },
  166. method: 'get',
  167. }).then(e => {
  168. this.loading = false;
  169. if (e.data.code === 0) {
  170. this.ruleForm = e.data.data;
  171. if (!isEmpty(e.data.data.setting)) {
  172. this.setting = JSON.parse(e.data.data.setting);
  173. if (this.setting[0].duration == -1) this.is_set_price = 1;
  174. }else{
  175. this.setting.splice(0, 1);
  176. }
  177. if(!this.ruleForm.payment_type){
  178. this.ruleForm.payment_type = [];
  179. }
  180. } else {
  181. this.$message.error(e.data.msg);
  182. }
  183. }).catch(e => {
  184. });
  185. },
  186. settingValidate() {
  187. let text = "";
  188. this.setting.forEach(function (item) {
  189. if(item.unit >= 1){
  190. if (item.duration == "") {
  191. text = '单位不能为空';
  192. } else if (item.duration <= 0) {
  193. text = '单位数值不能小于1';
  194. }else if (typeof item.duration ==! 'number' || item.duration%1 !== 0) {
  195. text = '单位数值必须为整数';
  196. }else if (item.money < 0) {
  197. text = '金额不可以小于0';
  198. }else if(!item.money){
  199. text = '金额必须设置';
  200. }
  201. }
  202. })
  203. return text;
  204. },
  205. submit(formName) {
  206. if (this.setting.length == 0) {
  207. this.$message.error('售价不能为空');
  208. return;
  209. }
  210. let text = this.settingValidate();
  211. if (text) {
  212. this.$message.error(text);
  213. return;
  214. }
  215. this.post_data.price_setting = this.setting;
  216. this.post_data.payment_type = this.ruleForm.payment_type;
  217. this.post_data.name = this.ruleForm.name;
  218. this.$refs[formName].validate((valid) => {
  219. if (valid) {
  220. this.submitLoading = true;
  221. request({
  222. params: {
  223. r: 'admin/addons/pay-setting-edit',
  224. },
  225. method: 'post',
  226. data: this.post_data,
  227. }).then(e => {
  228. this.submitLoading = false;
  229. if (e.data.code === 0) {
  230. this.$message.success(e.data.msg);
  231. navigateTo({
  232. r: 'admin/addons/pay-setting'
  233. })
  234. } else {
  235. this.$message.error(e.data.msg);
  236. }
  237. }).catch(e => {
  238. });
  239. } else {
  240. console.log('error submit!!');
  241. return false;
  242. }
  243. });
  244. }
  245. },
  246. computed: {
  247. }
  248. });
  249. </script>