setting.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  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/template/mall'})">商城模板</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. <el-input type="text" v-model="ruleForm.title" style="width:300px"></el-input>
  30. </el-col>
  31. </el-form-item>
  32. <el-form-item label="设置永久价格">
  33. <el-col :span="12">
  34. <el-radio-group v-model="is_set_price" @change="setPrice">
  35. <el-radio :label="1">是</el-radio>
  36. <el-radio :label="0">否</el-radio>
  37. </el-radio-group>
  38. </el-col>
  39. </el-form-item>
  40. <el-form-item label="设置售价">
  41. <div v-for="(item,key) in setting">
  42. <!-- 永久价格特殊处理 -->
  43. <div v-if="key == 0 && item.duration == -1">
  44. <el-input placeholder="0.00" style="width:300px" v-model="item.money" type="number" min="0" step="0.01">
  45. <template slot="prepend">永久</template>
  46. <template slot="append">元</template>
  47. </el-input>
  48. </div>
  49. <div v-else style="margin-top: 10px;">
  50. <el-input style="width:150px" type="number" v-model="item.duration" min="1">
  51. <template slot="append">月</template>
  52. </el-input>
  53. <el-input placeholder="0.00" style="width:150px" v-model="item.money" type="number" min="0" step="0.01">
  54. <template slot="append">元</template>
  55. </el-input>
  56. <el-button type="text" @click="handle('delete',key)" style="margin-left: 10px;">删除</el-button>
  57. </div>
  58. </div>
  59. <div v-if="setting.length <= 3"><el-button type="text" @click="handle('add')">+添加规格</el-button> <span style="font-size: 12px; color: #cccbcb;">最多可添加3条</span></div>
  60. </el-form-item>
  61. <el-form-item label="模板状态">
  62. <el-col :span="12">
  63. <el-switch v-model="ruleForm.status" :active-value="1" :inactive-value="0"></el-switch>
  64. </el-col>
  65. </el-form-item>
  66. <el-form-item>
  67. <el-col :span="12">
  68. <el-button :loading="submitLoading" size="small" type="primary"
  69. @click="submit('ruleForm')">保存
  70. </el-button>
  71. </el-col>
  72. </el-form-item>
  73. </el-card>
  74. </el-form>
  75. </el-card>
  76. </div>
  77. <script>
  78. const app = new Vue({
  79. el: '#app',
  80. data() {
  81. return {
  82. loading: false,
  83. submitLoading: false,
  84. del_setting:null,
  85. is_set_price: 0,
  86. ruleForm: {
  87. id: 0,
  88. title: '',
  89. status: 0,
  90. },
  91. setting: [
  92. {
  93. "unit":"永久",
  94. "money":"0",
  95. "duration":"-1",
  96. }
  97. ],
  98. rules: {
  99. title: [
  100. {required: true, message: '请输入模板名称', trigger: 'blur'},
  101. {min: 1, max: 20, message: '长度在 1 到 20 个字符', trigger: 'blur'}
  102. ],
  103. }
  104. };
  105. },
  106. created() {
  107. this.loadData();
  108. },
  109. methods: {
  110. setPrice(event) {
  111. this.handle('set',event)
  112. },
  113. handle(type, data = null) {
  114. switch (type) {
  115. case 'add':// 添加规格
  116. this.setting.push({
  117. unit:"月",
  118. money:"0",
  119. duration:"",
  120. });
  121. break;
  122. case 'delete':// 删除规格
  123. this.setting.splice(data,1);
  124. break;
  125. case 'set':// 是否设置永久价格
  126. if(data == 0 && this.setting[0].duration == -1) {
  127. this.setting.splice(0, 1);
  128. if(this.del_setting&&this.setting.length==3){
  129. this.setting[3] = this.del_setting;
  130. }
  131. }
  132. if(data == 1 && this.setting[0].duration != -1) {
  133. this.setting.unshift({
  134. unit:"永久",
  135. money:"0",
  136. duration:"-1",
  137. });
  138. if(this.setting.length>=4){
  139. this.del_setting = this.setting[4];
  140. this.setting.splice(4,1);
  141. }
  142. console.log(this.del_setting);
  143. }
  144. break;
  145. }
  146. },
  147. loadData() {
  148. this.loading = true;
  149. request({
  150. params: {
  151. r: 'admin/template/setting',
  152. id: getQuery('id')
  153. },
  154. method: 'get',
  155. }).then(e => {
  156. this.loading = false;
  157. if (e.data.code === 0) {
  158. this.ruleForm = e.data.data;
  159. if (!isEmpty(e.data.data.setting)) {
  160. this.setting = JSON.parse(e.data.data.setting);
  161. if (this.setting[0].duration == -1) this.is_set_price = 1;
  162. }
  163. } else {
  164. this.$message.error(e.data.msg);
  165. }
  166. }).catch(e => {
  167. });
  168. },
  169. settingValidate() {
  170. let text = "";
  171. this.setting.forEach(function (item) {
  172. if (item.unit === '月') {
  173. if (item.duration == "") {
  174. text = '月份不能为空';
  175. } else if (item.duration <= 0) {
  176. text = '月份数值不能小于1';
  177. }else if (typeof item.duration ==! 'number' || item.duration%1 !== 0) {
  178. text = '月份数值必须为整数';
  179. }
  180. }
  181. })
  182. return text;
  183. },
  184. submit(formName) {
  185. if (this.setting.length == 0) {
  186. this.$message.error('售价不能为空');
  187. return;
  188. }
  189. let text = this.settingValidate();
  190. if (text) {
  191. this.$message.error(text);
  192. return;
  193. }
  194. this.ruleForm.setting = this.setting;
  195. this.$refs[formName].validate((valid) => {
  196. if (valid) {
  197. this.submitLoading = true;
  198. request({
  199. params: {
  200. r: 'admin/template/setting',
  201. },
  202. method: 'post',
  203. data: {
  204. detail: this.ruleForm
  205. },
  206. }).then(e => {
  207. this.submitLoading = false;
  208. if (e.data.code === 0) {
  209. this.$message.success(e.data.msg);
  210. navigateTo({
  211. r: 'admin/template/mall'
  212. })
  213. } else {
  214. this.$message.error(e.data.msg);
  215. }
  216. }).catch(e => {
  217. });
  218. } else {
  219. console.log('error submit!!');
  220. return false;
  221. }
  222. });
  223. }
  224. },
  225. computed: {
  226. }
  227. });
  228. </script>