index.vue 49 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
  4. <el-form-item :label="$t('开票日期')" prop="kprq">
  5. <el-date-picker
  6. v-model="chooseDate"
  7. @change="handleQuery"
  8. type="daterange"
  9. style="width: 508px"
  10. align="right"
  11. unlink-panels
  12. :range-separator="$t('至')"
  13. :start-placeholder="$t('开始日期')"
  14. :end-placeholder="$t('结束日期')"
  15. value-format="yyyy-MM-dd"
  16. :picker-options="pickerOptions">
  17. </el-date-picker>
  18. </el-form-item>
  19. <el-form-item :label="$t('签发班组')" prop="qfbz">
  20. <el-select v-model="queryParams.qfbz" :placeholder="$t('请选择') + $t('签发班组')" clearable size="small"
  21. @change="handleQuery">
  22. <el-option
  23. v-for="dict in qfbzOptions"
  24. :key="dict.dictValue"
  25. :label="dict.dictLabel"
  26. :value="dict.dictValue"
  27. />
  28. </el-select>
  29. </el-form-item>
  30. <!-- <el-form-item :label="$t('新票/续票')" prop="xpxp">
  31. <el-select v-model="queryParams.xpxp" :placeholder="$t('请选择') + $t('新票/续票')" clearable size="small"
  32. @change="handleQuery">
  33. <el-option
  34. v-for="dict in xpxpOptions"
  35. :key="dict.dictValue"
  36. :label="dict.dictLabel"
  37. :value="dict.dictValue"
  38. />
  39. </el-select>
  40. </el-form-item>-->
  41. <el-form-item label="延期许可证号" prop="yqxkzh">
  42. <el-input
  43. v-model="queryParams.yqxkzh"
  44. placeholder="请输入延期许可证号"
  45. clearable
  46. size="small"
  47. @input="handleQuery"
  48. @keyup.enter.native="handleQuery"
  49. />
  50. </el-form-item>
  51. <el-form-item label="危害工作许可证号" prop="whgzxkzh">
  52. <el-input
  53. v-model="queryParams.whgzxkzh"
  54. placeholder="请输入危害工作许可证号"
  55. clearable
  56. size="small" @input="handleQuery"
  57. @keyup.enter.native="handleQuery"
  58. />
  59. </el-form-item>
  60. <el-form-item label="动火作业许可证号" prop="dhzyxkzh">
  61. <el-input
  62. v-model="queryParams.dhzyxkzh"
  63. placeholder="请输入动火作业许可证号"
  64. clearable
  65. size="small" @input="handleQuery"
  66. @keyup.enter.native="handleQuery"
  67. />
  68. </el-form-item>
  69. <el-form-item :label="$t('火票级别')" prop="hpjb">
  70. <el-select v-model="queryParams.hpjb" :placeholder="$t('请选择') + $t('火票级别')" clearable size="small"
  71. @change="handleQuery">
  72. <el-option
  73. v-for="dict in hpjbOptions"
  74. :key="dict.dictValue"
  75. :label="dict.dictLabel"
  76. :value="dict.dictValue"
  77. />
  78. </el-select>
  79. </el-form-item>
  80. <el-form-item label="限制空间许可证号" prop="xzkjxkzh">
  81. <el-input
  82. v-model="queryParams.xzkjxkzh"
  83. placeholder="请输入限制空间许可证号"
  84. clearable
  85. size="small" @input="handleQuery"
  86. @keyup.enter.native="handleQuery"
  87. />
  88. </el-form-item>
  89. <el-form-item label="盲板作业许可证号" prop="mbzyxkzh">
  90. <el-input
  91. v-model="queryParams.mbzyxkzh"
  92. placeholder="请输入盲板作业许可证号"
  93. clearable
  94. size="small" @input="handleQuery"
  95. @keyup.enter.native="handleQuery"
  96. />
  97. </el-form-item>
  98. <el-form-item label="高处作业许可证号" prop="gczyxkzh">
  99. <el-input
  100. v-model="queryParams.gczyxkzh"
  101. placeholder="请输入高处作业许可证号"
  102. clearable
  103. size="small" @input="handleQuery"
  104. @keyup.enter.native="handleQuery"
  105. />
  106. </el-form-item>
  107. <el-form-item label="高处作业级别" prop="gczyjb">
  108. <el-select v-model="queryParams.gczyjb" :placeholder="$t('请选择') + $t('高处作业级别')" clearable size="small"
  109. @change="handleQuery">
  110. <el-option
  111. v-for="dict in gczyjbOptions"
  112. :key="dict.dictValue"
  113. :label="dict.dictLabel"
  114. :value="dict.dictValue"
  115. />
  116. </el-select>
  117. </el-form-item>
  118. <el-form-item label="工作内容" prop="content">
  119. <el-input
  120. v-model="queryParams.content"
  121. placeholder="请输入工作内容"
  122. clearable
  123. size="small" @input="handleQuery"
  124. @keyup.enter.native="handleQuery"
  125. />
  126. </el-form-item>
  127. <el-form-item label="BYC负责单位/联系人" prop="byclxr">
  128. <el-input
  129. v-model="queryParams.byclxr"
  130. placeholder="请输入BYC负责单位/联系人"
  131. clearable
  132. size="small" @input="handleQuery"
  133. @keyup.enter.native="handleQuery"
  134. />
  135. </el-form-item>
  136. <el-form-item label="施工单位" prop="sgdw">
  137. <el-input
  138. v-model="queryParams.sgdw"
  139. placeholder="请输入施工单位"
  140. clearable
  141. size="small" @input="handleQuery"
  142. @keyup.enter.native="handleQuery"
  143. />
  144. </el-form-item>
  145. <el-form-item label="销票时间" prop="xpsj">
  146. <el-date-picker clearable size="small" style="width: 200px"
  147. v-model="queryParams.xpsj"
  148. type="date"
  149. @change="handleQuery"
  150. value-format="yyyy-MM-dd"
  151. :placeholder="$t('请选择') + $t('销票时间')">
  152. </el-date-picker>
  153. </el-form-item>
  154. <el-form-item :label="$t('作业票状态')" prop="zypzt">
  155. <el-select v-model="queryParams.zypzt" :placeholder="$t('请选择') + $t('作业票状态')" clearable size="small"
  156. @change="handleQuery">
  157. <el-option
  158. v-for="dict in zypztOptions"
  159. :key="dict.dictValue"
  160. :label="dict.dictLabel"
  161. :value="dict.dictValue"
  162. />
  163. </el-select>
  164. </el-form-item>
  165. <el-form-item label="检查/存档人" prop="jccdr">
  166. <el-input
  167. v-model="queryParams.jccdr"
  168. placeholder="请输入检查/存档人"
  169. clearable
  170. size="small" @input="handleQuery"
  171. @keyup.enter.native="handleQuery"
  172. />
  173. </el-form-item>
  174. <el-form-item label="未撤销项编号" prop="wcxxbh">
  175. <el-input
  176. v-model="queryParams.wcxxbh"
  177. placeholder="请输入未撤销项编号"
  178. clearable
  179. size="small" @input="handleQuery"
  180. @keyup.enter.native="handleQuery"
  181. />
  182. </el-form-item>
  183. <el-form-item label="未撤销状态" prop="wcxzt">
  184. <el-select v-model="queryParams.wcxzt" style="width: 200px" :placeholder="$t('请选择') + $t('未撤销状态')"
  185. @change="handleQuery" clearable>
  186. <el-option
  187. v-for="dict in wcxztOptions"
  188. :key="dict.dictValue"
  189. :label="dict.dictLabel"
  190. :value="dict.dictValue"
  191. ></el-option>
  192. </el-select>
  193. </el-form-item>
  194. <el-form-item label="撤销时间" prop="cxsj">
  195. <el-date-picker clearable size="small" style="width: 200px"
  196. v-model="queryParams.cxsj"
  197. type="date"
  198. @change="handleQuery"
  199. value-format="yyyy-MM-dd"
  200. :placeholder="$t('请选择') + $t('撤销时间')">
  201. </el-date-picker>
  202. </el-form-item>
  203. <el-form-item :label="$t('索引')" prop="tag">
  204. <el-select v-model="queryParams.tag" :placeholder="$t('请选择') + $t('索引')" filterable clearable size="small"
  205. @change="handleQuery">
  206. <el-option
  207. v-for="dict in tagOptions"
  208. :key="dict.tag"
  209. :label="dict.tag"
  210. :value="dict.tag"
  211. />
  212. </el-select>
  213. </el-form-item>
  214. <el-form-item>
  215. <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('搜索') }}</el-button>
  216. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('重置') }}</el-button>
  217. </el-form-item>
  218. </el-form>
  219. <el-row :gutter="10" class="mb8">
  220. <el-col :span="1.5">
  221. <el-button
  222. type="primary"
  223. icon="el-icon-plus"
  224. size="mini"
  225. @click="handleAdd"
  226. v-hasPermi="['ehs:jobticket:add']"
  227. >{{ $t('新增') }}
  228. </el-button>
  229. </el-col>
  230. <!-- <el-col :span="1.5">
  231. <el-button
  232. type="success"
  233. icon="el-icon-edit"
  234. size="mini"
  235. :disabled="single"
  236. @click="handleUpdate"
  237. v-hasPermi="['ehs:jobticket:edit']"
  238. >{{ $t('修改') }}</el-button>
  239. </el-col>
  240. <el-col :span="1.5">
  241. <el-button
  242. type="danger"
  243. icon="el-icon-delete"
  244. size="mini"
  245. :disabled="multiple"
  246. @click="handleDelete"
  247. v-hasPermi="['ehs:jobticket:remove']"
  248. >{{ $t('删除') }}</el-button>
  249. </el-col>-->
  250. <el-col :span="1.5">
  251. <el-button
  252. type="warning"
  253. icon="el-icon-download"
  254. size="mini"
  255. @click="handleExport"
  256. v-hasPermi="['ehs:jobticket:export']"
  257. >{{ $t('导出') }}
  258. </el-button>
  259. </el-col>
  260. <el-col :span="1.5">
  261. <el-button
  262. type="primary"
  263. icon="el-icon-s-data"
  264. size="mini"
  265. @click="handleData"
  266. >{{ $t('数据分析') }}
  267. </el-button>
  268. </el-col>
  269. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  270. </el-row>
  271. <el-table v-loading="loading" :data="jobticketList"
  272. :height="clientHeight" border :cell-style="myclass"
  273. row-key="id"
  274. :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
  275. :default-expand-all=true
  276. >
  277. <el-table-column :label="$t('开票日期')" align="center" prop="kprq" width="125">
  278. <template slot-scope="scope">
  279. <span>{{ parseTime(scope.row.kprq, '{y}-{m}-{d}') }}</span>
  280. </template>
  281. </el-table-column>
  282. <el-table-column :label="$t('签发时间')" align="center" prop="qfsj" :show-overflow-tooltip="true"/>
  283. <el-table-column :label="$t('签发班组')" align="center" prop="qfbz" :formatter="qfbzFormat"/>
  284. <el-table-column :label="$t('签发人')" align="center" prop="qfr" :show-overflow-tooltip="true"/>
  285. <el-table-column :label="$t('新票/续票')" align="center" prop="xpxp" width="100" :formatter="xpxpFormat"/>
  286. <el-table-column :label="$t('延期许可证号')" align="center" prop="yqxkzh" width="100" :show-overflow-tooltip="true"/>
  287. <el-table-column :label="$t('危害工作许可证号')" align="center" prop="whgzxkzh" width="100"
  288. :show-overflow-tooltip="true"/>
  289. <el-table-column :label="$t('动火作业许可证号')" align="center" prop="dhzyxkzh" width="100"
  290. :show-overflow-tooltip="true"/>
  291. <el-table-column :label="$t('火票级别')" align="center" prop="hpjb" :formatter="hpjbFormat"/>
  292. <el-table-column :label="$t('限制空间许可证号')" align="center" prop="xzkjxkzh" :show-overflow-tooltip="true"/>
  293. <el-table-column label="盲板作业许可证号" align="center" prop="mbzyxkzh" :show-overflow-tooltip="true"/>
  294. <el-table-column label="高处作业许可证号" align="center" prop="gczyxkzh" :show-overflow-tooltip="true"/>
  295. <el-table-column label="高处作业级别" align="center" prop="gczyjb" :formatter="gczyjbFormat"/>
  296. <el-table-column :label="$t('工作内容')" align="center" prop="content" width="300" :show-overflow-tooltip="true"/>
  297. <el-table-column :label="$t('BYC负责单位/联系人')" align="center" prop="byclxr" width="100"
  298. :show-overflow-tooltip="true"/>
  299. <el-table-column :label="$t('施工单位')" align="center" prop="sgdw" :show-overflow-tooltip="true"/>
  300. <el-table-column :label="$t('联系人')" align="center" prop="lxr" :show-overflow-tooltip="true"/>
  301. <el-table-column :label="$t('联系电话')" align="center" prop="lxdh" width="100" :show-overflow-tooltip="true"/>
  302. <el-table-column :label="$t('销票时间')" align="center" prop="xpsj" width="100">
  303. <template slot-scope="scope">
  304. <span>{{ parseTime(scope.row.xpsj, '{y}-{m}-{d}') }}</span>
  305. </template>
  306. </el-table-column>
  307. <el-table-column :label="$t('作业票状态')" align="center" prop="zypzt" width="200" :formatter="zypztFormat">
  308. <template slot-scope="scope" v-if="scope.row.zypzt != null">
  309. <el-dropdown placement="bottom" trigger="click">
  310. <span class="el-dropdown-link">
  311. <span style=" font-size: 13px" v-if="scope.row.zypzt==10">{{ "作业票未销" }}</span>
  312. <span style=" font-size: 13px" v-if="scope.row.zypzt==18">{{ "作业票收回,作业票关闭" }}</span>
  313. <span style="font-size: 13px" v-if="scope.row.zypzt==16">{{ "作业票延期" }}</span>
  314. <span style="font-size: 13px" v-if="scope.row.zypzt==20">{{ "作业票作废" }}</span>
  315. <i class="el-icon-caret-bottom"></i>
  316. </span>
  317. <el-dropdown-menu slot="dropdown">
  318. <el-dropdown-item @click.native="statusWX(0, scope.row)">{{ $t('作业票未销') }}</el-dropdown-item>
  319. <el-dropdown-item @click.native="statusGBSH(0, scope.row)">{{ $t('作业票关闭,作业票收回') }}</el-dropdown-item>
  320. <el-dropdown-item @click.native="statusYQ(0, scope.row)">{{ $t('作业票延期') }}</el-dropdown-item>
  321. <el-dropdown-item @click.native="statusZF(0, scope.row)">{{ $t('作业票作废') }}</el-dropdown-item>
  322. </el-dropdown-menu>
  323. </el-dropdown>
  324. </template>
  325. </el-table-column>
  326. <el-table-column :label="$t('检查/存档人')" align="center" prop="jccdr" :show-overflow-tooltip="true"/>
  327. <el-table-column :label="$t('未撤销项编号')" align="center" prop="wcxxbh" :show-overflow-tooltip="true"/>
  328. <el-table-column :label="$t('未撤销状态')" align="center" prop="wcxzt" :formatter="wcxztFormat">
  329. <template slot-scope="scope" v-if="scope.row.wcxzt != null">
  330. <el-dropdown placement="bottom" trigger="click">
  331. <span class="el-dropdown-link">
  332. <span style=" font-size: 13px" v-if="scope.row.wcxzt==10">{{ "有" }}</span>
  333. <span style=" font-size: 13px" v-if="scope.row.wcxzt==12">{{ "无" }}</span>
  334. <i class="el-icon-caret-bottom"></i>
  335. </span>
  336. <el-dropdown-menu slot="dropdown">
  337. <el-dropdown-item @click.native="wcxztYOU(0, scope.row)">{{ $t('有') }}</el-dropdown-item>
  338. <el-dropdown-item @click.native="wcxztWU(0, scope.row)">{{ $t('无') }}</el-dropdown-item>
  339. </el-dropdown-menu>
  340. </el-dropdown>
  341. </template>
  342. </el-table-column>
  343. <el-table-column :label="$t('撤销时间')" align="center" prop="cxsj" width="100">
  344. <template slot-scope="scope">
  345. <span>{{ parseTime(scope.row.cxsj, '{y}-{m}-{d}') }}</span>
  346. </template>
  347. </el-table-column>
  348. <el-table-column :label="$t('索引')" align="center" prop="tag" :show-overflow-tooltip="true"/>
  349. <el-table-column :label="$t('备注')" align="center" prop="remarks" :show-overflow-tooltip="true"/>
  350. <el-table-column :label="$t('操作')" align="center" fixed="right" width="160"
  351. class-name="small-padding fixed-width">
  352. <template slot-scope="scope">
  353. <el-button
  354. size="mini"
  355. type="text"
  356. icon="el-icon-edit"
  357. @click="handleUpdate(scope.row)"
  358. v-hasPermi="['ehs:jobticket:edit']"
  359. >{{ $t('修改') }}
  360. </el-button>
  361. <el-button
  362. size="mini"
  363. type="text"
  364. icon="el-icon-delete"
  365. @click="handleDelete(scope.row)"
  366. v-hasPermi="['ehs:jobticket:remove']"
  367. >{{ $t('删除') }}
  368. </el-button>
  369. <el-button
  370. v-if="scope.row.xpxp=='10'"
  371. size="mini"
  372. type="text"
  373. icon="el-icon-date"
  374. @click="handlePostpone(scope.row)"
  375. v-hasPermi="['ehs:jobticket:add']"
  376. >{{ $t('延期') }}
  377. </el-button>
  378. </template>
  379. </el-table-column>
  380. </el-table>
  381. <pagination
  382. v-show="total>0"
  383. :total="total"
  384. :page.sync="queryParams.pageNum"
  385. :limit.sync="queryParams.pageSize"
  386. @pagination="getList"
  387. />
  388. <!-- 添加或修改工作票对话框 -->
  389. <el-dialog v-dialogDrag :title="title" :visible.sync="open" width="700px" append-to-body>
  390. <el-form ref="form" :model="form" :rules="rules" label-width="130px">
  391. <el-form-item :label="$t('开票日期')" prop="kprq">
  392. <el-date-picker clearable size="small" style="width: 200px"
  393. v-model="form.kprq"
  394. type="date"
  395. value-format="yyyy-MM-dd"
  396. :placeholder="$t('请选择') + $t('开票日期')">
  397. </el-date-picker>
  398. </el-form-item>
  399. <el-form-item :label="$t('签发时间')" prop="qfsj">
  400. <el-input v-model="form.qfsj" :placeholder="$t('请输入') + $t('签发时间')"/>
  401. </el-form-item>
  402. <el-form-item :label="$t('签发班组')" prop="qfbz">
  403. <el-select v-model="form.qfbz" :placeholder="$t('请选择') + $t('签发班组')">
  404. <el-option
  405. v-for="dict in qfbzOptions"
  406. :key="dict.dictValue"
  407. :label="dict.dictLabel"
  408. :value="dict.dictValue"
  409. ></el-option>
  410. </el-select>
  411. </el-form-item>
  412. <el-form-item :label="$t('签发人')" prop="qfr">
  413. <el-input v-model="form.qfr" :placeholder="$t('请输入') + $t('签发人')"/>
  414. </el-form-item>
  415. <el-form-item :label="$t('新票/续票')" prop="xpxp" v-if="isxp">
  416. <el-select v-model="form.xpxp" :placeholder="$t('请选择') + $t('新票/续票')">
  417. <el-option
  418. v-for="dict in xpxpOptions"
  419. :key="dict.dictValue"
  420. :label="dict.dictLabel"
  421. :value="dict.dictValue"
  422. ></el-option>
  423. </el-select>
  424. </el-form-item>
  425. <el-form-item :label="$t('延期许可证号')" prop="yqxkzh">
  426. <el-input v-model="form.yqxkzh" :placeholder="$t('请输入') + $t('延期许可证号')"/>
  427. </el-form-item>
  428. <el-form-item :label="$t('危害工作许可证号')" prop="whgzxkzh">
  429. <el-input v-model="form.whgzxkzh" :placeholder="$t('请输入') + $t('危害工作许可证号')"/>
  430. </el-form-item>
  431. <el-form-item :label="$t('动火作业许可证号')" prop="dhzyxkzh">
  432. <el-input v-model="form.dhzyxkzh" :placeholder="$t('请输入') + $t('动火作业许可证号')"/>
  433. </el-form-item>
  434. <el-form-item :label="$t('火票级别')" prop="hpjb">
  435. <el-select v-model="form.hpjb" :placeholder="$t('请选择') + $t('火票级别')">
  436. <el-option
  437. v-for="dict in hpjbOptions"
  438. :key="dict.dictValue"
  439. :label="dict.dictLabel"
  440. :value="dict.dictValue"
  441. ></el-option>
  442. </el-select>
  443. </el-form-item>
  444. <el-form-item :label="$t('限制空间许可证号')" prop="xzkjxkzh">
  445. <el-input v-model="form.xzkjxkzh" :placeholder="$t('请输入') + $t('限制空间许可证号')"/>
  446. </el-form-item>
  447. <el-form-item :label="$t('盲板作业许可证号')" prop="mbzyxkzh">
  448. <el-input v-model="form.mbzyxkzh" :placeholder="$t('请输入') + $t('盲板作业许可证号')"/>
  449. </el-form-item>
  450. <el-form-item :label="$t('高处作业许可证号')" prop="gczyxkzh">
  451. <el-input v-model="form.gczyxkzh" :placeholder="$t('请输入') + $t('高处作业许可证号')"/>
  452. </el-form-item>
  453. <el-form-item :label="$t('高处作业级别')" prop="hpjb">
  454. <el-select v-model="form.gczyjb" :placeholder="$t('请选择') + $t('高处作业级别')">
  455. <el-option
  456. v-for="dict in gczyjbOptions"
  457. :key="dict.dictValue"
  458. :label="dict.dictLabel"
  459. :value="dict.dictValue"
  460. ></el-option>
  461. </el-select>
  462. </el-form-item>
  463. <el-form-item :label="$t('内容')" prop="content">
  464. <el-input v-model="form.content" :placeholder="$t('请输入') + $t('内容')"/>
  465. </el-form-item>
  466. <el-form-item label="用户单位" prop="userUnit">
  467. <el-select v-model="form.userUnit" placeholder="请选择用户单位"
  468. @change="checkCategoryPromotionUpdate(form.userUnit)">
  469. <el-option
  470. v-for="dict in userUnitOptions"
  471. :key="dict.dictValue"
  472. :label="dict.dictLabel"
  473. :value="parseInt(dict.dictValue)"
  474. ></el-option>
  475. </el-select>
  476. </el-form-item>
  477. <el-form-item label="用户主管" prop="userMg">
  478. <el-select v-model="form.userMg" placeholder="请先选择好用户单位" @change="pick">
  479. <el-option
  480. v-for="dict in userMgOptions"
  481. :key="dict.userId"
  482. :label="dict.nickName"
  483. :value="dict.userId"
  484. ></el-option>
  485. </el-select>
  486. </el-form-item>
  487. <el-form-item :label="$t('施工单位')" prop="sgdw">
  488. <el-select v-model="form.sgdw" placeholder="请选择施工单位" @change="selectworkUnit(form.sgdw)">
  489. <el-option
  490. v-for="dict in sgdwOptions"
  491. :key="dict.id"
  492. :label="dict.label"
  493. :value="dict.label"
  494. ></el-option>
  495. </el-select>
  496. </el-form-item>
  497. <el-form-item :label="$t('联系人')" prop="lxr">
  498. <el-input v-model="form.lxr" :placeholder="$t('请输入') + $t('联系人')"/>
  499. </el-form-item>
  500. <el-form-item :label="$t('联系电话')" prop="lxdh">
  501. <el-input v-model="form.lxdh" :placeholder="$t('请输入') + $t('联系电话')"/>
  502. </el-form-item>
  503. <el-form-item :label="$t('销票时间')" prop="xpsj">
  504. <el-date-picker clearable size="small" style="width: 200px"
  505. v-model="form.xpsj"
  506. type="date"
  507. value-format="yyyy-MM-dd"
  508. :placeholder="$t('请选择') + $t('销票时间')">
  509. </el-date-picker>
  510. </el-form-item>
  511. <el-form-item :label="$t('作业票状态')" prop="zypzt">
  512. <el-select v-model="form.zypzt" :placeholder="$t('请选择') + $t('作业票状态')">
  513. <el-option
  514. v-for="dict in zypztOptions"
  515. :key="dict.dictValue"
  516. :label="dict.dictLabel"
  517. :value="dict.dictValue"
  518. ></el-option>
  519. </el-select>
  520. </el-form-item>
  521. <el-form-item :label="$t('检查/存档人')" prop="jccdr">
  522. <el-input v-model="form.jccdr" :placeholder="$t('请输入') + $t('检查/存档人')"/>
  523. </el-form-item>
  524. <el-form-item :label="$t('未撤销项编号')" prop="wcxxbh">
  525. <el-input v-model="form.wcxxbh" :placeholder="$t('请输入') + $t('未撤销项编号')"/>
  526. </el-form-item>
  527. <el-form-item :label="$t('未撤销状态')" prop="wcxzt">
  528. <el-select v-model="form.wcxzt" :placeholder="$t('请选择') + $t('未撤销状态')">
  529. <el-option
  530. v-for="dict in wcxztOptions"
  531. :key="dict.dictValue"
  532. :label="dict.dictLabel"
  533. :value="dict.dictValue"
  534. ></el-option>
  535. </el-select>
  536. </el-form-item>
  537. <el-form-item :label="$t('撤销时间')" prop="cxsj">
  538. <el-date-picker clearable size="small" style="width: 200px"
  539. v-model="form.cxsj"
  540. type="date"
  541. value-format="yyyy-MM-dd"
  542. :placeholder="$t('请选择') + $t('撤销时间')">
  543. </el-date-picker>
  544. </el-form-item>
  545. <el-form-item label="索引" prop="tag">
  546. <el-select v-model="form.tag" clearable placeholder="请选择索引">
  547. <el-option
  548. v-for="dict in tagOptions"
  549. :key="dict.tag"
  550. :label="dict.tag"
  551. :value="dict.tag"
  552. ></el-option>
  553. </el-select>
  554. </el-form-item>
  555. <el-form-item :label="$t('备注')" prop="remarks">
  556. <el-input v-model="form.remarks" :placeholder="$t('请输入') + $t('备注')"/>
  557. </el-form-item>
  558. <el-form-item :label="$t('归属部门')" prop="deptId">
  559. <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true"
  560. :placeholder="$t('请选择') + $t('归属部门')"/>
  561. </el-form-item>
  562. </el-form>
  563. <div slot="footer" class="dialog-footer">
  564. <el-button type="primary" @click="submitForm">{{ $t('确 定') }}</el-button>
  565. <el-button @click="cancel">{{ $t('取 消') }}</el-button>
  566. </div>
  567. </el-dialog>
  568. <!-- 用户导入对话框 -->
  569. <el-dialog v-dialogDrag :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
  570. <el-upload
  571. ref="upload"
  572. :limit="1"
  573. accept=".xlsx, .xls"
  574. :headers="upload.headers"
  575. :action="upload.url"
  576. :disabled="upload.isUploading"
  577. :on-progress="handleFileUploadProgress"
  578. :on-success="handleFileSuccess"
  579. :auto-upload="false"
  580. drag
  581. >
  582. <i class="el-icon-upload"></i>
  583. <div class="el-upload__text">
  584. {{ $t('将文件拖到此处,或') }}
  585. <em>{{ $t('点击上传') }}</em>
  586. </div>
  587. <div class="el-upload__tip" slot="tip">
  588. <!--<el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据-->
  589. <el-link type="info" style="font-size:12px" @click="importTemplate">{{ $t('下载模板') }}</el-link>
  590. </div>
  591. <form ref="downloadFileForm" :action="upload.downloadAction" target="FORMSUBMIT">
  592. <input name="type" :value="upload.type" hidden/>
  593. </form>
  594. <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
  595. </el-upload>
  596. <div slot="footer" class="dialog-footer">
  597. <el-button type="primary" @click="submitFileForm">{{ $t('确 定') }}</el-button>
  598. <el-button @click="upload.open = false">{{ $t('取 消') }}</el-button>
  599. </div>
  600. </el-dialog>
  601. <el-drawer
  602. :title="$t('数据分析')"
  603. size="600px"
  604. :visible.sync="drawer"
  605. :direction="direction">
  606. <el-row>
  607. <el-col>
  608. <el-card class="box-card" shadow="hover">
  609. <div slot="header" class="clearfix">
  610. <span>{{ this.$t('火票级别统计') }}</span>
  611. </div>
  612. <div class="text item">
  613. <fire-data></fire-data>
  614. </div>
  615. </el-card>
  616. </el-col>
  617. </el-row>
  618. <el-row>
  619. <el-col>
  620. <el-card class="box-card" shadow="hover">
  621. <div slot="header" class="clearfix">
  622. <span>{{ this.$t('作业票状态统计') }}</span>
  623. </div>
  624. <div class="text item">
  625. <status-data></status-data>
  626. </div>
  627. </el-card>
  628. </el-col>
  629. </el-row>
  630. </el-drawer>
  631. <el-dialog title="延期作业许可" :visible.sync="guanlianVisible" width="30%" center>
  632. <el-form ref="form" :model="postponeform" :rules="rules1" label-width="80px">
  633. <el-form-item :label="$t('开票日期')" prop="kprq">
  634. <el-date-picker clearable size="small" style="width: 200px"
  635. v-model="postponeform.kprq"
  636. type="date"
  637. value-format="yyyy-MM-dd"
  638. :placeholder="$t('请选择') + $t('开票日期')">
  639. </el-date-picker>
  640. </el-form-item>
  641. <el-form-item :label="$t('签发时间')" prop="qfsj">
  642. <el-input v-model="postponeform.qfsj" :placeholder="$t('请输入') + $t('签发时间')"/>
  643. </el-form-item>
  644. <el-form-item :label="$t('签发班组')" prop="qfbz">
  645. <el-select v-model="postponeform.qfbz" :placeholder="$t('请选择') + $t('签发班组')">
  646. <el-option
  647. v-for="dict in qfbzOptions"
  648. :key="dict.dictValue"
  649. :label="dict.dictLabel"
  650. :value="dict.dictValue"
  651. ></el-option>
  652. </el-select>
  653. </el-form-item>
  654. <el-form-item :label="$t('签发人')" prop="qfr">
  655. <el-input v-model="postponeform.qfr" :placeholder="$t('请输入') + $t('签发人')"/>
  656. </el-form-item>
  657. <el-form-item :label="$t('延期许可证号')" prop="yqxkzh">
  658. <el-input v-model="postponeform.yqxkzh" :placeholder="$t('请输入') + $t('延期许可证号')"/>
  659. </el-form-item>
  660. </el-form>
  661. <div slot="footer" class="dialog-footer">
  662. <el-button @click="guanlianVisible=false">取 消</el-button>
  663. <el-button type="primary" @click="submitPostpone()">确 定</el-button>
  664. </div>
  665. </el-dialog>
  666. </div>
  667. </template>
  668. <script>
  669. import {
  670. listJobticket,
  671. getJobticket,
  672. delJobticket,
  673. addJobticket,
  674. updateJobticket,
  675. exportJobticket,
  676. selectChengbaoshang
  677. } from "@/api/ehs/jobticket";
  678. import {listUnit, getUnit, delUnit, addUnit, updateUnit, exportUnit, getUserByUnit} from "@/api/invoice/unit";
  679. import {treeselect, getDept} from "@/api/system/dept";
  680. import {getToken} from "@/utils/auth";
  681. import Treeselect from "@riophae/vue-treeselect";
  682. import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  683. import FireData from "./fireData";
  684. import StatusData from "./statusData";
  685. import {listTagAll} from "@/api/invoice/tag";
  686. import base from "@/assets/js/base";
  687. export default {
  688. name: "Jobticket",
  689. components: {FireData, Treeselect,StatusData},
  690. data() {
  691. return {
  692. //新票新增
  693. isxp: false,
  694. //延期对话框
  695. guanlianVisible: false,
  696. yqzyxkzh: "",
  697. drawer: false,
  698. direction: 'rtl',
  699. // 遮罩层
  700. loading: true,
  701. // 选中数组
  702. ids: [],
  703. // 非单个禁用
  704. single: true,
  705. // 非多个禁用
  706. multiple: true,
  707. // 显示搜索条件
  708. showSearch: false,
  709. // 总条数
  710. total: 0,
  711. // 工作票表格数据
  712. jobticketList: [],
  713. // 弹出层标题
  714. title: "",
  715. // 部门树选项
  716. deptOptions: undefined,
  717. clientHeight: 300,
  718. // 是否显示弹出层
  719. open: false,
  720. // 装置字典
  721. plantCodeOptions: [],
  722. // 签发班组字典
  723. qfbzOptions: [],
  724. // 新票/续票字典
  725. xpxpOptions: [],
  726. // 火票级别字典
  727. hpjbOptions: [],
  728. // 作业票状态字典
  729. zypztOptions: [],
  730. // 高处作业级别字典
  731. gczyjbOptions: [],
  732. //作业票未撤销状态字典
  733. wcxztOptions: [],
  734. //施工单位字典
  735. sgdwOptions: [],
  736. // 用户单位字典
  737. userUnitOptions: [],
  738. // 用户主管字典
  739. userMgOptions: [],
  740. tagOptions: [],
  741. // 用户导入参数
  742. upload: {
  743. //下载模板请求地址
  744. downloadAction: process.env.VUE_APP_BASE_API + '/common/template',
  745. //下载模板类型
  746. type: "jobticket",
  747. // 是否显示弹出层(用户导入)
  748. open: false,
  749. // 弹出层标题(用户导入)
  750. title: "",
  751. // 是否禁用上传
  752. isUploading: false,
  753. // 是否更新已经存在的用户数据
  754. updateSupport: 0,
  755. // 设置上传的请求头部
  756. headers: {Authorization: "Bearer " + getToken()},
  757. // 上传的地址
  758. url: process.env.VUE_APP_BASE_API + "/ehs/jobticket/importData"
  759. },
  760. // 查询参数
  761. queryParams: {
  762. pageNum: 1,
  763. pageSize: 20,
  764. plantCode: null,
  765. kprq: null,
  766. startDate: null,
  767. endDate: null,
  768. qfsj: null,
  769. qfbz: null,
  770. qfr: null,
  771. xpxp: null,
  772. whgzxkzh: null,
  773. dhzyxkzh: null,
  774. hpjb: null,
  775. xzkjxkzh: null,
  776. content: null,
  777. byclxr: null,
  778. sgdw: null,
  779. lxr: null,
  780. lxdh: null,
  781. xpsj: null,
  782. zypzt: null,
  783. jccdr: null,
  784. wcxxbh: null,
  785. wcxzt: null,
  786. cxsj: null,
  787. tag: null
  788. },
  789. //日期快速选择
  790. pickerOptions: {
  791. shortcuts: [{
  792. text: this.$t('最近一周'),
  793. onClick(picker) {
  794. const end = new Date();
  795. const start = new Date();
  796. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  797. picker.$emit('pick', [start, end]);
  798. }
  799. }, {
  800. text: this.$t('最近一个月'),
  801. onClick(picker) {
  802. const end = new Date();
  803. const start = new Date();
  804. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  805. picker.$emit('pick', [start, end]);
  806. }
  807. }, {
  808. text: this.$t('最近三个月'),
  809. onClick(picker) {
  810. const end = new Date();
  811. const start = new Date();
  812. start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
  813. picker.$emit('pick', [start, end]);
  814. }
  815. }]
  816. },
  817. //日期选择器
  818. chooseDate: [],
  819. // 表单参数
  820. form: {},
  821. //延期参数
  822. postponeParams: {},
  823. //延期表单
  824. postponeform: {},
  825. // 表单校验
  826. rules: {
  827. plantCode: [
  828. {required: true, message: this.$t('装置') + this.$t('不能为空'), trigger: "change"}
  829. ],
  830. deptId: [
  831. {required: true, message: this.$t('部门编号') + this.$t('不能为空'), trigger: "blur"}
  832. ],
  833. xpxp: [
  834. {required: true, message: this.$t('手动新增只能为新票'), trigger: "blur"},
  835. {validator: this.xpxp, trigger: 'blur'}
  836. ]
  837. },
  838. rules1: {
  839. yqxkzh: [
  840. {required: true, message: this.$t('当前续票必填'), trigger: "blur"}
  841. ],
  842. }
  843. };
  844. },
  845. watch: {
  846. // 根据名称筛选部门树
  847. deptName(val) {
  848. this.$refs.tree.filter(val);
  849. }
  850. },
  851. created() {
  852. //设置表格高度对应屏幕高度
  853. this.$nextTick(() => {
  854. this.clientHeight = (document.body.clientHeight - 80) * 0.8
  855. })
  856. this.getList();
  857. this.getTreeselect();
  858. this.getChengbaoshang();
  859. this.getTagList()
  860. this.getDicts("PLANT_DIVIDE").then(response => {
  861. this.plantCodeOptions = response.data;
  862. });
  863. this.getDicts("QFBZ").then(response => {
  864. this.qfbzOptions = response.data;
  865. });
  866. this.getDicts("XPXP").then(response => {
  867. this.xpxpOptions = response.data;
  868. });
  869. this.getDicts("HPJB").then(response => {
  870. this.hpjbOptions = response.data;
  871. });
  872. this.getDicts("ZYPZT").then(response => {
  873. this.zypztOptions = response.data;
  874. });
  875. //高处作业级别
  876. this.getDicts("GCZYJB").then(response => {
  877. this.gczyjbOptions = response.data;
  878. });
  879. this.getDicts("TICKED_WCXZT").then(response => {
  880. this.wcxztOptions = response.data;
  881. });
  882. this.getDicts("book_user_unit").then(response => {
  883. this.userUnitOptions = response.data;
  884. });
  885. },
  886. methods: {
  887. //当前时间
  888. getNowFormatDate() {
  889. var date = new Date();
  890. var seperator1 = "-";
  891. var year = date.getFullYear();
  892. var month = date.getMonth() + 1;
  893. var strDate = date.getDate();
  894. if (month >= 1 && month <= 9) {
  895. month = "0" + month;
  896. }
  897. if (strDate >= 0 && strDate <= 9) {
  898. strDate = "0" + strDate;
  899. }
  900. var currentdate = year + seperator1 + month + seperator1 + strDate;
  901. return currentdate;
  902. },
  903. //根据用户单位 查询对应选择的用户主管 根据用户单位 字段 查找对应的多个主管 返回 Sysuser的集合(id,name)
  904. checkCategoryPromotion(oneId) {
  905. getUserByUnit(oneId).then(response => {
  906. // this.form.userMg=null;
  907. this.userMgOptions = response.data;
  908. // let arr= response.data.userIds.split(',');
  909. });
  910. },
  911. //修改用户单位时,级联的用户主管下拉数据应清空,否则会造成用户修改了用户单位,但未重新选择相应的用户主管
  912. checkCategoryPromotionUpdate(oneId) {
  913. this.form.userMg = null;
  914. getUserByUnit(oneId).then(response => {
  915. // this.form.userMg=null;
  916. this.userMgOptions = response.data;
  917. // let arr= response.data.userIds.split(',');
  918. });
  919. },
  920. //修改延期时的用户单位
  921. checkCategoryPromotionRenew(oneId) {
  922. this.postponeform.userMg = null;
  923. getUserByUnit(oneId).then(response => {
  924. this.userMgOptions = response.data;
  925. });
  926. },
  927. //主管下拉框变动重新刷新赋值
  928. pick() {
  929. this.$forceUpdate()
  930. },
  931. //查找施工单位
  932. selectworkUnit(oneId) {
  933. //选中的数据和options进行匹配
  934. var obj = {}
  935. obj = this.sgdwOptions.find(function (i) {
  936. return i.label === oneId
  937. });
  938. getDept(obj.id).then(response => {
  939. this.form.lxr = response.data.leader;
  940. this.form.lxdh = response.data.phone
  941. });
  942. },
  943. //查找承包商列表
  944. getChengbaoshang() {
  945. treeselect().then(response => {
  946. this.sgdwOptions = response.data[1].children;
  947. });
  948. },
  949. //得到索引下拉框
  950. getTagList() {
  951. listTagAll().then(response => {
  952. this.tagOptions = response
  953. });
  954. },
  955. //延期 即新增一条 改为续票
  956. handlePostpone(row) {
  957. this.guanlianVisible = true
  958. const id = row.id || this.ids
  959. getJobticket(id).then(response => {
  960. this.postponeform = response.data;
  961. // this.checkCategoryPromotion(response.data.userUnit);
  962. });
  963. this.postponeParams = base.deepClone(row)
  964. },
  965. //新的 续票 构造票号 最多五次
  966. submitPostpone() {
  967. this.guanlianVisible = false
  968. //保留新票的参数 用来修改新票
  969. const id = this.postponeParams.id
  970. const postponeNumber = this.postponeParams.postponeNumber + 1;
  971. const yqxkzh = this.postponeform.yqxkzh
  972. //续票的参数
  973. this.postponeParams.id = null
  974. this.postponeParams.yqxkzh = this.postponeform.yqxkzh
  975. this.postponeParams.xpxp = "12"
  976. this.postponeParams.zypzt = "10"
  977. this.postponeParams.kprq = this.postponeform.kprq
  978. this.postponeParams.qfsj = this.postponeform.qfsj
  979. this.postponeParams.qfbz = this.postponeform.qfbz
  980. this.postponeParams.qfr = this.postponeform.qfr
  981. if (postponeNumber > 15) {
  982. return this.msgError("当前作业票最多可以延期十五次,请重新开票");
  983. } else {
  984. if (this.postponeParams.yqxkzh.endsWith('-6')) {
  985. this.msgError("每张续票最多可以延期五次,请重新命名生成新的续票");
  986. this.getList();
  987. } else {
  988. //若果是第一次延期 延期许可证取输入的 后续的都是原来
  989. let putData = {}
  990. putData.id = id
  991. putData.postponeNumber = postponeNumber
  992. if (putData.postponeNumber == 1) {
  993. putData.yqxkzh = yqxkzh.substring(0, yqxkzh.indexOf("-"));
  994. updateJobticket(putData).then(response => {
  995. });
  996. } else {
  997. putData.yqxkzh = yqxkzh
  998. }
  999. addJobticket(this.postponeParams).then(response => {
  1000. this.msgSuccess(this.$t('延期成功,请查看新的续票'));
  1001. this.open = false;
  1002. this.getList();
  1003. });
  1004. }
  1005. }
  1006. },
  1007. //修改单元格样式的方法
  1008. myclass({row, column, rowIndex, columnIndex}) {
  1009. if (row.zypzt == 10) {
  1010. return "background-color:rgba(255, 68,68, 0.5);"
  1011. }
  1012. if (row.zypzt == 18 || row.zypzt == 14) {
  1013. return "background-color:rgba(21,180,51, 0.5);"
  1014. }
  1015. if (row.zypzt == 16) {
  1016. return "background-color:rgba(221,248,9, 0.5);"
  1017. }
  1018. if (row.zypzt == 20) {
  1019. return "background-color:rgba(163, 150,150, 0.5);"
  1020. }
  1021. },
  1022. /** 查询工作票列表 */
  1023. getList() {
  1024. this.loading = true;
  1025. listJobticket(this.queryParams).then(response => {
  1026. this.jobticketList=[]
  1027. this.jobticketList = response.rows;
  1028. this.total = response.total;
  1029. this.loading = false;
  1030. });
  1031. },
  1032. /** 查询部门下拉树结构 */
  1033. getTreeselect() {
  1034. treeselect().then(response => {
  1035. this.deptOptions = response.data;
  1036. });
  1037. },
  1038. // 装置字典翻译
  1039. plantCodeFormat(row, column) {
  1040. return this.selectDictLabel(this.plantCodeOptions, row.plantCode);
  1041. },
  1042. // 签发班组字典翻译
  1043. qfbzFormat(row, column) {
  1044. return this.selectDictLabel(this.qfbzOptions, row.qfbz);
  1045. },
  1046. // 新票/续票字典翻译
  1047. xpxpFormat(row, column) {
  1048. return this.selectDictLabel(this.xpxpOptions, row.xpxp);
  1049. },
  1050. // 火票级别字典翻译
  1051. hpjbFormat(row, column) {
  1052. return this.selectDictLabel(this.hpjbOptions, row.hpjb);
  1053. },
  1054. // 作业票状态字典翻译
  1055. zypztFormat(row, column) {
  1056. return this.selectDictLabel(this.zypztOptions, row.zypzt);
  1057. },
  1058. // 高处作业级别字典翻译
  1059. gczyjbFormat(row, column) {
  1060. return this.selectDictLabel(this.gczyjbOptions, row.gczyjb);
  1061. },
  1062. wcxztFormat(row, column) {
  1063. return this.selectDictLabel(this.wcxztOptions, row.wcxzt);
  1064. },
  1065. // 取消按钮
  1066. cancel() {
  1067. this.open = false;
  1068. this.reset();
  1069. },
  1070. //变换作业票状态
  1071. statusWX(index, row) {
  1072. this.form = row;
  1073. row.zypzt = 10;
  1074. this.form.zypzt = 10;
  1075. updateJobticket(this.form).then(response => {
  1076. this.msgSuccess(this.$t('修改成功'));
  1077. this.open = false;
  1078. this.getList();
  1079. });
  1080. },
  1081. statusGBSH(index, row) {
  1082. this.form = row;
  1083. this.form.zypzt = 18;
  1084. updateJobticket(this.form).then(response => {
  1085. this.msgSuccess(this.$t('修改成功'));
  1086. this.open = false;
  1087. this.getList();
  1088. });
  1089. },
  1090. statusYQ(index, row) {
  1091. this.form = row;
  1092. this.form.zypzt = 16;
  1093. updateJobticket(this.form).then(response => {
  1094. this.msgSuccess(this.$t('修改成功'));
  1095. this.open = false;
  1096. this.getList();
  1097. });
  1098. },
  1099. statusZF(index, row) {
  1100. this.form = row;
  1101. this.form.zypzt = 20;
  1102. updateJobticket(this.form).then(response => {
  1103. this.msgSuccess(this.$t('修改成功'));
  1104. this.open = false;
  1105. this.getList();
  1106. });
  1107. },
  1108. wcxztYOU(index, row) {
  1109. this.form = row;
  1110. this.form.wcxzt = 10;
  1111. updateJobticket(this.form).then(response => {
  1112. this.msgSuccess(this.$t('修改成功'));
  1113. this.open = false;
  1114. this.getList();
  1115. });
  1116. },
  1117. wcxztWU(index, row) {
  1118. this.form = row;
  1119. this.form.wcxzt = 12;
  1120. updateJobticket(this.form).then(response => {
  1121. this.msgSuccess(this.$t('修改成功'));
  1122. this.open = false;
  1123. this.getList();
  1124. });
  1125. },
  1126. // 表单重置
  1127. reset() {
  1128. this.form = {
  1129. id: null,
  1130. plantCode: null,
  1131. kprq: null,
  1132. startDate: null,
  1133. endDate: null,
  1134. qfsj: null,
  1135. qfbz: null,
  1136. qfr: null,
  1137. xpxp: null,
  1138. yqxkzh: null,
  1139. whgzxkzh: null,
  1140. dhzyxkzh: null,
  1141. hpjb: null,
  1142. xzkjxkzh: null,
  1143. content: null,
  1144. byclxr: null,
  1145. sgdw: null,
  1146. lxr: null,
  1147. lxdh: null,
  1148. xpsj: null,
  1149. zypzt: null,
  1150. jccdr: null,
  1151. wcxxbh: null,
  1152. wcxzt: null,
  1153. cxsj: null,
  1154. delFlag: null,
  1155. createrCode: null,
  1156. createdate: null,
  1157. updaterCode: null,
  1158. updatedate: null,
  1159. deptId: null,
  1160. remarks: null
  1161. };
  1162. this.resetForm("form");
  1163. },
  1164. /** 搜索按钮操作 */
  1165. handleQuery() {
  1166. console.log(this.queryParams)
  1167. this.queryParams.pageNum = 1
  1168. if (this.chooseDate == null) {
  1169. this.chooseDate = []
  1170. }
  1171. this.queryParams.startDate = this.chooseDate[0]
  1172. this.queryParams.endDate = this.chooseDate[1]
  1173. this.getList();
  1174. },
  1175. /** 重置按钮操作 */
  1176. resetQuery() {
  1177. this.resetForm("queryForm");
  1178. this.chooseDate = "";
  1179. this.handleQuery();
  1180. },
  1181. // 多选框选中数据
  1182. handleSelectionChange(selection) {
  1183. this.ids = selection.map(item => item.id)
  1184. this.single = selection.length !== 1
  1185. this.multiple = !selection.length
  1186. },
  1187. /** 新增按钮操作 */
  1188. handleAdd() {
  1189. this.reset();
  1190. this.open = true;
  1191. this.title = this.$t('新增') + " " + this.$t('工作票');
  1192. this.form.kprq = this.getNowFormatDate()
  1193. this.form.qfsj = '8:30'
  1194. this.form.zypzt = "10"
  1195. this.form.xpxp = "10"
  1196. this.isxp = false
  1197. },
  1198. /** 修改按钮操作 */
  1199. handleUpdate(row) {
  1200. this.isxp = true
  1201. this.reset();
  1202. const id = row.id || this.ids
  1203. getJobticket(id).then(response => {
  1204. this.form = response.data;
  1205. this.checkCategoryPromotion(this.form.userUnit);
  1206. this.open = true;
  1207. this.title = this.$t('修改') + this.$t('工作票');
  1208. });
  1209. },
  1210. /** 提交按钮 */
  1211. submitForm() {
  1212. this.$refs["form"].validate(valid => {
  1213. if (valid) {
  1214. if (this.form.id != null) {
  1215. updateJobticket(this.form).then(response => {
  1216. this.msgSuccess(this.$t('修改成功'));
  1217. this.open = false;
  1218. this.getList();
  1219. });
  1220. } else {
  1221. addJobticket(this.form).then(response => {
  1222. this.msgSuccess(this.$t('新增成功'));
  1223. this.open = false;
  1224. this.getList();
  1225. });
  1226. }
  1227. }
  1228. });
  1229. },
  1230. /** 删除按钮操作 */
  1231. handleDelete(row) {
  1232. if (row.children != null && row.children.length > 0) {
  1233. this.msgError('存在续票,无法删除主票')
  1234. return
  1235. }
  1236. const ids = row.id || this.ids;
  1237. this.$confirm(this.$t('是否确认删除?'), this.$t('警告'), {
  1238. confirmButtonText: this.$t('确定'),
  1239. cancelButtonText: this.$t('取消'),
  1240. type: "warning"
  1241. }).then(function () {
  1242. return delJobticket(ids);
  1243. }).then(() => {
  1244. this.getList();
  1245. this.msgSuccess(this.$t('删除成功'));
  1246. })
  1247. },
  1248. /** 导出按钮操作 */
  1249. handleExport() {
  1250. const queryParams = this.queryParams;
  1251. this.$confirm(this.$t('是否确认导出所有工作票数据项?'), this.$t('警告'), {
  1252. confirmButtonText: this.$t('确定'),
  1253. cancelButtonText: this.$t('取消'),
  1254. type: "warning"
  1255. }).then(function () {
  1256. return exportJobticket(queryParams);
  1257. }).then(response => {
  1258. this.download(response.msg);
  1259. })
  1260. },
  1261. /** 导入按钮操作 */
  1262. handleImport() {
  1263. this.upload.title = this.$t('用户导入');
  1264. this.upload.open = true;
  1265. },
  1266. /** 下载模板操作 */
  1267. importTemplate() {
  1268. this.$refs['downloadFileForm'].submit()
  1269. },
  1270. // 文件上传中处理
  1271. handleFileUploadProgress(event, file, fileList) {
  1272. this.upload.isUploading = true;
  1273. },
  1274. // 文件上传成功处理
  1275. handleFileSuccess(response, file, fileList) {
  1276. this.upload.open = false;
  1277. this.upload.isUploading = false;
  1278. this.$refs.upload.clearFiles();
  1279. if (response.data[0] != null) {
  1280. this.$alert(this.$t('成功导入') + response.msg + this.$t('条数据') + "," + this.$t('第') + response.data + this.$t('行数据出现错误导入失败') + "。", this.$t('导入结果'), {dangerouslyUseHTMLString: true});
  1281. } else {
  1282. this.$alert(this.$t('成功导入') + response.msg + this.$t('条数据'), this.$t('导入结果'), {dangerouslyUseHTMLString: true});
  1283. }
  1284. this.getList();
  1285. },
  1286. // 提交上传文件
  1287. submitFileForm() {
  1288. this.$refs.upload.submit();
  1289. },
  1290. //数据分析
  1291. handleData() {
  1292. this.drawer = true
  1293. }
  1294. }
  1295. };
  1296. </script>
  1297. <style>
  1298. .text {
  1299. font-size: 14px;
  1300. }
  1301. .item {
  1302. margin-bottom: 18px;
  1303. }
  1304. .clearfix {
  1305. color: #1e1e1e;
  1306. }
  1307. .clearfix:before,
  1308. .clearfix:after {
  1309. display: table;
  1310. content: "";
  1311. }
  1312. .clearfix:after {
  1313. clear: both
  1314. }
  1315. .box-card {
  1316. width: 100%;
  1317. }
  1318. .el-drawer__body {
  1319. overflow: auto;
  1320. }
  1321. .el-drawer__container ::-webkit-scrollbar {
  1322. display: none;
  1323. }
  1324. </style>