index.vue 33 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055
  1. <template>
  2. <div class="app-container">
  3. <el-form
  4. :model="queryParams"
  5. ref="queryForm"
  6. :inline="true"
  7. v-show="showSearch"
  8. label-width="68px"
  9. >
  10. <el-form-item label="文件名称" prop="name">
  11. <el-input
  12. v-model="queryParams.name"
  13. placeholder="请输入文件名称"
  14. clearable
  15. size="small"
  16. @keyup.enter.native="handleQuery"
  17. />
  18. </el-form-item>
  19. <!-- <el-form-item label="类型" prop="type">
  20. <el-select v-model="queryParams.type" placeholder="请选择类型" clearable size="small">
  21. <el-option label="请选择字典生成" value />
  22. </el-select>
  23. </el-form-item>-->
  24. <!-- <el-form-item label="大小" prop="size">
  25. <el-input
  26. v-model="queryParams.size"
  27. placeholder="请输入大小"
  28. clearable
  29. size="small"
  30. @keyup.enter.native="handleQuery"
  31. />
  32. </el-form-item>
  33. <el-form-item label="单位ID" prop="unitId">
  34. <el-input
  35. v-model="queryParams.unitId"
  36. placeholder="请输入单位ID"
  37. clearable
  38. size="small"
  39. @keyup.enter.native="handleQuery"
  40. />
  41. </el-form-item>-->
  42. <!-- <el-form-item label="单位名称" prop="unitName">
  43. <el-input
  44. v-model="queryParams.unitName"
  45. placeholder="请输入单位名称"
  46. clearable
  47. size="small"
  48. @keyup.enter.native="handleQuery"
  49. />
  50. </el-form-item>
  51. <el-form-item label="级别" prop="levelM">
  52. <el-input
  53. v-model="queryParams.levelM"
  54. placeholder="请输入级别"
  55. clearable
  56. size="small"
  57. @keyup.enter.native="handleQuery"
  58. />
  59. </el-form-item>-->
  60. <!-- <el-form-item label="发送人ID" prop="sendId">
  61. <el-input
  62. v-model="queryParams.sendId"
  63. placeholder="请输入发送人ID"
  64. clearable
  65. size="small"
  66. @keyup.enter.native="handleQuery"
  67. />
  68. </el-form-item>
  69. <el-form-item label="发送人" prop="sendName">
  70. <el-input
  71. v-model="queryParams.sendName"
  72. placeholder="请输入发送人"
  73. clearable
  74. size="small"
  75. @keyup.enter.native="handleQuery"
  76. />
  77. </el-form-item>
  78. <el-form-item label="创建时间" prop="creattime">
  79. <el-date-picker clearable size="small"
  80. v-model="queryParams.creattime"
  81. type="date"
  82. value-format="yyyy-MM-dd"
  83. placeholder="选择创建时间">
  84. </el-date-picker>
  85. </el-form-item>
  86. <el-form-item label="更新时间" prop="updatetime">
  87. <el-date-picker clearable size="small"
  88. v-model="queryParams.updatetime"
  89. type="date"
  90. value-format="yyyy-MM-dd"
  91. placeholder="选择更新时间">
  92. </el-date-picker>
  93. </el-form-item>
  94. <el-form-item label="打印说明" prop="explainInfo">
  95. <el-input
  96. v-model="queryParams.explainInfo"
  97. placeholder="请输入打印说明"
  98. clearable
  99. size="small"
  100. @keyup.enter.native="handleQuery"
  101. />
  102. </el-form-item>
  103. <el-form-item label="打印状态(1 打印中 2 已打印)" prop="printStatus">
  104. <el-select v-model="queryParams.printStatus" placeholder="请选择打印状态(1 打印中 2 已打印)" clearable size="small">
  105. <el-option label="请选择字典生成" value="" />
  106. </el-select>
  107. </el-form-item>
  108. <el-form-item label="接收人ID" prop="receiveId">
  109. <el-input
  110. v-model="queryParams.receiveId"
  111. placeholder="请输入接收人ID"
  112. clearable
  113. size="small"
  114. @keyup.enter.native="handleQuery"
  115. />
  116. </el-form-item>
  117. <el-form-item label="接收人" prop="receiveName">
  118. <el-input
  119. v-model="queryParams.receiveName"
  120. placeholder="请输入接收人"
  121. clearable
  122. size="small"
  123. @keyup.enter.native="handleQuery"
  124. />
  125. </el-form-item>
  126. <el-form-item label="打印回复信息" prop="printInfo">
  127. <el-input
  128. v-model="queryParams.printInfo"
  129. placeholder="请输入打印回复信息"
  130. clearable
  131. size="small"
  132. @keyup.enter.native="handleQuery"
  133. />
  134. </el-form-item>-->
  135. <el-form-item>
  136. <el-button type="primary" icon="el-icon-search" size="btn" @click="handleQuery">搜索</el-button>
  137. <el-button icon="el-icon-refresh" size="btr" @click="resetQuery">重置</el-button>
  138. </el-form-item>
  139. </el-form>
  140. <el-row :gutter="10" class="mb8">
  141. <el-col :span="1.5">
  142. <el-button
  143. type="primary"
  144. plain
  145. size="mini"
  146. @click="handleAdd"
  147. v-hasPermi="['PrintsManage:manage:add']"
  148. >发送文件</el-button>
  149. </el-col>
  150. <!-- <el-col :span="1.5">
  151. <el-button
  152. type="success"
  153. plain
  154. icon="el-icon-edit"
  155. size="mini"
  156. :disabled="single"
  157. @click="handleUpdate"
  158. v-hasPermi="['PrintsManage:manage:edit']"
  159. >修改</el-button>
  160. </el-col>-->
  161. <el-col :span="1.5">
  162. <el-button
  163. type="danger"
  164. plain
  165. icon="el-icon-delete"
  166. size="mini"
  167. :disabled="multiple"
  168. @click="handleDelete"
  169. v-hasPermi="['PrintsManage:manage:remove']"
  170. >删除</el-button>
  171. </el-col>
  172. <!-- <el-col :span="1.5">
  173. <el-button
  174. type="warning"
  175. plain
  176. icon="el-icon-download"
  177. size="mini"
  178. :loading="exportLoading"
  179. @click="handleExport"
  180. v-hasPermi="['PrintsManage:manage:export']"
  181. >导出</el-button>
  182. </el-col>-->
  183. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  184. </el-row>
  185. <el-table
  186. v-loading="loading"
  187. :header-cell-style="{ background: '#003C69', color: 'white' }"
  188. :data="manageList"
  189. @selection-change="handleSelectionChange"
  190. >
  191. <el-table-column type="selection" width="55" align="center" />
  192. <!-- <el-table-column label="打印回复信息" align="center" prop="id" /> -->
  193. <el-table-column label="序号" align="center" type="index" />
  194. <el-table-column label="文件名称" align="center" prop="name" />
  195. <!-- <el-table-column label="路径" align="center" prop="file" /> -->
  196. <el-table-column label="类型" align="center" prop="type" />
  197. <el-table-column label="是否彩打" align="center" prop="isPrintColor">
  198. <template slot-scope="scope">
  199. <span>{{scope.row.isPrintColor==0?'否':'是'}}</span>
  200. </template>
  201. </el-table-column>
  202. <el-table-column label="是否双面打" align="center" prop="isPrintTwo">
  203. <template slot-scope="scope">
  204. <span>{{scope.row.isPrintTwo==0?'否':'是'}}</span>
  205. </template>
  206. </el-table-column>
  207. <el-table-column label="打印状态" align="center" prop="printStatus">
  208. <template slot-scope="scope">
  209. <span style="color: #90da90;" v-if="scope.row.printStatus==1">打印中</span>
  210. <span style="color: #00FF00;" v-if="scope.row.printStatus==2">已打印</span>
  211. </template>
  212. </el-table-column>
  213. <!-- <el-table-column label="大小" align="center" prop="size" /> -->
  214. <!-- <el-table-column label="单位ID" align="center" prop="unitId" /> -->
  215. <!-- <el-table-column label="单位名称" align="center" prop="unitName" /> -->
  216. <el-table-column label="级别" align="center" prop="levelM">
  217. <template slot-scope="scope">
  218. <dict-tag :options="dict.type.level" :value="scope.row.levelM" />
  219. </template>
  220. </el-table-column>
  221. <!-- <el-table-column label="发送人ID" align="center" prop="sendId" /> -->
  222. <el-table-column label="发送人" align="center" prop="sendName" />
  223. <!-- <el-table-column label="创建时间" align="center" prop="creattime" width="180">
  224. <template slot-scope="scope">
  225. <span>{{ parseTime(scope.row.creattime, "{y}-{m}-{d}") }}</span>
  226. </template>
  227. </el-table-column>-->
  228. <!-- <el-table-column label="更新时间" align="center" prop="updatetime" width="180">
  229. <template slot-scope="scope">
  230. <span>{{ parseTime(scope.row.updatetime, '{y}-{m}-{d}') }}</span>
  231. </template>
  232. </el-table-column>-->
  233. <!-- <el-table-column label="打印说明" align="center" prop="explainInfo" />
  234. <el-table-column label="接收人ID" align="center" prop="receiveId" />
  235. <el-table-column label="接收人" align="center" prop="receiveName" />
  236. <el-table-column label="生成路径" align="center" prop="sFile" />
  237. <el-table-column label="打印回复信息" align="center" prop="printInfo" />-->
  238. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  239. <template slot-scope="scope">
  240. <el-button
  241. size="btk"
  242. type="text"
  243. v-if="scope.row.printStatus==1"
  244. @click="handlePrint(scope.row)"
  245. >打印</el-button>
  246. <el-button
  247. size="btu"
  248. type="text"
  249. @click="handleUpdate(scope.row)"
  250. v-hasPermi="['PrintsManage:manage:edit']"
  251. >修改</el-button>
  252. <el-button
  253. size="btd"
  254. type="text"
  255. @click="handleDelete(scope.row)"
  256. v-hasPermi="['PrintsManage:manage:remove']"
  257. >删除</el-button>
  258. </template>
  259. </el-table-column>
  260. </el-table>
  261. <pagination
  262. v-show="total > 0"
  263. :total="total"
  264. :page.sync="queryParams.pageNum"
  265. :limit.sync="queryParams.pageSize"
  266. @pagination="getList"
  267. />
  268. <!-- 添加或修改集中文印主对话框 -->
  269. <el-dialog :title="title" :visible.sync="open" width="1030px" append-to-body>
  270. <el-form ref="form" :model="form" :inline="true" :rules="rules" label-width="120px">
  271. <div class="jiben">发送人信息</div>
  272. <el-form-item label="发送人" prop="sendName">
  273. <el-input v-model="form.sendName" disabled placeholder="请输入发送人" />
  274. </el-form-item>
  275. <div class="jiben">文件信息</div>
  276. <el-form-item label="上传文件">
  277. <!-- <fileUpload v-model="form.file" /> -->
  278. <el-upload
  279. :action="uploadFileUrl"
  280. :before-upload="handleBeforeUpload"
  281. :file-list="fileList"
  282. :limit="limit"
  283. :on-error="handleUploadError"
  284. :on-exceed="handleExceed"
  285. :on-success="handleUploadSuccess"
  286. :show-file-list="false"
  287. :headers="headers"
  288. class="upload-file-uploader"
  289. ref="upload"
  290. style="width:200px;"
  291. name="pfile"
  292. >
  293. <!-- 上传按钮 -->
  294. <el-button size="mini" type="primary" class="select_file">选取文件</el-button>
  295. </el-upload>
  296. </el-form-item>
  297. <el-form-item label="文件名称" prop="name">
  298. <el-input v-model="form.name" placeholder="请输入文件名称" />
  299. </el-form-item>
  300. <el-form-item label="文件类型" prop="type">
  301. <el-input v-model="form.type" placeholder="请输入文件类型" />
  302. <!-- <el-select v-model="form.type" placeholder="请选择类型">
  303. <el-option label="请选择字典生成" value />
  304. </el-select>-->
  305. </el-form-item>
  306. <el-form-item label="文件大小" prop="size">
  307. <el-input v-model="form.size" placeholder="请输入文件大小" />
  308. </el-form-item>
  309. <!-- <el-form-item label="单位ID" prop="unitId">
  310. <el-input v-model="form.unitId" placeholder="请输入单位ID" />
  311. </el-form-item>-->
  312. <!-- <el-form-item label="单位名称" prop="unitName">
  313. <el-input v-model="form.unitName" placeholder="请输入单位名称" />
  314. </el-form-item>-->
  315. <el-form-item label="级别" prop="levelM">
  316. <el-select v-model="form.levelM" clearable placeholder="请选择级别">
  317. <el-option
  318. v-for="dict in levelMs"
  319. :key="dict.dictValue"
  320. :label="dict.dictLabel"
  321. :value="parseInt(dict.dictValue)"
  322. ></el-option>
  323. </el-select>
  324. </el-form-item>
  325. <el-form-item label="打印份数" prop="printNumber">
  326. <el-input v-model="form.printNumber" type="Number" placeholder="请输入打印份数" />
  327. </el-form-item>
  328. <!-- <el-form-item label="是否需要归还" prop="isReturn">
  329. <el-radio-group v-model="form.isReturn" style="width:200px;" size="mini">
  330. <el-radio label="1">归还</el-radio>
  331. <el-radio label="0">无需归还</el-radio>
  332. </el-radio-group>
  333. </el-form-item>-->
  334. <el-form-item label="是否为彩打" prop="isPrintColor">
  335. <el-radio-group v-model="form.isPrintColor" style="width:200px;" size="mini">
  336. <el-radio label="1">是</el-radio>
  337. <el-radio label="0">否</el-radio>
  338. </el-radio-group>
  339. </el-form-item>
  340. <el-form-item label="是否为双面打" prop="isPrintTwo">
  341. <el-radio-group v-model="form.isPrintTwo" style="width:200px;" size="mini">
  342. <el-radio label="1">是</el-radio>
  343. <el-radio label="0">否</el-radio>
  344. </el-radio-group>
  345. </el-form-item>
  346. <!-- <el-form-item label="发送人ID" prop="sendId">
  347. <el-input v-model="form.sendId" placeholder="请输入发送人ID" />
  348. </el-form-item>-->
  349. <!-- <el-form-item label="创建时间" prop="creattime">
  350. <el-date-picker
  351. clearable
  352. size="small"
  353. v-model="form.creattime"
  354. type="date"
  355. value-format="yyyy-MM-dd"
  356. placeholder="选择创建时间"
  357. ></el-date-picker>
  358. </el-form-item>-->
  359. <div class="jiben">打印说明</div>
  360. <el-form-item label prop="explainInfo">
  361. <el-input
  362. v-model="form.explainInfo"
  363. type="textarea"
  364. placeholder="请输入打印说明"
  365. class="textarea-explainInfo"
  366. />
  367. </el-form-item>
  368. <!-- <el-form-item label="打印状态(1 打印中 2 已打印)">
  369. <el-radio-group v-model="form.printStatus">
  370. <el-radio label="1">请选择字典生成</el-radio>
  371. </el-radio-group>
  372. </el-form-item>
  373. <el-form-item label="接收人ID" prop="receiveId">
  374. <el-input v-model="form.receiveId" placeholder="请输入接收人ID" />
  375. </el-form-item>
  376. <el-form-item label="接收人" prop="receiveName">
  377. <el-input v-model="form.receiveName" placeholder="请输入接收人" />
  378. </el-form-item>
  379. <el-form-item label="生成路径">
  380. <fileUpload v-model="form.sFile" />
  381. </el-form-item>
  382. <el-form-item label="打印回复信息" prop="printInfo">
  383. <el-input v-model="form.printInfo" placeholder="请输入打印回复信息" />
  384. </el-form-item>-->
  385. </el-form>
  386. <div slot="footer" class="dialog-footer">
  387. <el-button type="primary" @click="submitForm">确 定</el-button>
  388. <el-button @click="cancel">取 消</el-button>
  389. </div>
  390. </el-dialog>
  391. <el-dialog
  392. :title="title"
  393. :visible.sync="dyopen"
  394. append-to-body
  395. width="700px"
  396. style="padding-top:100px;"
  397. >
  398. <el-form ref="dyform" :model="dyform" :inline="true" :rules="rules" label-width="120px">
  399. <div class="jiben jiben2">打印信息</div>
  400. <el-form-item label="打印文件" prop="printName">
  401. <el-input v-model="dyform.printName" placeholder="请输入打印文件" />
  402. </el-form-item>
  403. <el-form-item label="打印份数" prop="printNumber">
  404. <el-input v-model="dyform.printNumber" type="Number" placeholder="请输入打印份数" />
  405. </el-form-item>
  406. <el-form-item label="是否需要归还" prop="isReturn">
  407. <el-radio-group v-model="dyform.isReturn" style="width:200px;" size="mini">
  408. <el-radio label="1">归还</el-radio>
  409. <el-radio label="0">无需归还</el-radio>
  410. </el-radio-group>
  411. </el-form-item>
  412. <!-- <el-form-item label="是否为彩打" prop="isPrintColor">
  413. <el-radio-group v-model="dyform.isPrintColor" style="width:200px;" size="mini">
  414. <el-radio label="1">是</el-radio>
  415. <el-radio label="0">否</el-radio>
  416. </el-radio-group>
  417. </el-form-item>
  418. <el-form-item label="是否为双面打" prop="isPrintTwo">
  419. <el-radio-group v-model="dyform.isPrintTwo" style="width:200px;" size="mini">
  420. <el-radio label="1">是</el-radio>
  421. <el-radio label="0">否</el-radio>
  422. </el-radio-group>
  423. </el-form-item>-->
  424. <!-- <div class="jiben">打印人信息</div> -->
  425. <el-form-item label="打印人" prop="printfileName">
  426. <el-select v-model="dyform.printfileName" filterable clearable placeholder="请选择打印人">
  427. <el-option v-for="item in rylist" :key="item.id" :label="item.name" :value="item.id"></el-option>
  428. </el-select>
  429. </el-form-item>
  430. <div class="jiben jiben2">打印说明</div>
  431. <div
  432. style="width:98.5%;height:45px;font-size:14px;line-height:45px;color:#fff;border-bottom:1px solid #fff;margin-bottom:20px;padding-left:15px;"
  433. >其他要求:{{yaoqiu}}</div>
  434. <el-form-item label prop="explainInfo">
  435. <el-input
  436. v-model="dyform.explainInfo"
  437. type="textarea"
  438. placeholder="请输入打印说明"
  439. class="dyform-textarea"
  440. />
  441. </el-form-item>
  442. </el-form>
  443. <div slot="footer" class="dialog-footer">
  444. <el-button type="primary" @click="dysubmitForm">打 印</el-button>
  445. <el-button @click="dycancel">取 消</el-button>
  446. </div>
  447. </el-dialog>
  448. <el-dialog
  449. :title="title"
  450. :visible.sync="dyopen2"
  451. append-to-body
  452. width="1500px"
  453. style="padding-top:100px;"
  454. >
  455. <div ref="file" v-html="tableau" style="width:100%;"></div>
  456. </el-dialog>
  457. </div>
  458. </template>
  459. <script>
  460. import {
  461. listManage,
  462. getManage,
  463. delManage,
  464. addManage,
  465. updateManage,
  466. exportManage,
  467. printFile,
  468. listPeople,
  469. printCode
  470. } from "@/api/PrintsManage/manage";
  471. import { getToken } from "@/utils/auth";
  472. import Cookies from "js-cookie";
  473. import axios from "axios";
  474. const XLSX = require("xlsx");
  475. const docx = require("docx-preview");
  476. window.JSZip = require("jszip");
  477. export default {
  478. name: "Manage",
  479. dicts: ["level"],
  480. props: {
  481. // 值
  482. value: [String, Object, Array],
  483. // 数量限制
  484. limit: {
  485. type: Number,
  486. default: 5
  487. },
  488. // 大小限制(MB)
  489. fileSize: {
  490. type: Number,
  491. default: 5
  492. },
  493. // 文件类型, 例如['png', 'jpg', 'jpeg']
  494. fileType: {
  495. type: Array,
  496. default: () => ["doc", "xls", "ppt", "txt", "pdf"]
  497. },
  498. // 是否显示提示
  499. isShowTip: {
  500. type: Boolean,
  501. default: true
  502. }
  503. },
  504. data() {
  505. return {
  506. // 遮罩层
  507. loading: true,
  508. // 导出遮罩层
  509. exportLoading: false,
  510. // 选中数组
  511. ids: [],
  512. // 非单个禁用
  513. single: true,
  514. // 非多个禁用
  515. multiple: true,
  516. // 显示搜索条件
  517. showSearch: true,
  518. // 总条数
  519. total: 0,
  520. // 集中文印主表格数据
  521. manageList: [],
  522. // 弹出层标题
  523. title: "",
  524. // 是否显示弹出层
  525. open: false,
  526. dyopen: false,
  527. // 查询参数
  528. queryParams: {
  529. pageNum: 1,
  530. pageSize: 10,
  531. name: null,
  532. file: null,
  533. type: null,
  534. size: null,
  535. unitId: null,
  536. unitName: null,
  537. levelM: null,
  538. sendId: null,
  539. sendName: null,
  540. creattime: null,
  541. updatetime: null,
  542. explainInfo: null,
  543. printStatus: null,
  544. receiveId: null,
  545. receiveName: null,
  546. sFile: null,
  547. printInfo: null
  548. },
  549. // 表单参数
  550. form: {},
  551. dyform: {},
  552. // 表单校验
  553. rules: {},
  554. //级别
  555. levelMs: [],
  556. baseUrl: process.env.VUE_APP_BASE_API,
  557. uploadFileUrl:
  558. process.env.VUE_APP_BASE_API + "/PrintsManage/manage/printFile", // 上传的图片服务器地址
  559. headers: {
  560. Authorization: "Bearer " + getToken()
  561. },
  562. fileList: [],
  563. faith: null,
  564. rylist: [],
  565. islist: [],
  566. yaoqiu: "",
  567. dyopen2: false,
  568. tableau: null
  569. };
  570. },
  571. created() {
  572. this.getList();
  573. //级别
  574. this.getDicts("level").then(response => {
  575. this.levelMs = response.data;
  576. });
  577. //是否
  578. this.getDicts("sys_is").then(response => {
  579. this.islist = response.data;
  580. });
  581. },
  582. methods: {
  583. /** 查询集中文印主列表 */
  584. getList() {
  585. this.loading = true;
  586. listManage(this.queryParams).then(response => {
  587. this.manageList = response.rows;
  588. this.total = response.total;
  589. this.loading = false;
  590. });
  591. },
  592. // 取消按钮
  593. cancel() {
  594. this.open = false;
  595. this.reset();
  596. },
  597. dycancel() {
  598. this.dyopen = false;
  599. this.dyreset();
  600. },
  601. // 表单重置
  602. reset() {
  603. this.form = {
  604. id: null,
  605. name: null,
  606. file: null,
  607. type: null,
  608. size: null,
  609. unitId: null,
  610. unitName: null,
  611. levelM: null,
  612. sendId: null,
  613. sendName: null,
  614. creattime: null,
  615. updatetime: null,
  616. explainInfo: null,
  617. printStatus: 0,
  618. receiveId: null,
  619. receiveName: null,
  620. sFile: null,
  621. printInfo: null,
  622. isReturn: null,
  623. printNumber: null,
  624. isPrintTwo: null,
  625. isPrintColor: null
  626. };
  627. this.resetForm("form");
  628. },
  629. // 表单重置
  630. dyreset() {
  631. this.dyform = {
  632. id: null,
  633. printName: null,
  634. printNumber: null,
  635. isReturn: null,
  636. printfileName: null,
  637. explainInfo: null,
  638. file: null,
  639. printId: null,
  640. statusG: null,
  641. isPrintTwo: null,
  642. isPrintColor: null
  643. };
  644. this.resetForm("dyform");
  645. },
  646. /** 搜索按钮操作 */
  647. handleQuery() {
  648. this.queryParams.pageNum = 1;
  649. this.getList();
  650. },
  651. /** 重置按钮操作 */
  652. resetQuery() {
  653. this.resetForm("queryForm");
  654. this.handleQuery();
  655. },
  656. // 多选框选中数据
  657. handleSelectionChange(selection) {
  658. this.ids = selection.map(item => item.id);
  659. this.single = selection.length !== 1;
  660. this.multiple = !selection.length;
  661. },
  662. /** 新增按钮操作 */
  663. handleAdd() {
  664. this.reset();
  665. this.open = true;
  666. this.title = "添加集中文印主";
  667. this.form.sendName = Cookies.get("nickName");
  668. this.form.sendId = Cookies.get("userId");
  669. },
  670. /** 修改按钮操作 */
  671. handleUpdate(row) {
  672. this.reset();
  673. const id = row.id || this.ids;
  674. getManage(id).then(response => {
  675. this.form = response.data;
  676. this.form.isPrintColor = response.data.isPrintColor + "";
  677. this.form.isPrintTwo = response.data.isPrintTwo + "";
  678. this.open = true;
  679. this.title = "修改集中文印主";
  680. });
  681. },
  682. /** 提交按钮 */
  683. submitForm() {
  684. this.$refs["form"].validate(valid => {
  685. if (valid) {
  686. if (this.form.id != null) {
  687. updateManage(this.form).then(response => {
  688. this.$modal.msgSuccess("修改成功");
  689. this.open = false;
  690. this.getList();
  691. });
  692. } else {
  693. addManage(this.form).then(response => {
  694. this.$modal.msgSuccess("新增成功");
  695. this.open = false;
  696. this.getList();
  697. });
  698. }
  699. }
  700. });
  701. },
  702. /** 删除按钮操作 */
  703. handleDelete(row) {
  704. const ids = row.id || this.ids;
  705. this.$modal
  706. .confirm("是否确认删除该数据项?")
  707. .then(function() {
  708. return delManage(ids);
  709. })
  710. .then(() => {
  711. this.getList();
  712. this.$modal.msgSuccess("删除成功");
  713. })
  714. .catch(() => {});
  715. },
  716. /** 导出按钮操作 */
  717. handleExport() {
  718. const queryParams = this.queryParams;
  719. this.$modal
  720. .confirm("是否确认导出所有集中文印主数据项?")
  721. .then(() => {
  722. this.exportLoading = true;
  723. return exportManage(queryParams);
  724. })
  725. .then(response => {
  726. this.$download.name(response.msg);
  727. this.exportLoading = false;
  728. })
  729. .catch(() => {});
  730. },
  731. // 上传前校检格式和大小
  732. handleBeforeUpload(file) {
  733. // 校检文件类型
  734. this.form.name = file.name;
  735. if (file.size == 0) {
  736. this.form.size = "0 B";
  737. }
  738. var k = 1024;
  739. var sizes = ["B", "KB", "MB", "GB", "TB", "EB", "ZB", "YB"];
  740. var i = Math.floor(Math.log(file.size) / Math.log(k));
  741. this.form.size = file.size;
  742. this.form.size =
  743. (file.size / Math.pow(k, i)).toPrecision(3) + "" + sizes[i];
  744. if (this.fileType) {
  745. let fileExtension = "";
  746. if (file.name.lastIndexOf(".") > -1) {
  747. fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
  748. this.form.type = fileExtension;
  749. }
  750. const isTypeOk = this.fileType.some(type => {
  751. if (file.type.indexOf(type) > -1) return true;
  752. if (fileExtension && fileExtension.indexOf(type) > -1) return true;
  753. return false;
  754. });
  755. if (!isTypeOk) {
  756. this.$message.error(
  757. `文件格式不正确, 请上传${this.fileType.join("/")}格式文件!`
  758. );
  759. return false;
  760. }
  761. }
  762. // 校检文件大小
  763. if (this.fileSize) {
  764. const isLt = file.size / 1024 / 1024 < this.fileSize;
  765. if (!isLt) {
  766. this.$message.error(`上传文件大小不能超过 ${this.fileSize} MB!`);
  767. return false;
  768. }
  769. }
  770. return true;
  771. },
  772. // 文件个数超出
  773. handleExceed() {
  774. this.$message.error(`上传文件数量不能超过 ${this.limit} 个!`);
  775. },
  776. // 上传失败
  777. handleUploadError(err) {
  778. this.$message.error("上传失败, 请重试");
  779. },
  780. // 上传成功回调
  781. handleUploadSuccess(res, file) {
  782. this.$message.success("上传成功");
  783. this.fileList.push({ name: file.name, url: res.fileName });
  784. this.$emit("input", this.fileList);
  785. this.form.file = res.url;
  786. },
  787. //打印
  788. handlePrint(row) {
  789. console.log(row);
  790. this.dyreset();
  791. this.dyopen = true;
  792. this.title = "打印";
  793. this.dyform.printName = row.name;
  794. this.dyform.explainInfo = row.explainInfo;
  795. this.dyform.printId = row.id;
  796. this.dyform.file = row.file;
  797. this.dyform.statusG = 0;
  798. this.dyform.printfileName = row.sendName;
  799. this.dyform.printNumber = row.printNumber;
  800. this.dyform.type = row.type;
  801. // this.dyform.isReturn = row.isReturn + "";
  802. if (row.isPrintColor == 1) {
  803. this.yaoqiu = "彩打";
  804. }
  805. if (row.isPrintTwo == 1) {
  806. if (this.yaoqiu) {
  807. this.yaoqiu += " 双面打";
  808. } else {
  809. this.yaoqiu = "双面打";
  810. }
  811. }
  812. this.getrylist();
  813. },
  814. //获取人员
  815. getrylist() {
  816. listPeople().then(res => {
  817. if (res.code == 200) {
  818. this.rylist = res.rows;
  819. }
  820. });
  821. },
  822. //打印提交
  823. dysubmitForm() {
  824. if (this.dyform.isReturn == 0) {
  825. this.dyform.statusG = 1;
  826. } else {
  827. this.dyform.statusG = 0;
  828. }
  829. printCode(this.dyform).then(res => {
  830. if (res.code == 200) {
  831. console.log(res);
  832. this.dyopen = false;
  833. // var open=window.open();
  834. // location.href =
  835. // "http://192.168.5.188:8080/profile/print/" + res.printFileName;
  836. var url =
  837. "http://192.168.5.188:8080/profile/print/" + res.printFileName;
  838. // this.dyopen2 = true;
  839. // console.log(this.dyform.type);
  840. // if (this.dyform.type == "docx") {
  841. // console.log(1);
  842. // axios({
  843. // method: "get",
  844. // responseType: "blob", // 设置响应文件格式
  845. // url: url
  846. // }).then(({ data }) => {
  847. // console.log(this.$refs.file);
  848. // docx.renderAsync(data, this.$refs.file); // 渲染到页面预览
  849. // });
  850. // } else if (this.dyform.type == "xlsx") {
  851. // console.log(2);
  852. // axios
  853. // .get(url, {
  854. // responseType: "arraybuffer" // 设置响应体类型为arraybuffer
  855. // })
  856. // .then(({ data }) => {
  857. // let workbook = XLSX.read(new Uint8Array(data), {
  858. // type: "array"
  859. // }); // 解析数据
  860. // var worksheet = workbook.Sheets[workbook.SheetNames[0]]; // workbook.SheetNames 下存的是该文件每个工作表名字,这里取出第一个工作表
  861. // this.tableau = XLSX.utils.sheet_to_html(worksheet); // 渲染
  862. // });
  863. // }
  864. }
  865. });
  866. // open.location.href="http://192.168.5.188:8080/priofile/print/202203211244.docx";
  867. // window.open( `https://view.officeapps.live.com/op/view.aspx?src=http://192.168.5.188:8080/profile/print/202203211428.docx`, "_blank");
  868. }
  869. }
  870. };
  871. </script>
  872. <style scoped>
  873. ::v-deep .el-dialog {
  874. background-color: #004d86;
  875. }
  876. ::v-deep .el-dialog__header {
  877. border-bottom: 1px solid #718a9d;
  878. }
  879. ::v-deep .el-dialog__title {
  880. color: #fff;
  881. font: 18px;
  882. }
  883. ::v-deep .el-dialog__headerbtn .el-dialog__close {
  884. color: #fff;
  885. }
  886. .el-form-item ::v-deep .el-input__inner {
  887. width: 200px;
  888. height: 36px;
  889. background: #004d86;
  890. color: #fff;
  891. border: 1px solid #fff !important;
  892. }
  893. ::v-deep .el-date-editor.el-input {
  894. width: 200px;
  895. height: 36px;
  896. }
  897. .pictureUploading-img img {
  898. width: 60px;
  899. height: 210px;
  900. margin-right: 10px;
  901. }
  902. ::v-deep .el-upload--picture-card {
  903. height: 210px;
  904. width: 170px;
  905. line-height: 210px;
  906. background-image: url("../../../assets/images/头像.png");
  907. background-repeat: no-repeat;
  908. background-size: 100% 100%;
  909. }
  910. ::v-deep .el-upload--picture-card .el-icon-plus {
  911. display: none;
  912. }
  913. .el-upload--picture-card /deep/ .el-upload--picture-card i {
  914. font-size: 48px;
  915. }
  916. ::v-deep .el-upload__tip {
  917. display: none;
  918. }
  919. ::v-deep .textarea-explainInfo .el-textarea__inner {
  920. width: 980px;
  921. height: 104px;
  922. }
  923. ::v-deep .dyform-textarea .el-textarea__inner {
  924. width: 650px;
  925. height: 64px;
  926. }
  927. .jiben2 {
  928. width: 650px;
  929. }
  930. .jiben span {
  931. width: 25px;
  932. height: 25px;
  933. display: inline-block;
  934. background-color: #1c86e1;
  935. line-height: 25px;
  936. text-align: center;
  937. font-size: 16px;
  938. cursor: pointer;
  939. /* margin-left: 851px; */
  940. position: absolute;
  941. right: 20px;
  942. }
  943. .el-select-dropdown__item:hover {
  944. color: #1c86e1;
  945. }
  946. .el-select-dropdown__item {
  947. color: #000;
  948. }
  949. .el-tree {
  950. background-color: #00365f;
  951. color: #fff;
  952. }
  953. ::v-deep .el-tree-node__content:hover {
  954. color: #1c86e1;
  955. }
  956. ::v-deep .el-upload-list--picture-card .el-upload-list__item {
  957. height: 210px;
  958. width: 170px;
  959. }
  960. .dadui {
  961. height: 40px;
  962. background: #003156;
  963. /* border-bottom: 1px solid #718A9D ; */
  964. background-image: url(../../../images/矩形底部边框.png);
  965. background-repeat: no-repeat;
  966. background-position: 0px 39px;
  967. font-size: 16px;
  968. color: #1d96ff;
  969. }
  970. .dadui img {
  971. margin: 10px 10px 0px 10px;
  972. }
  973. .data {
  974. height: 40px;
  975. background: #003156;
  976. margin-bottom: 12px;
  977. color: #fff;
  978. display: flex;
  979. font-size: 13px;
  980. line-height: 25px;
  981. position: relative;
  982. }
  983. .el-tree {
  984. padding: 10px;
  985. background: #003156;
  986. color: #fff;
  987. }
  988. .data p {
  989. position: absolute;
  990. top: -5px;
  991. left: 15px;
  992. }
  993. .data .a1 {
  994. width: 128px;
  995. height: 26px;
  996. background: rgba(23, 74, 112, 0.4);
  997. border-radius: 13px;
  998. position: absolute;
  999. top: 7px;
  1000. left: 60px;
  1001. }
  1002. ::v-deep .data .el-date-editor.el-input {
  1003. width: 100%;
  1004. border: none;
  1005. }
  1006. ::v-deep .data .el-input__inner {
  1007. width: 100% !important;
  1008. border: none;
  1009. }
  1010. ::v-deep .data .el-input--medium .el-input__icon {
  1011. line-height: 36px;
  1012. position: absolute;
  1013. right: -223px;
  1014. top: 2px;
  1015. }
  1016. ::v-deep .data .el-input__inner {
  1017. background-color: transparent;
  1018. color: #fff;
  1019. text-align: center;
  1020. margin-top: 2px;
  1021. }
  1022. ::v-deep .data .el-input__suffix {
  1023. position: absolute;
  1024. right: 281px;
  1025. }
  1026. ::v-deep
  1027. .el-tree--highlight-current
  1028. .el-tree-node.is-current
  1029. > .el-tree-node__content {
  1030. color: #00365f !important;
  1031. /* background-color: #003156 !important; */
  1032. }
  1033. ::v-deep .el-radio-group .el-radio {
  1034. color: #fff;
  1035. }
  1036. /* ::v-deep .el-radio:last-child {
  1037. margin-left: 35px;
  1038. } */
  1039. </style>