index.blade.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. @extends('layouts.base')
  2. @section('title', '手动分红')
  3. @section('content')
  4. <div class="right-titpos">
  5. </div>
  6. <div class="rightlist">
  7. @include('layouts.tabs')
  8. <div id="test-vue">
  9. <el-form ref="form" status-icon :model="form" :rules="rules"
  10. label-width="100px"
  11. @submit.native.prevent>
  12. <el-form-item label="分红名称" prop="bonus_name">
  13. <el-row :gutter="3">
  14. <el-col :span="12">
  15. <el-input v-model="form.bonus_name"
  16. placeholder="请输入分红名称"></el-input>
  17. </el-col>
  18. </el-row>
  19. </el-form-item>
  20. <el-form-item label="分红金额" prop="bonus_amount">
  21. <el-row :gutter="3">
  22. <el-col :span="12">
  23. <el-input placeholder="请输入分红金额"
  24. v-model="form.bonus_amount"
  25. onkeyup="if(isNaN(value))execCommand('undo')"
  26. onafterpaste="if(isNaN(value))execCommand('undo')">
  27. <template slot="append">元</template>
  28. </el-input>
  29. </el-col>
  30. </el-row>
  31. </el-form-item>
  32. <el-form-item label="备注" prop="content">
  33. <el-row :gutter="3">
  34. <el-col :span="12">
  35. <el-input placeholder="请输入备注"
  36. type="textarea"
  37. :rows="10"
  38. v-model="form.content">
  39. </el-input>
  40. </el-col>
  41. </el-row>
  42. </el-form-item>
  43. <el-form-item label="分红对象">
  44. <el-row :gutter="20">
  45. <el-col :span="20">
  46. <div class="grid-content bg-purple">
  47. <template>
  48. <span v-for="(role, key) in role_config" style="margin-right:8px;">
  49. <input type="radio" v-on:change="changeValue()" v-bind:value="role.role_type" v-model="form.role_type" >[[role.type_name]]
  50. </span>
  51. </template>
  52. </div>
  53. </el-col>
  54. </el-row>
  55. </el-form-item>
  56. <el-form-item v-if="form.role_type=='member_by_uids'" label="UIDS">
  57. <el-row :gutter="3">
  58. <el-col :span="12">
  59. <el-input placeholder="请输入会员UID, 例:1,2,3"
  60. type="textarea"
  61. :rows="2"
  62. onkeyup="value=value.replace(/[^\d,,]|^[,,]+|[,,]+(?=[,,])/g, '')"
  63. v-model="form.uids">
  64. </el-input>
  65. </el-col>
  66. </el-row>
  67. </el-form-item>
  68. <el-form-item v-if="form.role_type!='member_by_uids'&&form.role_type!='supplier'&&form.role_type!='store_cashier'&&form.role_type!='store_boss'" label="选择等级">
  69. <el-row :gutter="3">
  70. <el-col :span="12">
  71. <el-select style="width: 100%" v-model="form.level_id" placeholder="请选择等级">
  72. <el-option
  73. v-for="item in role_config[form.role_type]['levels']"
  74. :key="item.id"
  75. :value="item.id"
  76. :label="item.level_name">
  77. </el-option>
  78. </el-select>
  79. </el-col>
  80. </el-row>
  81. </el-form-item>
  82. <el-form-item label="总分红金额" v-if="calculate.bonus_amount_total">
  83. <el-row :gutter="3">
  84. <el-col :span="12">
  85. <el-input v-model="calculate.bonus_amount_total" :disabled="true">
  86. <template slot="append">元</template>
  87. </el-input>
  88. </el-col>
  89. </el-row>
  90. </el-form-item>
  91. <el-form-item label="分红人数" v-if="calculate.bonus_count">
  92. <el-row :gutter="3">
  93. <el-col :span="12">
  94. <el-input v-model="calculate.bonus_count" :disabled="true">
  95. <template slot="append">个</template>
  96. </el-input>
  97. </el-col>
  98. </el-row>
  99. </el-form-item>
  100. <el-form-item label="每人" v-if="calculate.bonus_amount">
  101. <el-row :gutter="3">
  102. <el-col :span="12">
  103. <el-input v-model="calculate.bonus_amount" :disabled="true">
  104. <template slot="append">元/人</template>
  105. </el-input>
  106. </el-col>
  107. </el-row>
  108. </el-form-item>
  109. <el-form-item>
  110. <el-button type="success"
  111. @click="onSubmit()"
  112. :disabled="is_disabled"
  113. v-loading="formLoading">手动分红
  114. </el-button>
  115. <el-button @click.native.prevent="trial()" v-loading="trialLoading">试算</el-button>
  116. </el-form-item>
  117. </el-form>
  118. </div>
  119. </div>
  120. <script>
  121. var app = new Vue({
  122. el: '#test-vue',
  123. delimiters: ['[[', ']]'],
  124. data() {
  125. let role_config = {!! $role_config?$role_config:'{}' !!};
  126. let calculate = JSON.parse('{}');
  127. var checkAmount = (rule, value, callback) => {
  128. if (!value) {
  129. return callback(new Error('请输入分红金额'));
  130. }
  131. setTimeout(() => {
  132. callback();
  133. }, 1000);
  134. };
  135. var checkName = (rule, value, callback) => {
  136. if (!value) {
  137. return callback(new Error('请输入分红名称'));
  138. }
  139. setTimeout(() => {
  140. callback();
  141. }, 1000);
  142. };
  143. // var checkContent = (rule, value, callback) => {
  144. // if (!value) {
  145. // return callback(new Error('请输入备注'));
  146. // }
  147. // setTimeout(() => {
  148. // callback();
  149. // }, 1000);
  150. // };
  151. return {
  152. calculate: calculate,
  153. form: {
  154. bonus_name: '手动分红',
  155. bonus_amount: '',
  156. content: '',
  157. role_type: 'member_by_uids',
  158. level_id:"",
  159. },
  160. role_config: role_config,
  161. formLoading: false,
  162. is_disabled:false,
  163. trialLoading: false,
  164. rules: {
  165. bonus_name: [
  166. {validator: checkName}
  167. ],
  168. bonus_amount: [
  169. {validator: checkAmount}
  170. ],
  171. // content:[{validator: checkContent}],
  172. }
  173. }
  174. },
  175. methods: {
  176. changeValue() {
  177. this.form.level_id = "";
  178. console.log(this.form.level_id);
  179. },
  180. trial() {
  181. this.trialLoading = true;
  182. this.$refs.form.validate((valid) => {
  183. if (valid) {
  184. this.$http.post("{!! yzWebUrl('plugin.manual-bonus.admin.return.trial') !!}", {'bonus': this.form}).then(response => {
  185. if (response.data.result) {
  186. this.$message({
  187. message: response.data.msg,
  188. type: 'success',
  189. duration: 3000
  190. });
  191. this.calculate = response.data.data;
  192. } else {
  193. this.$message({
  194. message: response.data.msg,
  195. type: 'error'
  196. });
  197. }
  198. this.trialLoading = false;
  199. }, response => {
  200. console.log(response);
  201. });
  202. } else {
  203. console.log('error submit trial!!');
  204. return false;
  205. }
  206. });
  207. },
  208. onSubmit() {
  209. // this.formLoading = true;
  210. this.is_disabled = true;
  211. this.$refs.form.validate((valid) => {
  212. if (valid) {
  213. this.$http.post("{!! yzWebUrl('plugin.manual-bonus.admin.return.sub') !!}", {'bonus': this.form}).then(response => {
  214. if (response.data.result) {
  215. this.$message({
  216. message: response.data.msg,
  217. type: 'success',
  218. duration: 2000,
  219. showClose: true,
  220. onClose: function(){
  221. window.location.href = "{!! yzWebUrl('plugin.manual-bonus.admin.return.index') !!}"
  222. }
  223. });
  224. } else {
  225. this.$message({
  226. message: response.data.msg,
  227. type: 'error'
  228. });
  229. }
  230. this.formLoading = false;
  231. }, response => {
  232. console.log(response);
  233. });
  234. } else {
  235. console.log('error submit!!');
  236. this.is_disabled = false;
  237. return false;
  238. }
  239. });
  240. }
  241. }
  242. });
  243. </script>
  244. @endsection