index.vue 35 KB

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