edit.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426
  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: 1250px;" 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:'boss-achievement/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="商品抽取比例">
  32. <el-input v-model.number="ruleForm.setting.prize" type="number">
  33. <template slot="append">%</template>
  34. </el-input>
  35. </el-form-item>
  36. <el-form-item label="达标业绩">
  37. <el-input v-model.number="ruleForm.setting.standard_money" type="number">
  38. <template slot="append">元</template>
  39. </el-input>
  40. </el-form-item>
  41. <el-form-item label="业绩商品">
  42. <com-dialog-select :multiple="true" @selected="achievementGoods" title="商品选择">
  43. <el-button type="primary" plain>选择商品</el-button>
  44. </com-dialog-select>
  45. </el-form-item>
  46. <el-form-item prop="achievement_goods_ids">
  47. <div style="color: #ff4544;">最多可添加20个商品</div>
  48. <div style="max-height: 300px;overflow-y: auto">
  49. <el-table :data="achievement_goods_list" :show-header="false" border>
  50. <el-table-column label="">
  51. <template slot-scope="scope">
  52. <div flex>
  53. <div style="padding-right: 10px;flex-grow: 0">
  54. <com-image mode="aspectFill" :src="scope.row.cover_pic"></com-image>
  55. </div>
  56. <div style="flex-grow: 1;">
  57. <com-ellipsis :line="2">{{scope.row.goods_name}}</com-ellipsis>
  58. <span>¥{{ scope.row.price }}</span>
  59. </div>
  60. <div style="flex-grow: 0;">
  61. <el-button @click="deleteAchievementGoods(scope.$index)" type="text" circle size="mini">
  62. <el-tooltip class="item" effect="dark" content="删除" placement="top">
  63. <img src="resources/img/mall/del.png" alt="">
  64. </el-tooltip>
  65. </el-button>
  66. </div>
  67. </div>
  68. </template>
  69. </el-table-column>
  70. </el-table>
  71. </div>
  72. </el-form-item>
  73. <el-form-item label="是否启用自动升级" prop="is_auto_upgrade">
  74. <el-switch v-model="ruleForm.is_auto_upgrade" :active-value="1" :inactive-value="0">
  75. </el-switch>
  76. </el-form-item>
  77. <template v-if="ruleForm.is_auto_upgrade == 1">
  78. <?php echo $tpl; ?>
  79. </template>
  80. <el-form-item label="是否启用" prop="status">
  81. <el-switch v-model="ruleForm.status" :active-value="1" :inactive-value="0">
  82. </el-switch>
  83. </el-form-item>
  84. <el-form-item v-if="ruleForm.status" :key="1" label="等级说明" prop="explain">
  85. <el-input type="textarea" :rows="5" placeholder="请输入等级说明" v-model="ruleForm.explain" maxlength="80" show-word-limit></el-input>
  86. </el-form-item>
  87. <el-form-item v-if="!ruleForm.status" :key="2" label="等级说明">
  88. <el-input type="textarea" :rows="5" placeholder="请输入等级说明" v-model="ruleForm.explain" maxlength="80" show-word-limit></el-input>
  89. </el-form-item>
  90. </el-col>
  91. </el-row>
  92. </el-form>
  93. </div>
  94. <el-button class="button-item" :loading="btnLoading" type="primary" @click="submitForm('ruleForm')" size="small">保存
  95. </el-button>
  96. </el-card>
  97. </div>
  98. <script>
  99. const app = new Vue({
  100. el: '#app',
  101. data() {
  102. return {
  103. origin_level:0,
  104. msg: 1,
  105. options: [], //会员等级列表
  106. level: 0,
  107. form: {
  108. type: [],
  109. },
  110. showConditionMsg: false,
  111. dialogFormVisible_edit: false,
  112. conditionMsg: '',
  113. weights: [],
  114. levels: [],
  115. achievement_goods_list: [],
  116. ruleForm: {
  117. id:'',
  118. level: '', //当前选中等级
  119. name: '',
  120. status: 0,
  121. condition_type: 1,
  122. setting: {
  123. commission_type: 'commission',
  124. from_type: 'BossAchievement',
  125. prize: 0,
  126. standard_money: 0,
  127. achievement_goods_ids: [],
  128. },
  129. buy_goods_type: 0,
  130. is_auto_upgrade: 0,
  131. goods_type: 0,
  132. upgrade_type_condition: 0,
  133. upgrade_type_goods: 0,
  134. rule: '',
  135. explain : '',
  136. checked_condition_keys: [], //对应条件的key
  137. goods_ids: [],
  138. goods_list: [],
  139. checked_condition_values:<?= $key_arr?>,
  140. },
  141. options_list:<?= $source_list ?>,
  142. checkbox_list: <?= $checkbox_list ?>,
  143. rules: {
  144. level: [{
  145. required: true,
  146. message: '请选择股东等级',
  147. trigger: 'change'
  148. }, ],
  149. name: [{
  150. required: true,
  151. message: '请输入股东等级名称',
  152. trigger: 'change'
  153. }, ],
  154. status: [{
  155. required: true,
  156. message: '请选择股东等级状态',
  157. trigger: 'change'
  158. }, ],
  159. explain: [{
  160. required: true,
  161. message: '等级说明不能为空',
  162. trigger: 'change'
  163. }, ],
  164. },
  165. btnLoading: false,
  166. cardLoading: false,
  167. formLabelWidth: '150px',
  168. };
  169. },
  170. mounted() {
  171. if (getQuery('id')) {
  172. this.loadData();
  173. }else{
  174. this.checked_condition_values_fourArr=[
  175. {
  176. itemName: "默认等级",
  177. val: 0
  178. }
  179. ]
  180. this.loadData();
  181. }
  182. },
  183. methods: {
  184. close(e) {
  185. this.visible = false;
  186. },
  187. goodsSelect(param) {
  188. for (let j in param) {
  189. let item = param[j];
  190. if (this.ruleForm.goods_ids && this.ruleForm.goods_ids.length >= 20) {
  191. this.$message.error('指定商品不能大于20个');
  192. return;
  193. }
  194. let flag = true;
  195. for (let i in this.ruleForm.goods_ids) {
  196. if (this.ruleForm.goods_ids[i] == item.id) {
  197. flag = false;
  198. break;
  199. }
  200. }
  201. if (flag) {
  202. this.ruleForm.goods_ids.push(item.id);
  203. this.ruleForm.goods_list.push({
  204. id: item.id,
  205. name: item.goods_name,
  206. cover_pic: item.cover_pic,
  207. });
  208. }
  209. }
  210. },
  211. // 业绩商品
  212. achievementGoods(param) {
  213. for (let j in param) {
  214. let item = param[j];
  215. if (this.ruleForm.setting.achievement_goods_ids && this.ruleForm.setting.achievement_goods_ids.length >= 20) {
  216. this.$message.error('指定商品不能大于20个');
  217. return;
  218. }
  219. let flag = true;
  220. for (let i in this.ruleForm.setting.achievement_goods_ids) {
  221. if (this.ruleForm.setting.achievement_goods_ids[i] == item.id) {
  222. flag = false;
  223. break;
  224. }
  225. }
  226. if (flag) {
  227. this.ruleForm.setting.achievement_goods_ids.push(item.id);
  228. this.achievement_goods_list.push({
  229. id: item.id,
  230. goods_name: item.goods_name,
  231. cover_pic: item.cover_pic,
  232. price: item.price,
  233. });
  234. }
  235. }
  236. },
  237. // 2.1 提交表单编辑
  238. submitForm(formName) {
  239. let self = this;
  240. self.showConditionMsg = false;
  241. if(self.ruleForm.upgrade_type_goods ==1){
  242. if (self.ruleForm.goods_type == 2 && self.ruleForm.goods_list.length == 0) { //选中的checkBox
  243. self.$message.error('请选择升级商品');
  244. return;
  245. }
  246. }
  247. if (self.ruleForm.upgrade_type_condition == 1) { //选中升级条件
  248. if (self.ruleForm.checked_condition_keys.length == 0) { //选中的checkBox
  249. self.$message.error('请完善升级条件');
  250. return;
  251. }
  252. let checked_condition_values = self.ruleForm.checked_condition_values;
  253. self.ruleForm.checked_condition_keys.forEach(function(item, index){
  254. for(i in self.ruleForm.checked_condition_values[index].value) {
  255. if (!self.ruleForm.checked_condition_values[index].value[i]) {
  256. self.conditionMsg = '请完善条件:' + (parseInt(index) + 1);
  257. return false;
  258. }
  259. }
  260. });
  261. if (self.showConditionMsg) {
  262. this.$message.error(self.conditionMsg);
  263. return
  264. }
  265. if (this.ruleForm.checked_condition_keys.length > 0) {
  266. if (this.ruleForm.condition_type == 0) {
  267. this.$message.error('请选择条件升级的方式升级类型');
  268. return;
  269. }
  270. }
  271. }
  272. if (self.ruleForm.setting.achievement_goods_ids.length <= 0) {
  273. this.$message.error('请添加业绩商品');
  274. return;
  275. }
  276. self.ruleForm.setting.achievement_goods_ids = JSON.stringify(self.ruleForm.setting.achievement_goods_ids);
  277. this.$refs[formName].validate((valid) => {
  278. if (valid) {
  279. self.btnLoading = true;
  280. request({
  281. params: {
  282. r: 'boss-achievement/level/edit'
  283. },
  284. method: 'post',
  285. data: {
  286. form: self.ruleForm,
  287. }
  288. }).then(e => {
  289. self.btnLoading = false;
  290. if (e.data.code == 0) {
  291. self.$message.success(e.data.msg);
  292. navigateTo({
  293. r: 'boss-achievement/level/index'
  294. })
  295. } else {
  296. self.$message.error(e.data.msg);
  297. }
  298. }).catch(e => {
  299. self.$message.error(e.data.msg);
  300. self.btnLoading = false;
  301. });
  302. } else {
  303. console.log('error submit!!');
  304. return false;
  305. }
  306. });
  307. },
  308. // 获取显示的值
  309. loadData() {
  310. this.cardLoading = true;
  311. request({
  312. params: {
  313. r: 'boss-achievement/level/edit',
  314. id: getQuery('id'),
  315. },
  316. method: 'get'
  317. }).then(e => {
  318. this.cardLoading = false;
  319. if (e.data.code == 0) {
  320. if (e.data.data.detail) {
  321. Object.assign(this.ruleForm, e.data.data.detail)
  322. this.origin_level =this.ruleForm.level;
  323. this.achievement_goods_list = e.data.data.achievement_goods_list;
  324. }
  325. this.weights = e.data.data.weights;
  326. } else {
  327. this.$message.error(e.data.msg);
  328. }
  329. }).catch(e => {
  330. console.log(e);
  331. });
  332. },
  333. deleteGoods(index) {
  334. this.ruleForm.goods_list.splice(index, 1);
  335. this.ruleForm.goods_ids.splice(index, 1);
  336. },
  337. deleteAchievementGoods(index) {
  338. this.ruleForm.setting.achievement_goods_ids.splice(index, 1);
  339. this.achievement_goods_list.splice(index, 1);
  340. },
  341. setCondition(){
  342. navigateTo({
  343. r: 'boss-achievement/level/condition',
  344. });
  345. }
  346. }
  347. });
  348. </script>
  349. <style>
  350. .form-body {
  351. padding: 20px;
  352. background-color: #fff;
  353. margin-bottom: 20px;
  354. padding-right: 20%;
  355. min-width: 900px;
  356. }
  357. .form-body .el-form-item {
  358. padding-right: 25%;
  359. min-width: 850px;
  360. }
  361. .form-button {
  362. margin: 0;
  363. }
  364. .form-button .el-form-item__content {
  365. margin-left: 0 !important;
  366. }
  367. .button-item {
  368. padding: 9px 25px;
  369. }
  370. .check-group {
  371. font-size: 14px !important;
  372. }
  373. .check-group .el-col {
  374. display: flex;
  375. }
  376. .check-group .el-input {
  377. margin: 0 5px;
  378. }
  379. .check-group .el-col .el-checkbox {
  380. display: flex;
  381. align-items: center;
  382. }
  383. .check-group .el-col .el-input {
  384. width: 100px;
  385. }
  386. .check-group .el-col .el-input .el-input__inner {
  387. height: 30px;
  388. width: 100px;
  389. }
  390. .el-checkbox-group .el-col {
  391. margin-bottom: 10px;
  392. }
  393. .condition_common {
  394. display: flex;
  395. align-items: center;
  396. }
  397. .condition_common_five {
  398. display: flex;
  399. }
  400. </style>