file.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. import httputils from '@/api/scan/httpUtil'
  2. import { Message } from 'element-ui';
  3. const baseUrl = '/modelapi';
  4. import axios from 'axios'
  5. let api = {
  6. // 新建模型文件夹
  7. /**
  8. *
  9. * @param {Name:string,ProjectId:string} params
  10. */
  11. createModel(params, success) {
  12. let Name = params.Name;
  13. this.queryModel(Name, (res) => {
  14. if (res.Total == 0) {
  15. let data = {
  16. Content: [params]
  17. };
  18. // 查询是否有该模型文件夹
  19. // 创建
  20. httputils.postJson(`${baseUrl}/model-folder/create`, data, success)
  21. } else {
  22. Message.error({ message: '该文件夹已经存在!' });
  23. }
  24. })
  25. },
  26. //删除模型文件夹
  27. /**
  28. *
  29. * @param {Id:string} params
  30. */
  31. deleteModel(params, success) {
  32. let Content = [params];
  33. httputils.postJson(`${baseUrl}/model-folder/delete`, Content, success)
  34. },
  35. //修改模型文件夹名称
  36. /**
  37. *
  38. * @param {Name:string,ProjectId:string} params
  39. */
  40. updateModelName(params, success) {
  41. let Name = params.Name;
  42. this.queryModel(Name, (res) => {
  43. if (res.Total == 0) {
  44. let data = {
  45. Content: [params]
  46. };
  47. // 更改文件夹名称
  48. httputils.postJson(`${baseUrl}/model-folder/update`, data, success)
  49. } else {
  50. Message.error({ message: '该文件夹已经存在!' });
  51. }
  52. })
  53. },
  54. //查询模型文件夹
  55. /**
  56. * @param Name string 注:查询多个 Name = ''
  57. */
  58. queryModel(Name, success) {
  59. let data = null;
  60. if (Name) {
  61. // 单个查询
  62. data = {
  63. Filters: `Name='${Name}'`
  64. }
  65. } else {
  66. // 多个查询
  67. data = {}
  68. }
  69. return httputils.postJson(`${baseUrl}/model-folder/query`, data, success)
  70. },
  71. //以下是楼层文件接口
  72. // 查询模型文件夹下的所有模型文件
  73. queryFloorList(data, success) {
  74. let Filters = `FolderId='${data.FolderId}'`;
  75. if (data.FloorName) {
  76. Filters = `FolderId='${data.FolderId}';FloorName='${data.FloorName}';ProjectId='${data.ProjectId}'`;
  77. }
  78. let params = {
  79. Filters: Filters
  80. }
  81. return httputils.postJson(`${baseUrl}/model-floor/query-list`, params, success)
  82. },
  83. // 查询模型文件夹下的单个模型文件
  84. queryFloorItem(data, success) {
  85. let Filters = `FolderId='${data.FolderId}'`;
  86. if (data.FloorName) {
  87. Filters = `FolderId='${data.FolderId}';FloorName='${data.FloorName}';ProjectId='${data.ProjectId}'`;
  88. }
  89. let params = {
  90. Filters: Filters
  91. }
  92. return httputils.postJson(`${baseUrl}/model-floor/query`, params, success)
  93. },
  94. // 创建楼层
  95. createFloor(params) {
  96. // 判断该楼层是否存在
  97. let data = {
  98. Content: [{
  99. FolderId: params.FolderId,
  100. FloorName: params.FloorName,
  101. ProjectId: params.ProjectId, //项目id
  102. }]
  103. };
  104. return new Promise((resolve, preject) => {
  105. this.queryFloorItem(params, (res) => {
  106. if (res.Total == 0) {
  107. // 创建楼层
  108. httputils.postJson(`${baseUrl}/model-floor/create`, data, (res) => {
  109. let modelFile = {
  110. Content: [{
  111. // ProjectId: params.ProjectId, //项目id
  112. FloorModelId: res.EntityList[0].Id, //模型所属楼层(FloorModel外键)
  113. ModelName: params.Form.file.name, //模型文件名
  114. UserName: params.userName,
  115. Note: params.Form.desc
  116. // ReplaceReason: 0
  117. }]
  118. }
  119. //创建模型文件
  120. this.createModelFile(modelFile, (createModelRes) => {
  121. // 与此楼文件进行绑定
  122. let upDateModelData = {
  123. Content: [{
  124. Id: res.EntityList[0].Id, //id
  125. CurrentModelId: createModelRes.EntityList[0].Id //该楼层当前的模型id
  126. }]
  127. }
  128. this.updateFloorName(upDateModelData, (upDateModelSucess) => {
  129. if (upDateModelSucess.Result == "success") {
  130. resolve({
  131. Result: 'success',
  132. FloorModelId: res.EntityList[0].Id, //楼层模型文件
  133. CurrentModelId: createModelRes.EntityList[0].Id //模型文件id
  134. })
  135. }
  136. })
  137. })
  138. })
  139. } else {
  140. let modelFile = {
  141. Content: [{
  142. // ProjectId: params.ProjectId, //项目id
  143. FloorModelId: res.Content[0].Id, //模型所属楼层(FloorModel外键)
  144. ModelName: params.Form.file.name, //模型文件名
  145. UserName: params.userName,
  146. Note: params.Form.desc
  147. // ReplaceReason: 0
  148. }]
  149. }
  150. //创建模型文件
  151. this.createModelFile(modelFile, (createModelRes) => {
  152. // 与此楼文件进行绑定
  153. let upDateModelData = {
  154. Content: [{
  155. Id: res.Content[0].Id, //id
  156. CurrentModelId: createModelRes.EntityList[0].Id //该楼层当前的模型id
  157. }]
  158. }
  159. this.updateFloorName(upDateModelData, (upDateModelSucess) => {
  160. if (upDateModelSucess.Result == "success") {
  161. resolve({
  162. Result: 'success',
  163. FloorModelId: res.Content[0].Id, //楼层模型文件
  164. CurrentModelId: createModelRes.EntityList[0].Id //模型文件id
  165. })
  166. }
  167. })
  168. })
  169. }
  170. })
  171. })
  172. },
  173. // 删除楼层文件
  174. deleteFloor(data) {
  175. return httputils.postJson(`${baseUrl}/model-floor/delete`, data)
  176. },
  177. //编辑楼层文件的名字
  178. updateFloorName(data, success) {
  179. return httputils.postJson(`${baseUrl}/model-floor/update`, data, success)
  180. },
  181. //以下是楼层文件接口
  182. // 创建模型文件
  183. createModelFile(data, success) {
  184. return httputils.postJson(`${baseUrl}/model-file/create`, data, success)
  185. },
  186. //删除模型文件(只有记录,文件不动)
  187. deleteModelFile(data, success) {
  188. return httputils.postJson(`${baseUrl}/model-file/delete`, data, success)
  189. },
  190. /**
  191. * info: 删除模型文件
  192. * @param {*} params string 模型文件的id
  193. * @param {*} success 成功的回调函数
  194. */
  195. deleteModelFileList(params, success) {
  196. let data = {
  197. Id:params
  198. }
  199. return httputils.postJson(`${baseUrl}/model-file/delete-file`, data, success)
  200. },
  201. //查询模型文件
  202. queryModelFile(FloorModelId, success) {
  203. let params = {
  204. Distince: true,
  205. Filters: `FloorModelId='${FloorModelId}'`
  206. }
  207. return httputils.postJson(`${baseUrl}/model-file/query`, params, success)
  208. },
  209. // 上传模型文件
  210. uploadModelFile(payload, ProjectId,callback1, callback2) {
  211. axios({
  212. url: baseUrl + '/model-file/upload',
  213. method: 'post',
  214. headers: {
  215. ProjectId: ProjectId
  216. },
  217. onUploadProgress: function (progressEvent) { //原生获取上传进度的事件
  218. if (progressEvent.lengthComputable) {
  219. //属性lengthComputable主要表明总共需要完成的工作量和已经完成的工作是否可以被测量
  220. //如果lengthComputable为false,就获取不到progressEvent.total和progressEvent.loaded
  221. callback1(progressEvent);
  222. }
  223. },
  224. data: payload
  225. }).then(res => {
  226. callback2(res);
  227. }).catch(error => {
  228. console.log('this is a catch')
  229. console.log(error)
  230. })
  231. },
  232. // 更新模型文件
  233. upDateModelFile(data, ProjectId,UserName, callback1, callback2) {
  234. let modelFile = {
  235. Content: [{
  236. FloorModelId:data.replaceModelItem.Id, //模型id
  237. ModelName: data.Form.file.name, //模型名字
  238. UserName: UserName,
  239. Note: data.replaceModelItem.Note,
  240. ReplaceReason: data.Form.ReplaceReason
  241. }]
  242. }
  243. // //创建模型文件
  244. this.createModelFile(modelFile, (createModelRes) => {
  245. // 与此楼文件进行绑定
  246. let upDateModelData = {
  247. Content: [{
  248. Id:data.replaceModelItem.Id, //楼层
  249. CurrentModelId: createModelRes.EntityList[0].Id
  250. }]
  251. }
  252. this.updateFloorName(upDateModelData, (upDateModelSucess) => {
  253. if (upDateModelSucess.Result == "success") {
  254. // 处理数据
  255. let formData = new FormData();
  256. formData.append(
  257. "model",
  258. JSON.stringify({
  259. FloorModelId: data.replaceModelItem.Id,
  260. Id:createModelRes.EntityList[0].Id
  261. })
  262. );
  263. formData.append("file", data.Form.file.raw);
  264. this.uploadModelFile(formData,ProjectId,callback1,callback2)
  265. }
  266. })
  267. })
  268. }
  269. }
  270. export default api
  271. //楼层与平面图绑定
  272. export function bindFloorModel(param, success) {
  273. let url = `${baseUrl}/model-floor/bind`;
  274. httputils.postJson(url, param, success)
  275. }