progres_statistics.vue 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. <template>
  2. <div class="ProgreStatistics_Contain">
  3. <el-radio-group v-model="currentMenu" style="margin-bottom: 20px;" @input="toModule">
  4. <el-radio-button label="0">用料统计</el-radio-button>
  5. <el-radio-button label="1">进度统计</el-radio-button>
  6. <el-radio-button label="2">可视化统计</el-radio-button>
  7. <el-radio-button label="3">可视化进度</el-radio-button>
  8. </el-radio-group>
  9. <div class="topContain">
  10. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
  11. <el-form-item label="行政区" prop="district">
  12. <el-select v-model="queryParams.district" placeholder="请选择行政区" clearable
  13. @change="queryParams.areaId = undefined;getAreaList(queryParams.district)"
  14. @clear="queryParams.areaId = undefined;areaList=[];
  15. queryParams.buildingId = undefined;buildingList=[];
  16. queryParams.unitId = undefined;unitList=[]">
  17. <el-option
  18. v-for="dict in dict.type.district"
  19. :key="dict.value"
  20. :label="dict.label"
  21. :value="dict.value"
  22. />
  23. </el-select>
  24. </el-form-item>
  25. <el-form-item label="小区名称" prop="areaId">
  26. <el-select v-model="queryParams.areaId" filterable clearable placeholder="请选择小区">
  27. <el-option
  28. v-for="item in areaList"
  29. :key="item.id"
  30. :label="item.name"
  31. :value="item.id">
  32. </el-option>
  33. </el-select>
  34. </el-form-item>
  35. <el-form-item label="工程周期" prop="enginCycle">
  36. <el-select v-model="queryParams.enginCycle" filterable clearable placeholder="请选择规格">
  37. <el-option
  38. v-for="dict in dict.type.engin_cycle"
  39. :key="dict.value"
  40. :label="dict.label"
  41. :value="dict.value"
  42. />
  43. </el-select>
  44. </el-form-item>
  45. <el-form-item>
  46. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  47. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  48. </el-form-item>
  49. </el-form>
  50. <!-- <el-select-->
  51. <!-- v-model="currentType"-->
  52. <!-- placeholder="请选择"-->
  53. <!-- class="projectSelect"-->
  54. <!-- popper-class="projectDropDown"-->
  55. <!-- :popper-append-to-body="false"-->
  56. <!-- >-->
  57. <!-- <el-option-->
  58. <!-- v-for="e in typeOptions"-->
  59. <!-- :key="e.value"-->
  60. <!-- :label="e.label"-->
  61. <!-- :value="e.value">-->
  62. <!-- </el-option>-->
  63. <!-- </el-select>-->
  64. <!-- <el-button class="searchBtn">查询</el-button>-->
  65. </div>
  66. <el-table
  67. class="materialStatisticsTable"
  68. :data="tableData"
  69. header-cell-style="background-color:#FFFFFF;border: 1px solid #000066"
  70. border
  71. :cell-style="tableRowClassName"
  72. style="width: 100%">
  73. <el-table-column
  74. prop="areaName"
  75. width="250"
  76. label="小区名称"
  77. >
  78. </el-table-column>
  79. <el-table-column
  80. prop="notstart"
  81. label="未开工(户)"
  82. >
  83. </el-table-column>
  84. <el-table-column
  85. prop="willDone"
  86. label="施工(户)">
  87. </el-table-column>
  88. <el-table-column
  89. prop="done"
  90. label="完工(户)">
  91. </el-table-column>
  92. </el-table>
  93. <pagination
  94. v-show="total>0"
  95. :total="total"
  96. :page.sync="queryParams.pageNum"
  97. :limit.sync="queryParams.pageSize"
  98. @pagination="getList"
  99. />
  100. </div>
  101. </template>
  102. <script>
  103. import {
  104. getAreaCompletionInformationList
  105. } from '@/api/zdsz/overhead'
  106. import {getAreaList, getBuildingList} from "@/api/zdsz/enginee";
  107. import {getUnits} from "@/api/zdsz/unit";
  108. export default {
  109. name:'ProgreStatistics',
  110. dicts:['engin_cycle','district'],
  111. data(){
  112. return {
  113. showSearch: true,
  114. buildingList: [],
  115. areaList:[],
  116. unitList: [],
  117. total:0,
  118. queryParams:{pageNum:1,pageSize:10, areaId:undefined,enginCycle:"0"},
  119. currentMenu:1, // 0:用料管理 1:进度统计 2:可视化进度
  120. typeOptions:[
  121. {
  122. value: '0',
  123. label: '市政工程'
  124. },
  125. {
  126. value: '1',
  127. label: '工业工程'
  128. },
  129. {
  130. value: '2',
  131. label: '民用工程'
  132. },
  133. {
  134. value: '3',
  135. label: '危险作业'
  136. },
  137. {
  138. value: '4',
  139. label: '顶管工程'
  140. },
  141. {
  142. value: '5',
  143. label: '基建工程'
  144. }
  145. ],
  146. tableData: [
  147. {
  148. name: '兰亭湖畔',
  149. doing: '30',
  150. willDone:'19',
  151. done:'20'
  152. },
  153. {
  154. name: '清华园',
  155. doing: '30',
  156. willDone:'19',
  157. done:'20'
  158. },
  159. {
  160. name: '领秀世家',
  161. doing: '30',
  162. willDone:'19',
  163. done:'20'
  164. },
  165. {
  166. name: '上东府里',
  167. doing: '30',
  168. willDone:'19',
  169. done:'20'
  170. },
  171. {
  172. name: '龙腾香格里',
  173. doing: '30',
  174. willDone:'19',
  175. done:'20'
  176. },
  177. ],
  178. currentType:'管'
  179. }
  180. },
  181. mounted() {
  182. this.getList()
  183. },
  184. methods:{
  185. getAreaList(district) {
  186. if (district === undefined || district == null || district === '')
  187. return
  188. getAreaList({district: district}).then(res => this.areaList = res.data)
  189. },
  190. getBuildingList1(areaId) {
  191. if (areaId === undefined || areaId == null || areaId === '')
  192. return
  193. getBuildingList({areaId: areaId}).then(res => this.buildingList = res.data)
  194. },
  195. getUnitList1(buildingId) {
  196. if (buildingId === undefined || buildingId == null || buildingId === '')
  197. return
  198. getUnits(this.queryParams.areaId, buildingId).then(res => this.unitList = res.data)
  199. },
  200. /** 搜索按钮操作 */
  201. handleQuery() {
  202. this.getList();
  203. },
  204. /** 重置按钮操作 */
  205. resetQuery() {
  206. this.resetForm("queryForm");
  207. this.tableData=[]
  208. this.queryParams = {pageNum:1,pageSize:10, areaId:undefined,enginCycle:"0"};
  209. this.handleQuery();
  210. },
  211. getList()
  212. {
  213. getAreaCompletionInformationList(this.queryParams).then(res=>{
  214. this.total=res.total
  215. this.tableData=res.rows
  216. })
  217. },
  218. tableRowClassName(){
  219. return "background:#FFFFFF;border: 1px solid #000066"
  220. },
  221. toModule(){
  222. console.log(this.$router)
  223. const currentPage = this.currentMenu == 0 ? 'material_statistics' : this.currentMenu == 1 ? 'progres_statistics' :this.currentMenu == 2 ? 'echarts_statistics': 'progres_visual'
  224. this.$router.push({
  225. path:`/${currentPage}`
  226. })
  227. }
  228. }
  229. }
  230. </script>
  231. <style lang="scss" scoped>
  232. .ProgreStatistics_Contain{
  233. width: 100%;
  234. height: 100%;
  235. padding: 1%;
  236. .topContain{
  237. display: flex;
  238. justify-content: space-between;
  239. width: 100%;
  240. .searchBtn{
  241. width: 11%;
  242. background: linear-gradient(to right , #2197F2, #0BB0DE);
  243. color: #fff;
  244. }
  245. ::v-deep .projectSelect{
  246. .el-input__inner{
  247. background: linear-gradient(to right , #2197F2, #0BB0DE);
  248. color: #fff;
  249. }
  250. }
  251. .projectDropDown{
  252. background: linear-gradient(to right , #2197F2, #0BB0DE);
  253. .el-select-dropdown__item{
  254. background: linear-gradient(to right , #2197F2, #0BB0DE);
  255. color: #fff;
  256. }
  257. ::v-deep .el-select-dropdown__list {
  258. padding-top: 0 !important;
  259. padding-bottom: 0;
  260. }
  261. }
  262. }
  263. .materialStatisticsTable{
  264. margin-top: 1%;
  265. border: 2px solid #000066 !important;
  266. cursor: pointer;
  267. ::v-deep .el-table__row{
  268. background-color: #2F4280;
  269. }
  270. ::v-deep tbody tr:hover>td {
  271. transform: translateX(3px) translateY(-3px);
  272. z-index: 100;
  273. box-shadow: 3px 3px 3px 3px rgba(82, 82, 82, 0.5);
  274. background-color: rgba(98, 98, 98, 0.52);
  275. font-size: 15px;
  276. color: #ea0404;
  277. }
  278. }
  279. .materialStatisticsTable::before{
  280. background-color:#000066 ;
  281. }
  282. .materialStatisticsTable::after{
  283. background-color:#000066 ;
  284. }
  285. }
  286. </style>