CesOrderLeaseGoodsForm.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. <template>
  2. <a-spin :spinning="confirmLoading">
  3. <j-form-container :disabled="formDisabled">
  4. <a-form-model
  5. ref="form"
  6. :model="model"
  7. :rules="validatorRules"
  8. slot="detail"
  9. >
  10. <a-row>
  11. <a-col :span="24">
  12. <a-form-model-item
  13. label="房号"
  14. :labelCol="labelCol"
  15. :wrapperCol="wrapperCol"
  16. prop="roomId"
  17. >
  18. <a-select v-model="model.roomId" placeholder="请选择房号">
  19. <a-select-option
  20. :value="item.id"
  21. v-for="(item, index) in roomsList"
  22. :key="item.id"
  23. >
  24. {{ item.name }}
  25. </a-select-option>
  26. </a-select>
  27. </a-form-model-item>
  28. </a-col>
  29. <a-col :span="24">
  30. <a-form-model-item
  31. label="姓名"
  32. :labelCol="labelCol"
  33. :wrapperCol="wrapperCol"
  34. prop="userName"
  35. >
  36. <a-input
  37. v-model="model.userName"
  38. placeholder="请输入姓名"
  39. ></a-input>
  40. </a-form-model-item>
  41. </a-col>
  42. <a-col :span="24">
  43. <a-form-model-item
  44. label="物品"
  45. :labelCol="labelCol"
  46. :wrapperCol="wrapperCol"
  47. prop="goodsId"
  48. >
  49. <a-select v-model="model.goodsId" placeholder="请选择民族">
  50. <a-select-option
  51. :value="item.id"
  52. v-for="(item, index) in busDictItemList"
  53. :key="item.id"
  54. >
  55. {{ item.itemText }}
  56. </a-select-option>
  57. </a-select>
  58. </a-form-model-item>
  59. </a-col>
  60. <a-col :span="24">
  61. <a-form-model-item
  62. label="数量"
  63. :labelCol="labelCol"
  64. :wrapperCol="wrapperCol"
  65. prop="num"
  66. >
  67. <a-input-number
  68. v-model="model.num"
  69. placeholder="请输入数量"
  70. style="width: 100%"
  71. />
  72. </a-form-model-item>
  73. </a-col>
  74. <a-col :span="24">
  75. <a-form-model-item
  76. label="押金"
  77. :labelCol="labelCol"
  78. :wrapperCol="wrapperCol"
  79. prop="deposit"
  80. >
  81. <a-input-number
  82. v-model="model.deposit"
  83. placeholder="请输入押金"
  84. style="width: 100%"
  85. />
  86. </a-form-model-item>
  87. </a-col>
  88. <a-col :span="24">
  89. <a-form-model-item
  90. label="备注"
  91. :labelCol="labelCol"
  92. :wrapperCol="wrapperCol"
  93. prop="remark"
  94. >
  95. <a-textarea
  96. v-model="model.remark"
  97. rows="4"
  98. placeholder="请输入备注"
  99. />
  100. </a-form-model-item>
  101. </a-col>
  102. </a-row>
  103. </a-form-model>
  104. </j-form-container>
  105. </a-spin>
  106. </template>
  107. <script>
  108. import { httpAction, getAction } from "@/api/manage";
  109. import { validateDuplicateValue } from "@/utils/util";
  110. export default {
  111. name: "CesOrderLeaseGoodsForm",
  112. components: {},
  113. props: {
  114. //表单禁用
  115. disabled: {
  116. type: Boolean,
  117. default: false,
  118. required: false,
  119. },
  120. },
  121. data() {
  122. return {
  123. model: {},
  124. labelCol: {
  125. xs: { span: 24 },
  126. sm: { span: 5 },
  127. },
  128. wrapperCol: {
  129. xs: { span: 24 },
  130. sm: { span: 16 },
  131. },
  132. confirmLoading: false,
  133. validatorRules: {
  134. tenantId: [{ required: true, message: "请输入关联租户!" }],
  135. hotelId: [{ required: true, message: "请输入关联酒店!" }],
  136. goodsId: [{ required: true, message: "请输入物品平台字典项目ID!" }],
  137. num: [{ required: true, message: "请输入数量!" }],
  138. deposit: [{ required: true, message: "请输入押金!" }],
  139. createDate: [{ required: true, message: "请输入创建时间!" }],
  140. orderNo: [{ required: true, message: "请输入单据号!" }],
  141. },
  142. url: {
  143. add: "/order/cesOrderLeaseGoods/add",
  144. edit: "/order/cesOrderLeaseGoods/edit",
  145. queryById: "/order/cesOrderLeaseGoods/queryById",
  146. },
  147. busDictItemList: [],
  148. roomsList: [],
  149. };
  150. },
  151. computed: {
  152. formDisabled() {
  153. return this.disabled;
  154. },
  155. },
  156. created() {
  157. var _info = JSON.parse(localStorage.getItem("storeInfo"));
  158. if (_info) {
  159. this.model.hotelId = _info.id;
  160. }
  161. //备份model原始值
  162. this.modelDefault = JSON.parse(JSON.stringify(this.model));
  163. getAction("/business/busDictItem/list", {
  164. dictId: "1639538235288539138",
  165. }).then((res) => {
  166. if (res.success) {
  167. this.busDictItemList = res.result.records;
  168. }
  169. });
  170. getAction("/rooms/cesRooms/list", {
  171. pageNo: 1,
  172. pageSize: 100,
  173. }).then((res) => {
  174. if (res.success) {
  175. this.roomsList = res.result.records;
  176. }
  177. });
  178. },
  179. methods: {
  180. add() {
  181. this.edit(this.modelDefault);
  182. },
  183. edit(record) {
  184. this.model = Object.assign({}, record);
  185. this.visible = true;
  186. },
  187. submitForm() {
  188. const that = this;
  189. // 触发表单验证
  190. this.$refs.form.validate((valid) => {
  191. if (valid) {
  192. that.confirmLoading = true;
  193. let httpurl = "";
  194. let method = "";
  195. if (!this.model.id) {
  196. httpurl += this.url.add;
  197. method = "post";
  198. } else {
  199. httpurl += this.url.edit;
  200. method = "put";
  201. }
  202. httpAction(httpurl, this.model, method)
  203. .then((res) => {
  204. if (res.success) {
  205. that.$message.success(res.message);
  206. that.$emit("ok");
  207. } else {
  208. that.$message.warning(res.message);
  209. }
  210. })
  211. .finally(() => {
  212. that.confirmLoading = false;
  213. });
  214. }
  215. });
  216. },
  217. },
  218. };
  219. </script>