index.vue 33 KB

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