AssetInventoryRandomSearch.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874
  1. <template>
  2. <div>
  3. <div class="grid-container">
  4. <div class="grid-item-row1-column1">
  5. <div class="btn-group m-panel" role="group">
  6. <button
  7. type="button"
  8. class="btn btn-success"
  9. @click="getAssetInstance(false)"
  10. >
  11. {{ $t("lang.AssetInventorySearch.query") }}
  12. </button>
  13. <button
  14. type="button"
  15. class="btn btn-info"
  16. @click="generateAssetInventoryLine"
  17. >
  18. 加入盘点清单(已选择:{{ checkedIds.length }})
  19. </button>
  20. <button type="button" class="btn btn-danger" @click="clearFilter">
  21. {{ $t("lang.AssetInventorySearch.empty") }}
  22. </button>
  23. </div>
  24. </div>
  25. <div class="grid-item-row2-column1">
  26. <div>
  27. <div class="panel panel-default m-panel">
  28. <div
  29. class="panel-heading"
  30. @click="type == 1 ? (type = 0) : (type = 1)"
  31. >
  32. {{ $t("lang.AssetInventorySearch.ownerDepartment") }}
  33. </div>
  34. <div v-show="type == 1" class="panel-body">
  35. <ClientOrganizationTree
  36. ref="organization"
  37. :ids="assetInventoryOrganizationIds"
  38. @select-changed="selectChanged"
  39. />
  40. </div>
  41. </div>
  42. <div class="panel panel-default m-panel">
  43. <div
  44. class="panel-heading"
  45. @click="type == 3 ? (type = 0) : (type = 3)"
  46. >
  47. {{ $t("lang.AssetInventorySearch.useDepartment") }}
  48. </div>
  49. <div v-show="type == 3" class="panel-body">
  50. <ClientOrganizationTree
  51. ref="responseOrganization"
  52. :ids="assetInventoryResponseOrganizationIds"
  53. @select-changed="selectChanged"
  54. />
  55. </div>
  56. </div>
  57. <div class="panel panel-default m-panel">
  58. <div
  59. class="panel-heading"
  60. @click="type == 2 ? (type = 0) : (type = 2)"
  61. >
  62. {{ $t("lang.AssetInventorySearch.category") }}
  63. </div>
  64. <div v-show="type == 2" class="panel-body">
  65. <div>
  66. <AssetCategoryTree
  67. ref="assetCategory"
  68. :ids="assetInventoryCategoryIds"
  69. @select-changed="selectChanged"
  70. />
  71. </div>
  72. </div>
  73. </div>
  74. <div class="panel panel-default m-panel">
  75. <div
  76. class="panel-heading"
  77. @click="type == 4 ? (type = 0) : (type = 4)"
  78. >
  79. {{ $t("lang.AssetInventorySearch.project") }}
  80. </div>
  81. <div v-show="type == 4" class="panel-body">
  82. <div>
  83. <ProjectItemTree
  84. ref="projectItem"
  85. :ids="assetInventoryProjectItemIds"
  86. @select-changed="selectChanged"
  87. />
  88. </div>
  89. </div>
  90. </div>
  91. </div>
  92. <div>
  93. <div class="panel panel-default m-panel">
  94. <div
  95. class="panel-heading"
  96. @click="type == 6 ? (type = 0) : (type = 6)"
  97. >
  98. 其他筛选条件
  99. </div>
  100. <div v-show="type == 6" class="panel-body">
  101. <div>资产价值</div>
  102. <div class="form-group">
  103. <input
  104. v-model="filter.orginalValue1"
  105. autocomplete="off"
  106. type="number"
  107. class="form-control"
  108. />
  109. </div>
  110. <div class="form-group">
  111. <label class="control-label">~</label>
  112. <input
  113. v-model="filter.orginalValue2"
  114. autocomplete="off"
  115. type="number"
  116. class="form-control"
  117. />
  118. </div>
  119. <div>上一次抽盘时间</div>
  120. <div class="form-group">
  121. <div class="input-group">
  122. <Date
  123. v-model="filter.lastRandomlyCheckDate1"
  124. />
  125. </div>
  126. </div>
  127. <div class="form-group">
  128. <label class="control-label">~</label>
  129. <div class="input-group">
  130. <Date
  131. v-model="filter.lastRandomlyCheckDate2"
  132. />
  133. </div>
  134. </div>
  135. <div>放置位置</div>
  136. <SearchWidget
  137. :info-window-no="'109494'"
  138. :field="locationField"
  139. :field-value="locationFieldValue"
  140. :display-name="locationField.listFieldNames"
  141. :where-clause-source="whereClauseSource"
  142. @value-changed="locationValueChanged"
  143. />
  144. </div>
  145. </div>
  146. </div>
  147. </div>
  148. <div class="grid-item-row2-column2">
  149. <table class="fixed-table table-striped table-bordered">
  150. <thead>
  151. <tr>
  152. <th style="width: 100px">
  153. {{ $t("lang.AssetInventorySearch.serialNumber") }}
  154. </th>
  155. <th style="width: 50px">
  156. <input
  157. autocomplete="off"
  158. type="checkbox"
  159. :checked="allChecked"
  160. @click="isAllChecked()"
  161. />
  162. </th>
  163. <th style="width: 130px">
  164. {{ $t("lang.AssetInventorySearch.ownerClient") }}
  165. </th>
  166. <th style="width: 130px">
  167. {{ $t("lang.AssetInventorySearch.ownerDepartment") }}
  168. </th>
  169. <th style="width: 130px">
  170. {{ $t("lang.AssetInventorySearch.useClient") }}
  171. </th>
  172. <th style="width: 130px">
  173. {{ $t("lang.AssetInventorySearch.useDepartment") }}
  174. </th>
  175. <th style="width: 130px">
  176. {{ $t("lang.AssetInventorySearch.assetName") }}
  177. </th>
  178. <th style="width: 130px">
  179. {{ $t("lang.AssetInventorySearch.assetNumber") }}
  180. </th>
  181. <th style="width: 130px">
  182. {{ $t("lang.AssetInventorySearch.cardNumber") }}
  183. </th>
  184. <th style="width: 130px">
  185. {{ $t("lang.AssetInventorySearch.type") }}
  186. </th>
  187. <th style="width: 130px">
  188. {{ $t("lang.AssetInventorySearch.assetClassification") }}
  189. </th>
  190. <th style="width: 130px">
  191. {{ $t("lang.AssetInventorySearch.subordinateToTheProject") }}
  192. </th>
  193. <th style="width: 90px">
  194. {{ $t("lang.AssetInventorySearch.originalValue") }}
  195. </th>
  196. <th style="width: 100px">
  197. {{ $t("lang.AssetInventorySearch.placeOfPlacement") }}
  198. </th>
  199. <th style="width: 100px">
  200. {{ $t("lang.AssetInventorySearch.placementLocation") }}
  201. </th>
  202. <th style="width: 100px">
  203. {{ $t("lang.AssetInventorySearch.unitOfMeasurement") }}
  204. </th>
  205. <th style="width: 100px">
  206. {{ $t("lang.AssetInventorySearch.user") }}
  207. </th>
  208. <th style="width: 100px">
  209. {{ $t("lang.AssetInventorySearch.usageStatus") }}
  210. </th>
  211. <th style="width: 100px">
  212. {{ $t("lang.AssetInventorySearch.userInput") }}
  213. </th>
  214. <th style="width: 130px">
  215. {{ $t("lang.AssetInventorySearch.licensePlate") }}
  216. </th>
  217. <th style="width: 130px">
  218. {{ $t("lang.AssetInventorySearch.selfNumbering") }}
  219. </th>
  220. <th style="width: 130px">
  221. {{ $t("lang.AssetInventorySearch.startUseDate") }}
  222. </th>
  223. <th style="width: 130px">
  224. {{ $t("lang.AssetInventorySearch.remarks") }}
  225. </th>
  226. </tr>
  227. </thead>
  228. <tbody>
  229. <tr
  230. v-for="(assetInstance, index) in assetInstances"
  231. :key="assetInstance.id"
  232. @dblclick="openCurdWindow(assetInstance)"
  233. >
  234. <td>
  235. {{
  236. index +
  237. 1 +
  238. (pagination.current_page - 1) *
  239. pagination.per_page
  240. }}
  241. </td>
  242. <td>
  243. <input
  244. id="assetInstance.id"
  245. v-model="checkedIds"
  246. autocomplete="off"
  247. type="checkbox"
  248. :value="assetInstance.id"
  249. />
  250. </td>
  251. <td>{{ assetInstance.clientName }}</td>
  252. <td>{{ assetInstance.organizationName }}</td>
  253. <td>{{ assetInstance.responseClientName }}</td>
  254. <td>{{ assetInstance.responseOrganizationName }}</td>
  255. <td>{{ assetInstance.name }}</td>
  256. <td>{{ assetInstance.assetNo }}</td>
  257. <td>{{ assetInstance.no }}</td>
  258. <td>{{ assetInstance.type }}</td>
  259. <td>{{ assetInstance.categoryName }}</td>
  260. <td>{{ assetInstance.projectItemName }}</td>
  261. <td>{{ assetInstance.orginalValue }}</td>
  262. <td>{{ assetInstance.savePosition }}</td>
  263. <td>{{ assetInstance.locationName }}</td>
  264. <td>{{ assetInstance.computationUnitName }}</td>
  265. <td>{{ assetInstance.useUserName }}</td>
  266. <td>{{ assetInstance.useStatusName }}</td>
  267. <td>{{ assetInstance.useUserNameInput }}</td>
  268. <td>{{ assetInstance.vehicleNo }}</td>
  269. <td>{{ assetInstance.selfNo }}</td>
  270. <td>{{ assetInstance.depreciationStartDate }}</td>
  271. <td>{{ assetInstance.description }}</td>
  272. </tr>
  273. </tbody>
  274. </table>
  275. </div>
  276. <div class="grid-item-row3-column2">
  277. <div>
  278. <p class="bg-success m-grid-footer">
  279. {{ $t("lang.AssetInventorySearch.totalOfOriginalValue") }}:{{
  280. orginalValueTotal
  281. }}
  282. </p>
  283. </div>
  284. </div>
  285. <div class="grid-item-row4-column2">
  286. <div>
  287. <div class="pull-left">
  288. <span>{{ $t("lang.AssetInventorySearch.the")
  289. }}{{ (pagination.current_page - 1) * pagination.per_page + 1 }}-{{
  290. pagination.current_page * pagination.per_page
  291. }}{{ $t("lang.AssetInventorySearch.strip") }},{{
  292. $t("lang.AssetInventorySearch.inTotal")
  293. }}{{ pagination.total
  294. }}{{ $t("lang.AssetInventorySearch.strip") }},{{
  295. $t("lang.AssetInventorySearch.eachPage")
  296. }}</span>
  297. <PageSizeSelect @page-size-changed="pageSizeChanged" />
  298. <span>{{ $t("lang.AssetInventorySearch.strip") }}</span>
  299. </div>
  300. <div class="pull-right">
  301. <VueBootstrapPagination :pagination="pagination" :callback="pageStartChanged" />
  302. </div>
  303. </div>
  304. </div>
  305. </div>
  306. <div class="flex-container-1">
  307. <div class="flex-content-1">
  308. <div class="flex-main-1">
  309. <div>
  310. <div class="flex-container-2">
  311. <div class="flex-header-2">
  312. <div class="m-row" />
  313. </div>
  314. <div class="flex-content-2">
  315. <div class="flex-main-2" />
  316. </div>
  317. </div>
  318. </div>
  319. </div>
  320. </div>
  321. </div>
  322. <Loading v-if="loading" />
  323. </div>
  324. </template>
  325. <script>
  326. import Common from '../../common/Common.js';
  327. import AssetInstanceResource from '../../api/asset/AssetInstanceResource.js';
  328. import AssetInventoryResource from '../../api/asset/AssetInventoryResource.js';
  329. import AssetInventoryLineResource from '../../api/asset/AssetInventoryLineResource.js';
  330. import ClientOrganizationTree from '../../widget/ClientOrganizationTree.vue';
  331. import ProjectItemTree from '../../widget/ProjectItemTree.vue';
  332. import AssetCategoryTree from '../../widget/AssetCategoryTree.vue';
  333. import { Notify, Uuid } from 'pc-component-v3';
  334. export default {
  335. components: {
  336. Date,
  337. ProjectItemTree,
  338. AssetCategoryTree,
  339. ClientOrganizationTree,
  340. },
  341. props: {
  342. assetInventoryId: {
  343. type: Number,
  344. default: null,
  345. },
  346. },
  347. data: function () {
  348. return {
  349. assetInventory: {}, // 资产盘点
  350. clientOrganizations: [], // 所属部门
  351. responseClientOrganizations: [], // 使用部门
  352. categories: [], // 资产类别
  353. projectItems: [], // 项目类别
  354. type: null, //全盘搜索条件
  355. assetInstances: [],
  356. filter: {
  357. //抽盘过滤
  358. orginalValue1: null,
  359. orginalValue2: null,
  360. lastRandomlyCheckDate1: '',
  361. lastRandomlyCheckDate2: '',
  362. },
  363. additionalHql: '',
  364. pagination: {
  365. total: 0,
  366. per_page: Common.pageSize, // required
  367. current_page: 1, // required
  368. last_page: 1, // required
  369. },
  370. totalCount: 0,
  371. orginalValueTotal: 0,
  372. totalAmountOfImpairmentTotal: 0,
  373. netSalvageTotal: 0,
  374. uuid: Uuid.createUUID(),
  375. assetInventoryOrganizationIds: [], // 盘点单中已经选中的使用部门
  376. assetInventoryResponseOrganizationIds: [], // 盘点单中已经选中的所属部门
  377. assetInventoryCategoryIds: [], // 盘点单中已经选中的资产类别
  378. assetInventoryProjectItemIds: [], // 盘点单中已经选择的项目
  379. locationField: {
  380. name: '',
  381. listFieldNames: 'name',
  382. },
  383. locationFieldValue: {
  384. id: {},
  385. displayValue: [''],
  386. fieldType: 'Key',
  387. },
  388. checkedIds: [],
  389. whereClauseSource: {
  390. customerDataDimensions:[{
  391. fieldName: 'client.id',
  392. dataDimensionTypeNo: '202201191757',
  393. defaultDataDimensionTypeValueNo: '1',
  394. }],
  395. },
  396. loading: false,
  397. };
  398. },
  399. computed: {
  400. allChecked: function () {
  401. for (
  402. let index = 0, size = this.assetInstances.length;
  403. index < size;
  404. index++
  405. ) {
  406. if (this.checkedIds.indexOf(this.assetInstances[index].id) < 0) {
  407. return false;
  408. }
  409. }
  410. return true;
  411. },
  412. },
  413. mounted: function () {
  414. var _self = this;
  415. _self.getAssetInventory();
  416. // 固定行
  417. _self.fixedTableHeader();
  418. // 可调整表格列宽
  419. _self.$nextTick(function () {
  420. $('.fixed-table').resizableColumns();
  421. });
  422. },
  423. methods: {
  424. /**
  425. * 执行全选/全不选
  426. */
  427. isAllChecked: function () {
  428. var _self = this;
  429. if (_self.allChecked == false) {
  430. _self.assetInstances.forEach(function (item) {
  431. _self.checkedIds.push(item.id);
  432. });
  433. } else {
  434. _self.assetInstances.forEach(function (item) {
  435. let index = _self.checkedIds.indexOf(item.id);
  436. _self.checkedIds.splice(index, 1);
  437. });
  438. }
  439. },
  440. /**
  441. * 选择的房间发生了改变
  442. */
  443. locationValueChanged: function (newFieldValue) {
  444. this.locationFieldValue = newFieldValue;
  445. if (this.locationFieldValue != null) {
  446. this.filter.locationId = this.locationFieldValue.id;
  447. } else {
  448. this.filter.locationId = null;
  449. }
  450. },
  451. selectChanged: function () {
  452. var _self = this;
  453. _self.getAssetInstance(false);
  454. },
  455. /**
  456. * 查询盘点单DTO,
  457. * 主要是获取资产盘点中的所属部门集合、使用部门集合、资产类别结合。
  458. * @author yangzhijie 20200806
  459. */
  460. getAssetInventory: function () {
  461. var _self = this;
  462. AssetInventoryResource.getResponseOrganizationsAndOrganizationsAndCategory(
  463. _self.assetInventoryId,
  464. ).then(
  465. baseObjectResponse => {
  466. if(baseObjectResponse.errorCode == 0){
  467. _self.assetInventoryOrganizationIds = baseObjectResponse.data.organizationIds;
  468. _self.$refs.organization.setSelectedIds(
  469. _self.assetInventoryOrganizationIds,
  470. );
  471. _self.assetInventoryResponseOrganizationIds = baseObjectResponse.data.responseOrganizationIds;
  472. _self.$refs.responseOrganization.setSelectedIds(
  473. _self.assetInventoryResponseOrganizationIds,
  474. );
  475. _self.assetInventoryCategoryIds = baseObjectResponse.data.categoryIds;
  476. _self.$refs.assetCategory.setSelectedIds(
  477. _self.assetInventoryCategoryIds,
  478. );
  479. _self.assetInventoryProjectItemIds = baseObjectResponse.data.projectIds;
  480. _self.$refs.projectItem.setSelectedIds(
  481. _self.assetInventoryProjectItemIds,
  482. );
  483. _self.assetInventory = baseObjectResponse.data;
  484. // 查询资产卡片的数据
  485. _self.getAssetInstance(false);
  486. }else{
  487. Notify.error('提示', baseObjectResponse.errorMessage, false);
  488. }
  489. },
  490. xmlHttpRequest => {
  491. Common.processException(xmlHttpRequest);
  492. },
  493. );
  494. },
  495. /**
  496. * 根据界面选中的所属部门、使用部门、资产类别、项目查询资产清单
  497. * @author yangzhijie 20200806
  498. */
  499. getAssetInstance: function (isPageChange) {
  500. var _self = this;
  501. if (!isPageChange) {
  502. _self.pagination.current_page = 1;
  503. _self.checkedIds.splice(0, _self.checkedIds.length);
  504. }
  505. // 盘点状态
  506. var projectItemIds = _self.$refs.projectItem.getSelectedIds();
  507. var organizationIds = _self.$refs.organization.getSelectedIds();
  508. var responseOrganizationIds =
  509. _self.$refs.responseOrganization.getSelectedIds();
  510. var categoryIds = _self.$refs.assetCategory.getSelectedIds();
  511. _self.clearPageData();
  512. _self.loading=true;
  513. if (_self.filter.orginalValue1 == '') {
  514. _self.filter.orginalValue1 = null;
  515. }
  516. if (_self.filter.orginalValue2 == '') {
  517. _self.filter.orginalValue2 = null;
  518. }
  519. _self.filter.assetDecrease = 0;
  520. // 账套时间
  521. _self.filter.depreciationStartDate2 = _self.assetInventory.accountDate;
  522. var obj = {
  523. organizationIds: organizationIds,
  524. assetCategoryIds: categoryIds,
  525. responseOrganizationIds: responseOrganizationIds,
  526. projectItemIds: projectItemIds,
  527. filter: _self.filter,
  528. range: {
  529. start:
  530. (_self.pagination.current_page - 1) * _self.pagination.per_page,
  531. length: _self.pagination.per_page,
  532. },
  533. inventoryStatus: 'RANDOM_STOCKTAKING',
  534. };
  535. AssetInstanceResource.getByOrganizationAndCategory(obj).then(
  536. data => {
  537. if(data.errorCode == 0) {
  538. _self.redrawAssetInstance(data.data);
  539. _self.loading=false;
  540. } else {
  541. Notify.error('提示', data.errorMessage, false);
  542. }
  543. },
  544. xmlHttpRequest => {
  545. Common.processException(xmlHttpRequest);
  546. },
  547. );
  548. },
  549. /**
  550. * 生成资产盘点明细
  551. * @author YangZhiJie 20200806
  552. */
  553. generateAssetInventoryLine: function () {
  554. var _self = this;
  555. if (_self.checkedIds == null || _self.checkedIds.length == 0) {
  556. Notify.error('错误', '请先选择抽盘数据。');
  557. return;
  558. }
  559. let assetInventoryLineSaveDtos = [];
  560. _self.checkedIds.forEach(function (assetInstanceId) {
  561. let assetInventoryLineSaveDto = {
  562. assetInventoryId: _self.assetInventoryId,
  563. assetInstanceId: assetInstanceId,
  564. };
  565. assetInventoryLineSaveDtos.push(assetInventoryLineSaveDto);
  566. });
  567. AssetInventoryLineResource.saveAssetInventoryLine(
  568. assetInventoryLineSaveDtos,
  569. ).then(
  570. baseListResponse => {
  571. if(baseListResponse.errorCode == 0){
  572. let successCount = 0;
  573. let repeatCount = 0;
  574. let errorCount = 0;
  575. if (baseListResponse.datas && baseListResponse.datas.length > 0) {
  576. baseListResponse.datas.forEach(function (successData) {
  577. if (successData.errorCode === 0) {
  578. successCount++;
  579. } else if (successData.errorCode === 6) {
  580. repeatCount++;
  581. } else {
  582. errorCount++;
  583. console.error('盘点明细数据保存失败,%o', successData);
  584. }
  585. });
  586. let message = '';
  587. if (successCount > 0) {
  588. message = message + successCount + '条盘点明细生成成功。\r\n';
  589. }
  590. if (repeatCount > 0) {
  591. message =
  592. message +
  593. repeatCount +
  594. '条数据已经生成了盘点明细,不需要重复生成。\r\n';
  595. }
  596. if (errorCount > 0) {
  597. message =
  598. message + errorCount + '条数据生成盘点明细数据失败。\r\n';
  599. }
  600. Notify.success('操作结果', message);
  601. _self.checkedIds.splice(0, _self.checkedIds.length);
  602. }
  603. }else{
  604. Notify.error('提示', baseListResponse.errorMessage, false);
  605. }
  606. },
  607. errorData => {
  608. Common.processException(errorData);
  609. },
  610. );
  611. },
  612. /**
  613. * 重新绘制资产卡片
  614. * @author YangZhiJie 20200806
  615. */
  616. redrawAssetInstance: function (data) {
  617. var _self = this;
  618. console.log(data);
  619. _self.assetInstances = data.dataList;
  620. _self.pagination.total = data.totalSize;
  621. _self.pagination.last_page = Math.ceil(
  622. data.totalSize / data.range.length,
  623. );
  624. _self.totalCount = data.totalSize;
  625. _self.orginalValueTotal = data.totalOrginalValue;
  626. _self.totalAmountOfImpairmentTotal = data.totalAmountOfImpairment;
  627. _self.netSalvageTotal = data.totalNetSalvage;
  628. _self.fixedTableHeader();
  629. },
  630. /**
  631. * 清空分页数据
  632. * @author YangZhiJie 20200806
  633. */
  634. clearPageData: function () {
  635. var data = {
  636. dataList: [],
  637. totalSize: 0,
  638. range: {
  639. start: 0,
  640. length: this.pagination.per_page,
  641. },
  642. totalOrginalValue: 0,
  643. totalAmountOfImpairment: 0,
  644. totalNetSalvage: 0,
  645. };
  646. this.redrawAssetInstance(data);
  647. },
  648. /**
  649. * 清空界面的搜索条件
  650. * @author YangZhiJie 20200806
  651. * @author XiongLiuJie 20211119
  652. */
  653. clearFilter: function () {
  654. this.filter.orginalValue1 = null;
  655. this.filter.orginalValue2 = null;
  656. this.filter.assetDecrease = 0;
  657. // 账套时间
  658. this.filter.depreciationStartDate2 = this.assetInventory.accountDate;
  659. // 上一次抽盘时间
  660. this.filter.lastRandomlyCheckDate1 = null;
  661. this.filter.lastRandomlyCheckDate2 = null;
  662. this.initTreeData();
  663. this.getAssetInstance(false);
  664. },
  665. /**
  666. * 初始化数据
  667. * @author LeiGuoXian
  668. * @date 2020-09-15
  669. */
  670. initTreeData: function () {
  671. var _self = this;
  672. _self.$refs.projectItem.initProjectItem1();
  673. _self.$refs.organization.initClientOrganization1();
  674. _self.$refs.responseOrganization.initClientOrganization1();
  675. _self.$refs.assetCategory.initAssetCategory1();
  676. },
  677. /**
  678. * 表格显示行数发生改变
  679. * @author YangZhiJie 20200806
  680. */
  681. pageSizeChanged: function (newPageSize) {
  682. this.pagination.per_page = newPageSize;
  683. this.pagination.current_page = 1;
  684. this.getAssetInstance(true);
  685. },
  686. /**
  687. * 页数发生变化
  688. * @author YangZhiJie 20200806
  689. */
  690. pageStartChanged: function () {
  691. this.getAssetInstance(true);
  692. },
  693. /**
  694. * 冻结表头
  695. */
  696. fixedTableHeader: function () {
  697. var _self = this;
  698. _self.$nextTick(function () {
  699. $('.fixed-table').tableFixer({
  700. head: true,
  701. });
  702. });
  703. // 给table的外面的div设置固定的高度,如果不设置固定高度,无法固定表格的表头
  704. // let height = $(".flex-content").outerHeight(true) - 20;
  705. // $(".table-fixed-out").css("height", height);
  706. },
  707. /**
  708. * 打开资产卡片的CURD窗口
  709. */
  710. openCurdWindow: function (assetInstance) {
  711. let url = Common.getRedirectUrl(
  712. '#/desktop/window/window-read/view/040701/0/' +
  713. assetInstance.id +
  714. '?currPage=1&currIndex=1&totalCount=1&uuid=' +
  715. Uuid.createUUID(),
  716. );
  717. window.open(url, '资产卡片');
  718. },
  719. },
  720. };
  721. </script>
  722. <style scoped>
  723. .grid-container {
  724. margin-top: 10px;
  725. display: grid;
  726. grid-template-columns: 300px auto;
  727. grid-template-rows: 35px 1fr 40px 40px;
  728. gap: 10px;
  729. justify-items: stretch;
  730. align-items: stretch;
  731. height: calc(100vh - 170px);
  732. overflow: auto;
  733. }
  734. .grid-item-row1-column1 {
  735. grid-row-start: 1;
  736. grid-row-end: 2;
  737. grid-column-start: 1;
  738. grid-column-end: 3;
  739. }
  740. .grid-item-row2-column1 {
  741. grid-row-start: 2;
  742. grid-row-end: 5;
  743. grid-column-start: 1;
  744. grid-column-end: 2;
  745. overflow: auto;
  746. }
  747. .grid-item-row2-column2 {
  748. grid-row-start: 2;
  749. grid-row-end: 3;
  750. grid-column-start: 2;
  751. grid-column-end: 3;
  752. overflow: auto;
  753. }
  754. .grid-item-row3-column2 {
  755. grid-row-start: 3;
  756. grid-row-end: 4;
  757. grid-column-start: 2;
  758. grid-column-end: 3;
  759. }
  760. .grid-item-row4-column2 {
  761. grid-row-start: 4;
  762. grid-row-end: 5;
  763. grid-column-start: 2;
  764. grid-column-end: 3;
  765. }
  766. </style>
  767. <style scoped>
  768. .m-grid-footer {
  769. padding: 10px;
  770. }
  771. .m-panel {
  772. margin-bottom: 0px;
  773. }
  774. .fixed-table {
  775. table-layout: fixed;
  776. width: 800px !important;
  777. min-width: 800px !important;
  778. }
  779. table.fixed-table tr {
  780. height: 40px;
  781. }
  782. table.fixed-table th,
  783. table.fixed-table td {
  784. overflow: hidden;
  785. white-space: nowrap;
  786. text-overflow: ellipsis;
  787. }
  788. </style>