parkingMerchant-detail.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. <style scoped>
  2. .user-panel {
  3. margin: 10px auto;
  4. }
  5. </style>
  6. <template>
  7. <el-dialog
  8. :visible.sync="showDialog"
  9. :title="title"
  10. :modal-append-to-body="false"
  11. style="text-align: left"
  12. @close="closeDialog"
  13. :close-on-click-modal="false"
  14. >
  15. <div class="user-panel" v-loading="loading">
  16. <el-form
  17. ref="form"
  18. :model="formModel"
  19. :rules="ruleValidate"
  20. :label-width="'120px'"
  21. >
  22. <el-form-item label="商户名称" prop="merchantName">
  23. <el-input
  24. v-model="formModel.merchantName"
  25. placeholder="请输入商户名称"
  26. style="width: 300px"
  27. ></el-input>
  28. </el-form-item>
  29. <el-form-item label="所属物业公司" prop="companyId">
  30. <el-select-tree
  31. :props="props"
  32. :options="companyResult"
  33. v-model="formModel.companyId"
  34. height="200"
  35. style="width: 330px"
  36. size="large"
  37. ></el-select-tree>
  38. </el-form-item>
  39. <el-form-item label="商户账号" prop="userName">
  40. <el-input
  41. :disabled="formModel.id!=null"
  42. v-model="formModel.userName"
  43. placeholder="请输入商户账号"
  44. style="width: 300px"
  45. ></el-input>
  46. </el-form-item>
  47. <el-form-item label="商户密码" prop="password">
  48. <el-input
  49. v-model="formModel.password"
  50. placeholder="请输入商户密码"
  51. style="width: 300px"
  52. ></el-input>
  53. </el-form-item>
  54. <el-row >
  55. <el-col :span="8">
  56. <el-form-item label="停车抵扣券" prop="enableCoupon">
  57. <el-switch
  58. v-model="formModel.enableCoupon"
  59. active-color="#13ce66"
  60. inactive-color="#ff4949"
  61. ></el-switch>
  62. </el-form-item>
  63. </el-col>
  64. <el-col :span="16">
  65. <el-form-item label="抵扣券金额" prop="reduce">
  66. <el-input-number
  67. :precision="0"
  68. v-model="formModel.reduce"
  69. placeholder="请输入金额"
  70. style="width: 180px"
  71. :min="1"
  72. ></el-input-number>
  73. </el-form-item>
  74. </el-col>
  75. </el-row>
  76. <el-row >
  77. <el-col :span="8">
  78. <el-form-item label="车辆白名单" prop="enableMember">
  79. <el-switch
  80. v-model="formModel.enableMember"
  81. active-color="#13ce66"
  82. inactive-color="#ff4949"
  83. ></el-switch>
  84. </el-form-item>
  85. </el-col>
  86. <el-col :span="16">
  87. <el-form-item label="离场时间" prop="memberLeaveTime" >
  88. <el-time-picker
  89. v-model="formModel.memberLeaveTime"
  90. format="HH:mm"
  91. :clearable="false"
  92. value-format="HH:mm"
  93. style="width: 180px"
  94. placeholder="请选择离场时间">
  95. </el-time-picker>
  96. </el-form-item>
  97. </el-col>
  98. </el-row>
  99. </el-form>
  100. </div>
  101. <span slot="footer" class="dialog-footer">
  102. <el-button @click="closeDialog">取 消</el-button>
  103. <el-button type="primary" @click="handleSubmit" :loading="submitting"
  104. >确 定</el-button
  105. >
  106. </span>
  107. </el-dialog>
  108. </template>
  109. <script>
  110. import Constant from "@/constant";
  111. import parkingMerchantApi from "@/api/base/parkingMerchant";
  112. import dataDictionaryApi from "@/api/sys/dataDictionary";
  113. import companyInfoApi from "@/api/base/companyInfo";
  114. import SelectTree from "@/components/SelectTree";
  115. export default {
  116. components: {
  117. "el-select-tree": SelectTree,
  118. },
  119. props: ["businessKey", "title"],
  120. data() {
  121. return {
  122. myMemberLeaveTime:[{required:true,message:"请选择离场时间", trigger: "blur"}],
  123. formModel: {},
  124. ruleValidate: {
  125. merchantName: [
  126. { required: true, message: "商户名称不能为空", trigger: "blur" },
  127. ],
  128. companyId: [
  129. { required: true, message: "所属物业公司不能为空", trigger: "blur" },
  130. ],
  131. userName: [
  132. { required: true, message: "商户账号不能为空", trigger: "blur" }
  133. ],
  134. password: [
  135. { required: true, message: "商户密码不能为空", trigger: "blur" }
  136. ],
  137. },
  138. showDialog: true,
  139. loading: false,
  140. submitting: false,
  141. typeResult: [],
  142. companyResult: [],
  143. props: {
  144. // 配置项(必选)
  145. value: "id",
  146. label: "name",
  147. children: "children",
  148. },
  149. };
  150. },
  151. created() {
  152. var self = this;
  153. companyInfoApi.treeList().then(function (response) {
  154. var jsonData = response.data;
  155. if (jsonData.result) {
  156. if (jsonData.data != null && jsonData.data != "") {
  157. self.companyResult = jsonData.data;
  158. }
  159. }
  160. });
  161. if(false){
  162. dataDictionaryApi
  163. .findByCatalogName({
  164. catalogName: "优惠券类型",
  165. })
  166. .then((response) => {
  167. var jsonData = response.data;
  168. this.typeResult = jsonData.data;
  169. });
  170. }
  171. },
  172. methods: {
  173. closeDialog() {
  174. this.$emit("close", false);
  175. },
  176. handleSubmit() {
  177. var self = this;
  178. this.$refs["form"].validate((valid) => {
  179. if (valid) {
  180. (function () {
  181. var id = self.formModel.id;
  182. if (id == null || id.length == 0) {
  183. return parkingMerchantApi.add(self.formModel);
  184. } else {
  185. return parkingMerchantApi.update(self.formModel);
  186. }
  187. })().then(function (response) {
  188. var jsonData = response.data;
  189. if (jsonData.result) {
  190. self.$message({
  191. message: "保存成功!",
  192. type: "success",
  193. });
  194. self.$emit("close", true);
  195. } else {
  196. self.$message({
  197. message: jsonData.message + "",
  198. type: "warning",
  199. });
  200. //self.$emit("close", false);
  201. }
  202. });
  203. }
  204. });
  205. },
  206. },
  207. mounted: function () {
  208. var self = this;
  209. (function () {
  210. if (self.businessKey.length == 0) {
  211. return parkingMerchantApi.create();
  212. } else {
  213. return parkingMerchantApi.edit(self.businessKey);
  214. }
  215. })()
  216. .then((response) => {
  217. var jsonData = response.data;
  218. self.loading = false;
  219. if (jsonData.result) {
  220. self.formModel = jsonData.data;
  221. if(!self.formModel.memberLeaveTime){
  222. self.formModel.memberLeaveTime="14:00"
  223. }
  224. } else {
  225. self.$message.error(jsonData.message + "");
  226. }
  227. })
  228. .catch((error) => {
  229. self.$message.error(error + "");
  230. });
  231. },
  232. };
  233. </script>