paymentInfo-detail.vue 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. <template>
  2. <el-dialog
  3. :visible.sync="showDialog"
  4. :title="title"
  5. :modal-append-to-body="false"
  6. style="text-align: left"
  7. @close="closeDialog"
  8. width="1000px"
  9. :close-on-click-modal="false"
  10. >
  11. <div class="user-panel" v-loading="loading">
  12. <el-form
  13. ref="form"
  14. :model="formModel"
  15. :rules="ruleValidate"
  16. :label-width="'160px'"
  17. inline
  18. >
  19. <el-row>
  20. <el-col :span="12">
  21. <el-form-item label="所属公司" prop="companyId">
  22. <el-select-tree
  23. :props="props"
  24. :options="treeData"
  25. v-model="formModel.companyId"
  26. height="200"
  27. style="width: 300px"
  28. ></el-select-tree>
  29. </el-form-item>
  30. </el-col>
  31. <el-col :span="12">
  32. <el-form-item label="账户名称" prop="name">
  33. <el-input
  34. v-model="formModel.name"
  35. placeholder="请输入账户名称"
  36. style="width: 300px"
  37. ></el-input>
  38. </el-form-item>
  39. </el-col>
  40. </el-row>
  41. <el-row>
  42. <el-col :span="12">
  43. <el-form-item label="微信商户号" prop="mchId">
  44. <el-input
  45. v-model="formModel.mchId"
  46. placeholder="请输入微信mchId"
  47. style="width: 300px"
  48. ></el-input>
  49. </el-form-item>
  50. </el-col>
  51. <el-col :span="12">
  52. <el-form-item label="app_id" prop="appId">
  53. <el-input
  54. v-model="formModel.appId"
  55. placeholder="请输入app_id"
  56. style="width: 300px"
  57. ></el-input>
  58. </el-form-item>
  59. </el-col>
  60. </el-row>
  61. <el-row>
  62. <el-col :span="24">
  63. <el-form-item label="微信支付" prop="isOpenWechat">
  64. <el-switch
  65. v-model="formModel.isOpenWechat"
  66. active-color="#13ce66"
  67. inactive-color="#ff4949"
  68. >
  69. </el-switch>
  70. </el-form-item>
  71. <el-form-item label="支付宝支付" prop="isOpenAlipay">
  72. <el-switch
  73. v-model="formModel.isOpenAlipay"
  74. active-color="#13ce66"
  75. inactive-color="#ff4949"
  76. >
  77. </el-switch>
  78. </el-form-item>
  79. </el-col>
  80. </el-row>
  81. <el-row>
  82. <el-col :span="12">
  83. <el-form-item label="微信子商户号" prop="subMchId">
  84. <el-input
  85. v-model="formModel.subMchId"
  86. placeholder="请输入微信subMchId"
  87. style="width: 300px"
  88. ></el-input>
  89. </el-form-item>
  90. </el-col>
  91. </el-row>
  92. <el-row>
  93. <el-col :span="12">
  94. <el-form-item label="微信子公众号app_id" prop="subAppId">
  95. <el-input
  96. v-model="formModel.subAppId"
  97. placeholder="请输入服务商模式下子公众号APPID"
  98. style="width: 300px"
  99. ></el-input>
  100. </el-form-item>
  101. </el-col>
  102. <el-col :span="12">
  103. <el-form-item
  104. label="微信子公众号sub_app_secret"
  105. prop="subAppSecret"
  106. >
  107. <el-input
  108. v-model="formModel.subAppSecret"
  109. placeholder="请输入sub_app_secret"
  110. style="width: 300px"
  111. ></el-input>
  112. </el-form-item>
  113. </el-col>
  114. </el-row>
  115. <el-row>
  116. <el-col :span="24">
  117. <el-form-item label="微信的回调地址" prop="wechatNotifyUrl">
  118. <el-input
  119. v-model="formModel.wechatNotifyUrl"
  120. placeholder="请输入微信的回调地址"
  121. style="width: 450px"
  122. ></el-input>
  123. </el-form-item>
  124. </el-col>
  125. </el-row>
  126. <el-row>
  127. <el-col :span="24">
  128. <el-form-item label="支付宝令牌" prop="appAuthToken">
  129. <el-input
  130. v-model="formModel.appAuthToken"
  131. placeholder="请输入支付宝appAuthToken"
  132. style="width: 450px"
  133. ></el-input>
  134. </el-form-item>
  135. </el-col>
  136. </el-row>
  137. <el-row>
  138. <el-col :span="24">
  139. <el-form-item label="支付宝的回调地址" prop="alipayNotifyUrl">
  140. <el-input
  141. v-model="formModel.alipayNotifyUrl"
  142. placeholder="请输入支付宝的回调地址"
  143. style="width: 450px"
  144. ></el-input>
  145. </el-form-item>
  146. </el-col>
  147. </el-row>
  148. </el-form>
  149. </div>
  150. <span slot="footer" class="dialog-footer">
  151. <el-button @click="closeDialog">取 消</el-button>
  152. <el-button type="primary" @click="handleSubmit" :loading="submitting"
  153. >确 定</el-button
  154. >
  155. </span>
  156. </el-dialog>
  157. </template>
  158. <script>
  159. import Constant from "@/constant";
  160. import paymentInfoApi from "@/api/base/paymentInfo";
  161. import companyInfoApi from "@/api/bus/companyInfo";
  162. import pageUtil from "@/utils/page";
  163. import SelectTree from "@/components/SelectTree";
  164. import NProgress from "nprogress"; // progress bar
  165. import "nprogress/nprogress.css"; // progress bar style
  166. export default {
  167. props: ["businessKey", "title"],
  168. data() {
  169. return {
  170. ruleValidate: {
  171. companyId: [
  172. { required: true, message: "物业公司不能为空", trigger: "change" },
  173. ],
  174. name: [
  175. { required: true, message: "账户名称不能为空", trigger: "blur" },
  176. ],
  177. cycle: [
  178. { required: true, message: "结算周期不能为空", trigger: "blur" },
  179. ],
  180. },
  181. formModel: {
  182. companyId: "",
  183. name: "",
  184. mchId: "",
  185. subMchId: "",
  186. appAuthToken: "",
  187. financePersonId: "",
  188. financeUserId: "",
  189. },
  190. treeData: [],
  191. personList: [],
  192. userList: [],
  193. companyList: [],
  194. showDialog: true,
  195. loading: false,
  196. submitting: false,
  197. props: {
  198. // 配置项(必选)
  199. value: "id",
  200. label: "name",
  201. children: "children",
  202. },
  203. };
  204. },
  205. created() {
  206. this.loadTree();
  207. },
  208. methods: {
  209. closeDialog() {
  210. this.$emit("close", false);
  211. },
  212. handleSubmit() {
  213. var self = this;
  214. this.$refs["form"].validate((valid) => {
  215. if (valid) {
  216. (function () {
  217. var id = self.formModel.id;
  218. if (id == null || id.length == 0) {
  219. return paymentInfoApi.add(self.formModel);
  220. } else {
  221. return paymentInfoApi.update(self.formModel);
  222. }
  223. })().then(function (response) {
  224. var jsonData = response.data;
  225. if (jsonData.result) {
  226. self.$message({
  227. message: "保存成功!",
  228. type: "success",
  229. });
  230. self.$emit("close", true);
  231. } else {
  232. self.$message({
  233. message: jsonData.message + "",
  234. type: "warning",
  235. });
  236. self.$emit("close", false);
  237. }
  238. });
  239. }
  240. });
  241. },
  242. loadTree() {
  243. companyInfoApi.treeList().then((resp) => {
  244. var jsonData = resp.data;
  245. if (jsonData.result) {
  246. this.treeData = jsonData.data;
  247. } else {
  248. this.$message.error(jsonData.message + "");
  249. }
  250. });
  251. },
  252. },
  253. mounted: function () {
  254. var self = this;
  255. companyInfoApi.treeList().then((resp) => {
  256. var jsonData = resp.data;
  257. this.companyList = jsonData.data;
  258. });
  259. (function () {
  260. if (self.businessKey.length == 0) {
  261. return paymentInfoApi.create();
  262. } else {
  263. return paymentInfoApi.edit(self.businessKey);
  264. }
  265. })()
  266. .then((response) => {
  267. var jsonData = response.data;
  268. self.loading = false;
  269. if (jsonData.result) {
  270. self.formModel = jsonData.data;
  271. } else {
  272. self.$message.error(jsonData.message + "");
  273. }
  274. })
  275. .catch((error) => {
  276. self.$message.error(error + "");
  277. });
  278. },
  279. components: {
  280. "el-select-tree": SelectTree,
  281. },
  282. };
  283. </script>
  284. <style scoped>
  285. .user-panel {
  286. margin: 10px auto;
  287. }
  288. </style>