parkingLotSaveEdits.vue 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. <template>
  2. <div class="alert-body__main_content">
  3. <div>
  4. <el-form
  5. :model="ruleForm"
  6. :rules="rules"
  7. ref="ruleForm"
  8. label-width="130px"
  9. class="demo-ruleForm"
  10. >
  11. <el-row>
  12. <el-col :span="12">
  13. <el-form-item
  14. label="社区名称"
  15. prop="communityId"
  16. >
  17. <el-select
  18. v-model="ruleForm.communityId"
  19. placeholder="请选择社区名称"
  20. @change="communityChoice"
  21. >
  22. <el-option
  23. v-for="(item, index) in communityList"
  24. :label="item.label"
  25. :value="item.id"
  26. :key="index"
  27. ></el-option>
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item label="车库区域">
  31. <el-select
  32. v-model="ruleForm.garageAreaId"
  33. placeholder="请选择车库区域"
  34. @change="garageAreaChoice"
  35. >
  36. <el-option
  37. v-for="(item, index) in garageAreaList"
  38. :label="item.label"
  39. :value="item.id"
  40. :key="index"
  41. ></el-option>
  42. </el-select>
  43. </el-form-item>
  44. <el-form-item
  45. label="前缀名称"
  46. v-if="codingStatus"
  47. >
  48. <el-input
  49. v-model="ruleForm.prefix"
  50. placeholder="如A-,可以不填写"
  51. ></el-input>
  52. </el-form-item>
  53. <el-form-item
  54. label="起始编号"
  55. v-if="codingStatus"
  56. prop="parkingBeginNumber"
  57. >
  58. <el-input
  59. v-model.trim="ruleForm.parkingBeginNumber"
  60. oninput="value=value.replace(/[^0-9.]/g,'')"
  61. ></el-input>
  62. </el-form-item>
  63. <el-form-item
  64. label="车位编号"
  65. v-if="!codingStatus"
  66. prop="parkingNumber"
  67. >
  68. <el-input
  69. v-model.trim="ruleForm.parkingNumber"
  70. oninput="value=value.replace(/[^0-9.]/g,'')"
  71. ></el-input>
  72. </el-form-item>
  73. </el-col>
  74. <el-col :span="12">
  75. <el-form-item
  76. label="车库名称"
  77. prop="garageId"
  78. >
  79. <el-select
  80. v-model="ruleForm.garageId"
  81. placeholder="请选择车库名称"
  82. @change="garageChoice"
  83. >
  84. <el-option
  85. v-for="(item, index) in garageList"
  86. :label="item.label"
  87. :value="item.id"
  88. :key="index"
  89. ></el-option>
  90. </el-select>
  91. </el-form-item>
  92. <el-form-item
  93. label="车位类别"
  94. prop="parkingType"
  95. >
  96. <el-radio
  97. v-model="ruleForm.parkingType"
  98. :label="1"
  99. >公共车位</el-radio>
  100. <el-radio
  101. v-model="ruleForm.parkingType"
  102. :label="2"
  103. >私人车位</el-radio>
  104. </el-form-item>
  105. <el-form-item label="车位面积">
  106. <el-input
  107. v-model="ruleForm.parkingArea"
  108. placeholder="请输入车位面积"
  109. ></el-input>
  110. </el-form-item>
  111. <el-form-item
  112. label="结束编号"
  113. prop="parkingEndNumber"
  114. v-if="codingStatus"
  115. >
  116. <el-input v-model="ruleForm.parkingEndNumber"></el-input>
  117. </el-form-item>
  118. </el-col>
  119. </el-row>
  120. <el-col :span="12">
  121. <el-form-item label="备注信息">
  122. <el-input
  123. type="textarea"
  124. :rows="3"
  125. v-model="ruleForm.remarks"
  126. maxlength="300"
  127. show-word-limit
  128. placeholder="请输入备注信息"
  129. >
  130. </el-input>
  131. </el-form-item>
  132. </el-col>
  133. </el-form>
  134. </div>
  135. </div>
  136. </template>
  137. <script>
  138. export default {
  139. props: ['params'],
  140. data () {
  141. var inputNumber = (rule, value, callback) => {
  142. if (!Number.isInteger(value)) {
  143. callback(new Error('请输入数字'));
  144. } else {
  145. callback();
  146. }
  147. };
  148. return {
  149. communityList: [], //社区名称下拉列表
  150. garageList: [], //车库名称下拉列表
  151. garageAreaList: [], //车库区域下拉列表
  152. codingStatus: true, //编码状态
  153. ruleForm: {
  154. communityId: '', //社区id
  155. // garageAreaId: '', //车库区域id
  156. areaCode: '',
  157. prefix: '', //前缀名称
  158. parkingBeginNumber: '', //车位起始编号
  159. parkingEndNumber: '', //车位结束编号
  160. garageId: '', //车库名称id
  161. parkingType: 1, //车位类别
  162. parkingArea: '', //车位面积
  163. remarks: '' //备注
  164. },
  165. rules: {
  166. communityId: [
  167. { required: true, message: '请输入社区名称', trigger: 'change' }
  168. // { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
  169. ],
  170. garageId: [{ required: true, message: '请选择车库名称', trigger: 'change' }],
  171. parkingType: [{ required: true, message: '请选择车位类别', trigger: 'change' }],
  172. parkingBeginNumber: [
  173. { required: true, message: '请填写起始编码', trigger: 'blur' }
  174. // { validator: inputNumber, trigger: 'blur' }
  175. ],
  176. parkingEndNumber: [
  177. { required: true, message: '请填写结束编码', trigger: 'blur' }
  178. // { validator: inputNumber, trigger: 'blur' }
  179. ],
  180. parkingNumber: [{ required: true, message: '请填写车位编号', trigger: 'change' }]
  181. },
  182. radio: '1'
  183. };
  184. },
  185. components: {},
  186. computed: {},
  187. methods: {
  188. //保存
  189. submit () {
  190. this.$refs['ruleForm'].validate((valid) => {
  191. if (valid) {
  192. var loading = this.$loading();
  193. let url = '/czc-community/assets/garage/parking/add';
  194. if (this.params.todo == 'edit') {
  195. url = '/czc-community/assets/garage/parking/update';
  196. }
  197. this.$http
  198. .post(url, this.ruleForm)
  199. .then(({ status, msg }) => {
  200. if (status == 0) {
  201. this.$message.success(msg);
  202. this.params.callback();
  203. this.$emit('close');
  204. } else {
  205. this.$message.error(msg);
  206. }
  207. loading.close();
  208. })
  209. .catch(() => {
  210. loading.close();
  211. });
  212. } else {
  213. console.log('error submit!!');
  214. return false;
  215. }
  216. });
  217. },
  218. //获取社区名称下拉列表
  219. communityNameList () {
  220. this.communityList = [];
  221. let onOption = '';
  222. this.$http.get('/czc-community/assets/community/list', {}).then((res) => {
  223. res.data.map((res) => {
  224. onOption = {
  225. label: res.communityName,
  226. id: res.id
  227. };
  228. this.communityList.push(onOption);
  229. });
  230. });
  231. },
  232. communityChoice (e) {
  233. console.log(e);
  234. this.ruleForm.communityId = e;
  235. this.garageNameList();
  236. },
  237. //获取车库名称下拉列表
  238. garageNameList () {
  239. this.garageList = [];
  240. let onOption = '';
  241. this.$http.post('/czc-community/assets/garage/list', { communityId: this.ruleForm.communityId }).then((res) => {
  242. res.data.map((res) => {
  243. onOption = {
  244. label: res.garageName,
  245. id: res.parkId
  246. };
  247. this.garageList.push(onOption);
  248. });
  249. });
  250. },
  251. garageChoice (e) {
  252. this.ruleForm.garageId = e;
  253. this.garageAreaListQuery();
  254. },
  255. garageAreaListQuery () {
  256. this.garageAreaList = [];
  257. let onOption = '';
  258. console.log(this.ruleForm.garageId);
  259. this.$http.post('/czc-community-web/parkingCar/findAreaInfo', { parkId: this.ruleForm.garageId }).then((res) => {
  260. res.data.map((res) => {
  261. onOption = {
  262. label: res.areaName,
  263. id: res.areaCode
  264. };
  265. this.garageAreaList.push(onOption);
  266. });
  267. });
  268. },
  269. garageAreaChoice (e) {
  270. this.ruleForm.areaCode = e;
  271. }
  272. },
  273. created () {
  274. //获取社区名称下拉列表
  275. this.communityNameList();
  276. if (this.params.todo == 'edit') {
  277. this.garageNameList();
  278. this.codingStatus = false;
  279. this.ruleForm = this.params.data;
  280. this.garageAreaListQuery();
  281. }
  282. }
  283. };
  284. </script>
  285. <style lang='scss'>
  286. .alert-body__main_content {
  287. .blockName {
  288. padding: 20px;
  289. i {
  290. color: red;
  291. }
  292. }
  293. }
  294. </style>