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.

1328 lines
43 KiB

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