You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1204 lines
39 KiB

4 years ago
  1. <template>
  2. <div class="mod-config">
  3. <div>
  4. <span @click="favoriteFunction()">
  5. <icon-svg :name="favorite?'xiangqufill':'xiangqu'" class="sl-svg"></icon-svg>
  6. </span>
  7. </div>
  8. <el-form :inline="true" :model="querySysLanguagePack" @keyup.enter.native="getDataList()">
  9. <el-form-item :label="inputSearch1">
  10. <el-input style="width: 110px;" clearable placeholder="" v-model="mainQueryData.requisitionno"></el-input>
  11. </el-form-item>
  12. <el-form-item :label="inputSearch2">
  13. <el-select v-model="mainQueryData.orderType" placeholder="请选择" style="width: 110px;">
  14. <el-option
  15. key=""
  16. label="全部"
  17. value="">
  18. </el-option>
  19. <el-option
  20. v-for="item in orderTypeList"
  21. :key="item.baseData"
  22. :label="item.baseDesc"
  23. :value="item.baseDesc">
  24. </el-option>
  25. </el-select>
  26. <!-- <el-input style="width: 110px;" clearable placeholder="" v-model="mainQueryData.orderType"></el-input>-->
  27. </el-form-item>
  28. <el-form-item :label="inputSearch3">
  29. <el-input style="width: 110px;" clearable placeholder="" v-model="mainQueryData.partno"></el-input>
  30. </el-form-item>
  31. <el-form-item :label="inputSearch4">
  32. <el-select v-model="mainQueryData.authorizeFlag" style="width: 90px;">
  33. <el-option value="" label="全部"></el-option>
  34. <el-option value="Y" label="已审批"></el-option>
  35. <el-option value="N" label="未审批"></el-option>
  36. </el-select>
  37. </el-form-item>
  38. <el-form-item>
  39. <el-button @click="getDataList('Y')" type="primary">{{buttons.search}}</el-button>
  40. <el-button @click="saveColumnList()" type="primary" v-show="showDefault">{{buttons.defaultTable}}
  41. </el-button>
  42. <el-button @click="userSetting" type="primary">{{ buttons.settingTable}}</el-button>
  43. <download-excel
  44. :fields="fields()"
  45. :data="exportData"
  46. type="xls"
  47. :name="exportName"
  48. :header="exportHeader"
  49. :footer="exportFooter"
  50. :defaultValue="exportDefaultValue"
  51. :fetch="createExportData"
  52. :before-generate="startDownload"
  53. :before-finish="finishDownload"
  54. worksheet="导出信息"
  55. class="el-button el-button--primary el-button--medium">
  56. {{buttons.download}}
  57. </download-excel>
  58. <el-button v-if="isAuth(':prd:delete')" type="danger" @click="deleteHandle()"
  59. :disabled="dataListSelections.length <= 0">{{ buttons.deleteList}}
  60. </el-button>
  61. </el-form-item>
  62. <!-- <el-button type="primary" plain @click="printReport">打印报表</el-button>-->
  63. </el-form>
  64. <el-table
  65. id="commmon"
  66. :height="height"
  67. :data="dataList"
  68. border
  69. v-loading="dataListLoading"
  70. @selection-change="selectionChangeHandle"
  71. style="width: 100%;">
  72. <el-table-column
  73. v-for="(item,index) in columnList" :key="index"
  74. :sortable="item.columnSortable"
  75. :prop="item.columnProp"
  76. :header-align="item.headerAlign"
  77. :show-overflow-tooltip="item.showOverflowTooltip"
  78. :align="item.align"
  79. :fixed="item.fixed"
  80. :width="item.columnWidth"
  81. :label="item.columnLabel">
  82. <template slot-scope="scope">
  83. <span v-if="!item.columnHidden"> {{scope.row[item.columnProp]}}</span>
  84. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  85. style="width: 100px; height: 80px"/></span>
  86. </template>
  87. </el-table-column>
  88. <el-table-column
  89. fixed="right"
  90. header-align="center"
  91. align="center"
  92. width="100"
  93. :label="buttons.operating">
  94. <template slot-scope="scope">
  95. <a v-if="scope.row.strCanAuthFlag == 'Y'" @click="initReview(scope.row)">{{buttons.audit}}</a>
  96. <span v-else>{{buttons.audit}}</span>
  97. <a @click="initFileModel(scope.row)">{{buttons.appendixInfo}}</a>
  98. </template>
  99. </el-table-column>
  100. </el-table>
  101. <el-pagination
  102. @size-change="sizeChangeHandle"
  103. @current-change="currentChangeHandle"
  104. :current-page="pageIndex"
  105. :page-sizes="[100, 200, 500]"
  106. :page-size="pageSize"
  107. :total="totalPage"
  108. layout="total, sizes, prev, pager, next, jumper">
  109. </el-pagination>
  110. <column v-if="visible" ref="column" @refreshData="getTableUserColumn"></column>
  111. <el-dialog title="申请单审核" :visible.sync="setUp.reviewFlag" width="520px" :close-on-click-modal="false"
  112. v-drag>
  113. <el-steps :active="active" style="margin: 40px">
  114. <el-step v-for=" (item,index) in reviewStepList" :key="index" :title="item.userName"></el-step>
  115. </el-steps>
  116. <div style="margin-left: 0px;margin-top: -30px" v-if="active === index" v-for=" (item,index) in reviewStepList" :key="index">
  117. <el-form :inline="true" label-width="120px" label-position="top">
  118. <el-form-item label="审批人">
  119. <el-input style="width: 200px;" readonly placeholder="" :value="item.userName"></el-input>
  120. </el-form-item>
  121. <el-form-item label="审批时间">
  122. <el-input style="width: 200px;" readonly placeholder="" :value="item.strActAuthorizeDate"></el-input>
  123. </el-form-item>
  124. <el-form-item label="审批备注">
  125. <!--<el-input style="width: 200px;" :readonly = "item.userName == saveData.userId && item.authFlag != 'Y' ? false : true" placeholder="" v-model="item.remark"></el-input>-->
  126. <el-input type="textarea" :readonly = "( reviewStepList[index].canAuthFlag == 'Y') ? false : true " :rows="3" style="text-align: left;width: 415px;" v-model="item.remark"></el-input>
  127. </el-form-item>
  128. <el-form-item>
  129. <el-button type="primary" v-if="( reviewStepList[index].canAuthFlag == 'Y') ? true : false " @click="saveReview(reviewStepList[index] ,'N')">不同意</el-button>
  130. <el-button type="primary" v-if="( reviewStepList[index].canAuthFlag == 'Y') ? true : false " @click="saveReview(reviewStepList[index],'Y')">同意</el-button>
  131. </el-form-item>
  132. </el-form>
  133. </div>
  134. <span slot="footer" class="dialog-footer">
  135. <!--<el-button type="primary" @click="naxtStep('s')">上一步</el-button>
  136. <el-button type="primary" @click="naxtStep('x')">下一步</el-button>-->
  137. </span>
  138. </el-dialog>
  139. <el-dialog title="附件信息" :visible.sync="setUp.fileFlag" width="672px" :close-on-click-modal="false"
  140. :close-on-press-escape="false" v-drag>
  141. <el-form :inline="true" label-position="top">
  142. <el-table
  143. height="170"
  144. :data="fileList"
  145. border
  146. v-loading="dataListLoading"
  147. @selection-change="selectionChangeHandle"
  148. style="width: 100%;">
  149. <el-table-column
  150. v-for="(item,index) in columnList2" :key="index"
  151. :sortable="item.columnSortable"
  152. :prop="item.columnProp"
  153. :header-align="item.headerAlign"
  154. :show-overflow-tooltip="item.showOverflowTooltip"
  155. :align="item.align"
  156. :fixed="item.fixed"
  157. :width="item.columnWidth"
  158. :label="item.columnLabel">
  159. <template slot-scope="scope">
  160. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  161. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  162. style="width: 100px; height: 80px"/></span>
  163. </template>
  164. </el-table-column>
  165. <el-table-column
  166. header-align="center"
  167. align="center"
  168. width="50"
  169. :label="buttons.operating">
  170. <template slot-scope="scope">
  171. <a @click="fileDownload(scope.row)">{{ buttons.fileDownload }}</a>
  172. </template>
  173. </el-table-column>
  174. </el-table>
  175. </el-form>
  176. </el-dialog>
  177. </div>
  178. </template>
  179. <script>
  180. import column from "../common/column";
  181. import {
  182. searchSysLanguagePackList,
  183. searchSysLanguageParam,
  184. searchFunctionButtonList,
  185. saveButtonList,
  186. searchSysLanguage,
  187. searchLanguageListByLanguageCode,
  188. saveSysLanguageOne
  189. } from "@/api/sysLanguage.js"
  190. import getLodop from '@/utils/LodopFuncs.js'
  191. import {
  192. saveTableDefaultList,
  193. saveTableUser,
  194. getTableDefaultListLanguage,
  195. getTableUserListLanguage
  196. } from "@/api/table.js"
  197. import {
  198. userFavoriteList, saveUserFavorite, removeUserFavorite
  199. } from '@/api/userFavorite.js'
  200. import {
  201. getPRHeaderList,
  202. updatePRHeader,
  203. getTblBaseDataList,
  204. getExportList,
  205. getReviewSteps,
  206. getFileList,
  207. } from '@/api/purchaseorder/procurementReview.js'
  208. import axios from "axios";
  209. import Vue from "vue";
  210. export default {
  211. components: {
  212. column
  213. },
  214. data() {
  215. return {
  216. fileList: [],
  217. active: 0,
  218. currentReviewStepData :{},
  219. reviewStepList: [],
  220. menuId: this.$route.meta.menuId,
  221. userId: this.$store.state.user.name,
  222. site : this.$store.state.user.site,
  223. saveData: {
  224. userId: this.$store.state.user.name,
  225. recordTypeDb: this.$route.meta.menuId,
  226. orderRef1 : '',
  227. orderRef2 : '',
  228. orderRef3 : '',
  229. site: this.$store.state.user.site,
  230. authRuleId: '',
  231. stepId : '',
  232. authTypeDb : '',
  233. authUserId : '',
  234. authGroupId : '',
  235. actAuthorizator : '',
  236. actAuthorizeDate : null,
  237. remark : '',
  238. authFlag : '',
  239. approveResult : '',
  240. approveResultComments : '',
  241. needAuthBeforePrintFlag : '',
  242. firstStepFlag : '',
  243. lastStepFlag : '',
  244. },
  245. orderTypeList: [],
  246. inputSearch1: '申请单号',
  247. inputSearch2: '处理类型',
  248. inputSearch3: '刀模编码',
  249. inputSearch4: '是否审批',
  250. inputSearch5: '审核意见',
  251. inputSearch6: '审核人',
  252. inputSearch7: '审核时间',
  253. inputSearch8: '附件信息',
  254. // table高度
  255. height: 450,
  256. // 是否收藏
  257. favorite: false,
  258. addLanguage: false,
  259. functionId: 2101,
  260. tableId: "review2101",
  261. value1: true,
  262. visible: false,
  263. showDefault: false,
  264. //设置
  265. setUp: {
  266. reviewFlag: false,
  267. saveButton: false,
  268. fileFlag : false,
  269. },
  270. mainQueryData: {
  271. requisitionno: '',
  272. orderType: '',
  273. partno: '',
  274. authorizeFlag: 'N',
  275. site: this.$store.state.user.site,
  276. userId: this.$store.state.user.name,
  277. strUserId: this.$store.state.user.id,
  278. limit: '',
  279. page: '',
  280. },
  281. // 默认table 查询参数
  282. queryTable: {
  283. functionId: 2101,
  284. tableId: "review2101",
  285. languageCode: this.$i18n.locale
  286. },
  287. // 用户table 查询参数
  288. queryTableUser: {
  289. userId: this.$store.state.user.name,
  290. functionId: 2101,
  291. tableId: "review2101",
  292. status: true,
  293. languageCode: this.$i18n.locale
  294. },
  295. // 语言词典查询参数
  296. querySysLanguageParam: {
  297. languageCode: this.$i18n.locale
  298. },
  299. // 语言词典集合
  300. sysLanguageParams: [],
  301. // 用户table 配置集合
  302. userColumnList: [],
  303. // 展示列集
  304. columnList: [
  305. {
  306. userId: this.$store.state.user.name,
  307. functionId: 2101,
  308. serialNumber: 'review2101RequisitionNo',
  309. tableId: "review2101",
  310. tableName: "PRHeader",
  311. columnProp: "requisitionno",
  312. headerAlign: "center",
  313. align: "left",
  314. columnLabel: "申请单单号",
  315. columnHidden: false,
  316. columnImage: false,
  317. columnSortable: false,
  318. sortLv: 0,
  319. status: true,
  320. fixed: false,
  321. // columnWidth : 100,
  322. },
  323. {
  324. userId: this.$store.state.user.name,
  325. functionId: 2101,
  326. serialNumber: 'review2101OrderType',
  327. tableId: "review2101",
  328. tableName: "PRHeader",
  329. columnProp: "orderType",
  330. headerAlign: "center",
  331. align: "left",
  332. columnLabel: "处理类型",
  333. columnHidden: false,
  334. columnImage: false,
  335. columnSortable: false,
  336. sortLv: 0,
  337. status: true,
  338. fixed: false
  339. },
  340. {
  341. userId: this.$store.state.user.name,
  342. functionId: 2101,
  343. serialNumber: 'review2101Partno',
  344. tableId: "review2101",
  345. tableName: "PRHeader",
  346. columnProp: "partno",
  347. headerAlign: "center",
  348. align: "left",
  349. columnLabel: "刀模编码",
  350. columnHidden: false,
  351. columnImage: false,
  352. columnSortable: false,
  353. sortLv: 0,
  354. status: true,
  355. fixed: false
  356. },
  357. {
  358. userId: this.$store.state.user.name,
  359. functionId: 2101,
  360. serialNumber: 'review2101Qty',
  361. tableId: "review2101",
  362. tableName: "PRHeader",
  363. columnProp: "qty",
  364. headerAlign: "center",
  365. align: "right",
  366. columnLabel: "申请数量",
  367. columnHidden: false,
  368. columnImage: false,
  369. columnSortable: false,
  370. sortLv: 0,
  371. status: true,
  372. fixed: false
  373. },
  374. {
  375. userId: this.$store.state.user.name,
  376. functionId: 2101,
  377. serialNumber: 'review2101Price',
  378. tableId: "review2101",
  379. tableName: "PRHeader",
  380. columnProp: "price",
  381. headerAlign: "center",
  382. align: "right",
  383. columnLabel: "预估价格",
  384. columnHidden: false,
  385. columnImage: false,
  386. columnSortable: false,
  387. sortLv: 0,
  388. status: true,
  389. fixed: false
  390. },
  391. {
  392. userId: this.$store.state.user.name,
  393. functionId: 2101,
  394. serialNumber: 'review2101TotalPrice',
  395. tableId: "review2101",
  396. tableName: "PRHeader",
  397. columnProp: "totalPrice",
  398. headerAlign: "center",
  399. align: "right",
  400. columnLabel: "预估总价",
  401. columnHidden: false,
  402. columnImage: false,
  403. columnSortable: false,
  404. sortLv: 0,
  405. status: true,
  406. fixed: false
  407. },
  408. {
  409. userId: this.$store.state.user.name,
  410. functionId: 2101,
  411. serialNumber: 'review2101Supplierid',
  412. tableId: "review2101",
  413. tableName: "PRHeader",
  414. columnProp: "supplierid",
  415. headerAlign: "center",
  416. align: "left",
  417. columnLabel: "供应商编码",
  418. columnHidden: false,
  419. columnImage: false,
  420. columnSortable: false,
  421. sortLv: 0,
  422. status: true,
  423. fixed: false
  424. },
  425. {
  426. userId: this.$store.state.user.name,
  427. functionId: 2101,
  428. serialNumber: 'review2101Suppliername',
  429. tableId: "review2101",
  430. tableName: "PRHeader",
  431. columnProp: "suppliername",
  432. headerAlign: "center",
  433. align: "left",
  434. columnLabel: "供应商名称",
  435. columnHidden: false,
  436. columnImage: false,
  437. columnSortable: false,
  438. sortLv: 0,
  439. status: true,
  440. fixed: false
  441. },
  442. {
  443. userId: this.$store.state.user.name,
  444. functionId: 2101,
  445. serialNumber: 'review2101AuthorizeFlag',
  446. tableId: "review2101",
  447. tableName: "PRHeader",
  448. columnProp: "approveresult",
  449. headerAlign: "center",
  450. align: "left",
  451. columnLabel: "审批结果",
  452. columnHidden: false,
  453. columnImage: false,
  454. columnSortable: false,
  455. sortLv: 0,
  456. status: true,
  457. fixed: false
  458. },
  459. ],
  460. // 展示列集
  461. columnList1: [
  462. // {
  463. // userId: this.$store.state.user.name,
  464. // functionId: 2101,
  465. // tableId: "review2101",
  466. // tableName: "commonLanguage",
  467. // columnProp: "functionId",
  468. // headerAlign: "center",
  469. // align: "center",
  470. // columnLabel: "功能编码",
  471. // columnHidden: false,
  472. // columnImage: false,
  473. // columnSortable: true,
  474. // sortLv: 0,
  475. // status: true,
  476. // fixed: false
  477. // },
  478. // {
  479. // userId: this.$store.state.user.name,
  480. // functionId: 2101,
  481. // tableId: "review2101",
  482. // tableName: "commonLanguage",
  483. // columnProp: "objectId",
  484. // headerAlign: "center",
  485. // align: "center",
  486. // columnLabel: "序列化编码",
  487. // columnHidden: false,
  488. // columnImage: false,
  489. // columnSortable: true,
  490. // sortLv: 0,
  491. // status: true,
  492. // fixed: false,
  493. // },
  494. // {
  495. // userId: this.$store.state.user.name,
  496. // functionId: 2101,
  497. // tableId: "review2101",
  498. // tableName: "commonLanguage",
  499. // columnProp: "objectType",
  500. // headerAlign: "center",
  501. // align: "center",
  502. // columnLabel: "类型",
  503. // columnHidden: false,
  504. // columnImage: false,
  505. // columnSortable: true,
  506. // sortLv: 0,
  507. // status: true,
  508. // fixed: false,
  509. // },
  510. // {
  511. // userId: this.$store.state.user.name,
  512. // functionId: 2101,
  513. // tableId: "review2101",
  514. // tableName: "commonLanguage",
  515. // columnProp: "languageValue",
  516. // headerAlign: "center",
  517. // align: "center",
  518. // columnLabel: "语言值",
  519. // columnHidden: false,
  520. // columnImage: false,
  521. // columnSortable: true,
  522. // sortLv: 0,
  523. // status: true,
  524. // fixed: false,
  525. // },
  526. // {
  527. // userId: this.$store.state.user.name,
  528. // functionId: 2101,
  529. // tableId: "review2101",
  530. // tableName: "commonLanguage",
  531. // columnProp: "languageCode",
  532. // headerAlign: "center",
  533. // align: "center",
  534. // columnLabel: "语言编码",
  535. // columnHidden: false,
  536. // columnImage: false,
  537. // columnSortable: true,
  538. // sortLv: 0,
  539. // status: true,
  540. // fixed: false,
  541. // }
  542. ],
  543. // 展示列集
  544. columnList2: [
  545. {
  546. userId: this.$store.state.user.name,
  547. functionId: 2102,
  548. tableId: "fileDetail2102",
  549. tableName: "fileDetailTable",
  550. columnProp: "fileName",
  551. headerAlign: "center",
  552. align: "center",
  553. columnLabel: "文件名称",
  554. columnHidden: false,
  555. columnImage: false,
  556. columnSortable: false,
  557. sortLv: 0,
  558. status: true,
  559. fixed: false
  560. },
  561. {
  562. userId: this.$store.state.user.name,
  563. functionId: 2102,
  564. tableId: "fileDetail2102",
  565. tableName: "fileDetailTable",
  566. columnProp: "createDate",
  567. headerAlign: "center",
  568. align: "center",
  569. columnLabel: "创建时间",
  570. columnHidden: false,
  571. columnImage: false,
  572. columnSortable: false,
  573. sortLv: 0,
  574. status: true,
  575. fixed: false,
  576. columnWidth: 135,
  577. },
  578. {
  579. userId: this.$store.state.user.name,
  580. functionId: 2102,
  581. tableId: "fileDetail2102",
  582. tableName: "fileDetailTable",
  583. columnProp: "createdBy",
  584. headerAlign: "center",
  585. align: "center",
  586. columnLabel: "创建人",
  587. columnHidden: false,
  588. columnImage: false,
  589. columnSortable: false,
  590. sortLv: 0,
  591. status: true,
  592. fixed: false,
  593. columnWidth: 70,
  594. },
  595. ],
  596. // 数据集
  597. dataList: [],
  598. queryButton: {
  599. functionId: 2101,
  600. table_id: 'review2101',
  601. languageCode: this.$i18n.locale,
  602. objectType: 'button'
  603. },
  604. buttons: {
  605. search: '查询',
  606. download: '导出',
  607. settingTable: '设置列表',
  608. defaultTable: '设置默认配置',
  609. operating: '操作',
  610. audit: '审批',
  611. reviewDetails: '审批详情',
  612. appendixInfo: '附件信息',
  613. fileDownload: '下载',
  614. },
  615. // 导出 start
  616. exportData: [],
  617. exportDataStandard: {
  618. "功能编码": "functionId",
  619. "序列化编码": "objectId",
  620. "类型": "objectType",
  621. "语言值": "languageValue"
  622. },
  623. exportName: "申请审核",
  624. exportHeader: ["申请审核"],
  625. exportFooter: [],
  626. exportDefaultValue: "这一行这一列没有数据",
  627. // 导出 end
  628. buttonList: [
  629. // {
  630. // functionId: "2101",
  631. // languageValue: '添加',
  632. // objectId: 'add',
  633. // objectType: "button",
  634. // tableId: "common1001"
  635. // },
  636. // {
  637. // functionId: "2101",
  638. // languageValue: '编辑',
  639. // objectId: 'edit',
  640. // objectType: "button",
  641. // tableId: "common1001"
  642. // },
  643. // {
  644. // functionId: "2101",
  645. // languageValue: '删除',
  646. // objectId: 'delete',
  647. // objectType: "button",
  648. // tableId: "common1001"
  649. // },
  650. // {
  651. // functionId: "2101",
  652. // languageValue: '批量删除',
  653. // objectId: 'deleteList',
  654. // objectType: "button",
  655. // tableId: "common1001"
  656. // },
  657. // {
  658. // functionId: "2101",
  659. // languageValue: '操作',
  660. // objectId: 'cz',
  661. // objectType: "button",
  662. // tableId: "common1001"
  663. // },
  664. // {
  665. // functionId: "2101",
  666. // languageValue: '查询',
  667. // objectId: 'search',
  668. // objectType: "button",
  669. // tableId: "common1001"
  670. // },
  671. // {
  672. // functionId: "2101",
  673. // languageValue: '导出',
  674. // objectId: 'download',
  675. // objectType: "button",
  676. // tableId: "common1001"
  677. // },
  678. // {
  679. // functionId: "2101",
  680. // languageValue: '设置列表',
  681. // objectId: 'settingTable',
  682. // objectType: "button",
  683. // tableId: "common1001"
  684. // },
  685. // {
  686. // functionId: "2101",
  687. // languageValue: '设置默认配置',
  688. // objectId: 'defaultTable',
  689. // objectType: "button",
  690. // tableId: "common1001"
  691. // }
  692. ],
  693. languageList: [],
  694. languageColumnList: [],
  695. languageDataList: [],
  696. queryLanguage: {},
  697. // 数据集条件
  698. querySysLanguagePack: {
  699. page: 1,
  700. limit: 1,
  701. languageValue: '',
  702. objectType: '',
  703. objectId: ''
  704. },
  705. // 分页
  706. pageIndex: 1,
  707. pageSize: 100,
  708. totalPage: 0,
  709. dataListLoading: false,
  710. dataListSelections: [],
  711. addOrUpdateVisible: false
  712. }
  713. },
  714. mounted() {
  715. this.$nextTick(() => {
  716. this.height = window.innerHeight - 240;
  717. })
  718. },
  719. activated() {
  720. this.getReviewStepList();
  721. this.getDataList()
  722. this.getLanguageList()
  723. this.initTblBaseDataList()
  724. // zufoeav
  725. },
  726. methods: {
  727. // 文件下载
  728. fileDownload(row) {
  729. axios.get('/api/ftp/file/downFtpFile/' + row.id, {
  730. responseType: 'blob',
  731. headers: {
  732. 'Content-Type': 'application/json',
  733. 'token':Vue.cookie.get('token')
  734. }
  735. }).then(({data}) => {
  736. // 不限制文件下载类型
  737. const blob = new Blob([data], {type: "application/octet-stream"})
  738. // 下载文件名称
  739. const fileName = row.fileName
  740. // a标签下载
  741. const linkNode = document.createElement('a')
  742. linkNode.download = fileName // a标签的download属性规定下载文件的名称
  743. linkNode.style.display = 'none'
  744. linkNode.href = URL.createObjectURL(blob) // 生成一个Blob URL
  745. document.body.appendChild(linkNode)
  746. linkNode.click() // 模拟在按钮上的一次鼠标单击
  747. URL.revokeObjectURL(linkNode.href) // 释放URL 对象
  748. document.body.removeChild(linkNode)
  749. })
  750. },
  751. initFileModel(row){
  752. this.getFileList(row)
  753. this.setUp.fileFlag = true
  754. },
  755. /*naxtStep(val){
  756. if (val == 's' && this.active != 0){
  757. this.active -= 1
  758. }
  759. if(this.active < this.reviewStepList.length-1 && val == 'x' ){
  760. this.active += 1
  761. }
  762. },*/
  763. //获取申请单号文件信息
  764. getFileList(row){
  765. let jsonData = {
  766. site : row.site,
  767. type : 'PRFile',
  768. associatedField1 : row.requisitionno
  769. }
  770. this.fileList = []
  771. getFileList(jsonData).then(({data}) =>{
  772. if(data.code == 0){
  773. this.fileList = data.row
  774. }
  775. })
  776. },
  777. getReviewStepList(orderRef1) {
  778. this.reviewStepList = []
  779. let queryData = {
  780. recordTypeDb: this.menuId,
  781. site: this.site,
  782. orderRef1 : orderRef1,
  783. }
  784. getReviewSteps(queryData).then(({data}) => {
  785. this.reviewStepList = data.rows
  786. let list = data.rows;
  787. for (let i = 0; i < list.length; i++) {
  788. if(list[i].userName == this.userId){
  789. this.active = i
  790. break
  791. }
  792. }
  793. })
  794. },
  795. initTblBaseDataList() {
  796. let queryData = {
  797. type: 'orderType'
  798. }
  799. getTblBaseDataList(queryData).then(({data}) => {
  800. this.orderTypeList = data.rows
  801. })
  802. },
  803. saveReview(row ,val) {
  804. this.setUp.saveButton = true
  805. this.saveData = {}
  806. if(row.remark == '' && row.authFlag == null){
  807. this.$alert(data.msg, '操作提示', {
  808. confirmButtonText: '确定',
  809. callback: action => {
  810. this.saveButton = false
  811. }
  812. });
  813. }
  814. this.saveData.orderRef1 = this.currentReviewStepData.requisitionno
  815. this.saveData.approvedFlag = val
  816. this.saveData.site = this.site
  817. this.saveData.userName = row.userName
  818. this.saveData.authRuleId = row.authRuleId
  819. this.saveData.lastStepFlag = row.lastStepFlag
  820. this.saveData.id = row.id
  821. this.saveData.approveResultComments = row.approveResultComments
  822. this.saveData.partNo = this.currentReviewStepData.partno
  823. this.saveData.partdesc = this.currentReviewStepData.partdesc
  824. this.saveData.itemNo = this.currentReviewStepData.itemno
  825. this.saveData.qty = this.currentReviewStepData.qty
  826. this.saveData.authTypeDb = row.authTypeDb
  827. this.saveData.authUserId = row.authUserId
  828. this.saveData.authGroupId = row.authGroupId
  829. this.saveData.orderType = this.currentReviewStepData.orderType
  830. this.saveData.supplierId = this.currentReviewStepData.supplierid
  831. this.saveData.supplierName = this.currentReviewStepData.suppliername
  832. this.saveData.torNumdown = 1
  833. this.saveData.torNumacc = 1
  834. this.saveData.stepId = row.stepId
  835. this.saveData.remark = row.remark
  836. if(val == "Y"){
  837. if(row.lastStepFlag == 'Y'){
  838. this.saveData.approveResult = "审批全通过"
  839. }else {
  840. this.saveData.approveResult = "审批部分通过"
  841. }
  842. }else if(val == "N"){
  843. this.saveData.approveResult = "审批未通过"
  844. }
  845. updatePRHeader(this.saveData).then(({data}) => {
  846. if(data.code == 0){
  847. this.getDataList('Y')
  848. this.getReviewStepList(this.currentReviewStepData.requisitionno)
  849. }
  850. this.$alert(data.msg, '操作提示', {
  851. confirmButtonText: '确定',
  852. callback: action => {
  853. this.saveButton = false
  854. if(data.code == 0){
  855. this.setUp.reviewFlag = false
  856. }
  857. }
  858. });
  859. })
  860. },
  861. //初始审核信息
  862. initReview(row) {
  863. this.setUp.saveButton = false
  864. this.setUp.reviewFlag = true
  865. this.currentReviewStepData = row
  866. this.saveData.requisitionno = row.requisitionno
  867. this.saveData.partNo = row.partno
  868. this.saveData.itemno = row.itemno
  869. this.saveData.qty = row.qty
  870. this.saveData.orderType = row.orderType
  871. this.saveData.suppliername = row.suppliername
  872. this.saveData.supplierid = row.supplierid
  873. this.saveData.remark = ''
  874. this.saveData.authorizeFlag = 'Y'
  875. this.getReviewStepList(this.currentReviewStepData.requisitionno)
  876. },
  877. // 打印方式
  878. printReport() {
  879. const LODOP = getLodop()
  880. if (LODOP) {
  881. var strBodyStyle = '<style>'
  882. strBodyStyle += 'table { border-top: 1 solid #000000; border-left: 1 solid #000000; border-collapse:collapse; border-spacing:0;}'
  883. strBodyStyle += 'caption { line-height:2em; }'
  884. strBodyStyle += 'td { border-right: 1 solid #000000; border-bottom: 1 solid #000000; text-align:center; padding:2px 3px; font-size:11px;}'
  885. strBodyStyle += '</style>' //设置打印样式
  886. var strFormHtml = strBodyStyle + '<body>' + document.getElementById('commmon').innerHTML + '</body>' //获取打印内容
  887. LODOP.PRINT_INIT('') //初始化
  888. LODOP.PRINT_DESIGN();
  889. //LODOP.PREVIEW();
  890. //LODOP.PRINT();
  891. LODOP.SET_PRINT_PAGESIZE(2, 0, 0, 'A4') //设置横向
  892. LODOP.ADD_PRINT_HTM('1%', '1%', '98%', '98%', strFormHtml) //设置打印内容
  893. LODOP.SET_PREVIEW_WINDOW(2, 0, 0, 800, 600, '') //设置预览窗口模式和大小
  894. LODOP.PREVIEW()
  895. }
  896. },
  897. // 校验用户是否收藏
  898. favoriteIsOk(){
  899. let userFavorite ={
  900. userId:this.$store.state.user.id,
  901. languageCode:this.$i18n.locale
  902. }
  903. userFavoriteList(userFavorite).then(({data}) =>{
  904. let size = data.list.filter(item => item.menuId==this.$route.meta.menuId).length;
  905. if (size>0){
  906. this.favorite = true
  907. }else {
  908. this.favorite = false
  909. }
  910. })
  911. },
  912. // 收藏 OR 取消收藏
  913. favoriteFunction(){
  914. let userFavorite ={
  915. userId: this.$store.state.user.id,
  916. functionId: this.$route.meta.menuId,
  917. }
  918. if (this.favorite){
  919. // 取消收藏
  920. this.$confirm(`确定取消收藏`, '提示', {
  921. confirmButtonText: '确定',
  922. cancelButtonText: '取消',
  923. type: 'warning'
  924. }).then(() => {
  925. removeUserFavorite(userFavorite).then(({data})=>{
  926. this.$message.success(data.msg)
  927. this.favorite = false
  928. })
  929. })
  930. }else {
  931. // 收藏
  932. saveUserFavorite(userFavorite).then(({data})=>{
  933. this.$message.success(data.msg)
  934. this.favorite = true
  935. })
  936. }
  937. },
  938. // 保存语言编辑
  939. saveLanguageList(val) {
  940. saveSysLanguageOne(val).then(({data}) => {
  941. if (data.code == 0) {
  942. this.$message.success(data.msg)
  943. } else {
  944. this.$message.error(data.msg)
  945. }
  946. })
  947. },
  948. // 编辑语言
  949. addLanguageFun() {
  950. if (this.querySysLanguagePack.languageCode) {
  951. this.addLanguage = true
  952. this.languageColumnList = []
  953. let query = {
  954. functionId: 2101,
  955. tableId: "review2101",
  956. languageCode: this.$i18n.locale
  957. }
  958. getTableDefaultListLanguage(query).then(({data}) => {
  959. if (data.rows.length > 0) {
  960. this.languageColumnList = data.rows
  961. }
  962. })
  963. this.languageColumnList = this.columnList
  964. searchLanguageListByLanguageCode(this.querySysLanguagePack).then(({data}) => {
  965. this.languageDataList = data.rows
  966. })
  967. } else {
  968. this.$message("请选中一种语言")
  969. }
  970. },
  971. // 获取多语言列表
  972. getLanguageList() {
  973. searchSysLanguage(this.queryLanguage).then(({data}) => {
  974. this.languageList = data.rows
  975. })
  976. },
  977. // 获取button的词典
  978. getFunctionButtonList() {
  979. searchFunctionButtonList(this.queryButton).then(({data}) => {
  980. console.log(data.data)
  981. if (data.data.length > 0) {
  982. this.buttons = data.data
  983. } else {
  984. saveButtonList(this.buttonList).then(({data}) => {
  985. })
  986. }
  987. })
  988. },
  989. // 获取语言词典
  990. getSysLanguageParamList() {
  991. searchSysLanguageParam(this.querySysLanguageParam).then(({data}) => {
  992. this.sysLanguageParams = data.rows
  993. })
  994. },
  995. // 打开页面设置
  996. userSetting() {
  997. this.visible = true;
  998. let queryTable = {
  999. userId: this.$store.state.user.name,
  1000. functionId: 2101,
  1001. tableId: "review2101",
  1002. languageCode: this.$i18n.locale
  1003. }
  1004. this.$nextTick(() => {
  1005. this.$refs.column.init(queryTable);
  1006. });
  1007. },
  1008. // 获取 用户保存的 格式列
  1009. getTableUserColumn() {
  1010. getTableUserListLanguage(this.queryTableUser).then(({data}) => {
  1011. if (data != null && data.rows.length > 0) {
  1012. //this.columnList = []
  1013. this.columnList = data.rows
  1014. } else {
  1015. this.getColumnList()
  1016. }
  1017. })
  1018. },
  1019. // 保存 默认配置 列
  1020. saveColumnList() {
  1021. saveTableDefaultList(this.columnList).then(({data}) => {
  1022. if (data.code == 0) {
  1023. this.$message.success(data.msg)
  1024. this.showDefault = false
  1025. } else {
  1026. this.$message.error(data.msg)
  1027. }
  1028. })
  1029. saveTableDefaultList(this.columnList1).then(({data}) => {
  1030. if (data.code == 0) {
  1031. this.$message.success(data.msg)
  1032. this.showDefault = false
  1033. } else {
  1034. this.$message.error(data.msg)
  1035. }
  1036. })
  1037. this.getFunctionButtonList();
  1038. this.getColumnList()
  1039. },
  1040. // 获取 tableDefault 列
  1041. getColumnList() {
  1042. getTableDefaultListLanguage(this.queryTable).then(({data}) => {
  1043. if (data != null && !data.rows.length == 0) {
  1044. this.showDefault = false
  1045. this.columnList = data.rows
  1046. } else {
  1047. this.showDefault = true
  1048. }
  1049. })
  1050. },
  1051. // 获取数据列表
  1052. getDataList(val) {
  1053. this.dataListLoading = true
  1054. if (val == 'Y') {
  1055. this.pageIndex = 1
  1056. }
  1057. this.mainQueryData.limit = this.pageSize
  1058. this.mainQueryData.page = this.pageIndex
  1059. getPRHeaderList(this.mainQueryData).then(({data}) => {
  1060. if (data && data.code === 0) {
  1061. this.dataList = data.rows.list
  1062. this.totalPage = data.rows.totalCount
  1063. } else {
  1064. this.dataList = []
  1065. this.totalPage = 0
  1066. }
  1067. this.dataListLoading = false
  1068. })
  1069. },
  1070. // 每页数
  1071. sizeChangeHandle(val) {
  1072. this.pageSize = val
  1073. this.pageIndex = 1
  1074. this.getDataList()
  1075. },
  1076. // 当前页
  1077. currentChangeHandle(val) {
  1078. this.pageIndex = val
  1079. this.getDataList()
  1080. },
  1081. // 多选
  1082. selectionChangeHandle(val) {
  1083. this.dataListSelections = val
  1084. },
  1085. // 删除
  1086. deleteHandle(id) {
  1087. var ids = id ? [id] : this.dataListSelections.map(item => {
  1088. return item.id
  1089. })
  1090. this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
  1091. confirmButtonText: '确定',
  1092. cancelButtonText: '取消',
  1093. type: 'warning'
  1094. }).then(() => {
  1095. this.$http({
  1096. url: this.$http.adornUrl('//prd/delete'),
  1097. method: 'post',
  1098. data: this.$http.adornData(ids, false)
  1099. }).then(({data}) => {
  1100. if (data && data.code === 0) {
  1101. this.$message({
  1102. message: '操作成功',
  1103. type: 'success',
  1104. duration: 1500,
  1105. onClose: () => {
  1106. this.getDataList()
  1107. }
  1108. })
  1109. } else {
  1110. this.$message.error(data.msg)
  1111. }
  1112. })
  1113. })
  1114. },
  1115. createExportData() {
  1116. // 点击导出按钮之后,开始导出数据之前的执行函数,返回值为需要下载的数据
  1117. // TODO:构造需要下载的数据返回
  1118. getExportList(this.mainQueryData).then(({data}) => {
  1119. if (data && data.code === 0) {
  1120. return data.rows.list
  1121. }
  1122. return this.dataList;
  1123. })
  1124. },
  1125. startDownload() {
  1126. // this.exportData = this.dataList
  1127. console.log("数据开始")
  1128. },
  1129. finishDownload() {
  1130. console.log("数据下载完成")
  1131. },
  1132. fields() {
  1133. console.log(this.columnList)
  1134. let json = "{"
  1135. this.columnList.forEach((item, index) => {
  1136. if (index == this.columnList.length - 1) {
  1137. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1138. } else {
  1139. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1140. }
  1141. })
  1142. json += "}"
  1143. let s = eval("(" + json + ")")
  1144. console.log(s)
  1145. return s
  1146. },
  1147. },
  1148. created() {
  1149. this.getTableUserColumn()
  1150. this.getSysLanguageParamList()
  1151. this.getFunctionButtonList()
  1152. this.favoriteIsOk()
  1153. }
  1154. }
  1155. </script>
  1156. <style scoped>
  1157. .wrapper {
  1158. height: calc(100% - 40px);
  1159. }
  1160. .sl-input {
  1161. background-color: transparent;
  1162. border: 0 !important;
  1163. font-size: 12px !important;
  1164. height: 12px !important;
  1165. line-height: 14px !important;
  1166. background-color: transparent !important;
  1167. width: 140px;
  1168. }
  1169. .sl-input:focus, textarea:focus {
  1170. outline: none;
  1171. }
  1172. .sl-svg {
  1173. overflow: hidden;
  1174. float: right;
  1175. }
  1176. </style>