auditDialog.vue 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. <template>
  2. <el-dialog title="委托详情" v-model="showDialog" width="1200px" @close="closeDialog">
  3. <el-row :gutter="20">
  4. <el-col :span="8">
  5. <div style="border: #d9d9d9 1px solid">
  6. <div style="padding:10px;background-color: #d9d9d9">用户提交</div>
  7. <el-descriptions
  8. class="margin-top"
  9. :column="1"
  10. border
  11. >
  12. <el-descriptions-item width="250" label="区县">
  13. {{ data.districtName }}
  14. </el-descriptions-item>
  15. <el-descriptions-item width="250" label="小区">
  16. {{ data.communityName }}
  17. </el-descriptions-item>
  18. <el-descriptions-item width="250" label="楼号">
  19. {{ data.buildingNumber }}
  20. </el-descriptions-item>
  21. <el-descriptions-item width="250" label="车位编号">
  22. <el-tag>{{ data.parkingNumber }}</el-tag>
  23. </el-descriptions-item>
  24. <el-descriptions-item width="250" label="车位类型">
  25. {{ data.parkingType == 1 ? "车库" : "车位" }}
  26. </el-descriptions-item>
  27. <el-descriptions-item label="面积">
  28. {{ data.area }}
  29. </el-descriptions-item>
  30. <el-descriptions-item label="售卖方式">
  31. <el-tag style="margin: 0px 3px" v-if="data.entrustType==0">租售</el-tag>
  32. <el-tag style="margin: 0px 3px" v-if="data.entrustType==1">出租</el-tag>
  33. <el-tag style="margin: 0px 3px" v-if="data.entrustType==2">出售</el-tag>
  34. </el-descriptions-item>
  35. <el-descriptions-item label="售价">
  36. {{ data.salePrice }}
  37. </el-descriptions-item>
  38. <el-descriptions-item label="租金">
  39. {{ data.hirePrice }}
  40. </el-descriptions-item>
  41. <el-descriptions-item label="委托人联系电话">
  42. {{ data.contactNumber }}
  43. </el-descriptions-item>
  44. <el-descriptions-item label="证明文件">
  45. <el-image v-if="data.evidenceFile.length>0"
  46. style="width: 100px; height: 100px"
  47. :src="data.evidenceFile[0].url"
  48. :zoom-rate="1"
  49. :preview-src-list="data.evidenceFile.map(item=> item.url)"
  50. fit="cover"
  51. />
  52. </el-descriptions-item>
  53. </el-descriptions>
  54. </div>
  55. </el-col>
  56. <el-col :span="16">
  57. <div style="border: #d9d9d9 1px solid">
  58. <div style="padding:10px;background-color: #d9d9d9">审核登记</div>
  59. <el-form ref="formRef" :model="formData" label-position="right" label-width="100px"
  60. :rules="formRules">
  61. <el-tabs style="margin: 0 20px" v-model="activeTab">
  62. <el-tab-pane name="first" label="车位信息">
  63. <el-row>
  64. <el-col :span="24">
  65. <el-form-item label="区县" prop="districtId">
  66. <el-select v-model="formData.districtId" style="width: 50%" @change="getCommunity">
  67. <el-option v-for="item in districtList" :label="item.districtName" :value="item.id"></el-option>
  68. </el-select>
  69. </el-form-item>
  70. </el-col>
  71. <el-col :span="24">
  72. <el-form-item label="小区" prop="communityName">
  73. <el-select v-if="!communityNameCustom" v-model="formData.communityName" style="width: 50%">
  74. <el-option v-for="item in communityList" :label="item.communityName"
  75. :value="item.communityName"></el-option>
  76. </el-select>
  77. <el-input v-else v-model="formData.communityName" style="width: 50%"></el-input>
  78. <el-checkbox v-model="communityNameCustom" style="margin-left: 20px">自定义</el-checkbox>
  79. </el-form-item>
  80. </el-col>
  81. <el-col :span="24">
  82. <el-form-item label="楼号" prop="buildingNumber">
  83. <el-select v-if="!buildingNumberCustom&&!communityNameCustom" v-model="formData.buildingNumber"
  84. @visible-change="getBuilding" style="width: 50%">
  85. <el-option v-for="item in buildingList" :label="item.buildingNumber"
  86. :value="item.buildingNumber"></el-option>
  87. </el-select>
  88. <el-input v-else v-model="formData.buildingNumber" style="width: 50%"></el-input>
  89. <el-checkbox v-model="buildingNumberCustom" style="margin-left: 20px">自定义</el-checkbox>
  90. </el-form-item>
  91. </el-col>
  92. <el-col :span="24">
  93. <el-form-item label="车位编号" prop="parkingNumber">
  94. <el-input v-model="formData.parkingNumber" style="width: 50%"></el-input>
  95. </el-form-item>
  96. </el-col>
  97. <el-col :span="24">
  98. <el-form-item prop="pictureUrl" label="主展示图">
  99. <pictureUpload v-model="formData.pictureUrl"></pictureUpload>
  100. </el-form-item>
  101. </el-col>
  102. <el-col :span="24">
  103. <el-form-item prop="parkingUrl" label="车位照片">
  104. <pictureUpload2 :limit="10" v-model="formData.parkingUrl"></pictureUpload2>
  105. </el-form-item>
  106. </el-col>
  107. </el-row>
  108. </el-tab-pane>
  109. <el-tab-pane name="second" label="车位简介">
  110. <el-form-item label="" prop="parkingShow" label-width="0">
  111. <editor v-model="formData.parkingShow"></editor>
  112. </el-form-item>
  113. </el-tab-pane>
  114. </el-tabs>
  115. </el-form>
  116. </div>
  117. </el-col>
  118. </el-row>
  119. <template #footer>
  120. <el-button type="success" @click="submit(true)">审核通过</el-button>
  121. <el-button type="danger" @click="submit(false)">拒绝</el-button>
  122. </template>
  123. </el-dialog>
  124. </template>
  125. <script setup>
  126. import { reactive, ref } from "vue";
  127. import request from "/@/api/request";
  128. import { building_list, community_list, district_list, entrust } from "/@/api/controllerUrls";
  129. import { ElMessage } from "element-plus";
  130. import pictureUpload from "/@/components/pictureUpload/index.vue";
  131. import pictureUpload2 from "/@/components/pictureUpload/multiple.vue";
  132. import editor from "/@/components/editor/index.vue";
  133. let showDialog = ref(false);
  134. defineExpose({
  135. open
  136. });
  137. let data = ref({});
  138. let communityNameCustom = ref(false); //小区名自定义
  139. let buildingNumberCustom = ref(false); //楼号自定义
  140. function open(event) {
  141. data.value = event;
  142. // data.value.evidenceFile = data.value.evidenceFile ? JSON.parse(data.value.evidenceFile) : [];
  143. formRef.value?.resetFields();
  144. formData.id = data.value.id;
  145. formData.parkingNumber = event.parkingNumber;
  146. showDialog.value = true;
  147. getDistrict();
  148. }
  149. function submit(event) {
  150. formData.operateType = event ? 1 : 0;
  151. if (event) {
  152. formRef.value.validate((valid) => {
  153. if (valid) {
  154. request.edit(entrust, formData, "release").then((res) => {
  155. if (res.code == 1) {
  156. showDialog.value = false;
  157. }
  158. });
  159. }
  160. });
  161. } else {
  162. request.edit(entrust, formData, "release").then((res) => {
  163. if (res.code == 1) {
  164. showDialog.value = false;
  165. }
  166. });
  167. }
  168. }
  169. let activeTab = ref("first");
  170. let formRef = ref();
  171. let formData = reactive({
  172. id: "",//委托单id
  173. operateType: 1,
  174. districtId: "",
  175. communityName: "",
  176. buildingNumber: "",
  177. parkingNumber: "",
  178. parkingUrl: "",//车位展示图片
  179. pictureUrl: "",//车位展示图片
  180. parkingShow: "<p><br></p>"//车位简介
  181. });
  182. let formRules = {
  183. districtId: [
  184. { required: true, message: "不能为空" }
  185. ],
  186. communityName: [
  187. { required: true, message: "不能为空" }
  188. ],
  189. buildingNumber: [
  190. { required: true, message: "不能为空" }
  191. ],
  192. parkingNumber: [
  193. { required: true, message: "不能为空" }
  194. ]
  195. };
  196. //区县列表
  197. let districtList = ref([]);
  198. function getDistrict() {
  199. request.index(district_list, {}, "").then((res) => {
  200. if (res.code == 1) {
  201. districtList.value = res.data;
  202. }
  203. });
  204. }
  205. //小区列表
  206. let communityList = ref([]);
  207. //选择区县,获取小区列表
  208. function getCommunity(event) {
  209. if (!event) return;
  210. formData.communityName = "";
  211. request.index(community_list, {
  212. districtIds: formData.districtId
  213. }, "").then((res) => {
  214. if (res.code == 1) {
  215. communityList.value = res.data;
  216. }
  217. });
  218. }
  219. //楼号列表
  220. let buildingList = ref([]);
  221. //选择小区,获取楼号列表
  222. function getBuilding(event) {
  223. if (!event) return;
  224. // if (!buildingNumberCustom.value) {
  225. let communityId = "";
  226. for (let r of communityList.value) {
  227. if (r.communityName = formData.communityName) {
  228. communityId = r.id;
  229. break;
  230. }
  231. }
  232. request.index(building_list, {
  233. communityIds: communityId
  234. }, "").then((res) => {
  235. if (res.code == 1) {
  236. buildingList.value = res.data;
  237. }
  238. });
  239. // }
  240. }
  241. const emit = defineEmits(["close"]);
  242. function closeDialog() {
  243. emit("close");
  244. }
  245. </script>
  246. <style scoped>
  247. </style>