testbussiness.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. <template>
  2. <basic-container>
  3. <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" :permission="permissionList"
  4. :before-open="beforeOpen" v-model="form" ref="crud" @row-update="rowUpdate" @row-save="rowSave" @row-del="rowDel"
  5. @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
  6. @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
  7. <template slot="menuLeft">
  8. <el-button type="danger" size="small" icon="el-icon-delete" plain v-if="permission.testbussiness_delete" @click="handleDelete">删 除
  9. </el-button>
  10. </template>
  11. <template slot="maxLimitForm" slot-scope="scope">
  12. <avue-input-number v-model="scope.row.maxLimit" precision="2" controls-position></avue-input-number>
  13. </template>
  14. <template slot="apiFilePath" slot-scope="scope">
  15. <el-tab v-if="scope.row.apiFilePath == null">无</el-tab>
  16. <el-tab v-if="scope.row.apiFilePath != null&&scope.row.apiFilePath != ''">有</el-tab>
  17. </template>
  18. <template slot="enable" slot-scope="scope">
  19. <el-tag type="primary" v-if="scope.row.enable == 0">启用</el-tag>
  20. <el-tag type="danger" v-if="scope.row.enable == 1">禁用</el-tag>
  21. </template>
  22. <template slot="menu" slot-scope="{row}">
  23. <el-button
  24. type ="text"
  25. size="mini"
  26. plain
  27. v-if="row.enable == 1 && permission.testbussiness_enable"
  28. @click="handleEnable(row.id, 0)">启用
  29. </el-button>
  30. <el-button
  31. type ="text"
  32. size="mini"
  33. plain
  34. v-if="row.enable == 0 && permission.testbussiness_enable"
  35. @click="handleEnable(row.id, 1)">禁用
  36. </el-button>
  37. </template>
  38. <template slot="registerStatus" slot-scope="{row}">
  39. <el-tag plain type="warning" size="small" v-if="row.registerStatus == 100">资料完善中</el-tag>
  40. <el-tag plain type="primary" size="small" v-if="row.registerStatus == 98">送审中</el-tag>
  41. <el-tag plain type="warning" size="small" v-if="row.registerStatus == 101">协议待签署</el-tag>
  42. <el-tag plain type="warning" size="small" v-if="row.registerStatus == 102">审核中</el-tag>
  43. <el-tag plain type="success" size="small" v-if="row.registerStatus == 200">审核成功</el-tag>
  44. <el-tag plain type="danger" size="small" v-if="row.registerStatus == 400">审核失败</el-tag>
  45. <el-tag plain type="danger" size="small" v-if="row.registerStatus == 99">送审失败</el-tag>
  46. </template>
  47. </avue-crud>
  48. </basic-container>
  49. </template>
  50. <script>
  51. import {
  52. getList,
  53. getDetail,
  54. testSubmit,
  55. remove,
  56. generateApi,
  57. enableBussiness
  58. } from "@/api/bussinessmng/bussiness";
  59. import {
  60. mapGetters
  61. } from "vuex";
  62. import md5 from 'js-md5'
  63. export default {
  64. data() {
  65. return {
  66. form: {},
  67. query: {},
  68. loading: true,
  69. page: {
  70. pageSize: 10,
  71. currentPage: 1,
  72. total: 0
  73. },
  74. bussinessId: null,
  75. selectionList: [],
  76. option: {
  77. height: 'auto',
  78. calcHeight: 30,
  79. tip: false,
  80. searchShow: true,
  81. searchMenuSpan: 6,
  82. border: true,
  83. index: true,
  84. viewBtn: true,
  85. selection: true,
  86. delBtn: false,
  87. dialogClickModal: false,
  88. dialogWidth: "30%",
  89. column: [
  90. {
  91. label: "采购商名称",
  92. labelWidth: 110,
  93. search: true,
  94. searchLabelWidth: 110,
  95. prop: "name",
  96. span: 24,
  97. rules: [{
  98. required: true,
  99. message: "请输入采购商名称",
  100. trigger: "blur"
  101. }]
  102. },
  103. {
  104. label: "每日提现上限",
  105. labelWidth: 130,
  106. span: 24,
  107. prop: "maxLimit",
  108. formslot: true,
  109. rules: [{
  110. required: true,
  111. message: "请输入每日提现上限",
  112. trigger: "blur"
  113. }]
  114. },
  115. {
  116. label: "服务费率(千分比)",
  117. prop: "serviceRate",
  118. labelWidth: 130,
  119. width: 300,
  120. span: 24,
  121. rules: [{
  122. required: true,
  123. message: "请输入关联账号的名称",
  124. trigger: "blur"
  125. }]
  126. },
  127. {
  128. label: "账号",
  129. prop: "userName",
  130. labelWidth: 130,
  131. editDisplay: false,
  132. span: 24,
  133. rules: [{
  134. required: true,
  135. message: "请输入关联账号的名称",
  136. trigger: "blur"
  137. }]
  138. },
  139. {
  140. label: "密码",
  141. prop: "userPassword",
  142. labelWidth: 130,
  143. span: 24,
  144. display: true,
  145. hide: true,
  146. rules: [{
  147. required: true,
  148. message: "请输入关联账号的密码",
  149. trigger: "blur"
  150. }]
  151. },
  152. {
  153. label: "最低采购金额",
  154. prop: "leastPrice",
  155. labelWidth: 130,
  156. span: 24,
  157. hide: true,
  158. rules: [{
  159. required: true,
  160. message: "请输入最低采购金额",
  161. trigger: "blur"
  162. }]
  163. },
  164. {
  165. label: "api文档",
  166. prop: "apiFilePath",
  167. slot: true,
  168. display: false,
  169. hide: true
  170. },
  171. {
  172. label: "回调地址",
  173. prop: "recallUrl",
  174. labelWidth: 130,
  175. span: 24,
  176. hide: true,
  177. addDisplay: false,
  178. editDisplay: false,
  179. rules: [{
  180. required: false,
  181. message: "请输入回调地址,比如:http://xxx.xxx.xxx.xxx/xxx",
  182. trigger: "blur"
  183. }]
  184. },
  185. {
  186. label: "余额(元)",
  187. prop: "remain",
  188. display: false,
  189. rules: [{
  190. required: true,
  191. message: "请输入关联账号的id",
  192. trigger: "blur"
  193. }]
  194. },
  195. {
  196. label: "启用状态",
  197. prop: "enable",
  198. type: "select",
  199. slot: true,
  200. search: true,
  201. dicData: [
  202. {
  203. label: "禁用",
  204. value: 1
  205. },
  206. {
  207. label: "启用",
  208. value: 0
  209. },
  210. ],
  211. },
  212. {
  213. label: "进件状态",
  214. prop: "registerStatus",
  215. type: "select",
  216. search: true,
  217. slot: true,
  218. display: false,
  219. dicUrl: "/api/blade-system/dict-biz/dictionary?code=merchant_register_status",
  220. props:{
  221. label: "dictValue",
  222. value: "dictKey"
  223. },
  224. },
  225. ]
  226. },
  227. data: []
  228. };
  229. },
  230. computed: {
  231. ...mapGetters(["permission"]),
  232. permissionList() {
  233. return {
  234. addBtn: this.vaildData(this.permission.bussiness_add, false),
  235. viewBtn: this.vaildData(this.permission.bussiness_view, false),
  236. delBtn: this.vaildData(this.permission.bussiness_delete, false),
  237. editBtn: this.vaildData(this.permission.bussiness_edit, false)
  238. };
  239. },
  240. ids() {
  241. let ids = [];
  242. this.selectionList.forEach(ele => {
  243. ids.push(ele.id);
  244. });
  245. return ids.join(",");
  246. }
  247. },
  248. methods: {
  249. handleEnable(bussinessId, enable){
  250. if(enable == 1){
  251. this.$confirm("确定要禁用吗?", {
  252. confirmButtonText: "确定",
  253. cancelButtonText: "取消",
  254. type: "warning"
  255. }).then(() => {
  256. let params = {"bussinessId": bussinessId, "enable": enable}
  257. enableBussiness(params).then(() => {
  258. this.onLoad(this.page);
  259. this.$message({
  260. type: "success",
  261. message: "操作成功!"
  262. });
  263. })
  264. })
  265. }else{
  266. let params = {"bussinessId": bussinessId, "enable": enable}
  267. enableBussiness(params).then(() => {
  268. this.onLoad(this.page);
  269. this.$message({
  270. type: "success",
  271. message: "操作成功!"
  272. });
  273. })
  274. }
  275. },
  276. rowSave(row, done, loading) {
  277. row.userPassword = md5(row.userPassword)
  278. testSubmit(row).then(() => {
  279. this.onLoad(this.page);
  280. this.$message({
  281. type: "success",
  282. message: "操作成功!"
  283. });
  284. done();
  285. }, error => {
  286. loading();
  287. window.console.log(error);
  288. });
  289. },
  290. rowUpdate(row, index, done, loading) {
  291. if(row.userPassword){
  292. row.userPassword = md5(row.userPassword)
  293. }
  294. testSubmit(row).then(() => {
  295. this.onLoad(this.page);
  296. this.$message({
  297. type: "success",
  298. message: "操作成功!"
  299. });
  300. done();
  301. }, error => {
  302. loading();
  303. console.log(error);
  304. });
  305. },
  306. rowDel(row) {
  307. this.$confirm("确定将选择数据删除?", {
  308. confirmButtonText: "确定",
  309. cancelButtonText: "取消",
  310. type: "warning"
  311. })
  312. .then(() => {
  313. return remove(row.id);
  314. })
  315. .then(() => {
  316. this.onLoad(this.page);
  317. this.$message({
  318. type: "success",
  319. message: "操作成功!"
  320. });
  321. });
  322. },
  323. generateDoc(){
  324. if (this.selectionList.length === 0) {
  325. this.$message.warning("请选择至少一条数据");
  326. return;
  327. }
  328. this.$confirm("确定重新生成api文档吗?", {
  329. confirmButtonText: "确定",
  330. cancelButtonText: "取消",
  331. type: "warning"
  332. })
  333. .then(() => {
  334. return generateApi(this.ids);
  335. })
  336. .then(() => {
  337. this.onLoad(this.page);
  338. this.$message({
  339. type: "success",
  340. message: "操作成功!"
  341. });
  342. this.$refs.crud.toggleSelection();
  343. });
  344. },
  345. handleDelete() {
  346. if (this.selectionList.length === 0) {
  347. this.$message.warning("请选择至少一条数据");
  348. return;
  349. }
  350. this.$confirm("确定将选择数据删除?", {
  351. confirmButtonText: "确定",
  352. cancelButtonText: "取消",
  353. type: "warning"
  354. })
  355. .then(() => {
  356. return remove(this.ids);
  357. })
  358. .then(() => {
  359. this.onLoad(this.page);
  360. this.$message({
  361. type: "success",
  362. message: "操作成功!"
  363. });
  364. this.$refs.crud.toggleSelection();
  365. });
  366. },
  367. beforeOpen(done, type) {
  368. if (["edit", "view"].includes(type)) {
  369. let userPasswordProp = this.findObject(this.option.column, "userPassword");
  370. if(type == 'edit'){
  371. userPasswordProp.rules[0].required = false;
  372. }else{
  373. userPasswordProp.rules[0].required = true;
  374. }
  375. getDetail(this.form.id).then(res => {
  376. this.form = res.data.data;
  377. });
  378. }
  379. done();
  380. },
  381. searchReset() {
  382. this.query = {};
  383. this.onLoad(this.page);
  384. },
  385. searchChange(params, done) {
  386. this.query = params;
  387. this.page.currentPage = 1;
  388. this.onLoad(this.page, params);
  389. done();
  390. },
  391. selectionChange(list) {
  392. this.selectionList = list;
  393. },
  394. selectionClear() {
  395. this.selectionList = [];
  396. this.$refs.crud.toggleSelection();
  397. },
  398. currentChange(currentPage) {
  399. this.page.currentPage = currentPage;
  400. },
  401. sizeChange(pageSize) {
  402. this.page.pageSize = pageSize;
  403. },
  404. refreshChange() {
  405. this.onLoad(this.page, this.query);
  406. },
  407. onLoad(page, params = {}) {
  408. this.loading = true;
  409. getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
  410. const data = res.data.data;
  411. this.page.total = data.total;
  412. this.data = data.records;
  413. this.loading = false;
  414. this.selectionClear();
  415. });
  416. }
  417. }
  418. };
  419. </script>
  420. <style>
  421. </style>