versionDialog.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. <template>
  2. <el-dialog :title="title" :visible.sync="dialog" :before-close="handleClose" width="900px">
  3. <div v-loading="loading" class="content">
  4. <el-scrollbar style="height:100%;">
  5. <span>上传人:{{versionData.userName}}</span>
  6. <span style="marginLeft:30px;">上传时间:{{versionData.acceptTime}}</span>
  7. <p style="marginTop:15px;">更新内容:</p>
  8. <div v-if="Object.keys(versionData.createData).length || Object.keys(versionData.deleteData).length || versionData.buildList.length">
  9. <!-- 新增设备概要内容 -->
  10. <el-divider v-if="Object.keys(versionData.createData).length">新增设备概要内容</el-divider>
  11. <p v-if="Object.keys(versionData.createData).length" style="marginBottom:10px;">于【{{versionData.acceptTime}}】上传模型文件,新增设备实例如下:</p>
  12. <p v-for="(item, key) in versionData.createData" :key="'C'+key">【{{mapType[key]}}】:【{{item.length}}】个</p>
  13. <!-- 删除设备概要内容 -->
  14. <el-divider v-if="Object.keys(versionData.deleteData).length">删除设备概要内容</el-divider>
  15. <p v-if="Object.keys(versionData.deleteData).length" style="marginBottom:10px;">于【{{versionData.acceptTime}}】上传模型文件,删除设备实例如下:</p>
  16. <p v-for="(item, key) in versionData.deleteData" :key="'D'+key">【{{mapType[key]}}】:【{{item.length}}】个</p>
  17. <!-- 土建设备概要内容 -->
  18. <el-divider v-if="versionData.buildList.length">土建设备概要内容</el-divider>
  19. <p v-if="versionData.buildList.length" style="marginBottom:10px;">于【{{versionData.acceptTime}}】上传模型文件,增删土建设备实例如下:</p>
  20. <p v-if="versionData.createWall.length">【新增实体墙】:【{{versionData.createWall.length}}】个</p>
  21. <p v-if="versionData.deleteWall.length">【删除实体墙】:【{{versionData.deleteWall.length}}】个</p>
  22. <p v-if="versionData.createVirtualWall.length">【新增虚拟墙】:【{{versionData.createVirtualWall.length}}】个</p>
  23. <p v-if="versionData.deleteVirtualWall.length">【删除虚拟墙】:【{{versionData.deleteVirtualWall.length}}】个</p>
  24. <p v-if="versionData.createColumn.length">【新增柱体】:【{{versionData.createColumn.length}}】个</p>
  25. <p v-if="versionData.deleteColumn.length">【删除柱体】:【{{versionData.deleteColumn.length}}】个</p>
  26. <!-- 新增设备 -->
  27. <el-divider v-if="Object.keys(versionData.createData).length">新增设备</el-divider>
  28. <div v-for="(item, key) in versionData.createData" :key="'CL'+key">
  29. <p>【{{mapType[key]}}】</p>
  30. <p v-for="(obj, i) in item" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;设备全局id:【{{obj.ObjId || "无"}}】;BIMID:【{{obj.BimId || "无"}}】;设备本地编码:【{{obj.LocalId || "无"}}】;设备本地名称:【{{obj.LocalName || "无"}}】;CADID:【{{obj.CadId || "无"}}】;</p>
  31. </div>
  32. <!-- 删除设备 -->
  33. <el-divider v-if="Object.keys(versionData.deleteData).length">删除设备</el-divider>
  34. <div v-for="(item, key) in versionData.deleteData" :key="'DL'+key">
  35. <p>【{{mapType[key]}}】</p>
  36. <p v-for="(obj, i) in item" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;设备全局id:【{{obj.ObjId || "无"}}】;BIMID:【{{obj.BimId || "无"}}】;设备本地编码:【{{obj.LocalId || "无"}}】;设备本地名称:【{{obj.LocalName || "无"}}】;CADID:【{{obj.CadId || "无"}}】;</p>
  37. </div>
  38. <!-- 新增实体墙 -->
  39. <el-divider v-if="versionData.createWall.length">新增实体墙</el-divider>
  40. <p v-for="(obj, i) in versionData.createWall" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;Id:【{{obj.ObjId || "无"}}】;</p>
  41. <!-- 删除实体墙 -->
  42. <el-divider v-if="versionData.deleteWall.length">删除实体墙</el-divider>
  43. <p v-for="(obj, i) in versionData.deleteWall" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;Id:【{{obj.ObjId || "无"}}】;</p>
  44. <!-- 新增虚拟墙 -->
  45. <el-divider v-if="versionData.createVirtualWall.length">新增虚拟墙</el-divider>
  46. <p v-for="(obj, i) in versionData.createVirtualWall" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;Id:【{{obj.ObjId || "无"}}】;</p>
  47. <!-- 删除虚拟墙 -->
  48. <el-divider v-if="versionData.deleteVirtualWall.length">删除虚拟墙</el-divider>
  49. <p v-for="(obj, i) in versionData.deleteVirtualWall" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;Id:【{{obj.ObjId || "无"}}】;</p>
  50. <!-- 新增柱体 -->
  51. <el-divider v-if="versionData.createColumn.length">新增柱体</el-divider>
  52. <p v-for="(obj, i) in versionData.createColumn" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;Id:【{{obj.ObjId || "无"}}】;</p>
  53. <!-- 删除柱体 -->
  54. <el-divider v-if="versionData.deleteColumn.length">删除柱体</el-divider>
  55. <p v-for="(obj, i) in versionData.deleteColumn" :key="obj.Id">【{{i+1}}】、建筑:【{{obj.BuildingName || "无"}}】;楼层:【{{obj.FloorName || "无"}}】;Id:【{{obj.ObjId || "无"}}】;</p>
  56. </div>
  57. <div v-else>
  58. <div style="height: 60%;transform: translateY(50%);font-weight: normal;font-size: 12px;text-align: center;color: #909399;">
  59. <i class="icon-wushuju iconfont"></i>
  60. 数据暂无
  61. </div>
  62. </div>
  63. </el-scrollbar>
  64. </div>
  65. <span slot="footer" class="dialog-footer">
  66. <el-button size="small" type="primary" @click="handleClose">关闭</el-button>
  67. <!-- <el-button size="small" type="primary">确 定</el-button> -->
  68. </span>
  69. </el-dialog>
  70. </template>
  71. <script>
  72. import { mapGetters } from "vuex";
  73. import { querySyncLogCount } from "@/api/model/file.js";
  74. import { getAllEqPaType } from "@/api/scan/request";
  75. export default {
  76. components: {
  77. },
  78. props: {
  79. dialogVisible: Boolean,
  80. modelFile: Object,
  81. },
  82. computed: {
  83. ...mapGetters("layout", ["projectId"]),
  84. dialog() {
  85. return this.dialogVisible;
  86. }
  87. },
  88. data() {
  89. return {
  90. title: "版本文件信息",
  91. loading: true,
  92. logData: [],
  93. versionData: {
  94. userName: '',
  95. acceptTime: '',
  96. createData: {},
  97. deleteData: {},
  98. buildList: [],
  99. createWall: [],
  100. deleteWall: [],
  101. createVirtualWall: [],
  102. deleteVirtualWall: [],
  103. createColumn: [],
  104. deleteColumn: [],
  105. },
  106. mapType: {
  107. 'Wall': '实体墙',
  108. 'VirtualWall': '虚拟墙',
  109. 'Column': '柱体',
  110. },
  111. }
  112. },
  113. mounted() { },
  114. methods: {
  115. // 关闭弹窗
  116. handleClose() {
  117. this.$emit("update:dialogVisible", false);
  118. },
  119. // 获取版本信息
  120. getData() {
  121. if(this.modelFile.Id || this.modelFile.CurrentModelId){
  122. this.versionData.userName = this.modelFile.UserName;
  123. this.versionData.acceptTime = this.modelFile.AcceptTime;
  124. let promise1 = new Promise((resolve, reject) => {
  125. querySyncLogCount({
  126. Filters: `ModelId='${this.modelFile.CurrentModelId?this.modelFile.CurrentModelId:this.modelFile.Id}'`,
  127. PageNumber: 1,
  128. PageSize: 1000,
  129. }, res => {
  130. resolve(res)
  131. })
  132. })
  133. let promise2 = new Promise((resolve, reject) => {
  134. getAllEqPaType({PageNumber: 1,PageSize: 1000,}, res => {
  135. resolve(res)
  136. })
  137. })
  138. Promise.all([promise1, promise2]).then(values => {
  139. let typeList = values[1].Content;
  140. this.logData = values[0].Content;
  141. typeList.forEach(item => {
  142. this.mapType[item.Code] = item.Name;
  143. });
  144. console.log(this.mapType);
  145. if (values[0].Total / (values[0].PageSize * values[0].PageNumber) > 1) {
  146. this.queryLogData(values[0].PageNumber + 1)
  147. } else {
  148. this.formatData();
  149. this.loading = false;
  150. this.$forceUpdate();
  151. console.log(this.versionData);
  152. }
  153. })
  154. }
  155. },
  156. // 格式化数据
  157. formatData () {
  158. this.logData.forEach(item => {
  159. if (item.Type == 'Wall' || item.Type == 'VirtualWall' || item.Type == 'Column') {
  160. this.versionData.buildList.push(item);
  161. if (item.Type == 'Wall') {
  162. if(item.Operation){//创建
  163. this.versionData.createWall.push(item);
  164. } else {//删除
  165. this.versionData.deleteWall.push(item);
  166. }
  167. } else if (item.Type == 'VirtualWall') {
  168. if(item.Operation){//创建
  169. this.versionData.createVirtualWall.push(item);
  170. } else {//删除
  171. this.versionData.deleteVirtualWall.push(item);
  172. }
  173. } else if (item.Type == 'Column') {
  174. if(item.Operation){//创建
  175. this.versionData.createColumn.push(item);
  176. } else {//删除
  177. this.versionData.deleteColumn.push(item);
  178. }
  179. }
  180. } else {
  181. if(item.Operation){//创建
  182. if(this.versionData.createData[item.Type]){
  183. this.versionData.createData[item.Type].push(item);
  184. } else {
  185. this.versionData.createData[item.Type] = [];
  186. this.versionData.createData[item.Type].push(item);
  187. }
  188. } else {//删除
  189. if(this.versionData.deleteData[item.Type]){
  190. this.versionData.deleteData[item.Type].push(item);
  191. } else {
  192. this.versionData.deleteData[item.Type] = [];
  193. this.versionData.deleteData[item.Type].push(item);
  194. }
  195. }
  196. }
  197. });
  198. },
  199. // 获取版本信息
  200. getVersionData() {
  201. if(this.modelFile.Id || this.modelFile.CurrentModelId){
  202. this.versionData.userName = this.modelFile.UserName;
  203. this.versionData.acceptTime = this.modelFile.AcceptTime;
  204. this.queryLogData();
  205. }
  206. },
  207. queryLogData(pageNum) {
  208. pageNum = pageNum ? pageNum : 1
  209. let params = {
  210. Filters: `ModelId='${this.modelFile.CurrentModelId?this.modelFile.CurrentModelId:this.modelFile.Id}'`,
  211. PageNumber: pageNum,
  212. PageSize: 1000,
  213. }
  214. querySyncLogCount(params, res =>{
  215. this.logData = this.logData.concat(res.Content);//拼接数据
  216. if (res.Total / (res.PageSize * res.PageNumber) > 1) {
  217. this.queryLogData(res.PageNumber + 1)
  218. } else {
  219. this.formatData();
  220. this.loading = false;
  221. this.$forceUpdate();
  222. console.log(this.versionData)
  223. }
  224. })
  225. },
  226. },
  227. watch: {
  228. dialogVisible: {
  229. handler() {
  230. if (this.dialogVisible) {
  231. this.loading = true;
  232. this.logData = [];
  233. this.versionData = {
  234. userName: '',
  235. acceptTime: '',
  236. createData: {},
  237. deleteData: {},
  238. buildList: [],
  239. createWall: [],
  240. deleteWall: [],
  241. createVirtualWall: [],
  242. deleteVirtualWall: [],
  243. createColumn: [],
  244. deleteColumn: [],
  245. };
  246. if(Object.keys(this.mapType).length > 3) {
  247. this.getVersionData();
  248. } else {
  249. this.getData();
  250. }
  251. }
  252. },
  253. immediate: true
  254. }
  255. }
  256. };
  257. </script>
  258. <style lang="less" scoped>
  259. .content{
  260. height: 400px;
  261. font-size: 16px;
  262. font-weight: 650;
  263. color: #333;
  264. /deep/ .el-scrollbar__wrap {
  265. overflow-x: hidden;
  266. }
  267. }
  268. </style>