addfacility.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701
  1. <template>
  2. <div id="deviceList">
  3. <el-row class="right">
  4. <span style="float:left;">当前选择的设备类型:{{category.Name}}</span>
  5. <div style="width:200px;display:inline-block;text-align:left;color:gray;">
  6. <span>隐藏自动填充的信息</span>
  7. <el-checkbox v-model="isWatch" @change="getTableHeader"></el-checkbox>
  8. </div>
  9. <span>增加</span>
  10. <el-input v-model="addNum" style="width:40px;" size="small"></el-input>
  11. <span>个{{category.Name}}</span>
  12. <el-button @click="handleAddTableRow">增加</el-button>
  13. </el-row>
  14. <div class="tableBox">
  15. <div class="center middle_sty" style="flex:2;" v-show="tableData && !tableData.length">
  16. <p>
  17. <i class="iconwushuju iconfont"></i>
  18. 暂无数据
  19. </p>
  20. </div>
  21. <div class="tableLeft" v-show="tableData && tableData.length">
  22. <handson-table ref="table"></handson-table>
  23. </div>
  24. </div>
  25. <el-row class="center">
  26. <el-button
  27. type="primary"
  28. size="medium"
  29. @click="handleCreateTableData"
  30. class="create_button"
  31. >创建设备</el-button>
  32. </el-row>
  33. <!-- 二维码弹窗 -->
  34. <qrcode :dialog="myDialog" :qrcodeUrl="qrcodeUrl" :addBody="true" ref="qrcode"></qrcode>
  35. <!-- 型号弹窗 -->
  36. <firm :mess="{deviceId: firmId}" ref="firm" @changeFirm="firmChange" :dialog="myDialog"></firm>
  37. <!-- 供应商合同弹窗 -->
  38. <supply-dialog ref="supply" @change="supplyChange" :id="id" :dialog="myDialog"></supply-dialog>
  39. <!-- 供应商弹窗 -->
  40. <supplier-dialog ref="supplier" @changeSupplier="supplierChange" :dialog="myDialog"></supplier-dialog>
  41. <guarantee-dialog :id="id" ref="guarantee" @change="guaranteeChange" :dialog="myDialog"></guarantee-dialog>
  42. <upload-files-dialog
  43. :read="onlyRead ? true : false"
  44. ref="upload"
  45. @changeFile="fileChange"
  46. :keysArr="filesArr"
  47. :dialog="myDialog"
  48. ></upload-files-dialog>
  49. <upload-img-dialog
  50. :read="onlyRead ? true : false"
  51. @changeFile="imgChange"
  52. :keysArr="imgsArr"
  53. :dialog="myDialog"
  54. ></upload-img-dialog>
  55. <maintainer-dialog @changeMaintainer="changeMaintainer" ref="maintainer" :dialog="myDialog"></maintainer-dialog>
  56. <insurer-dialog @changeInsurer="changeInsurer" ref="insurer" :dialog="myDialog"></insurer-dialog>
  57. <pic-dialog
  58. :read="onlyRead ? true : false"
  59. :dialog="myDialog"
  60. :keysArr="picsArr"
  61. @change="changePics"
  62. ></pic-dialog>
  63. <system-type :infos="systemId" :graphyId="graphyId" :dialog="myDialog"></system-type>
  64. <details-dialog :iframeSrc="iframeSrc" v-if="myDialog.details" :dialog="myDialog"></details-dialog>
  65. </div>
  66. </template>
  67. <script>
  68. import tools from "@/utils/scan/tools";
  69. import handsonUtils from "@/utils/hasontableUtils";
  70. import showTools from "@/utils/handsontable/notShow";
  71. import text from "@/utils/handsontable/mainText";
  72. import session from "@/framework/utils/storage";
  73. import handsonTable from "@/components/common/handsontable";
  74. import {
  75. getDataDictionary,
  76. createPart,
  77. getEquipmentFamily,
  78. createPropertyData
  79. } from "@/api/scan/request";
  80. import { mapGetters, mapActions } from "vuex";
  81. import qrcode from "@/components/ledger/lib/qrcode";
  82. import firm from "@/components/dialogs/list/firm";
  83. import supplyDialog from "@/components/dialogs/list/supplyDialog";
  84. import supplierDialog from "@/components/dialogs/list/supplierDialog";
  85. import maintainerDialog from "@/components/dialogs/list/maintainerDialog";
  86. import insurerDialog from "@/components/dialogs/list/insurerDialog";
  87. import guaranteeDialog from "@/components/dialogs/list/guaranteeDialog";
  88. import uploadFilesDialog from "@/components/dialogs/list/filesDialog";
  89. import uploadImgDialog from "@/components/dialogs/list/uploadImgDialog";
  90. import picDialog from "@/components/dialogs/list/picDialog";
  91. import systemType from "@/components/dialogs/list/systemType";
  92. export default {
  93. components: {
  94. qrcode, //二维码页面
  95. firm, //品牌型号弹窗
  96. supplyDialog,
  97. supplierDialog,
  98. maintainerDialog,
  99. insurerDialog,
  100. guaranteeDialog,
  101. uploadFilesDialog,
  102. uploadImgDialog,
  103. picDialog,
  104. systemType,
  105. handsonTable
  106. },
  107. data() {
  108. return {
  109. addNum: 1,
  110. onlyRead: false,
  111. tableHeader: [],
  112. tableData: session.get("partsAddData")
  113. ? session.get("partsAddData").length
  114. ? session.get("partsAddData")
  115. : [{ Checked: 1 }]
  116. : [{ Checked: 1 }],
  117. isWatch: true,
  118. copyTableData: [],
  119. category: "", //当前设备类
  120. myDialog: {
  121. qrcode: false, //二维码弹窗
  122. firm: false, //厂商弹窗
  123. supply: false, //选择供应合同
  124. supplier: false, //供应商选择
  125. guarantee: false, //选择保单
  126. maintainer: false, //选择维修商
  127. insurer: false, //选择保险公司
  128. uploadFiles: false, //上传文件
  129. uploadImgs: false, //上传单个图片
  130. pic: false, //多个图片
  131. addDevice: false,
  132. systemType: false,
  133. details: false, //详情页
  134. changeRea: false,
  135. lookPic: false //图片查看
  136. },
  137. qrcodeUrl: "", //二维码图片地址
  138. filesArr: [], //保存临时的文件key
  139. imgsArr: [], //临时保存的图片key数组
  140. picsArr: [], //临时设备图片keys数组
  141. systemId: null,
  142. graphyId: null,
  143. mess: {},
  144. id: 0,
  145. readArr: ["A1","A2","B1","C5","D1","D2","E1","F1","F2","L","L1","L2","M"],
  146. EquipmentList: [],
  147. firmId: "" //品牌型号所需字段
  148. };
  149. },
  150. computed: {
  151. ...mapGetters("layout", ["projectId", "secret", "userId"])
  152. },
  153. created() {
  154. this.category = this.$route.params;
  155. this.category.ParentId = this.category.Code.substr(0, 4);
  156. this.mess = {
  157. deviceId: this.category.ParentId
  158. };
  159. this.getEquipmentFamilyList();
  160. this.getTableHeader();
  161. },
  162. methods: {
  163. getEquipmentFamilyList() {
  164. getEquipmentFamily(res => {
  165. this.EquipmentList = res.Content;
  166. this.changeCader();
  167. });
  168. },
  169. // 获取表头数据(初始化表格)
  170. async getTableHeader() {
  171. let params = {
  172. PageNumber: 1,
  173. PageSize: 500,
  174. Filters: `type='Equipment' or type='${this.category.Code}'`
  175. };
  176. await getDataDictionary(params, res => {
  177. let response = res;
  178. if (response.Result == "success") {
  179. this.tableHeader = response.Content;
  180. this.initTable();
  181. } else {
  182. this.$message.error("请求错误:" + response.Result);
  183. }
  184. });
  185. },
  186. // 创建设备数据
  187. async handleCreateTableData() {
  188. let newData = this.tableData.filter(item => {
  189. let keys = Object.keys(item);
  190. keys.map(key => {
  191. //将值为空字符串的属性删除
  192. if (item[key] == "") {
  193. delete item[key];
  194. }
  195. });
  196. let newK = Object.keys(item)
  197. if ((item.Checked&&newK.length>1) || (!item.Checked&&newK.length)) {
  198. return item;
  199. }
  200. });
  201. if (!newData.length) {
  202. this.$message("创建信息为空,请录入信息后再创建!");
  203. return;
  204. }
  205. let flag = false;
  206. newData.map(item=>{
  207. if(item.Checked&&!item.EquipLocalName){
  208. flag = true;
  209. }
  210. })
  211. if (flag) {
  212. this.$message.info("存在设备的本地名称为空,请检查")
  213. return;
  214. }
  215. let params = { projectId: this.projectId }
  216. for (let i = 0; i < newData.length; i++) {
  217. let data = {
  218. ParentId: this.category.deviceId, //当前设备id
  219. Category: this.category.Code //当前设备分类
  220. };
  221. params.data = Object.assign(data, newData[i]);
  222. // await createPart(params).then(res => {
  223. // let response = res;
  224. // if(response.Result=='success'){
  225. // if(newData[i].Checked){//同时创建资产
  226. // params.data.EquipmentId = response.Id
  227. // createPropertyData(params);
  228. // }
  229. // if(i==newData.length-1){
  230. // this.$router.push({
  231. // path: "/ledger/partsmanage",
  232. // query: {
  233. // deviceId: this.category.deviceId,
  234. // typeId: this.category.ParentId
  235. // }
  236. // });
  237. // session.remove("partsAddData")
  238. // }
  239. // }
  240. // });
  241. if(newData[i].Checked){//同时创建资产
  242. await createPropertyData(params, res => {
  243. let response = res;
  244. params.data.PropertyId = response.Id;
  245. })
  246. await createPart(params, res=>{
  247. if(i==newData.length-1){
  248. this.$router.push({
  249. path: "/ledger/partsmanage",
  250. query: {
  251. deviceId: this.category.deviceId,
  252. typeId: this.category.ParentId
  253. }
  254. });
  255. session.remove("partsAddData")
  256. }
  257. })
  258. }else{
  259. await createPart(params, res=>{
  260. if(i==newData.length-1){
  261. this.$router.push({
  262. path: "/ledger/partsmanage",
  263. query: {
  264. deviceId: this.category.deviceId,
  265. typeId: this.category.ParentId
  266. }
  267. });
  268. session.remove("partsAddData")
  269. }
  270. });
  271. }
  272. }
  273. },
  274. // 删除表格行
  275. handleDeleteTableRow() {
  276. this.$message.success("删除成功");
  277. this.formaTableData();
  278. },
  279. // 添加行
  280. handleAddTableRow() {
  281. let addRowLength = this.addNum;
  282. for (let i = 0; i < addRowLength; i++) {
  283. this.tableData.push({ Checked: 1 });
  284. }
  285. this.initTable();
  286. this.formaTableData();
  287. },
  288. //修改
  289. handleUpdataTable(changeData, source) {
  290. this.formaTableData();
  291. },
  292. //保存去掉空字段的新增数据
  293. formaTableData() {
  294. let newData = this.tableData.filter(item => {
  295. let keys = Object.keys(item);
  296. keys.map(key => {
  297. //将值为空字符串的属性删除
  298. if (item[key] == "") {
  299. delete item[key];
  300. }
  301. });
  302. if (keys.length && Object.keys(item).length) {
  303. return item;
  304. }
  305. });
  306. session.set("partsAddData", newData);
  307. },
  308. //格式化表头显示的数据
  309. formatHeaderData(list) {
  310. let arr = tools.copyArr(list);
  311. arr.map(item => {
  312. item.Visible = true;
  313. });
  314. if (!this.onlyRead) {
  315. this.readArr.push("Own");
  316. }
  317. let data = showTools.tableHeadFilter(
  318. arr,
  319. this.readArr,
  320. this.onlyRead,
  321. this.isWatch,
  322. false
  323. );
  324. data.unshift("同时创建资产");
  325. return data;
  326. },
  327. formatHeaderType(list) {
  328. //格式化表头头映射的数据
  329. let arr = tools.copyArr(list);
  330. let data = showTools.tableHeaderTypes(
  331. arr,
  332. this.readArr,
  333. this.onlyRead,
  334. this.isWatch,
  335. false
  336. );
  337. data.unshift({
  338. type: "checkbox",
  339. checkedTemplate: 1,
  340. uncheckedTemplate: 0,
  341. data: "Checked",
  342. label: {
  343. position: "after"
  344. }
  345. });
  346. return data;
  347. },
  348. initTable() {
  349. //实例化表格
  350. let settings = {
  351. data: this.tableData,
  352. colHeaders: this.formatHeaderData(this.tableHeader),
  353. columns: this.formatHeaderType(this.tableHeader),
  354. rowHeights: 30,
  355. maxRows: this.tableData.length,
  356. contextMenu: {
  357. items: {
  358. remove_row: {
  359. name: "删除设备"
  360. }
  361. }
  362. },
  363. // 事件
  364. afterChange: this.handleUpdataTable, //修改后
  365. afterFilter: this.trimmedRows, //排序前
  366. afterRemoveRow: this.handleDeleteTableRow, //右键删除
  367. afterOnCellMouseDown: this.handleTdClick //鼠标点击
  368. };
  369. this.$nextTick(() => {
  370. this.tableExample = this.$refs.table.init(settings);
  371. });
  372. },
  373. //去除数组中相同的元素
  374. array_diff(a, b) {
  375. for (var i = 0; i < b.length; i++) {
  376. for (var j = 0; j < a.length; j++) {
  377. if (a[j] == b[i]) {
  378. a.splice(j, 1);
  379. j = j - 1;
  380. }
  381. }
  382. }
  383. return a;
  384. },
  385. //选择型号修改
  386. firmChange(data) {
  387. console.log(this.row)
  388. tools.setDataForKey(this.tableData[this.row],"DPSpecificationID",data.specificationId)
  389. tools.setDataForKey(this.tableData[this.row],"LedgerParam.EquipManufactor.Brand",data.brand)
  390. tools.setDataForKey(this.tableData[this.row],"LedgerParam.EquipManufactor.Specification",data.name)
  391. tools.setDataForKey(this.tableData[this.row],"LedgerParam.EquipManufactor.Manufacturer",data.venderName)
  392. for (let key in data) {
  393. if (key == "venderId") {
  394. data[key] = data[key] + "-" + data.name + "/" + data.brand;
  395. this.utilToKey(key, "venderId", data, "DPManufacturerID");
  396. }
  397. }
  398. },
  399. supplyChange(data) {
  400. let changeData = { id: data };
  401. this.utilToKey("id", "id", changeData, "SupplierContractID");
  402. },
  403. //如果选择供应商之后
  404. supplierChange(data) {
  405. tools.setDataForKey(this.tableData[this.row],"LedgerParam.SupplyPurchase.Supplier",data.name)
  406. tools.setDataForKey(this.tableData[this.row],"LedgerParam.SupplyPurchase.SupplierWeb",data.website)
  407. tools.setDataForKey(this.tableData[this.row],"LedgerParam.SupplyPurchase.SupplierContactor",data.man)
  408. tools.setDataForKey(this.tableData[this.row],"LedgerParam.SupplyPurchase.SupplierPhone",data.phone)
  409. tools.setDataForKey(this.tableData[this.row],"LedgerParam.SupplyPurchase.SupplierFax",data.fox)
  410. tools.setDataForKey(this.tableData[this.row],"LedgerParam.SupplyPurchase.SupplierEmail",data.email)
  411. for (let key in data) {
  412. if (key == "venderId") {
  413. data[key] = data[key] + "-" + data.name;
  414. this.utilToKey(key, "venderId", data, "DPSupplierID");
  415. }
  416. }
  417. },
  418. //保险合同
  419. guaranteeChange(data) {
  420. for (let key in data) {
  421. this.utilToKey(key, "insuranceNo", data, "InsuranceNum");
  422. if (key == "contractFile") {
  423. if (!!data[key]) {
  424. data[key] = [data[key]];
  425. }
  426. }
  427. this.utilToKey(key, "contractFile", data, "InsuranceFile");
  428. }
  429. },
  430. //上传文件弹窗触发事件
  431. fileChange(keys) {
  432. this.setDataToMain(keys, this.messKey, this.row);
  433. },
  434. //上传图片弹窗触发事件
  435. imgChange(keys) {
  436. this.setDataToMain(keys, this.messKey, this.row);
  437. },
  438. //维修商变更
  439. changeMaintainer(data) {
  440. tools.setDataForKey(this.tableData[this.row],"LedgerParam.OperationMainte.Maintainer",data.name)
  441. tools.setDataForKey(this.tableData[this.row],"LedgerParam.OperationMainte.MaintainerWeb",data.website)
  442. tools.setDataForKey(this.tableData[this.row],"LedgerParam.OperationMainte.MaintainerContactor",data.man)
  443. tools.setDataForKey(this.tableData[this.row],"LedgerParam.OperationMainte.MaintainerPhone",data.phone)
  444. tools.setDataForKey(this.tableData[this.row],"LedgerParam.OperationMainte.MaintainerFax",data.fox)
  445. tools.setDataForKey(this.tableData[this.row],"LedgerParam.OperationMainte.MaintainerEmail",data.email)
  446. for (let key in data) {
  447. if (key == "venderId") {
  448. data[key] = data[key] + "-" + data.name;
  449. this.utilToKey(key, "venderId", data, "DPMaintainerID");
  450. }
  451. }
  452. },
  453. //保险商变更
  454. changeInsurer(data) {
  455. tools.setDataForKey(this.tableData[this.row],"LedgerParam.InsuranceDoc.InsurerEmail",data.email)
  456. tools.setDataForKey(this.tableData[this.row],"LedgerParam.InsuranceDoc.InsurerFax",data.fox)
  457. tools.setDataForKey(this.tableData[this.row],"LedgerParam.InsuranceDoc.InsurerPhone",data.phone)
  458. tools.setDataForKey(this.tableData[this.row],"LedgerParam.InsuranceDoc.InsurerContactor",data.man)
  459. tools.setDataForKey(this.tableData[this.row],"LedgerParam.InsuranceDoc.InsurerWeb",data.website)
  460. tools.setDataForKey(this.tableData[this.row],"LedgerParam.InsuranceDoc.Insurer",data.name)
  461. for (let key in data) {
  462. if (key == "venderId") {
  463. data[key] = data[key] + "-" + data.name;
  464. this.utilToKey(key, "venderId", data, "DPInsurerID");
  465. }
  466. }
  467. },
  468. //设备图片弹窗改变事件
  469. changePics(keys) {
  470. this.setDataToMain(keys, this.messKey, this.row);
  471. },
  472. setGraphyId(graphyId, assetGroupList) {
  473. this.graphyId = graphyId;
  474. this.assetGroupList = assetGroupList;
  475. },
  476. //触发父组件change
  477. getClose(val) {
  478. this.$emit("close", val);
  479. },
  480. reset() {},
  481. //表格点击事件
  482. handleTdClick(el, rowArr) {
  483. //点击的是表头
  484. if (rowArr.row < 0) {
  485. return;
  486. }
  487. //被筛选过后的数组
  488. let trimmedArr = this.trimmedRows();
  489. //是否启用了排序
  490. let isSort = this.tableExample.getPlugin("columnSorting").isSorted();
  491. if (trimmedArr.length && isSort) {
  492. let sortArr = this.myHotArr.getPlugin("columnSorting").rowsMapper
  493. .__arrayMap;
  494. let infos = this.tableData[trimmedArr[sortArr[rowArr.row]]];
  495. this.getInfors(infos, { row: sortArr[rowArr.row], col: rowArr.col });
  496. } else if (isSort) {
  497. //排序后的数组
  498. let sortArr = this.tableExample.getPlugin("columnSorting").rowsMapper
  499. .__arrayMap;
  500. let infos = this.tableData[sortArr[rowArr.row]];
  501. this.getInfors(infos, { row: sortArr[rowArr.row], col: rowArr.col });
  502. } else if (trimmedArr.length) {
  503. let infos = this.tableData[trimmedArr[rowArr.row]];
  504. this.getInfors(infos, { row: trimmedArr[rowArr.row], col: rowArr.col });
  505. } else {
  506. let infos = this.tableData[rowArr.row];
  507. this.getInfors(infos, rowArr);
  508. }
  509. },
  510. //获取被筛选掉的行号
  511. trimmedRows() {
  512. var plugin = this.tableExample.getPlugin("trimRows").trimmedRows;
  513. let dataLength = this.tableData.length;
  514. let dataArr = new Array();
  515. for (let i = 0; i < dataLength; i++) {
  516. dataArr.push(i);
  517. }
  518. if (plugin.length <= 0) {
  519. dataArr = undefined;
  520. } else {
  521. dataArr = this.array_diff(dataArr, plugin);
  522. }
  523. return dataArr || [];
  524. },
  525. getInfors(infos, row) {
  526. //其他的开始判断
  527. let val = this.tableExample.colToProp(row.col);
  528. //设备二维码图片
  529. if (val == "EquipQRCode") {
  530. this.myDialog.qrcode = true;
  531. this.$refs.qrcode.getCanvas(1111);
  532. }
  533. //关联系统
  534. if (val == "linkSystem") {
  535. // this.systemList = this.tableData[row.row].linkSystem || [];
  536. this.myDialog.systemType = true;
  537. }
  538. //品牌型号弹窗
  539. if (val == "DPManufacturerID") {
  540. this.myDialog.firm = true;
  541. }
  542. //供应商信息弹窗
  543. if (val == "DPSupplierID") {
  544. this.myDialog.supplier = true;
  545. }
  546. //维修商信息弹窗
  547. if (val == "DPMaintainerID") {
  548. this.myDialog.maintainer = true;
  549. }
  550. //保险公司信息
  551. if (val == "DPInsurerID") {
  552. this.myDialog.insurer = true;
  553. }
  554. //供应合同编号
  555. if (val == "LedgerParam.SupplyPurchase.SupplierContractID") {
  556. let falg = null;
  557. let data = this.tableData[row.row].DPSupplierID;
  558. if (data) {
  559. falg = data.split("-")[0];
  560. }
  561. if (!!falg) {
  562. this.id = falg;
  563. this.myDialog.supply = true;
  564. } else {
  565. this.$message("请先选择供应商");
  566. }
  567. }
  568. //保险单号
  569. if (val == "LedgerParam.InsuranceDoc.InsuranceNum") {
  570. //选择保单
  571. let falg = null;
  572. let data = this.tableData[row.row].DPInsurerID
  573. if (data) {
  574. falg = data.split("-")[0];
  575. }
  576. if (!!falg) {
  577. this.id = falg;
  578. this.myDialog.guarantee = true;
  579. } else {
  580. this.$message("请先选择保险商");
  581. }
  582. }
  583. //保险文件--设备文档--安装质检报告
  584. if (
  585. val == "LedgerParam.InsuranceDoc.InsuranceFile" ||
  586. val == "LedgerParam.PhotoDoc.Archive" ||
  587. val == "LedgerParam.Siteinstall.CheckReport"
  588. ) {
  589. let data = tools.dataForKey(this.tableData[row.row], val)
  590. this.filesArr = data? data: []
  591. // this.filesArr = this.tableData[row.row].infos
  592. // ? this.tableData[row.row].infos[val.split(".")[1]]
  593. // ? [this.tableData[row.row].infos[val.split(".")[1]]]
  594. // : []
  595. // : [];
  596. this.myDialog.uploadFiles = true;
  597. }
  598. //安装照片--安装图纸--设备铭牌照片--设备图纸
  599. if (
  600. val == "LedgerParam.Siteinstall.InstallPic" ||
  601. val == "LedgerParam.Siteinstall.InstallDrawing" ||
  602. val == "LedgerParam.PhotoDoc.Nameplate" ||
  603. val == "LedgerParam.PhotoDoc.Drawing"
  604. ) {
  605. let data = tools.dataForKey(this.tableData[row.row], val)
  606. this.imgsArr = data? data: []
  607. // if (val == "LedgerParam.PhotoDoc.Nameplate") {
  608. // this.imgsArr = this.tableData[row.row].infos
  609. // ? this.tableData[row.row].infos[val.split(".")[1]]
  610. // ? [this.tableData[row.row].infos[val.split(".")[1]].key]
  611. // : []
  612. // : [];
  613. // } else {
  614. // this.imgsArr = this.tableData[row.row].infos
  615. // ? this.tableData[row.row].infos[val.split(".")[1]]
  616. // ? [this.tableData[row.row].infos[val.split(".")[1]]]
  617. // : []
  618. // : [];
  619. // }
  620. this.myDialog.uploadImgs = true;
  621. }
  622. //设备照片
  623. if (val == "LedgerParam.PhotoDoc.Pic") {
  624. let data = tools.dataForKey(this.tableData[row.row], val)
  625. this.picsArr = data? data: []
  626. // this.picsArr = this.tableData[row.row].infos
  627. // ? this.tableData[row.row].infos[val.split(".")[1]]
  628. // ? this.tableData[row.row].infos[val.split(".")[1]]
  629. // : []
  630. // : [];
  631. this.myDialog.pic = true;
  632. }
  633. this.row = row.row;
  634. this.messKey = val;
  635. },
  636. //修改设备类型
  637. changeCader() {
  638. this.EquipmentList.map(item => {
  639. if (!!item.content && item.content.length) {
  640. item.content.map(child => {
  641. if (child.code == this.mess.deviceId) {
  642. this.firmId = item.code;
  643. }
  644. });
  645. }
  646. });
  647. },
  648. utilToKey(key, name, data, messName) {
  649. if (key == name) {
  650. this.setDataToMain(data[key], messName, this.row);
  651. }
  652. },
  653. //判断是否有值,有值赋值
  654. setDataToMain(data, key, row) {
  655. if (!!data && data != "--") {
  656. if (!!this.tableData[row]) {
  657. //铭牌照片特殊处理
  658. tools.setDataForKey(this.tableData[row], key, data)
  659. // this.tableData[row][key] = data;
  660. } else {
  661. this.tableData[row] = {};
  662. tools.setDataForKey(this.tableData[row], key, data)
  663. }
  664. } else {
  665. tools.setDataForKey(this.tableData[row], key, "")
  666. }
  667. }
  668. }
  669. };
  670. </script>
  671. <style lang="less" scoped>
  672. #deviceList {
  673. overflow: hidden;
  674. height: 100%;
  675. background-color: #fff;
  676. padding: 10px;
  677. position: relative;
  678. .right {
  679. background: #fff;
  680. }
  681. .search-header {
  682. overflow: hidden;
  683. padding: 0 10px 10px 10px;
  684. border-bottom: 1px solid #bcbcbc;
  685. }
  686. .tableBox {
  687. display: flex;
  688. height: calc(100% - 100px);
  689. margin-top: 10px;
  690. .tableLeft {
  691. flex: 1;
  692. }
  693. }
  694. .create_button {
  695. margin-top: 10px;
  696. }
  697. }
  698. </style>