sceneImages.vue 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <template>
  2. <div class="app-container organization-index">
  3. <div class="title-container">
  4. <breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
  5. </div>
  6. <div>
  7. <y-page-list-layout :get-page-list="getPage" :page-list="pageData" :page-para="listQuery">
  8. <template slot="left">
  9. <el-date-picker
  10. style="margin-right: 20px;float: left;"
  11. v-model="selectDate"
  12. type="daterange"
  13. :picker-options="pickerOptions"
  14. format="yyyy 年 MM 月 dd 日"
  15. value-format="yyyy-MM-dd"
  16. range-separator="至"
  17. start-placeholder="实勘日期(开始)"
  18. end-placeholder="实勘日期(结束)"
  19. align="right"
  20. ></el-date-picker>
  21. <el-input v-model="listQuery.orderName" placeholder="项目名称" clearable style="width: 200px;margin-right: 20px;float: left;"></el-input>
  22. <el-input v-model="listQuery.orderId" placeholder="订单号" clearable style="width: 200px;margin-right: 20px;float: left;"></el-input>
  23. <el-input v-model="listQuery.located" placeholder="坐落" clearable style="width: 200px;margin-right: 20px;float: left;"></el-input>
  24. <el-select v-model="listQuery.sceneUserId" placeholder="实勘人" clearable filterable style="width: 200px;margin-right: 20px;float: left;"
  25. class="filter-item">
  26. <el-option v-for="(item, id) in sceneUserIds" :key="id" :label="item.name" :value="item.id" />
  27. </el-select>
  28. <el-button class="filter-item" style="margin-left: 10px;float: left;" type="primary" @click="searchList()"
  29. round>搜索
  30. </el-button>
  31. <el-button class="filter-item" style="float: left;" round type="success" @click="resetSearch()">重置
  32. </el-button>
  33. </template>
  34. <parentTable ref="table" v-loading="listLoading" :data="pageData.records" slot="table" style="width: 100%;">
  35. <el-table-column label="项目名称" align="center" prop="orderName" >
  36. <template slot-scope="{row}">
  37. <span>{{ row.orderName }}</span>
  38. </template>
  39. </el-table-column>
  40. <el-table-column label="订单号" width="150" align="center" prop="orderId">
  41. <template slot-scope="{row}">
  42. <span>{{ row.orderId }}</span>
  43. </template>
  44. </el-table-column>
  45. <el-table-column label="坐落" width="250" align="center" prop="located">
  46. <template slot-scope="{row}">
  47. <span>{{ row.located }}</span>
  48. </template>
  49. </el-table-column>
  50. <el-table-column label="实勘照片" width="150" align="center" prop="sceneImage">
  51. <template slot-scope="{row}">
  52. <img @click="openBigImage(row.sceneImage)" class="image_class" :src="env+row.sceneImage" alt="实勘照片">
  53. </template>
  54. </el-table-column>
  55. <el-table-column label="实勘日期" width="150" align="center" prop="createTime">
  56. <template slot-scope="{row}">
  57. <span>{{ row.createTime }}</span>
  58. </template>
  59. </el-table-column>
  60. <el-table-column label="估价对象类型" width="150" align="center" prop="targetType">
  61. <template slot-scope="{row}">
  62. <span>{{ row.targetType }}</span>
  63. </template>
  64. </el-table-column>
  65. <el-table-column label="客户经理" width="150" align="center" prop="clinetManager">
  66. <template slot-scope="{row}">
  67. <span>{{ row.clientManager }}</span>
  68. </template>
  69. </el-table-column>
  70. <el-table-column label="实勘人" width="150" align="center" prop="sceneUsers">
  71. <template slot-scope="{row}">
  72. <span>{{ row.sceneUsers }}</span>
  73. </template>
  74. </el-table-column>
  75. <el-table-column label="负责人" width="150" align="center" prop="principal">
  76. <template slot-scope="{row}">
  77. <span>{{ row.principal }}</span>
  78. </template>
  79. </el-table-column>
  80. </parentTable>
  81. </y-page-list-layout>
  82. </div>
  83. <el-dialog :visible.sync="bigImageDialogVisible" center width="50%" top="5vh">
  84. <div>
  85. <img class="image_class" :src="env+bigImageUri" alt="实勘照片">
  86. </div>
  87. </el-dialog>
  88. </div>
  89. </template>
  90. <script>
  91. import YPageListLayout from '@/components/YPageListLayout'
  92. import Breadcrumb from '@/components/Breadcrumb'
  93. export default {
  94. name: 'sceneImages',
  95. components: {
  96. Breadcrumb,
  97. YPageListLayout,
  98. },
  99. data() {
  100. return {
  101. pageData:{
  102. records:[
  103. {
  104. orderName:"龙泉驿区驿都西路3666号108栋,四川炜岸房地产开发有限公司",
  105. orderId:"2025031037",
  106. located:"龙泉驿区驿都西路3666号108栋",
  107. sceneImage:"/dfs/2025/07/01/fce138fb6ab5b6a7073051cc0bb98caf-20250701172429120.jpg",
  108. created:"2025-07-01",
  109. targetType:"房地产",
  110. clinetManager:"李维",
  111. sceneUsers:"文宏",
  112. principal:"高山"
  113. }
  114. ]
  115. },
  116. bigImageDialogVisible:false,
  117. listQuery:{
  118. page: 1,
  119. size: 10,
  120. current: 1,
  121. startDate:null,
  122. endDate:null,
  123. orderName:null,
  124. orderId:null,
  125. located:null,
  126. sceneUserId:null
  127. },
  128. listLoading:false,
  129. env:null,
  130. bigImageUri:null,
  131. pickerOptions: {
  132. shortcuts: [
  133. {
  134. text: '最近一周',
  135. onClick(picker) {
  136. const end = new Date();
  137. const start = new Date();
  138. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  139. picker.$emit('pick', [start, end]);
  140. },
  141. },
  142. {
  143. text: '最近一个月',
  144. onClick(picker) {
  145. const end = new Date();
  146. const start = new Date();
  147. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  148. picker.$emit('pick', [start, end]);
  149. },
  150. },
  151. {
  152. text: '最近三个月',
  153. onClick(picker) {
  154. const end = new Date();
  155. const start = new Date();
  156. start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
  157. picker.$emit('pick', [start, end]);
  158. },
  159. },
  160. ],
  161. },
  162. selectDate:null,
  163. sceneUserIds:[]
  164. }
  165. },
  166. created() {
  167. this.env = process.env.VUE_APP_API_SERVER;
  168. this.getPage();
  169. this.getAllotDepartmentUser();
  170. },
  171. methods: {
  172. getPage(){
  173. if (this.selectDate) {
  174. this.listQuery.startDate = this.selectDate[0] + ' 00:00:00';
  175. this.listQuery.endDate = this.selectDate[1] + ' 23:59:59';
  176. }
  177. this.$api.majorTarget.getSceneImages(this.listQuery).then(res=>{
  178. if (res.code === 200){
  179. this.pageData = res.data;
  180. }
  181. })
  182. },
  183. openBigImage(uri){
  184. this.bigImageDialogVisible = true;
  185. this.bigImageUri = uri;
  186. },
  187. searchList() {
  188. // 重置分页
  189. this.listQuery.current = 1;
  190. this.listQuery.size = 10;
  191. this.getPage();
  192. },
  193. resetSearch() {
  194. // 重置分页
  195. this.listQuery.current = 1;
  196. this.listQuery.size = 10;
  197. this.listQuery.orderId = null;
  198. this.listQuery.orderName = null;
  199. this.listQuery.located = null;
  200. this.listQuery.sceneUserId = null;
  201. this.listQuery.startDate = null;
  202. this.listQuery.endDate = null;
  203. this.selectDate = null;
  204. this.getPage();
  205. },
  206. getAllotDepartmentUser() {
  207. const businessType = "MAJOR_BUSINESS"
  208. this.$api.user.allotDepartmentUser(businessType).then(res => {
  209. if (res.code === 200 && res.data != null) {
  210. this.sceneUserIds = res.data;
  211. }
  212. })
  213. }
  214. },
  215. }
  216. </script>
  217. <style lang="scss" scoped>
  218. .image_class{
  219. width: 100%;
  220. height: auto;
  221. margin: 5px;
  222. border-radius: 5px;
  223. cursor: pointer;
  224. }
  225. </style>