edit.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  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" v-loading="cardLoading" shadow="never" style="border:0;min-width: 1400px;" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  8. <div slot="header">
  9. <el-breadcrumb separator="/">
  10. <el-breadcrumb-item>
  11. <span style="color: #409EFF;cursor: pointer" @click="$navigate({r:'write-off/level/index'})">
  12. 核销员等级
  13. </span>
  14. </el-breadcrumb-item>
  15. <el-breadcrumb-item>编辑等级</el-breadcrumb-item>
  16. </el-breadcrumb>
  17. </div>
  18. <div class="form-body">
  19. <el-form :model="ruleForm" :rules="rules" size="small" ref="ruleForm" label-width="150px">
  20. <el-row>
  21. <el-col :span="24">
  22. <el-form-item label="等级权重" prop="level">
  23. <el-select style="width: 100%" v-model="ruleForm.level" placeholder="请选择">
  24. <el-option v-for="item in weights" :key="item.level" :label="item.name" :value="item.level" :disabled="item.disabled && item.level!=origin_level">
  25. </el-option>
  26. </el-select>
  27. </el-form-item>
  28. <el-form-item label="等级名称" prop="name">
  29. <el-input v-model="ruleForm.name" placeholder="请输入等级名称"></el-input>
  30. </el-form-item>
  31. <el-form-item label="核销阶梯式奖励设置" prop="is_enable_write_off_reward">
  32. <el-switch v-model="ruleForm.is_enable_write_off_reward" :active-value="1" :inactive-value="0">
  33. </el-switch>
  34. </el-form-item>
  35. <template v-if="ruleForm.is_enable_write_off_reward">
  36. <el-form-item label="奖励比例" prop="status">
  37. <el-form-item v-for="(item,index) in ruleForm.write_off_reward_proportion" :key='index' class="coupon-item" style="display: flex;align-items: center;">
  38. <span>{{'第'+(index+1)+'次'}}</span>
  39. <el-input type="number" :min="0" :max="100" class="member-money" v-model="item.money" placeholder="" style="width: 300px;margin-left: 10px;">
  40. <template slot="append">元/次</template>
  41. </el-input>
  42. <el-button v-if="ruleForm.write_off_reward_proportion.length>1" size="mini" type="danger"
  43. icon="el-icon-close" circle
  44. @click="delWriteOffItem(index)"></el-button>
  45. </el-form-item>
  46. </el-form-item>
  47. <el-form-item>
  48. <el-button v-if="ruleForm.write_off_reward_proportion && ruleForm.write_off_reward_proportion.length<36" style="margin-bottom: 10px;" type="primary" size="small" @click="addWriteOffItem">添加奖励区间
  49. </el-button>
  50. </el-form-item>
  51. </template>
  52. <el-form-item label="核销限制" prop="is_enable_promote_limit">
  53. <el-switch v-model="ruleForm.is_enable_promote_limit" :active-value="1" :inactive-value="0">
  54. </el-switch>
  55. </el-form-item>
  56. <el-form-item label="每天核销次数" prop="promote_time" v-if="ruleForm.is_enable_promote_limit == 1">
  57. <el-input v-model.number="ruleForm.promote_time" type="number">
  58. <template slot="append">次</template>
  59. </el-input>
  60. </el-form-item>
  61. <el-form-item label="促销奖励设置" prop="is_enable_promote_reward">
  62. <el-switch v-model="ruleForm.is_enable_promote_reward" :active-value="1" :inactive-value="0">
  63. </el-switch>
  64. </el-form-item>
  65. <el-form-item label="促销奖励比例" prop="extra_prize" v-if="ruleForm.is_enable_promote_reward == 1">
  66. <el-input v-model.number="ruleForm.promote_reward_prize" type="number">
  67. <template slot="append">%</template>
  68. </el-input>
  69. </el-form-item>
  70. <el-form-item label="促销业绩阶梯奖励设置" prop="is_enable_promote_reward_achievement">
  71. <el-switch v-model="ruleForm.is_enable_promote_reward_achievement" :active-value="1" :inactive-value="0">
  72. </el-switch>
  73. </el-form-item>
  74. <template v-if="ruleForm.is_enable_promote_reward_achievement==1">
  75. <el-form-item label="奖励比例" prop="status">
  76. <el-form-item v-for="(item,index) in ruleForm.promote_achievement_reward_proportion" :key='index' class="coupon-item" style="display: flex;align-items: center;">
  77. <span>业绩达到</span>
  78. <el-input type="number" :min="0" class="member-money" v-model="item.money_start" placeholder="" style="width: 200px;">
  79. <template slot="append">元</template>
  80. </el-input>
  81. <span>~</span>
  82. <el-input type="number" :min="0" class="member-money" v-model="item.money_end" placeholder="" style="width: 200px;">
  83. <template slot="append">元</template>
  84. </el-input>
  85. <span>奖励</span>
  86. <el-input type="number" :min="0" :max="100" class="member-money" v-model="item.proportion" placeholder="" style="width: 200px;">
  87. <template slot="append">%</template>
  88. </el-input>
  89. <el-button v-if="ruleForm.promote_achievement_reward_proportion.length>1" size="mini" type="danger"
  90. icon="el-icon-close" circle
  91. @click="delItem(index)"></el-button>
  92. </el-form-item>
  93. </el-form-item>
  94. <el-form-item>
  95. <el-button v-if="ruleForm.promote_achievement_reward_proportion && ruleForm.promote_achievement_reward_proportion.length<36" style="margin-bottom: 10px;" type="primary" size="small" @click="addCouponItem">添加奖励区间
  96. </el-button>
  97. </el-form-item>
  98. </template>
  99. <el-form-item label="是否启用" prop="status">
  100. <el-switch v-model="ruleForm.status" :active-value="1" :inactive-value="0">
  101. </el-switch>
  102. </el-form-item>
  103. </el-col>
  104. </el-row>
  105. </el-form>
  106. </div>
  107. <el-button class="button-item" :loading="btnLoading" type="primary" @click="submitForm('ruleForm')" size="small">保存
  108. </el-button>
  109. </el-card>
  110. </div>
  111. <script>
  112. const app = new Vue({
  113. el: '#app',
  114. data() {
  115. return {
  116. origin_level: 0,
  117. msg: 1,
  118. options: [], //会员等级列表
  119. level: 0,
  120. form: {
  121. type: [],
  122. },
  123. showConditionMsg: false,
  124. conditionMsg: '',
  125. weights: [],
  126. levels: [],
  127. ruleForm: {
  128. id: '',
  129. level: '', //当前选中等级
  130. name: '',
  131. status: 1,
  132. is_enable_write_off_reward: 0,
  133. write_off_reward_proportion : [
  134. {
  135. money : 0,
  136. },
  137. ],
  138. is_enable_promote_reward: 0,
  139. promote_reward_prize:0,
  140. is_enable_promote_reward_achievement:0,
  141. promote_achievement_reward_proportion : [
  142. {
  143. money_start : 0,
  144. money_end : 0,
  145. proportion : 0,
  146. },
  147. ],
  148. is_enable_promote_limit:0,
  149. promote_time:0,
  150. },
  151. rules: {
  152. level: [{
  153. required: true,
  154. message: '请选择等级',
  155. trigger: 'change'
  156. }, ],
  157. name: [{
  158. required: true,
  159. message: '请输入等级名称',
  160. trigger: 'change'
  161. }, ],
  162. },
  163. btnLoading: false,
  164. cardLoading: false,
  165. formLabelWidth: '150px',
  166. };
  167. },
  168. mounted() {
  169. this.loadData();
  170. },
  171. methods: {
  172. // 2.1 提交表单编辑
  173. submitForm(formName) {
  174. let self = this;
  175. self.showConditionMsg = false;
  176. this.$refs[formName].validate((valid) => {
  177. if (valid) {
  178. self.btnLoading = true;
  179. request({
  180. params: {
  181. r: 'write-off/level/edit'
  182. },
  183. method: 'post',
  184. data: {
  185. form: self.ruleForm,
  186. }
  187. }).then(e => {
  188. self.btnLoading = false;
  189. if (e.data.code == 0) {
  190. self.$message.success(e.data.msg);
  191. navigateTo({
  192. r: 'write-off/level/index'
  193. })
  194. } else {
  195. self.$message.error(e.data.msg);
  196. }
  197. }).catch(e => {
  198. self.$message.error(e.data.msg);
  199. self.btnLoading = false;
  200. });
  201. } else {
  202. console.log('error submit!!');
  203. return false;
  204. }
  205. });
  206. },
  207. // 获取显示的值
  208. loadData() {
  209. this.cardLoading = true;
  210. request({
  211. params: {
  212. r: 'write-off/level/edit',
  213. id: getQuery('id'),
  214. },
  215. method: 'get'
  216. }).then(e => {
  217. this.cardLoading = false;
  218. if (e.data.code == 0) {
  219. if (e.data.data.detail) {
  220. let detail = e.data.data.detail
  221. Object.assign(this.ruleForm, detail)
  222. this.origin_level = this.ruleForm.level;
  223. }
  224. this.weights = e.data.data.weights;
  225. } else {
  226. this.$message.error(e.data.msg);
  227. }
  228. }).catch(e => {
  229. console.log(e);
  230. });
  231. },
  232. // 0.1 点击添加奖励比例
  233. addWriteOffItem(){
  234. let flag = true;
  235. // this.ruleForm.write_off_reward_proportion.forEach((item, index)=>{
  236. // if(index>0 && this.ruleForm.write_off_reward_proportion[index-1].money*1>=item.money*1){
  237. // this.$message.error('团队业绩金额设置只能递增');
  238. // flag = false
  239. // return
  240. // }
  241. // })
  242. if(!flag) return
  243. let write_off_reward_proportion = JSON.parse(JSON.stringify(this.ruleForm.write_off_reward_proportion));
  244. let item = {money : 0};
  245. write_off_reward_proportion.push(item);
  246. this.ruleForm.write_off_reward_proportion = write_off_reward_proportion;
  247. },
  248. // 点击删除某一item
  249. delWriteOffItem(index){
  250. let write_off_reward_proportion = JSON.parse(JSON.stringify(this.ruleForm.write_off_reward_proportion));
  251. write_off_reward_proportion.splice(index, 1);
  252. this.ruleForm.write_off_reward_proportion = write_off_reward_proportion;
  253. },
  254. // 0.1 点击添加奖励比例
  255. addCouponItem(){
  256. let flag = true;
  257. this.ruleForm.promote_achievement_reward_proportion.forEach((item, index)=>{
  258. if(index>0 && this.ruleForm.promote_achievement_reward_proportion[index-1].money_start*1>=item.money_start*1){
  259. this.$message.error('团队业绩金额设置只能递增');
  260. flag = false
  261. return
  262. }
  263. if(index>0 && this.ruleForm.promote_achievement_reward_proportion[index-1].money_end*1>=item.money_end*1){
  264. this.$message.error('团队业绩奖励比例设置只能递增');
  265. flag = false
  266. return
  267. }
  268. })
  269. if(!flag) return
  270. let promote_achievement_reward_proportion = JSON.parse(JSON.stringify(this.ruleForm.promote_achievement_reward_proportion));
  271. let item = {money_start : 0,money_end : 0,proportion : 0,};
  272. promote_achievement_reward_proportion.push(item);
  273. this.ruleForm.promote_achievement_reward_proportion = promote_achievement_reward_proportion;
  274. },
  275. // 点击删除某一item
  276. delItem(index){
  277. let promote_achievement_reward_proportion = JSON.parse(JSON.stringify(this.ruleForm.promote_achievement_reward_proportion));
  278. promote_achievement_reward_proportion.splice(index, 1);
  279. this.ruleForm.promote_achievement_reward_proportion = promote_achievement_reward_proportion;
  280. },
  281. }
  282. });
  283. </script>
  284. <style>
  285. .form-body {
  286. padding: 20px;
  287. background-color: #fff;
  288. margin-bottom: 20px;
  289. padding-right: 20%;
  290. min-width: 1200px;
  291. }
  292. .form-body .el-form-item {
  293. padding-right: 25%;
  294. min-width: 1150px;
  295. }
  296. .form-button {
  297. margin: 0;
  298. }
  299. .form-button .el-form-item__content {
  300. margin-left: 0 !important;
  301. }
  302. .button-item {
  303. padding: 9px 25px;
  304. }
  305. .check-group {
  306. font-size: 14px !important;
  307. }
  308. .check-group .el-col {
  309. display: flex;
  310. }
  311. .check-group .el-input {
  312. margin: 0 5px;
  313. }
  314. .check-group .el-col .el-checkbox {
  315. display: flex;
  316. align-items: center;
  317. }
  318. .el-checkbox-group .el-col {
  319. margin-bottom: 10px;
  320. }
  321. .condition_common {
  322. display: flex;
  323. align-items: center;
  324. }
  325. .condition_common_five {
  326. display: flex;
  327. }
  328. </style>