index.blade.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. @extends('layouts.base')
  2. @section('title', '基础设置')
  3. @section('content')
  4. <link rel="stylesheet" href="{{resource_get('plugins/reserve-simple/src/static/index.css')}}">
  5. <style>
  6. </style>
  7. <div class="all">
  8. <div id="app" v-cloak>
  9. <el-form ref="form" :model="form" :rules="rules" label-width="15%">
  10. <div class="vue-head">
  11. <el-radio-group v-model="order_type">
  12. <el-radio-button label="1" @click.native="gotoOther(1)">基础设置</el-radio-button>
  13. {{--<el-radio-button label="2" @click.native="gotoOther(2)">风控设置</el-radio-button>--}}
  14. </el-radio-group>
  15. </div>
  16. <div class="vue-head">
  17. <div class="vue-main-title">
  18. <div class="vue-main-title-left"></div>
  19. <div class="vue-main-title-content">基础设置</div>
  20. </div>
  21. <div class="vue-main-form">
  22. {{--<el-form-item label="前端用户预约时间间隔" prop="yunqian_push_host">
  23. <el-input v-model="form.reserve_time_interval" type="number" style="width:70%;" ref="reserve_time_interval">
  24. <template slot="append">分钟</template>
  25. </el-input>
  26. </el-form-item>--}}
  27. <el-form-item label="管理员会员" prop="member_uid">
  28. <div class="upload-box" @click="openMember()" v-if="!form.uid">
  29. <div class="upload-box-member">
  30. <i class="el-icon-plus" style="font-size:32px"></i><br>
  31. 选 择
  32. </div>
  33. </div>
  34. <div class="upload-boxed" v-if="form.uid">
  35. <img @click="openMember()" :src="choosed_member.avatar" alt="" style="width:150px;height:150px;border-radius: 5px;cursor: pointer;" />
  36. <div class="upload-boxed-text">重新选择</div>
  37. <div class="upload-boxed-text-clear" @click="clearMember('uid')">清除选择</div>
  38. <div style="text-align:center;line-height: 20px;">【id:[[choosed_member.uid]]】[[choosed_member.nickname]]</div>
  39. </div>
  40. </el-form-item>
  41. </div>
  42. </div>
  43. <div class="vue-head">
  44. <div class="vue-main-title">
  45. <div class="vue-main-title-left"></div>
  46. <div class="vue-main-title-content">消息通知设置</div>
  47. </div>
  48. <div class="vue-main-form">
  49. <el-form-item label="预约成功关联会员通知" prop="store_pay">
  50. <el-select v-model="form.success_notice_obj_user_tmp" filterable clearable placeholder="请选择消息模板" style="width:70%">
  51. <el-option label="不通知" value=""></el-option>
  52. <el-option v-for="(item,index) in temp_list" :key="index" :label="item.title" :value="item.id"></el-option>
  53. </el-select>
  54. </el-form-item>
  55. <el-form-item label="预约成功会员通知" prop="store_pay">
  56. <el-select v-model="form.success_notice_member_tmp" filterable clearable placeholder="请选择消息模板" style="width:70%">
  57. <el-option label="不通知" value=""></el-option>
  58. <el-option v-for="(item,index) in temp_list" :key="index" :label="item.title" :value="item.id"></el-option>
  59. </el-select>
  60. </el-form-item>
  61. <el-form-item label="取消预约关联会员通知" prop="store_pay">
  62. <el-select v-model="form.cancel_notice_obj_user_tmp" filterable clearable placeholder="请选择消息模板" style="width:70%">
  63. <el-option label="不通知" value=""></el-option>
  64. <el-option v-for="(item,index) in temp_list" :key="index" :label="item.title" :value="item.id"></el-option>
  65. </el-select>
  66. </el-form-item>
  67. <el-form-item label="预约完成会员通知" prop="store_pay">
  68. <el-select v-model="form.finish_notice_member_tmp" filterable clearable placeholder="请选择消息模板" style="width:70%">
  69. <el-option label="不通知" value=""></el-option>
  70. <el-option v-for="(item,index) in temp_list" :key="index" :label="item.title" :value="item.id"></el-option>
  71. </el-select>
  72. </el-form-item>
  73. </div>
  74. </div>
  75. </el-form>
  76. <div class="vue-page">
  77. <div class="vue-center">
  78. <el-button type="primary" @click="submitForm('form')">提交</el-button>
  79. <el-button @click="goBack">返回</el-button>
  80. </div>
  81. </div>
  82. <!-- 选择会员 -->
  83. <el-dialog title="选择会员" :visible.sync="member_show" width="60%">
  84. <div>
  85. <el-input v-model="member_keyword" style="width:60%;" placeholder="会员手机号码"></el-input>
  86. <el-button @click="getMember" >搜索</el-button>
  87. </div>
  88. <el-table :data="member_list" style="width: 100%;height:500px;overflow:auto" v-loading="member_loading">
  89. <el-table-column label="ID" prop="uid" align="center" width="100px"></el-table-column>
  90. <el-table-column label="会员信息">
  91. <template slot-scope="scope">
  92. <div style="display:flex;align-items: center;">
  93. <div v-if="scope.row.avatar_image" style="width:40px;">
  94. <el-image :src="scope.row.avatar_image" alt="" style="width:40px;height:40px;border-radius:50%"></el-image>
  95. </div>
  96. <div style="flex:1;">[[scope.row.nickname]]</div>
  97. </div>
  98. </template>
  99. </el-table-column>
  100. <el-table-column prop="refund_time" label="操作" align="center" width="320">
  101. <template slot-scope="scope">
  102. <el-button @click="chooseMember(scope.row)">
  103. 选择
  104. </el-button>
  105. </template>
  106. </el-table-column>
  107. </el-table>
  108. <span slot="footer" class="dialog-footer">
  109. <el-button @click="member_show = false">取 消</el-button>
  110. </span>
  111. </el-dialog>
  112. </div>
  113. </div>
  114. <script>
  115. var app = new Vue({
  116. el:"#app",
  117. delimiters: ['[[', ']]'],
  118. name: 'test',
  119. data() {
  120. return{
  121. order_type:'1',
  122. form:{
  123. //reserve_time_interval:'',
  124. uid:'',
  125. success_notice_obj_user_tmp:'',
  126. success_notice_member_tmp:'',
  127. cancel_notice_obj_user_tmp:'',
  128. finish_notice_member_tmp:''
  129. },
  130. // 会员
  131. member_keyword:'',
  132. member_show:false,
  133. member_list:[],
  134. choosed_member:{},
  135. member_loading:false,
  136. temp_list:[],
  137. rules:{
  138. },
  139. }
  140. },
  141. created() {
  142. },
  143. mounted() {
  144. this.getData();
  145. },
  146. methods: {
  147. getData() {
  148. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  149. this.$http.post('{!! yzWebFullUrl('plugin.reserve-simple.admin.set.basic') !!}',{}).then(function (response) {
  150. if (response.data.result){
  151. this.form = {
  152. ...response.data.data.settings,
  153. };
  154. this.choosed_member = response.data.data.choosed_member;
  155. this.temp_list = response.data.data.temp_list;
  156. }
  157. else {
  158. this.$message({message: response.data.msg,type: 'error'});
  159. }
  160. loading.close();
  161. },function (response) {
  162. this.$message({message: response.data.msg,type: 'error'});
  163. loading.close();
  164. }
  165. );
  166. },
  167. submitForm(formName) {
  168. console.log(this.form)
  169. let that = this;
  170. let json = {
  171. //reserve_time_interval:this.form.reserve_time_interval,
  172. uid:this.form.uid,
  173. success_notice_obj_user_tmp:this.form.success_notice_obj_user_tmp,
  174. success_notice_member_tmp:this.form.success_notice_member_tmp,
  175. cancel_notice_obj_user_tmp:this.form.cancel_notice_obj_user_tmp,
  176. finish_notice_member_tmp:this.form.finish_notice_member_tmp
  177. };
  178. this.$refs[formName].validate((valid) => {
  179. if (valid) {
  180. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  181. this.$http.post('{!! yzWebFullUrl('plugin.reserve-simple.admin.set.basic-post') !!}',json).then(response => {
  182. if (response.data.result) {
  183. this.$message({type: 'success',message: '操作成功!'});
  184. } else {
  185. this.$message({message: response.data.msg,type: 'error'});
  186. }
  187. loading.close();
  188. },response => {
  189. loading.close();
  190. });
  191. }
  192. else {
  193. console.log('error submit!!');
  194. return false;
  195. }
  196. });
  197. },
  198. goBack() {
  199. history.go(-1)
  200. },
  201. gotoOther(type) {
  202. let url = ""
  203. if(type==1) {
  204. // url = ''
  205. }else if(type==2) {
  206. //url = ''
  207. }
  208. if(url) {
  209. window.location.href=url
  210. }
  211. },
  212. openMember() {
  213. this.member_show = true;
  214. },
  215. getMember(){
  216. this.$http.post("{!! yzWebFullUrl('plugin.reserve-simple.admin.member.query') !!}",{keyword:this.member_keyword}).then(response => {
  217. if (response.data.result) {
  218. this.member_list=response.data.data
  219. }else{
  220. this.$message({type: 'error',message: response.data.msg});
  221. }
  222. }, response => {
  223. this.$message({type: 'error',message: response.data.msg});
  224. console.log(response);
  225. });
  226. },
  227. chooseMember(row) {
  228. this.choosed_member = row;
  229. this.form['uid'] = row.uid
  230. this.member_show = false;
  231. console.log(this.choosed_member)
  232. },
  233. clearMember() {
  234. this.choosed_member = {};
  235. this.form['uid'] = "";
  236. this.$forceUpdate();
  237. },
  238. },
  239. })
  240. </script>
  241. @endsection