twoTemp.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374
  1. <template>
  2. <div class="m-container">
  3. <div class="m-core">
  4. <div @click="chargeOperation('create')" v-permission="'sysConfig/update'" class="newBand">添加</div>
  5. <div @click="sporadicStatus = true" v-permission="'sysConfig/update'" class="newBand">零星收费设置</div>
  6. <!-- 列表 -->
  7. <div class="tableWrap">
  8. <el-table :data="tableList" :header-cell-style="{background:'#EDEEF0',color:'#444'}">
  9. <el-table-column align="center" prop="organName" label="分部"></el-table-column>
  10. <el-table-column align="center" prop="money" label="金额(元)"></el-table-column>
  11. <el-table-column align="center" width="250px" label="操作">
  12. <template slot-scope="scope">
  13. <el-button v-if="permission('sysConfig/update')" @click="chargeOperation('update', scope.row)" type="text">修改</el-button>
  14. <el-button v-if="permission('sysConfig/update')" @click="chargeDel(scope.row)" type="text">删除</el-button>
  15. </template>
  16. </el-table-column>
  17. </el-table>
  18. <!-- <pagination :total="pageInfo.total"
  19. :page.sync="pageInfo.page"
  20. :limit.sync="pageInfo.limit"
  21. :page-sizes="pageInfo.page_size"
  22. @pagination="getList" />-->
  23. </div>
  24. </div>
  25. <el-dialog
  26. :title="formTitle[formActionTitle]"
  27. :visible.sync="chargeStatus"
  28. @close="onFormClose('ruleForm')"
  29. width="500px"
  30. >
  31. <el-form :model="form" :rules="rules" ref="ruleForm">
  32. <el-form-item label="所属分部" prop="organId" :label-width="formLabelWidth">
  33. <el-select v-model.trim="form.organId">
  34. <el-option
  35. v-for="item in branchList"
  36. :key="item.value"
  37. :label="item.label"
  38. :value="item.value"
  39. :disabled="item.disabled"
  40. ></el-option>
  41. </el-select>
  42. </el-form-item>
  43. <el-form-item label="金额(元)" prop="money" :label-width="formLabelWidth">
  44. <el-input-number
  45. style="width: 100%;"
  46. v-model="form.money"
  47. :precision="0"
  48. controls-position="right"
  49. :min="1"
  50. :max="999999999"
  51. ></el-input-number>
  52. </el-form-item>
  53. </el-form>
  54. <span slot="footer" class="dialog-footer">
  55. <el-button @click="chargeStatus = false">取 消</el-button>
  56. <el-button @click="onChargeSubmit('ruleForm')" type="primary">确 定</el-button>
  57. </span>
  58. </el-dialog>
  59. <el-dialog title="零星收费设置" :visible.sync="sporadicStatus" width="500px">
  60. <el-form :model="formSporadic" :rules="rulesSporadic" ref="ruleFormSporadic">
  61. <el-form-item label="所属分部" prop="organId" :label-width="formLabelWidth2">
  62. <el-select v-model.trim="formSporadic.organId">
  63. <el-option
  64. v-for="item in branchList2"
  65. :key="item.value"
  66. :label="item.label"
  67. :value="item.value.toString()"
  68. :disabled="item.disabled"
  69. ></el-option>
  70. </el-select>
  71. </el-form-item>
  72. <el-form-item label="最大收款(元)" prop="maxReceipt" :label-width="formLabelWidth2">
  73. <el-input-number
  74. style="width: 100%;"
  75. v-model="formSporadic.maxReceipt"
  76. :precision="0"
  77. controls-position="right"
  78. :min="1"
  79. :max="999999999"
  80. ></el-input-number>
  81. </el-form-item>
  82. <el-form-item label="是否承担手续费" prop="feeFlag" :label-width="formLabelWidth2">
  83. <el-select v-model.trim="formSporadic.feeFlag" placeholder="请选择是否承担手续费">
  84. <el-option value="Y" label="是"></el-option>
  85. <el-option value="N" label="否"></el-option>
  86. </el-select>
  87. </el-form-item>
  88. </el-form>
  89. <span slot="footer" class="dialog-footer">
  90. <el-button @click="sporadicStatus = false">取 消</el-button>
  91. <el-button @click="onSporadicSubmit('ruleFormSporadic')" type="primary">确 定</el-button>
  92. </span>
  93. </el-dialog>
  94. </div>
  95. </template>
  96. <script>
  97. import pagination from "@/components/Pagination/index";
  98. import { branchQueryPage } from "@/api/specialSetting";
  99. import { sysConfigList, sysConfigUpdate } from "@/api/generalSettings";
  100. import store from "@/store";
  101. import { permission } from "@/utils/directivePage";
  102. export default {
  103. name: "chargeProfitManager",
  104. components: { pagination },
  105. data() {
  106. return {
  107. tableList: [],
  108. pageInfo: {
  109. // 分页规则
  110. limit: 10, // 限制显示条数
  111. page: 1, // 当前页
  112. total: 0, // 总条数
  113. page_size: [10, 20, 40, 50] // 选择限制显示条数
  114. },
  115. chargeStatus: false,
  116. roleList: [], // 角色列表
  117. branchList: [], // 分部列表
  118. branchList2: [], // 分部列表
  119. formActionTitle: "create",
  120. formLabelWidth: "100px",
  121. formTitle: {
  122. create: "添加收费",
  123. update: "修改收费"
  124. },
  125. form: {
  126. organName: null,
  127. organId: null,
  128. money: null
  129. },
  130. rules: {
  131. organId: [
  132. { required: true, message: "请选择所属分部", trigger: "change" }
  133. ],
  134. money: [{ required: true, message: "请输入金额", trigger: "blur" }]
  135. },
  136. selectId: null, // 编号
  137. selectItem: {}, // 选中对象
  138. sporadicStatus: false, // {"organId":"2","maxReceipt":"75000","feeFlag":"Y"}
  139. formLabelWidth2: "120px",
  140. sporadicId: null, // 零星收费编号
  141. formSporadic: {
  142. organId: null,
  143. maxReceipt: 0,
  144. feeFlag: null
  145. },
  146. rulesSporadic: {
  147. organId: [
  148. { required: true, message: "请选择所属分部", trigger: "change" }
  149. ],
  150. maxReceipt: [
  151. { required: true, message: "请输入最大收款", trigger: "blur" }
  152. ],
  153. feeFlag: [
  154. { required: true, message: "请选择是否承担手续费", trigger: "change" }
  155. ]
  156. }
  157. };
  158. },
  159. mounted() {
  160. this.getList();
  161. },
  162. methods: {
  163. permission (str) {
  164. return permission(str)
  165. },
  166. onSporadicSubmit(formName) {
  167. this.$refs[formName].validate(valid => {
  168. if (valid) {
  169. let params = {
  170. id: this.sporadicId,
  171. paranValue: JSON.stringify(this.formSporadic),
  172. paramName: "sporadic_channel"
  173. };
  174. sysConfigUpdate(params).then(res => {
  175. if (res.code == 200) {
  176. this.messageTips("保存", res);
  177. }
  178. });
  179. } else {
  180. return;
  181. }
  182. });
  183. },
  184. onChargeSubmit(formName) {
  185. this.$refs[formName].validate(valid => {
  186. if (valid) {
  187. let value = {};
  188. let str = "更新";
  189. let form = this.form;
  190. const money = form.money;
  191. const organId = form.organId;
  192. let status = false;
  193. if (this.formActionTitle == "create") {
  194. value[money] = organId;
  195. str = "添加";
  196. this.tableList.forEach(item => {
  197. value[item.money] = item.organId;
  198. if (item.money == money) {
  199. this.$message.error("输入金额不能重复");
  200. status = true;
  201. }
  202. });
  203. } else if (this.formActionTitle == "update") {
  204. const selectItem = this.selectItem;
  205. selectItem.organId = form.organId;
  206. selectItem.money = form.money;
  207. this.tableList.forEach(item => {
  208. value[item.money] = item.organId;
  209. if (item.money == money && item.key != selectItem.key) {
  210. this.$message.error("输入金额不能重复");
  211. status = true;
  212. }
  213. });
  214. }
  215. if (status) {
  216. return;
  217. }
  218. let params = {
  219. id: this.selectId,
  220. paranValue: JSON.stringify(value),
  221. paramName: "amount_channel"
  222. };
  223. sysConfigUpdate(params).then(res => {
  224. if (res.code == 200) {
  225. this.messageTips(str, res);
  226. }
  227. });
  228. } else {
  229. return;
  230. }
  231. });
  232. },
  233. messageTips(title, res) {
  234. if (res.code == 200) {
  235. this.$message.success(title + "成功");
  236. this.chargeStatus = false;
  237. this.sporadicStatus = false;
  238. this.getList();
  239. } else {
  240. this.$message.error(res.msg);
  241. }
  242. },
  243. async getList() {
  244. await branchQueryPage({
  245. // 获取分部
  246. delFlag: 0,
  247. rows: 9999
  248. }).then(res => {
  249. this.branchList = [];
  250. this.branchList2 = [];
  251. if (res.code == 200 && res.data && res.data.rows) {
  252. res.data.rows.forEach(item => {
  253. this.branchList.push({
  254. label: item.name,
  255. value: item.id
  256. });
  257. this.branchList2.push({
  258. label: item.name,
  259. value: item.id
  260. });
  261. });
  262. }
  263. });
  264. await sysConfigList({ group: "payment_config" }).then(res => {
  265. if (res.code == 200 && res.data.length > 0) {
  266. let tempResult = [];
  267. let paranValue = {};
  268. res.data.forEach((item, index) => {
  269. if (item.paramName === "amount_channel") {
  270. paranValue = item.paranValue ? JSON.parse(item.paranValue) : {};
  271. this.selectId = item.id;
  272. }
  273. if (item.paramName === "sporadic_channel") {
  274. this.formSporadic = item.paranValue
  275. ? JSON.parse(item.paranValue)
  276. : { organId: null, maxReceipt: 0, feeFlag: null };
  277. this.sporadicId = item.id;
  278. }
  279. });
  280. this.branchList.forEach(item => {
  281. for (let key in paranValue) {
  282. if (paranValue[key] == item.value) {
  283. tempResult.push({
  284. organId: item.value,
  285. organName: item.label,
  286. money: key,
  287. key: +new Date() + item.value
  288. });
  289. }
  290. }
  291. });
  292. this.tableList = tempResult;
  293. }
  294. });
  295. },
  296. chargeOperation(type, data) {
  297. this.formActionTitle = type;
  298. this.chargeStatus = true;
  299. this.branchList.forEach(item => {
  300. this.tableList.forEach(table => {
  301. if (item.value == table.organId) {
  302. item.disabled = true;
  303. }
  304. });
  305. });
  306. // 修改的时候
  307. if (type == "update") {
  308. this.form = {
  309. organId: data.organId,
  310. organName: data.organName,
  311. money: data.money,
  312. key: data.key
  313. };
  314. this.selectItem = data;
  315. } else if (type == "create") {
  316. }
  317. },
  318. chargeDel(row) {
  319. // 删除数据
  320. this.$confirm("你确定删除?", "提示", {
  321. confirmButtonText: "确定",
  322. cancelButtonText: "取消",
  323. type: "warning"
  324. })
  325. .then(() => {
  326. let value = {};
  327. this.tableList.forEach(item => {
  328. if (row.organId != item.organId) {
  329. value[item.money] = item.organId;
  330. }
  331. });
  332. let params = {
  333. id: this.selectId,
  334. paranValue: JSON.stringify(value),
  335. paramName: "amount_channel"
  336. };
  337. sysConfigUpdate(params).then(res => {
  338. if (res.code == 200) {
  339. this.messageTips("删除", res);
  340. }
  341. });
  342. })
  343. .catch();
  344. },
  345. onFormClose(formName) {
  346. this.form = {
  347. organName: null,
  348. organId: null,
  349. money: null
  350. };
  351. // 关闭弹窗重置验证
  352. this.$refs[formName].resetFields();
  353. }
  354. }
  355. };
  356. </script>
  357. <style lang="scss" scoped>
  358. ::v-deep .el-dialog__body {
  359. padding: 0 20px;
  360. }
  361. ::v-deep .el-select,
  362. ::v-deep .el-date-editor.el-input {
  363. width: 100% !important;
  364. }
  365. ::v-deep .el-input-number.is-controls-right .el-input__inner {
  366. text-align: left;
  367. }
  368. .newBand {
  369. display: inline-block;
  370. }
  371. </style>