index.vue 91 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133
  1. <template>
  2. <div class="app-container-list">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  4. <el-form-item :label="$t('MOC编号')" label-width="50" prop="mocNo">
  5. <el-input
  6. v-model="queryParams.mocNo"
  7. :placeholder="$t('请输入') + $t('MOC编号')"
  8. clearable
  9. size="small"
  10. @keyup.enter.native="handleQuery"
  11. />
  12. </el-form-item>
  13. <el-form-item :label="$t('公司MOC编号')" label-width="50" prop="companyMocNo">
  14. <el-input
  15. v-model="queryParams.companyMocNo"
  16. :placeholder="$t('请输入') + $t('公司MOC编号')"
  17. clearable
  18. size="small"
  19. @keyup.enter.native="handleQuery"
  20. />
  21. </el-form-item>
  22. <el-form-item :label="$t('工艺单元')" label-width="50" prop="processUnit">
  23. <el-input
  24. v-model="queryParams.processUnit"
  25. :placeholder="$t('请输入') + $t('工艺单元')"
  26. clearable
  27. size="small"
  28. @keyup.enter.native="handleQuery"
  29. />
  30. </el-form-item>
  31. <el-form-item :label="$t('部门')" label-width="50" prop="department">
  32. <el-input
  33. v-model="queryParams.department"
  34. :placeholder="$t('请输入') + $t('部门')"
  35. clearable
  36. size="small"
  37. @keyup.enter.native="handleQuery"
  38. />
  39. </el-form-item>
  40. <el-form-item :label="$t('泄露位置')" label-width="50" prop="leakLocation">
  41. <el-input
  42. v-model="queryParams.leakLocation"
  43. :placeholder="$t('请输入') + $t('泄露位置')"
  44. clearable
  45. size="small"
  46. @keyup.enter.native="handleQuery"
  47. />
  48. </el-form-item>
  49. <!--<el-form-item :label="$t('项目号')" label-width="50" prop="projectNo">-->
  50. <!--<el-input-->
  51. <!--v-model="queryParams.projectNo"-->
  52. <!--:placeholder="$t('请输入') + $t('项目号')"-->
  53. <!--clearable-->
  54. <!--size="small"-->
  55. <!--@keyup.enter.native="handleQuery"-->
  56. <!--/>-->
  57. <!--</el-form-item>-->
  58. <!--<el-form-item :label="$t('区域')" prop="area">-->
  59. <!--<el-select v-model="queryParams.area" :placeholder="$t('请选择') + $t('区域')">-->
  60. <!--<el-option-->
  61. <!--v-for="dict in areaOptions"-->
  62. <!--:key="dict.dictValue"-->
  63. <!--:label="dict.dictLabel"-->
  64. <!--:value="dict.dictValue"-->
  65. <!--&gt;</el-option>-->
  66. <!--</el-select>-->
  67. <!--</el-form-item>-->
  68. <el-form-item :label="$t('标题')" prop="title">
  69. <el-input
  70. v-model="queryParams.title"
  71. :placeholder="$t('请输入') + $t('标题')"
  72. clearable
  73. size="small"
  74. @keyup.enter.native="handleQuery"
  75. />
  76. </el-form-item>
  77. <el-form-item :label="$t('操作压力')" prop="pressure">
  78. <el-input v-model="queryParams.pressure" :placeholder="$t('请输入') + $t('操作压力')" />
  79. </el-form-item>
  80. <el-form-item :label="$t('操作温度')" prop="temperature">
  81. <el-input v-model="queryParams.temperature" :placeholder="$t('请输入') + $t('操作温度')" />
  82. </el-form-item>
  83. <el-form-item :label="$t('泄露介质')" prop="leakFluid">
  84. <el-input v-model="queryParams.leakFluid" :placeholder="$t('请输入') + $t('泄露介质')" />
  85. </el-form-item>
  86. <el-form-item :label="$t('介质类型')" prop="materialType">
  87. <el-input v-model="queryParams.materialType" :placeholder="$t('请输入') + $t('介质类型')" />
  88. </el-form-item>
  89. <el-form-item :label="$t('方案日期')" prop="planDate">
  90. <el-date-picker clearable size="small" style="width: 200px"
  91. v-model="queryParams.planDate"
  92. type="date"
  93. value-format="yyyy-MM-dd"
  94. :placeholder="$t('请选择') + $t('方案日期')">
  95. </el-date-picker>
  96. </el-form-item>
  97. <el-form-item :label="$t('堵漏日期')" prop="sealDate">
  98. <el-date-picker clearable size="small" style="width: 200px"
  99. v-model="queryParams.sealDate"
  100. type="date"
  101. value-format="yyyy-MM-dd"
  102. :placeholder="$t('请选择') + $t('堵漏日期')">
  103. </el-date-picker>
  104. </el-form-item>
  105. <el-form-item :label="$t('第一次延期')" prop="extention1">
  106. <el-date-picker clearable size="small" style="width: 200px"
  107. v-model="queryParams.extention1"
  108. type="date"
  109. value-format="yyyy-MM-dd"
  110. :placeholder="$t('请选择') + $t('第一次延期')">
  111. </el-date-picker>
  112. </el-form-item>
  113. <el-form-item :label="$t('第二次延期')" prop="extention2">
  114. <el-date-picker clearable size="small" style="width: 200px"
  115. v-model="queryParams.extention2"
  116. type="date"
  117. value-format="yyyy-MM-dd"
  118. :placeholder="$t('请选择') + $t('第二次延期')">
  119. </el-date-picker>
  120. </el-form-item>
  121. <el-form-item :label="$t('第三次延期')" prop="extention3">
  122. <el-date-picker clearable size="small" style="width: 200px"
  123. v-model="queryParams.extention3"
  124. type="date"
  125. value-format="yyyy-MM-dd"
  126. :placeholder="$t('请选择') + $t('第三次延期')">
  127. </el-date-picker>
  128. </el-form-item>
  129. <el-form-item :label="$t('第四次延期')" prop="extention4">
  130. <el-date-picker clearable size="small" style="width: 200px"
  131. v-model="queryParams.extention4"
  132. type="date"
  133. value-format="yyyy-MM-dd"
  134. :placeholder="$t('请选择') + $t('第四次延期')">
  135. </el-date-picker>
  136. </el-form-item>
  137. <el-form-item :label="$t('第五次延期')" prop="extention5">
  138. <el-date-picker clearable size="small" style="width: 200px"
  139. v-model="queryParams.extention5"
  140. type="date"
  141. value-format="yyyy-MM-dd"
  142. :placeholder="$t('请选择') + $t('第五次延期')">
  143. </el-date-picker>
  144. </el-form-item>
  145. <el-form-item :label="$t('第六次延期')" prop="extention6">
  146. <el-date-picker clearable size="small" style="width: 200px"
  147. v-model="queryParams.extention6"
  148. type="date"
  149. value-format="yyyy-MM-dd"
  150. :placeholder="$t('请选择') + $t('第六次延期')">
  151. </el-date-picker>
  152. </el-form-item>
  153. <el-form-item :label="$t('第七次延期')" prop="extention7">
  154. <el-date-picker clearable size="small" style="width: 200px"
  155. v-model="queryParams.extention7"
  156. type="date"
  157. value-format="yyyy-MM-dd"
  158. :placeholder="$t('请选择') + $t('第七次延期')">
  159. </el-date-picker>
  160. </el-form-item>
  161. <el-form-item :label="$t('第八次延期')" prop="extention8">
  162. <el-date-picker clearable size="small" style="width: 200px"
  163. v-model="queryParams.extention8"
  164. type="date"
  165. value-format="yyyy-MM-dd"
  166. :placeholder="$t('请选择') + $t('第八次延期')">
  167. </el-date-picker>
  168. </el-form-item>
  169. <el-form-item :label="$t('第九次延期')" prop="extention9">
  170. <el-date-picker clearable size="small" style="width: 200px"
  171. v-model="queryParams.extention9"
  172. type="date"
  173. value-format="yyyy-MM-dd"
  174. :placeholder="$t('请选择') + $t('第九次延期')">
  175. </el-date-picker>
  176. </el-form-item>
  177. <el-form-item :label="$t('卡具状态')" prop="area">
  178. <el-select v-model="queryParams.status" :placeholder="$t('请选择') + $t('卡具状态')">
  179. <el-option
  180. v-for="dict in mocStatusOptions"
  181. :key="dict.dictValue"
  182. :label="dict.dictLabel"
  183. :value="dict.dictValue"
  184. ></el-option>
  185. </el-select>
  186. </el-form-item>
  187. <el-form-item :label="$t('到期时间')" prop="extention9">
  188. <el-date-picker clearable size="small" style="width: 200px"
  189. v-model="queryParams.expTime"
  190. type="date"
  191. value-format="yyyy-MM-dd"
  192. :placeholder="$t('请选择') + $t('到期时间')">
  193. </el-date-picker>
  194. </el-form-item>
  195. <!--<el-form-item :label="$t('MOC类型')" prop="mocType">-->
  196. <!--<el-select v-model="queryParams.mocType" :placeholder="$t('请选择') + $t('MOC类型')">-->
  197. <!--<el-option-->
  198. <!--v-for="dict in areaOptions"-->
  199. <!--:key="dict.dictValue"-->
  200. <!--:label="dict.dictLabel"-->
  201. <!--:value="dict.dictValue"-->
  202. <!--&gt;</el-option>-->
  203. <!--</el-select>-->
  204. <!--</el-form-item>-->
  205. <!--<el-form-item :label="$t('负责人')" prop="owner">-->
  206. <!--<el-input-->
  207. <!--v-model="queryParams.owner"-->
  208. <!--:placeholder="$t('请输入') + $t('负责人')"-->
  209. <!--clearable-->
  210. <!--size="small"-->
  211. <!--@keyup.enter.native="handleQuery"-->
  212. <!--/>-->
  213. <!--</el-form-item>-->
  214. <!--<el-form-item :label="$t('申请时间')" prop="approveTime">-->
  215. <!--<el-date-picker clearable size="small" style="width: 200px"-->
  216. <!--v-model="queryParams.approveTime"-->
  217. <!--type="date"-->
  218. <!--value-format="yyyy-MM-dd"-->
  219. <!--:placeholder="$t('请选择') + $t('申请时间')">-->
  220. <!--</el-date-picker>-->
  221. <!--</el-form-item>-->
  222. <!--<el-form-item :label="$t('MC时间')" prop="mcTime">-->
  223. <!--<el-date-picker clearable size="small" style="width: 200px"-->
  224. <!--v-model="queryParams.mcTime"-->
  225. <!--type="date"-->
  226. <!--value-format="yyyy-MM-dd"-->
  227. <!--:placeholder="$t('请选择') + $t('MC时间')">-->
  228. <!--</el-date-picker>-->
  229. <!--</el-form-item>-->
  230. <!--<el-form-item :label="$t('MC情况')" prop="mcDetail">-->
  231. <!--<el-input-->
  232. <!--v-model="queryParams.mcDetail"-->
  233. <!--:placeholder="$t('请输入') + $t('MC情况')"-->
  234. <!--clearable-->
  235. <!--size="small"-->
  236. <!--@keyup.enter.native="handleQuery"-->
  237. <!--/>-->
  238. <!--</el-form-item>-->
  239. <el-form-item :label="$t('备注')" prop="remarks">
  240. <el-input
  241. v-model="queryParams.remarks"
  242. :placeholder="$t('请输入') + $t('备注')"
  243. clearable
  244. size="small"
  245. @keyup.enter.native="handleQuery"
  246. />
  247. </el-form-item>
  248. <!--<el-form-item :label="$t('风险等级')" prop="riskLevel">-->
  249. <!--<el-input-->
  250. <!--v-model="queryParams.riskLevel"-->
  251. <!--:placeholder="$t('请输入') + $t('风险等级')"-->
  252. <!--clearable-->
  253. <!--size="small"-->
  254. <!--@keyup.enter.native="handleQuery"-->
  255. <!--/>-->
  256. <!--</el-form-item>-->
  257. <!--<el-form-item :label="$t('EHS评估/审查')" prop="ehsCheck">-->
  258. <!--<el-date-picker clearable size="small" style="width: 200px"-->
  259. <!--v-model="queryParams.ehsCheck"-->
  260. <!--type="date"-->
  261. <!--value-format="yyyy-MM-dd"-->
  262. <!--:placeholder="$t('请选择') + $t('EHS评估/审查')">-->
  263. <!--</el-date-picker>-->
  264. <!--</el-form-item>-->
  265. <!--<el-form-item :label="$t('培训')" prop="training">-->
  266. <!--<el-date-picker clearable size="small" style="width: 200px"-->
  267. <!--v-model="queryParams.training"-->
  268. <!--type="date"-->
  269. <!--value-format="yyyy-MM-dd"-->
  270. <!--:placeholder="$t('请选择') + $t('培训')"-->
  271. <!--:picker-options="trainingDatePicker">-->
  272. <!--</el-date-picker>-->
  273. <!--</el-form-item>-->
  274. <!--<el-form-item :label="$t('PID更新')" prop="pidMaster">-->
  275. <!--<el-select v-model="queryParams.pidMaster" :placeholder="$t('请选择') + $t('PID更新')">-->
  276. <!--<el-option-->
  277. <!--v-for="dict in pidMasterOptions"-->
  278. <!--:key="dict.dictValue"-->
  279. <!--:label="dict.dictLabel"-->
  280. <!--:value="dict.dictValue"-->
  281. <!--&gt;</el-option>-->
  282. <!--</el-select>-->
  283. <!--</el-form-item>-->
  284. <!--<el-form-item :label="$t('SOP更新')" prop="sopUpdate">-->
  285. <!--<el-select v-model="queryParams.sopUpdate" :placeholder="$t('请选择') + $t('SOP更新')">-->
  286. <!--<el-option-->
  287. <!--v-for="dict in sopUpdateOptions"-->
  288. <!--:key="dict.dictValue"-->
  289. <!--:label="dict.dictLabel"-->
  290. <!--:value="dict.dictValue"-->
  291. <!--&gt;</el-option>-->
  292. <!--</el-select>-->
  293. <!--</el-form-item>-->
  294. <!--<el-form-item :label="$t('文档更新')" prop="docUpdate">-->
  295. <!--<el-select v-model="queryParams.docUpdate" :placeholder="$t('请选择') + $t('文档更新')">-->
  296. <!--<el-option-->
  297. <!--v-for="dict in docUpdateOptions"-->
  298. <!--:key="dict.dictValue"-->
  299. <!--:label="dict.dictLabel"-->
  300. <!--:value="dict.dictValue"-->
  301. <!--&gt;</el-option>-->
  302. <!--</el-select>-->
  303. <!--</el-form-item>-->
  304. <!--<el-form-item label="PSSR" prop="pssr">-->
  305. <!--<el-date-picker clearable size="small" style="width: 200px"-->
  306. <!--v-model="queryParams.pssr"-->
  307. <!--type="date"-->
  308. <!--value-format="yyyy-MM-dd"-->
  309. <!--:placeholder="$t('请选择') + 'PSSR'"-->
  310. <!--:picker-options="pssrDatePicker">-->
  311. <!--</el-date-picker>-->
  312. <!--</el-form-item>-->
  313. <!--<el-form-item :label="$t('PSSR编号')" prop="pssrNo">-->
  314. <!--<el-input v-model="queryParams.pssrNo" :placeholder="$t('请输入') + $t('PSSR编号')" />-->
  315. <!--</el-form-item>-->
  316. <!--<el-form-item :label="$t('CTE工作号')" label-width="120" prop="cteNo">-->
  317. <!--<el-input-->
  318. <!--v-model="queryParams.cteNo"-->
  319. <!--:placeholder="$t('请输入') + $t('CTE工作号')"-->
  320. <!--clearable-->
  321. <!--size="small"-->
  322. <!--@keyup.enter.native="handleQuery"-->
  323. <!--/>-->
  324. <!--</el-form-item>-->
  325. <!--<el-form-item :label="$t('实施情况')" prop="trueState" label-width="150">-->
  326. <!--<el-select v-model="queryParams.trueState" :placeholder="$t('请选择') + $t('实施情况')" clearable size="small">-->
  327. <!--<el-option-->
  328. <!--v-for="dict in trueStateOptions"-->
  329. <!--:key="dict.dictValue"-->
  330. <!--:label="dict.dictLabel"-->
  331. <!--:value="dict.dictValue"-->
  332. <!--/>-->
  333. <!--</el-select>-->
  334. <!--</el-form-item>-->
  335. <!--<el-form-item :label="$t('变更性质')" prop="changeNature" label-width="150">-->
  336. <!--<el-select v-model="queryParams.changeNature" :placeholder="$t('请选择') + $t('变更性质')" clearable size="small">-->
  337. <!--<el-option-->
  338. <!--v-for="dict in changeNatureOptions"-->
  339. <!--:key="dict.dictValue"-->
  340. <!--:label="dict.dictLabel"-->
  341. <!--:value="dict.dictValue"-->
  342. <!--/>-->
  343. <!--</el-select>-->
  344. <!--</el-form-item>-->
  345. <el-form-item>
  346. <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('搜索') }}</el-button>
  347. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('重置') }}</el-button>
  348. </el-form-item>
  349. </el-form>
  350. <el-row :gutter="10" class="mb8">
  351. <el-col :span="1.5">
  352. <el-button
  353. type="primary"
  354. icon="el-icon-plus"
  355. size="mini"
  356. @click="handleAdd"
  357. v-hasPermi="['process:moc:add']"
  358. >{{ $t('新增') }}</el-button>
  359. </el-col>
  360. <el-col :span="1.5">
  361. <el-button
  362. type="success"
  363. icon="el-icon-edit"
  364. size="mini"
  365. :disabled="single"
  366. @click="handleUpdate"
  367. v-hasPermi="['process:moc:edit']"
  368. >{{ $t('修改') }}</el-button>
  369. </el-col>
  370. <el-col :span="1.5">
  371. <el-button
  372. type="danger"
  373. icon="el-icon-delete"
  374. size="mini"
  375. :disabled="multiple"
  376. @click="handleDelete"
  377. v-hasPermi="['process:moc:remove']"
  378. >{{ $t('删除') }}</el-button>
  379. </el-col>
  380. <!--<el-col :span="1.5">-->
  381. <!--<el-button-->
  382. <!--type="info"-->
  383. <!--icon="el-icon-upload2"-->
  384. <!--size="mini"-->
  385. <!--@click="handleImport"-->
  386. <!--v-hasPermi="['process:moc:edit']"-->
  387. <!--&gt;{{ $t('导入') }}</el-button>-->
  388. <!--</el-col>-->
  389. <!--<el-col :span="1.5">-->
  390. <!--<el-button-->
  391. <!--type="warning"-->
  392. <!--icon="el-icon-download"-->
  393. <!--size="mini"-->
  394. <!--@click="handleExport"-->
  395. <!--v-hasPermi="['process:moc:export']"-->
  396. <!--&gt;{{ $t('导出') }}</el-button>-->
  397. <!--</el-col>-->
  398. <!--<el-col :span="1.5">-->
  399. <!--<el-button-->
  400. <!--type="primary"-->
  401. <!--icon="el-icon-s-data"-->
  402. <!--size="mini"-->
  403. <!--@click="handleData"-->
  404. <!--&gt;{{ $t('数据分析') }}</el-button>-->
  405. <!--</el-col>-->
  406. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  407. </el-row>
  408. <el-table v-loading="loading" :data="mocList" @selection-change="handleSelectionChange" :cell-style="tableCellStyle" :cell-class-name="tableCellClassName" :height="clientHeight" border>
  409. <el-table-column type="selection" width="55" align="center" />
  410. <el-table-column :label="$t('MOC编号')" align="center" width="120" prop="mocNo" :show-overflow-tooltip="true"/>
  411. <!--<el-table-column :label="$t('装置编号')" align="center" width="120" prop="plantNumber" :show-overflow-tooltip="true"/>-->
  412. <el-table-column :label="$t('公司MOC编号')" align="center" width="120" prop="companyMocNo" :show-overflow-tooltip="true"/>
  413. <el-table-column :label="$t('工艺单元')" align="center" width="120" prop="processUnit" :show-overflow-tooltip="true"/>
  414. <el-table-column :label="$t('部门')" align="center" width="120" prop="department" :show-overflow-tooltip="true" />
  415. <el-table-column :label="$t('泄露位置')" align="center" width="120" prop="leakLocation" :show-overflow-tooltip="true"/>
  416. <!--<el-table-column :label="$t('项目号')" align="center" width="120" prop="projectNo" :show-overflow-tooltip="true"/>-->
  417. <!--<el-table-column :label="$t('区域')" align="center" prop="area" :formatter="areaFormat" />-->
  418. <el-table-column :label="$t('标题')" align="center" width="320" prop="title" :show-overflow-tooltip="true"/>
  419. <el-table-column :label="$t('操作压力 (MPaG)')" align="center" width="150" prop="pressure" :show-overflow-tooltip="true"/>
  420. <el-table-column :label="$t('操作温度 (℃)')" align="center" width="120" prop="temperature" :show-overflow-tooltip="true"/>
  421. <el-table-column :label="$t('泄露介质')" align="center" width="100" prop="leakFluid" :show-overflow-tooltip="true"/>
  422. <el-table-column :label="$t('介质类型')" align="center" width="100" prop="materialType" :show-overflow-tooltip="true"/>
  423. <el-table-column :label="$t('方案日期')" align="center" prop="planDate" width="100">
  424. <template slot-scope="scope">
  425. <span>{{ parseTime(scope.row.planDate, '{y}-{m}-{d}') }}</span>
  426. </template>
  427. </el-table-column>
  428. <el-table-column :label="$t('堵漏日期')" align="center" prop="sealDate" width="100">
  429. <template slot-scope="scope">
  430. <span>{{ parseTime(scope.row.sealDate, '{y}-{m}-{d}') }}</span>
  431. </template>
  432. </el-table-column>
  433. <el-table-column :label="$t('第一次延期')" align="center" prop="extention1" width="100">
  434. <template slot-scope="scope">
  435. <span v-if="scope.row.extention1 == null && scope.row.status == 0">N.A.</span>
  436. <span>{{ parseTime(scope.row.extention1, '{y}-{m}-{d}') }}</span>
  437. </template>
  438. </el-table-column>
  439. <el-table-column :label="$t('第二次延期')" align="center" prop="extention2" width="100">
  440. <template slot-scope="scope">
  441. <span v-if="scope.row.extention2 == null && scope.row.status == 0">N.A.</span>
  442. <span>{{ parseTime(scope.row.extention2, '{y}-{m}-{d}') }}</span>
  443. </template>
  444. </el-table-column>
  445. <el-table-column :label="$t('第三次延期')" align="center" prop="extention3" width="100">
  446. <template slot-scope="scope">
  447. <span v-if="scope.row.extention3 == null && scope.row.status == 0">N.A.</span>
  448. <span>{{ parseTime(scope.row.extention3, '{y}-{m}-{d}') }}</span>
  449. </template>
  450. </el-table-column>
  451. <el-table-column :label="$t('第四次延期')" align="center" prop="extention4" width="100">
  452. <template slot-scope="scope">
  453. <span v-if="scope.row.extention4 == null && scope.row.status == 0">N.A.</span>
  454. <span>{{ parseTime(scope.row.extention4, '{y}-{m}-{d}') }}</span>
  455. </template>
  456. </el-table-column>
  457. <el-table-column :label="$t('第五次延期')" align="center" prop="extention5" width="100">
  458. <template slot-scope="scope">
  459. <span v-if="scope.row.extention5 == null && scope.row.status == 0">N.A.</span>
  460. <span>{{ parseTime(scope.row.extention5, '{y}-{m}-{d}') }}</span>
  461. </template>
  462. </el-table-column>
  463. <el-table-column :label="$t('第六次延期')" align="center" prop="extention6" width="100">
  464. <template slot-scope="scope">
  465. <span v-if="scope.row.extention6 == null && scope.row.status == 0">N.A.</span>
  466. <span>{{ parseTime(scope.row.extention6, '{y}-{m}-{d}') }}</span>
  467. </template>
  468. </el-table-column>
  469. <el-table-column :label="$t('第七次延期')" align="center" prop="extention7" width="100">
  470. <template slot-scope="scope">
  471. <span v-if="scope.row.extention7 == null && scope.row.status == 0">N.A.</span>
  472. <span>{{ parseTime(scope.row.extention7, '{y}-{m}-{d}') }}</span>
  473. </template>
  474. </el-table-column>
  475. <el-table-column :label="$t('第八次延期')" align="center" prop="extention8" width="100">
  476. <template slot-scope="scope">
  477. <span v-if="scope.row.extention8 == null && scope.row.status == 0">N.A.</span>
  478. <span>{{ parseTime(scope.row.extention8, '{y}-{m}-{d}') }}</span>
  479. </template>
  480. </el-table-column>
  481. <el-table-column :label="$t('第九次延期')" align="center" prop="extention9" width="100">
  482. <template slot-scope="scope">
  483. <span v-if="scope.row.extention9 == null && scope.row.status == 0">N.A.</span>
  484. <span>{{ parseTime(scope.row.extention9, '{y}-{m}-{d}') }}</span>
  485. </template>
  486. </el-table-column>
  487. <el-table-column :label="$t('到期时间')" align="center" prop="extention9" width="100">
  488. <template slot-scope="scope">
  489. <span>{{ parseTime(scope.row.expTime, '{y}-{m}-{d}') }}</span>
  490. </template>
  491. </el-table-column>
  492. <el-table-column :label="$t('卡具状态')" align="center" width="100" prop="status" :show-overflow-tooltip="true" :formatter="mocStatusFormat"/>
  493. <!--<el-table-column prop="mocType" label="":show-overflow-tooltip="true" :formatter="mocTypeFormat" width="120">-->
  494. <!--<template slot="header">-->
  495. <!--MOC类型-->
  496. <!--<span-->
  497. <!--@click="mocTypeInfo.open = true"-->
  498. <!--id="moc-type">-->
  499. <!--<i class="el-icon-question"></i>-->
  500. <!--</span>-->
  501. <!--</template>-->
  502. <!--</el-table-column>-->
  503. <!--<el-table-column :label="$t('负责人')" align="center" prop="owner" :show-overflow-tooltip="true"/>-->
  504. <!--<el-table-column :label="$t('申请时间')" align="center" prop="approveTime" width="100">-->
  505. <!--<template slot-scope="scope">-->
  506. <!--<span>{{ parseTime(scope.row.approveTime, '{y}-{m}-{d}') }}</span>-->
  507. <!--</template>-->
  508. <!--</el-table-column>-->
  509. <!--<el-table-column :label="$t('完成时间')" align="center" prop="endtime" width="100">-->
  510. <!--<template slot-scope="scope">-->
  511. <!--<span>{{ parseTime(scope.row.endtime, '{y}-{m}-{d}') }}</span>-->
  512. <!--</template>-->
  513. <!--</el-table-column>-->
  514. <!--<el-table-column :label="$t('实施情况')" align="center" prop="trueState" :formatter="trueStateFormat" />-->
  515. <!--<el-table-column :label="$t('变更性质')" align="center" prop="changeNature" :formatter="changeNatureFormat" />-->
  516. <!--<el-table-column :label="$t('到期时间')" align="center" prop="overTime" width="100">-->
  517. <!--<template slot-scope="scope">-->
  518. <!--<span v-if="scope.row.overTime !== 'N.A.'">{{ parseTime(scope.row.overTime, '{y}-{m}-{d}') }}</span>-->
  519. <!--<span v-if="scope.row.overTime === 'N.A.'">{{ scope.row.overTime }}</span>-->
  520. <!--</template>-->
  521. <!--</el-table-column>-->
  522. <!--<el-table-column :label="$t('临时MOC状态')" align="center" prop="temporaryState" :formatter="temporaryStateFormat" />-->
  523. <!--<el-table-column :label="$t('MC时间')" align="center" prop="mcTime" :show-overflow-tooltip="true" width="100"/>-->
  524. <!--<el-table-column :label="$t('MC情况')" align="center" prop="mcDetail" :show-overflow-tooltip="true" width="100" :formatter="mcDetailFormat" />-->
  525. <el-table-column :label="$t('备注')" align="center" prop="remarks" :show-overflow-tooltip="true" width="130" />
  526. <!--<el-table-column :label="$t('风险等级')" align="center" prop="riskLevel" :formatter="riskLevelFormat" />-->
  527. <!--<el-table-column :label="$t('EHS评估/审查')" align="center" width="130" prop="ehsCheck" :show-overflow-tooltip="true">-->
  528. <!--<template slot-scope="scope">-->
  529. <!--<span> {{scope.row.ehsCheck}}</span>-->
  530. <!--<el-button icon="el-icon-folder" style="color:#6e96fa" v-if="scope.row.ehsCheck !== null" @click="handleDoc(scope.row , 'moc-ehsCheck')" circle></el-button>-->
  531. <!--</template>-->
  532. <!--</el-table-column>-->
  533. <!--<el-table-column :label="$t('培训')" align="center" width="130" prop="training" :show-overflow-tooltip="true">-->
  534. <!--<template slot-scope="scope">-->
  535. <!--<span> {{scope.row.training}}</span>-->
  536. <!--<el-button icon="el-icon-folder" style="color:#6e96fa;" v-if="scope.row.training !== null" @click="handleDoc(scope.row , 'moc-training')" circle></el-button>-->
  537. <!--</template>-->
  538. <!--</el-table-column>-->
  539. <!--<el-table-column :label="$t('SOP更新')" align="center" prop="sopUpdate" :formatter="sopUpdateFormat" />-->
  540. <!--<el-table-column :label="$t('PID更新')" align="center" prop="pidMaster" :formatter="pidMasterFormat" />-->
  541. <!--<el-table-column :label="$t('文档更新')" align="center" prop="docUpdate" :formatter="docUpdateFormat" />-->
  542. <!--<el-table-column label="PSSR" align="center" width="130" prop="pssr" :show-overflow-tooltip="true">-->
  543. <!--<template slot-scope="scope">-->
  544. <!--<span> {{scope.row.pssr}}</span>-->
  545. <!--<el-button icon="el-icon-folder" style="color:#6e96fa;" v-if="scope.row.pssr !== null" @click="handleDoc(scope.row , 'moc-pssr')" circle></el-button>-->
  546. <!--</template>-->
  547. <!--</el-table-column>-->
  548. <!--<el-table-column :label="$t('PSSR编号')" align="center" prop="pssrNo" width="130" />-->
  549. <!--<el-table-column :label="$t('通知单')" align="center" prop="noticeLetter" :show-overflow-tooltip="true"/>
  550. <el-table-column :label="$t('工作单')" align="center" prop="workLetter" :show-overflow-tooltip="true"/>
  551. <el-table-column :label="$t('CTE工作号')" align="center" prop="cteNo" :show-overflow-tooltip="true"/>
  552. <el-table-column :label="$t('投资费用(RMB)')" align="center" prop="investCost" :show-overflow-tooltip="true"/>
  553. <el-table-column :label="$t('类别')" align="center" prop="category" :formatter="categoryFormat" />
  554. <el-table-column :label="$t('重要性')" align="center" prop="significance" :show-overflow-tooltip="true"/>
  555. <el-table-column :label="$t('分类')" align="center" width="120" prop="classification" :show-overflow-tooltip="true"/>
  556. <el-table-column :label="$t('仪表控制')" align="center" prop="dashControl" :show-overflow-tooltip="true"/>
  557. <el-table-column :label="$t('预计完成时间')" align="center" prop="estimateEndtime" width="100">
  558. <template slot-scope="scope">
  559. <span>{{ parseTime(scope.row.estimateEndtime, '{y}-{m}-{d}') }}</span>
  560. </template>
  561. </el-table-column>
  562. <el-table-column :label="$t('EHS审查数据库')" align="center" prop="ehsDb" :show-overflow-tooltip="true"/>
  563. <el-table-column :label="$t('PSSR数据库')" align="center" prop="pssrDb" :show-overflow-tooltip="true"/>
  564. <el-table-column :label="$t('CAPEX计划')" align="center" prop="capex" :show-overflow-tooltip="true"/>-->
  565. <el-table-column :label="$t('操作')" align="center" fixed="right" width="240" class-name="small-padding fixed-width">
  566. <template slot-scope="scope">
  567. <el-button
  568. size="mini"
  569. type="text"
  570. icon="el-icon-edit"
  571. @click="handleDelay(scope.row)"
  572. v-hasPermi="['process:moc:edit']"
  573. v-if="scope.row.extention9 == null && scope.row.status == 1"
  574. >{{ $t('延期') }}</el-button>
  575. <el-button
  576. size="mini"
  577. type="text"
  578. icon="el-icon-circle-close"
  579. @click="handleRemove(scope.row)"
  580. v-hasPermi="['process:moc:edit']"
  581. v-if="scope.row.status == 1"
  582. >{{ $t('移除') }}</el-button>
  583. <el-button
  584. size="mini"
  585. type="text"
  586. icon="el-icon-edit"
  587. @click="handleUpdate(scope.row)"
  588. v-hasPermi="['process:moc:edit']"
  589. >{{ $t('修改') }}</el-button>
  590. <el-button
  591. size="mini"
  592. type="text"
  593. icon="el-icon-delete"
  594. @click="handleDelete(scope.row)"
  595. v-hasPermi="['process:moc:remove']"
  596. >{{ $t('删除') }}</el-button>
  597. </template>
  598. </el-table-column>
  599. </el-table>
  600. <pagination
  601. v-show="total>0"
  602. :total="total"
  603. :page.sync="queryParams.pageNum"
  604. :limit.sync="queryParams.pageSize"
  605. @pagination="getList"
  606. />
  607. <!-- 延期对话框 -->
  608. <el-dialog v-dialogDrag :title="delayDialog.title" :visible.sync="delayDialog.open" width="500px" append-to-body>
  609. <el-form ref="form" :model="delayForm" :rules="delayRules" label-width="80px">
  610. <el-form-item :label="$t('延期时间')" prop="extention">
  611. <el-date-picker clearable size="small" style="width: 200px"
  612. v-model="delayForm.extention"
  613. type="date"
  614. value-format="yyyy-MM-dd"
  615. :placeholder="$t('请选择') + $t('延期时间')">
  616. </el-date-picker>
  617. </el-form-item>
  618. </el-form>
  619. <div slot="footer" class="dialog-footer">
  620. <el-button type="primary" @click="submitDelayForm">{{ $t('确 定') }}</el-button>
  621. <el-button @click="cancelDelay">{{ $t('取 消') }}</el-button>
  622. </div>
  623. </el-dialog>
  624. <!-- 添加或修改MOC管理对话框 -->
  625. <el-dialog v-dialogDrag :title="title" :visible.sync="open" width="500px" append-to-body>
  626. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  627. <!--<el-form-item :label="$t('装置名称')" prop="plantCode">-->
  628. <!--<el-select v-model="form.plantCode" :placeholder="$t('请选择') + $t('装置名称')">-->
  629. <!--<el-option-->
  630. <!--v-for="dict in plantCodeOptions"-->
  631. <!--:key="dict.dictValue"-->
  632. <!--:label="dict.dictLabel"-->
  633. <!--:value="dict.dictValue"-->
  634. <!--&gt;</el-option>-->
  635. <!--</el-select>-->
  636. <!--</el-form-item>-->
  637. <el-form-item :label="$t('MOC编号')" prop="mocNo">
  638. <el-input v-model="form.mocNo" :placeholder="$t('请输入') + $t('MOC编号')" />
  639. </el-form-item>
  640. <el-form-item :label="$t('公司MOC编号')" prop="companyMocNo">
  641. <el-input v-model="form.companyMocNo" :placeholder="$t('请输入') + $t('公司MOC编号')" />
  642. </el-form-item>
  643. <el-form-item :label="$t('工艺单元')" prop="processUnit">
  644. <el-input v-model="form.processUnit" :placeholder="$t('请输入') + $t('工艺单元')" />
  645. </el-form-item>
  646. <el-form-item :label="$t('部门')" prop="department">
  647. <el-input v-model="form.department" :placeholder="$t('请输入') + $t('部门')" />
  648. </el-form-item>
  649. <el-form-item :label="$t('泄露位置')" prop="leakLocation">
  650. <el-input v-model="form.leakLocation" :placeholder="$t('请输入') + $t('泄露位置')" />
  651. </el-form-item>
  652. <!--<el-form-item :label="$t('项目号')" prop="projectNo">-->
  653. <!--<el-input v-model="form.projectNo" :placeholder="$t('请输入') + $t('项目号')" />-->
  654. <!--</el-form-item>-->
  655. <!--<el-form-item :label="$t('区域')" prop="area">-->
  656. <!--<el-select v-model="form.area" :placeholder="$t('请选择') + $t('区域')">-->
  657. <!--<el-option-->
  658. <!--v-for="dict in areaOptions"-->
  659. <!--:key="dict.dictValue"-->
  660. <!--:label="dict.dictLabel"-->
  661. <!--:value="dict.dictValue"-->
  662. <!--&gt;</el-option>-->
  663. <!--</el-select>-->
  664. <!--</el-form-item>-->
  665. <el-form-item :label="$t('标题')" prop="title">
  666. <el-input v-model="form.title" :placeholder="$t('请输入') + $t('标题')" />
  667. </el-form-item>
  668. <el-form-item :label="$t('操作压力 (MPaG)')" prop="pressure">
  669. <el-input v-model="form.pressure" :placeholder="$t('请输入') + $t('操作压力')" />
  670. </el-form-item>
  671. <el-form-item :label="$t('操作温度 (℃)')" prop="temperature">
  672. <el-input v-model="form.temperature" :placeholder="$t('请输入') + $t('操作温度')" />
  673. </el-form-item>
  674. <el-form-item :label="$t('泄露介质')" prop="leakFluid">
  675. <el-input v-model="form.leakFluid" :placeholder="$t('请输入') + $t('泄露介质')" />
  676. </el-form-item>
  677. <el-form-item :label="$t('介质类型')" prop="materialType">
  678. <el-input v-model="form.materialType" :placeholder="$t('请输入') + $t('介质类型')" />
  679. </el-form-item>
  680. <el-form-item :label="$t('方案日期')" prop="planDate">
  681. <el-date-picker clearable size="small" style="width: 200px"
  682. v-model="form.planDate"
  683. type="date"
  684. value-format="yyyy-MM-dd"
  685. :placeholder="$t('请选择') + $t('方案日期')">
  686. </el-date-picker>
  687. </el-form-item>
  688. <el-form-item :label="$t('堵漏日期')" prop="sealDate">
  689. <el-date-picker clearable size="small" style="width: 200px"
  690. v-model="form.sealDate"
  691. type="date"
  692. value-format="yyyy-MM-dd"
  693. :placeholder="$t('请选择') + $t('堵漏日期')">
  694. </el-date-picker>
  695. </el-form-item>
  696. <el-form-item :label="$t('第一次延期')" prop="extention1">
  697. <el-date-picker clearable size="small" style="width: 200px"
  698. v-model="form.extention1"
  699. type="date"
  700. value-format="yyyy-MM-dd"
  701. :placeholder="$t('请选择') + $t('第一次延期')">
  702. </el-date-picker>
  703. </el-form-item>
  704. <el-form-item :label="$t('第二次延期')" prop="extention2">
  705. <el-date-picker clearable size="small" style="width: 200px"
  706. v-model="form.extention2"
  707. type="date"
  708. value-format="yyyy-MM-dd"
  709. :placeholder="$t('请选择') + $t('第二次延期')">
  710. </el-date-picker>
  711. </el-form-item>
  712. <el-form-item :label="$t('第三次延期')" prop="extention3">
  713. <el-date-picker clearable size="small" style="width: 200px"
  714. v-model="form.extention3"
  715. type="date"
  716. value-format="yyyy-MM-dd"
  717. :placeholder="$t('请选择') + $t('第三次延期')">
  718. </el-date-picker>
  719. </el-form-item>
  720. <el-form-item :label="$t('第四次延期')" prop="extention4">
  721. <el-date-picker clearable size="small" style="width: 200px"
  722. v-model="form.extention4"
  723. type="date"
  724. value-format="yyyy-MM-dd"
  725. :placeholder="$t('请选择') + $t('第四次延期')">
  726. </el-date-picker>
  727. </el-form-item>
  728. <el-form-item :label="$t('第五次延期')" prop="extention5">
  729. <el-date-picker clearable size="small" style="width: 200px"
  730. v-model="form.extention5"
  731. type="date"
  732. value-format="yyyy-MM-dd"
  733. :placeholder="$t('请选择') + $t('第五次延期')">
  734. </el-date-picker>
  735. </el-form-item>
  736. <el-form-item :label="$t('第六次延期')" prop="extention6">
  737. <el-date-picker clearable size="small" style="width: 200px"
  738. v-model="form.extention6"
  739. type="date"
  740. value-format="yyyy-MM-dd"
  741. :placeholder="$t('请选择') + $t('第六次延期')">
  742. </el-date-picker>
  743. </el-form-item>
  744. <el-form-item :label="$t('第七次延期')" prop="extention7">
  745. <el-date-picker clearable size="small" style="width: 200px"
  746. v-model="form.extention7"
  747. type="date"
  748. value-format="yyyy-MM-dd"
  749. :placeholder="$t('请选择') + $t('第七次延期')">
  750. </el-date-picker>
  751. </el-form-item>
  752. <el-form-item :label="$t('第八次延期')" prop="extention8">
  753. <el-date-picker clearable size="small" style="width: 200px"
  754. v-model="form.extention8"
  755. type="date"
  756. value-format="yyyy-MM-dd"
  757. :placeholder="$t('请选择') + $t('第八次延期')">
  758. </el-date-picker>
  759. </el-form-item>
  760. <el-form-item :label="$t('第九次延期')" prop="extention9">
  761. <el-date-picker clearable size="small" style="width: 200px"
  762. v-model="form.extention9"
  763. type="date"
  764. value-format="yyyy-MM-dd"
  765. :placeholder="$t('请选择') + $t('第九次延期')">
  766. </el-date-picker>
  767. </el-form-item>
  768. <el-form-item :label="$t('卡具状态')" prop="area">
  769. <el-select v-model="form.status" :placeholder="$t('请选择') + $t('卡具状态')">
  770. <el-option
  771. v-for="dict in mocStatusOptions"
  772. :key="dict.dictValue"
  773. :label="dict.dictLabel"
  774. :value="dict.dictValue"
  775. ></el-option>
  776. </el-select>
  777. </el-form-item>
  778. <el-form-item :label="$t('到期时间')" prop="extention9">
  779. <el-date-picker clearable size="small" style="width: 200px"
  780. v-model="form.expTime"
  781. type="date"
  782. value-format="yyyy-MM-dd"
  783. :placeholder="$t('请选择') + $t('到期时间')">
  784. </el-date-picker>
  785. </el-form-item>
  786. <!--<el-form-item :label="$t('MOC类型')" prop="mocType">-->
  787. <!--<el-select v-model="form.mocType" :placeholder="$t('请选择') + $t('MOC类型')">-->
  788. <!--<el-option-->
  789. <!--v-for="dict in mocTypeOptions"-->
  790. <!--:key="dict.dictValue"-->
  791. <!--:label="dict.dictLabel"-->
  792. <!--:value="dict.dictValue"-->
  793. <!--&gt;</el-option>-->
  794. <!--</el-select>-->
  795. <!--</el-form-item>-->
  796. <!--<el-form-item :label="$t('负责人')" prop="owner">-->
  797. <!--<el-input v-model="form.owner" :placeholder="$t('请输入') + $t('负责人')" />-->
  798. <!--</el-form-item>-->
  799. <!--<el-form-item :label="$t('申请时间')" prop="approveTime">-->
  800. <!--<el-date-picker clearable size="small" style="width: 200px"-->
  801. <!--v-model="form.approveTime"-->
  802. <!--type="date"-->
  803. <!--value-format="yyyy-MM-dd"-->
  804. <!--:placeholder="$t('请选择') + $t('申请时间')">-->
  805. <!--</el-date-picker>-->
  806. <!--</el-form-item>-->
  807. <!--<el-form-item :label="$t('MC时间')" prop="mcTime">-->
  808. <!--<el-date-picker clearable size="small" style="width: 200px"-->
  809. <!--v-model="form.mcTime"-->
  810. <!--type="date"-->
  811. <!--value-format="yyyy-MM-dd"-->
  812. <!--:placeholder="$t('请选择') + $t('MC时间')">-->
  813. <!--</el-date-picker>-->
  814. <!--</el-form-item>-->
  815. <!--<el-form-item :label="$t('MC情况')" prop="mcDetail">-->
  816. <!--<el-select v-model="form.mcDetail" :placeholder="$t('请选择') + $t('MC情况')">-->
  817. <!--<el-option-->
  818. <!--v-for="dict in mcDetailOptions"-->
  819. <!--:key="dict.dictValue"-->
  820. <!--:label="dict.dictLabel"-->
  821. <!--:value="dict.dictValue"-->
  822. <!--&gt;</el-option>-->
  823. <!--</el-select>-->
  824. <!--</el-form-item>-->
  825. <!--<el-form-item :label="$t('完成时间')" prop="endtime">-->
  826. <!--<el-date-picker clearable size="small" style="width: 200px"-->
  827. <!--v-model="form.endtime"-->
  828. <!--type="date"-->
  829. <!--value-format="yyyy-MM-dd"-->
  830. <!--:placeholder="$t('请选择') + $t('完成时间')">-->
  831. <!--</el-date-picker>-->
  832. <!--</el-form-item>-->
  833. <!--<el-form-item :label="$t('实施情况')" prop="trueState">-->
  834. <!--<el-select v-model="form.trueState" :placeholder="$t('请选择') + $t('实施情况')" @change="changeTrueState($event)">-->
  835. <!--<el-option-->
  836. <!--v-for="dict in trueStateOptions"-->
  837. <!--:key="dict.dictValue"-->
  838. <!--:label="dict.dictLabel"-->
  839. <!--:value="dict.dictValue"-->
  840. <!--&gt;</el-option>-->
  841. <!--</el-select>-->
  842. <!--</el-form-item>-->
  843. <!--<el-form-item :label="$t('变更性质')" prop="changeNature">-->
  844. <!--<el-select v-model="form.changeNature" :placeholder="$t('请选择') + $t('变更性质')" @change="changeChangeNature($event)">-->
  845. <!--<el-option-->
  846. <!--v-for="dict in changeNatureOptions"-->
  847. <!--:key="dict.dictValue"-->
  848. <!--:label="dict.dictLabel"-->
  849. <!--:value="dict.dictValue"-->
  850. <!--&gt;</el-option>-->
  851. <!--</el-select>-->
  852. <!--</el-form-item>-->
  853. <!--<el-form-item :label="$t('到期时间')" prop="overTime">-->
  854. <!--<el-date-picker clearable size="small" style="width: 200px"-->
  855. <!--v-model="form.overTime"-->
  856. <!--type="date"-->
  857. <!--value-format="yyyy-MM-dd"-->
  858. <!--:placeholder="$t('请选择') + $t('到期时间')">-->
  859. <!--</el-date-picker>-->
  860. <!--</el-form-item>-->
  861. <!--<el-form-item :label="$t('临时MOC状态')" prop="temporaryState">-->
  862. <!--<el-select v-model="form.temporaryState" :placeholder="$t('请选择') + $t('临时MOC状态')">-->
  863. <!--<el-option-->
  864. <!--v-for="dict in temporaryStateOptions"-->
  865. <!--:key="dict.dictValue"-->
  866. <!--:label="dict.dictLabel"-->
  867. <!--:value="dict.dictValue"-->
  868. <!--&gt;</el-option>-->
  869. <!--</el-select>-->
  870. <!--</el-form-item>-->
  871. <el-form-item :label="$t('备注')" prop="remarks">
  872. <el-input v-model="form.remarks" type="textarea" :placeholder="$t('请输入') + $t('备注')" />
  873. </el-form-item>
  874. <!--<el-form-item :label="$t('风险等级')" prop="riskLevel">-->
  875. <!--<el-select v-model="form.riskLevel" :placeholder="$t('请选择') + $t('风险等级')">-->
  876. <!--<el-option-->
  877. <!--v-for="dict in riskLevelOptions"-->
  878. <!--:key="dict.dictValue"-->
  879. <!--:label="dict.dictLabel"-->
  880. <!--:value="dict.dictValue"-->
  881. <!--&gt;</el-option>-->
  882. <!--</el-select>-->
  883. <!--</el-form-item>-->
  884. <!--<el-form-item :label="$t('EHS评估/审查')" prop="ehsCheck">-->
  885. <!--<el-date-picker clearable size="small" style="width: 200px"-->
  886. <!--v-model="form.ehsCheck"-->
  887. <!--type="date"-->
  888. <!--value-format="yyyy-MM-dd"-->
  889. <!--:placeholder="$t('请选择') + $t('EHS评估/审查')">-->
  890. <!--</el-date-picker>-->
  891. <!--</el-form-item>-->
  892. <!--<el-form-item :label="$t('培训')" prop="training">-->
  893. <!--<el-date-picker clearable size="small" style="width: 200px"-->
  894. <!--v-model="form.training"-->
  895. <!--type="date"-->
  896. <!--value-format="yyyy-MM-dd"-->
  897. <!--:placeholder="$t('请选择') + $t('培训')"-->
  898. <!--:picker-options="trainingDatePicker">-->
  899. <!--</el-date-picker>-->
  900. <!--</el-form-item>-->
  901. <!--<el-form-item :label="$t('PID更新')" prop="pidMaster">-->
  902. <!--<el-select v-model="form.pidMaster" :placeholder="$t('请选择') + $t('PID更新')">-->
  903. <!--<el-option-->
  904. <!--v-for="dict in pidMasterOptions"-->
  905. <!--:key="dict.dictValue"-->
  906. <!--:label="dict.dictLabel"-->
  907. <!--:value="dict.dictValue"-->
  908. <!--&gt;</el-option>-->
  909. <!--</el-select>-->
  910. <!--</el-form-item>-->
  911. <!--<el-form-item :label="$t('SOP更新')" prop="sopUpdate">-->
  912. <!--<el-select v-model="form.sopUpdate" :placeholder="$t('请选择') + $t('SOP更新')">-->
  913. <!--<el-option-->
  914. <!--v-for="dict in sopUpdateOptions"-->
  915. <!--:key="dict.dictValue"-->
  916. <!--:label="dict.dictLabel"-->
  917. <!--:value="dict.dictValue"-->
  918. <!--&gt;</el-option>-->
  919. <!--</el-select>-->
  920. <!--</el-form-item>-->
  921. <!--<el-form-item :label="$t('文档更新')" prop="docUpdate">-->
  922. <!--<el-select v-model="form.docUpdate" :placeholder="$t('请选择') + $t('文档更新')">-->
  923. <!--<el-option-->
  924. <!--v-for="dict in docUpdateOptions"-->
  925. <!--:key="dict.dictValue"-->
  926. <!--:label="dict.dictLabel"-->
  927. <!--:value="dict.dictValue"-->
  928. <!--&gt;</el-option>-->
  929. <!--</el-select>-->
  930. <!--</el-form-item>-->
  931. <!--<el-form-item label="PSSR" prop="pssr">-->
  932. <!--<el-date-picker clearable size="small" style="width: 200px"-->
  933. <!--v-model="form.pssr"-->
  934. <!--type="date"-->
  935. <!--value-format="yyyy-MM-dd"-->
  936. <!--:placeholder="$t('请选择') + 'PSSR'"-->
  937. <!--:picker-options="pssrDatePicker">-->
  938. <!--</el-date-picker>-->
  939. <!--</el-form-item>-->
  940. <!--<el-form-item :label="$t('PSSR编号')" prop="pssrNo">-->
  941. <!--<el-input v-model="form.pssrNo" :placeholder="$t('请输入') + $t('PSSR编号')" />-->
  942. <!--</el-form-item>-->
  943. <!--<el-form-item :label="$t('装置编号')" prop="plantNumber">
  944. <el-input v-model="form.plantNumber" :placeholder="$t('请输入') + $t('装置编号')" />
  945. </el-form-item>
  946. <el-form-item :label="$t('通知单')" prop="noticeLetter">
  947. <el-input v-model="form.noticeLetter" :placeholder="$t('请输入') + $t('通知单')" />
  948. </el-form-item>
  949. <el-form-item :label="$t('工作单')" prop="workLetter">
  950. <el-input v-model="form.workLetter" :placeholder="$t('请输入') + $t('工作单')" />
  951. </el-form-item>
  952. <el-form-item :label="$t('CTE工作号')" prop="cteNo">
  953. <el-input v-model="form.cteNo" :placeholder="$t('请输入') + $t('CTE工作号')" />
  954. </el-form-item>
  955. <el-form-item :label="$t('投资费用(RMB)')" prop="investCost">
  956. <el-input v-model="form.investCost" :placeholder="$t('请输入') + $t('投资费用(RMB)')" />
  957. </el-form-item>
  958. <el-form-item :label="$t('类别')" prop="category">
  959. <el-select v-model="form.category" :placeholder="$t('请选择') + $t('类别')">
  960. <el-option
  961. v-for="dict in categoryOptions"
  962. :key="dict.dictValue"
  963. :label="dict.dictLabel"
  964. :value="dict.dictValue"
  965. ></el-option>
  966. </el-select>
  967. </el-form-item>
  968. <el-form-item :label="$t('重要性')" prop="significance">
  969. <el-input v-model="form.significance" :placeholder="$t('请输入') + $t('重要性')" />
  970. </el-form-item>
  971. <el-form-item :label="$t('分类')" prop="classification">
  972. <el-input v-model="form.classification" :placeholder="$t('请输入') + $t('分类')" />
  973. </el-form-item>
  974. <el-form-item :label="$t('仪表控制')" prop="dashControl">
  975. <el-input v-model="form.dashControl" :placeholder="$t('请输入') + $t('仪表控制')" />
  976. </el-form-item>
  977. <el-form-item :label="$t('预计完成时间')" prop="estimateEndtime">
  978. <el-date-picker clearable size="small" style="width: 200px"
  979. v-model="form.estimateEndtime"
  980. type="date"
  981. value-format="yyyy-MM-dd"
  982. :placeholder="$t('请选择') + $t('预计完成时间')">
  983. </el-date-picker>
  984. </el-form-item>
  985. <el-form-item :label="$t('EHS审查数据库')" prop="ehsDb">
  986. <el-input v-model="form.ehsDb" :placeholder="$t('请输入') + $t('EHS审查数据库')" />
  987. </el-form-item>
  988. <el-form-item :label="$t('PSSR数据库')" prop="pssrDb">
  989. <el-input v-model="form.pssrDb" :placeholder="$t('请输入') + $t('PSSR数据库')" />
  990. </el-form-item>
  991. <el-form-item :label="$t('CAPEX计划')" prop="capex">
  992. <el-input v-model="form.capex" :placeholder="$t('请输入') + $t('CAPEX计划')" />
  993. </el-form-item>-->
  994. <el-form-item :label="$t('归属部门')" prop="deptId">
  995. <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" :placeholder="$t('请选择') + $t('归属部门')" />
  996. </el-form-item>
  997. </el-form>
  998. <div slot="footer" class="dialog-footer">
  999. <el-button type="primary" @click="submitForm">{{ $t('确 定') }}</el-button>
  1000. <el-button @click="cancel">{{ $t('取 消') }}</el-button>
  1001. </div>
  1002. </el-dialog>
  1003. <!-- 用户导入对话框 -->
  1004. <el-dialog v-dialogDrag :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
  1005. <el-upload
  1006. ref="upload"
  1007. :limit="1"
  1008. accept=".xlsx, .xls"
  1009. :headers="upload.headers"
  1010. :action="upload.url"
  1011. :disabled="upload.isUploading"
  1012. :on-progress="handleFileUploadProgress"
  1013. :on-success="handleFileSuccess"
  1014. :auto-upload="false"
  1015. drag
  1016. >
  1017. <i class="el-icon-upload"></i>
  1018. <div class="el-upload__text">
  1019. {{ $t('将文件拖到此处,或') }}
  1020. <em>{{ $t('点击上传') }}</em>
  1021. </div>
  1022. <div class="el-upload__tip" slot="tip">
  1023. <!--<el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据-->
  1024. <el-link type="info" style="font-size:12px" @click="importTemplate">{{ $t('下载模板') }}</el-link>
  1025. </div>
  1026. <form ref="downloadFileForm" :action="upload.downloadAction" target="FORMSUBMIT">
  1027. <input name="type" :value="upload.type" hidden />
  1028. </form>
  1029. <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
  1030. </el-upload>
  1031. <div slot="footer" class="dialog-footer">
  1032. <el-button type="primary" @click="submitFileForm">{{ $t('确 定') }}</el-button>
  1033. <el-button @click="upload.open = false">{{ $t('取 消') }}</el-button>
  1034. </div>
  1035. </el-dialog>
  1036. <!-- 报告附件对话框 -->
  1037. <el-dialog v-dialogDrag :title="doc.title" :visible.sync="doc.open" width="1000px" append-to-body >
  1038. <el-upload v-hasPermi="['training:trainingrecords:file']"
  1039. ref="doc"
  1040. :limit="50"
  1041. :headers="doc.headers"
  1042. :action="doc.url + '?pType=' + doc.pType + '&pId=' + doc.pId"
  1043. :disabled="doc.isUploading"
  1044. :on-progress="handleFileDocProgress"
  1045. :on-success="handleFileDocSuccess"
  1046. :auto-upload="true"
  1047. drag
  1048. >
  1049. <i class="el-icon-upload"></i>
  1050. <div class="el-upload__text">
  1051. {{ $t('将文件拖到此处,或') }}
  1052. <em>{{ $t('点击上传') }}</em>
  1053. </div>
  1054. </el-upload>
  1055. <el-table :data="doc.commonfileList" border>
  1056. <el-table-column :label="$t('文件名')" align="center" prop="fileName" :show-overflow-tooltip="true">
  1057. <template slot-scope="scope">
  1058. <a class="link-type" @click="handleDownload(scope.row)">
  1059. <span>{{ scope.row.fileName }}</span>
  1060. </a>
  1061. </template>
  1062. </el-table-column>
  1063. <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize" :show-overflow-tooltip="true" width="80" />
  1064. <el-table-column :label="$t('上传人')" align="center" prop="creator" :show-overflow-tooltip="true" width="120"/>
  1065. <el-table-column :label="$t('操作')" align="center" width="220" class-name="small-padding fixed-width">
  1066. <template slot-scope="scope">
  1067. <el-button
  1068. v-if="scope.row.fileName.endsWith('pdf')"
  1069. size="mini"
  1070. type="text"
  1071. icon="el-icon-view"
  1072. @click="handleSee(scope.row)"
  1073. >{{ $t('预览') }}</el-button>
  1074. <el-button v-hasPermi="['training:trainingrecords:file']" type="text" size="small" v-if="scope.row.isEdit" @click="save(scope.row)">{{ $t('保存') }}</el-button>
  1075. <el-button type="text" size="small" v-if="scope.row.isEdit" @click="cancelFile(scope.row, scope.$index)">{{ $t('取消') }}</el-button>
  1076. <!-- <el-button v-hasPermi="['training:trainingrecords:file']" v-if="!scope.row.isEdit" @click="edit(scope.row)" icon="el-icon-edit" type="text" size="mini">编辑</el-button>-->
  1077. <el-button
  1078. size="mini"
  1079. type="text"
  1080. icon="el-icon-download"
  1081. @click="handleDownload(scope.row)"
  1082. >{{ $t('下载') }}</el-button>
  1083. <el-button
  1084. size="mini"
  1085. type="text"
  1086. icon="el-icon-delete"
  1087. @click="handleDeleteDoc(scope.row)"
  1088. v-hasPermi="['training:trainingrecords:file']"
  1089. >{{ $t('删除') }}</el-button>
  1090. </template>
  1091. </el-table-column>
  1092. </el-table>
  1093. <el-dialog v-dialogDrag :title="pdf.title" :visible.sync="pdf.open" width="1300px" append-to-body>
  1094. <div style="margin-top: -60px;float: right;margin-right: 40px;">
  1095. <el-button size="mini" type="text" @click="openPdf">{{$t('新页面打开PDF')}}</el-button></div>
  1096. <div style="margin-top: -30px">
  1097. <iframe :src="pdf.pdfUrl" frameborder="0" width="100%" height="700px"></iframe>
  1098. </div>
  1099. </el-dialog>
  1100. <div slot="footer" class="dialog-footer">
  1101. <!-- <el-button type="primary" @click="submitFileForm">{{ $t('确 定') }}</el-button>-->
  1102. <el-button @click="doc.open = false">{{ $t('返 回') }}</el-button>
  1103. </div>
  1104. </el-dialog>
  1105. <!-- MOC类型说明对话框 -->
  1106. <el-dialog v-dialogDrag :title="mocTypeInfo.title" :visible.sync="mocTypeInfo.open" width="1000px" append-to-body>
  1107. <el-image
  1108. style="width: 947px; height: 394px"
  1109. :src="require('@/assets/image/moc/mocTypeInfo.png')"
  1110. fit="fill"></el-image>
  1111. <div slot="footer" class="dialog-footer">
  1112. <el-button type="primary" @click="mocTypeInfo.open = false">{{ $t('确 定') }}</el-button>
  1113. </div>
  1114. </el-dialog>
  1115. <el-drawer
  1116. :title="$t('数据分析')"
  1117. size="600px"
  1118. :visible.sync="drawer"
  1119. :direction="direction">
  1120. <!-- <el-row style="padding-left: 20px;">-->
  1121. <!-- <el-form :model="chartParams" :inline="true" label-width="68px">-->
  1122. <!-- <el-form-item :label="$t('年份')" label-width="50" prop="year">-->
  1123. <!-- <el-select v-model="chartParams.year" placeholder="请选择年份" clearable size="small">-->
  1124. <!-- <el-option-->
  1125. <!-- v-for="item in yearOption"-->
  1126. <!-- :key="item"-->
  1127. <!-- :label="item"-->
  1128. <!-- :value="item"-->
  1129. <!-- />-->
  1130. <!-- </el-select>-->
  1131. <!-- </el-form-item>-->
  1132. <!-- <el-form-item>-->
  1133. <!-- <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('搜索') }}</el-button>-->
  1134. <!-- </el-form-item>-->
  1135. <!-- </el-form>-->
  1136. <!-- </el-row>-->
  1137. <el-row>
  1138. <el-col>
  1139. <el-card class="box-card" shadow="hover">
  1140. <div slot="header" class="clearfix">
  1141. <span>{{ $t('实施情况统计') }}</span>
  1142. </div>
  1143. <div class="text item">
  1144. <true-state-data> </true-state-data>
  1145. </div>
  1146. </el-card>
  1147. </el-col>
  1148. </el-row>
  1149. <el-row>
  1150. <el-col>
  1151. <el-card class="box-card" shadow="hover">
  1152. <div slot="header" class="clearfix">
  1153. <span>{{ $t('申请统计') }}</span>
  1154. </div>
  1155. <div class="text item">
  1156. <year-chart> </year-chart>
  1157. </div>
  1158. </el-card>
  1159. </el-col>
  1160. </el-row>
  1161. <el-row>
  1162. <el-col>
  1163. <el-card class="box-card" shadow="hover">
  1164. <div slot="header" class="clearfix">
  1165. <span>{{ $t('变更性质') +$t('空格')+ $t('统计') }}</span>
  1166. </div>
  1167. <div class="text item">
  1168. <change-data> </change-data>
  1169. </div>
  1170. </el-card>
  1171. </el-col>
  1172. </el-row>
  1173. <el-row>
  1174. <el-col>
  1175. <el-card class="box-card" shadow="hover">
  1176. <div slot="header" class="clearfix">
  1177. <span>{{ $t('类别') +$t('空格')+ $t('统计') }}</span>
  1178. </div>
  1179. <div class="text item">
  1180. <category-data> </category-data>
  1181. </div>
  1182. </el-card>
  1183. </el-col>
  1184. </el-row>
  1185. <el-row>
  1186. <el-col>
  1187. <el-card class="box-card" shadow="hover">
  1188. <div slot="header" class="clearfix">
  1189. <span>{{ $t('风险等级统计') }}</span>
  1190. </div>
  1191. <div class="text item">
  1192. <risk-data></risk-data>
  1193. </div>
  1194. </el-card>
  1195. </el-col>
  1196. </el-row>
  1197. </el-drawer>
  1198. </div>
  1199. </template>
  1200. <script>
  1201. import { delay, listPermanent, listTemporary, listAquifier, listFacility, listInterlock, getMoc, delMoc, addMoc, updateMoc, exportMoc } from "@/api/process/moc";
  1202. import { treeselect } from "@/api/system/dept";
  1203. import { getToken } from "@/utils/auth";
  1204. import Treeselect from "@riophae/vue-treeselect";
  1205. import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  1206. // import YearChart from "./yearChart";
  1207. // import TrueStateData from "./trueStateData";
  1208. // import ChangeData from "./changeData";
  1209. // import CategoryData from "./categoryData";
  1210. // import RiskData from "./riskData";
  1211. import {addCommonfile, allFileList, delCommonfile, updateCommonfile} from "@/api/common/commonfile";
  1212. export default {
  1213. name: "Aquifier",
  1214. components: { Treeselect },
  1215. data() {
  1216. var validateDocUpdate = (rule, value, callback) => {
  1217. if (value == 1) {
  1218. if (this.form.pidMaster == 0 && this.form.sopUpdate == 0) {
  1219. return callback(new Error('PID/SOP未更新'));
  1220. } else {
  1221. return callback();
  1222. }
  1223. } else {
  1224. return callback();
  1225. }
  1226. };
  1227. return {
  1228. delayForm: {
  1229. id: null,
  1230. extention: null,
  1231. },
  1232. delayDialog: {
  1233. open: false,
  1234. title: null,
  1235. },
  1236. mocTypeInfo: {
  1237. open: false,
  1238. title: 'MOC类型说明'
  1239. },
  1240. drawer: false,
  1241. direction: 'rtl',
  1242. // 遮罩层
  1243. loading: true,
  1244. // 选中数组
  1245. ids: [],
  1246. // 非单个禁用
  1247. single: true,
  1248. // 非多个禁用
  1249. multiple: true,
  1250. // 显示搜索条件
  1251. showSearch: false,
  1252. // 总条数
  1253. total: 0,
  1254. // MOC管理表格数据
  1255. mocList: [],
  1256. // 弹出层标题
  1257. title: "",
  1258. // 部门树选项
  1259. deptOptions: undefined,
  1260. clientHeight:300,
  1261. // 是否显示弹出层
  1262. open: false,
  1263. // 卡具状态字典
  1264. mocStatusOptions: [],
  1265. // 装置字典
  1266. plantCodeOptions: [],
  1267. // 类别字典
  1268. categoryOptions: [],
  1269. // 区域字典
  1270. areaOptions: [],
  1271. // PID MASTER更新字典
  1272. pidMasterOptions: [],
  1273. // 临时MOC状态字典
  1274. temporaryStateOptions: [],
  1275. // SOP更新字典
  1276. sopUpdateOptions: [],
  1277. // 文件更新字典
  1278. docUpdateOptions:[],
  1279. // 实施情况字典
  1280. trueStateOptions: [],
  1281. // 变更性质字典
  1282. changeNatureOptions: [],
  1283. // 风险等级字典
  1284. riskLevelOptions: [],
  1285. // MOC类型字典
  1286. mocTypeOptions: [],
  1287. // MC情况字典
  1288. mcDetailOptions: [],
  1289. //时间选择限制
  1290. ehsCheckDate: '',
  1291. trainingDatePicker: this.pickerOptionsTraining(),
  1292. pssrDatePicker: this.pickerOptionsPssr(),
  1293. // 用户导入参数
  1294. upload: {
  1295. //下载模板请求地址
  1296. downloadAction: process.env.VUE_APP_BASE_API + '/common/template',
  1297. //下载模板类型
  1298. type: 'moc',
  1299. // 是否显示弹出层(用户导入)
  1300. open: false,
  1301. // 弹出层标题(用户导入)
  1302. title: "",
  1303. // 是否禁用上传
  1304. isUploading: false,
  1305. // 是否更新已经存在的用户数据
  1306. updateSupport: 0,
  1307. // 设置上传的请求头部
  1308. headers: { Authorization: "Bearer " + getToken() },
  1309. // 上传的地址
  1310. url: process.env.VUE_APP_BASE_API + "/process/moc/importData"
  1311. },
  1312. // 报告附件参数
  1313. doc: {
  1314. file: "",
  1315. // 是否显示弹出层(报告附件)
  1316. open: false,
  1317. // 弹出层标题(报告附件)
  1318. title: "附件",
  1319. // 是否禁用上传
  1320. isUploading: false,
  1321. // 是否更新已经存在的用户数据
  1322. updateSupport: 0,
  1323. // 报告附件上传位置编号
  1324. ids: 0,
  1325. // 设置上传的请求头部
  1326. headers: { Authorization: "Bearer " + getToken() },
  1327. // 上传的地址
  1328. url: process.env.VUE_APP_BASE_API + "/common/commonfile/uploadFile",
  1329. commonfileList: null,
  1330. queryParams: {
  1331. pId: null,
  1332. pType: 'moc'
  1333. },
  1334. pType: 'moc',
  1335. pId: null,
  1336. form: {}
  1337. },
  1338. pdf : {
  1339. title: '',
  1340. pdfUrl: '',
  1341. numPages: null,
  1342. open: false,
  1343. pageNum: 1,
  1344. pageTotalNum: 1,
  1345. loadedRatio: 0,
  1346. },
  1347. // 查询参数
  1348. queryParams: {
  1349. pageNum: 1,
  1350. pageSize: 20,
  1351. plantCode: null,
  1352. mocNo: null,
  1353. plantNumber: null,
  1354. noticeLetter: null,
  1355. workLetter: null,
  1356. cteNo: null,
  1357. investCost: null,
  1358. category: null,
  1359. significance: null,
  1360. classification: null,
  1361. area: null,
  1362. dashControl: null,
  1363. title: null,
  1364. owner: null,
  1365. approveTime: null,
  1366. estimateEndtime: null,
  1367. endtime: null,
  1368. trueState: null,
  1369. changeNature: null,
  1370. overTime: null,
  1371. riskLevel: null,
  1372. training: null,
  1373. pssr: null,
  1374. ehsCheck: null,
  1375. ehsDb: null,
  1376. pidMaster: null,
  1377. pssrDb: null,
  1378. capex: null,
  1379. remarks: null,
  1380. companyMocNo: null,
  1381. projectNo: null,
  1382. mocType: null,
  1383. mcTime: null,
  1384. mcDetail: null,
  1385. docUpdate: null,
  1386. pssrNo: null,
  1387. timeliness: null,
  1388. tempCategory: null,
  1389. expTime: null,
  1390. tempState: null,
  1391. location: null,
  1392. finishDate: null,
  1393. processUnit: null,
  1394. department: null,
  1395. leakLocation: null,
  1396. pressure: null,
  1397. temperature: null,
  1398. leakFluid: null,
  1399. materialType: null,
  1400. planDate: null,
  1401. sealDate: null,
  1402. extention1: null,
  1403. extention2: null,
  1404. extention3: null,
  1405. extention4: null,
  1406. extention5: null,
  1407. extention6: null,
  1408. extention7: null,
  1409. extention8: null,
  1410. extention9: null,
  1411. status: null,
  1412. },
  1413. chartParams: {
  1414. year : 2021
  1415. },
  1416. yearOption: [2020,2021],
  1417. // 表单参数
  1418. form: {},
  1419. // 表单校验
  1420. delayRules: {
  1421. extention: [
  1422. {required: true, message: this.$t('延期日期') + this.$t('不能为空'), trigger: "change"}
  1423. ],
  1424. },
  1425. rules: {
  1426. mocNo: [
  1427. { required: true, message: this.$t('MOC编号') + this.$t('不能为空'), trigger: "change" }
  1428. ],
  1429. // companyMocNo: [
  1430. // { required: true, message: this.$t('公司MOC编号') + this.$t('不能为空'), trigger: "change" }
  1431. // ],
  1432. // projectNo: [
  1433. // { required: true, message: this.$t('项目号') + this.$t('不能为空'), trigger: "change" }
  1434. // ],
  1435. // area: [
  1436. // { required: true, message: this.$t('区域') + this.$t('不能为空'), trigger: "change" }
  1437. // ],
  1438. // title: [
  1439. // { required: true, message: this.$t('标题') + this.$t('不能为空'), trigger: "change" }
  1440. // ],
  1441. // mocType: [
  1442. // { required: true, message: this.$t('MOC类型') + this.$t('不能为空'), trigger: "change" }
  1443. // ],
  1444. // owner: [
  1445. // { required: true, message: this.$t('负责人') + this.$t('不能为空'), trigger: "change" }
  1446. // ],
  1447. // approveTime: [
  1448. // { required: true, message: this.$t('申请时间') + this.$t('不能为空'), trigger: "change" }
  1449. // ],
  1450. // mcTime: [
  1451. // { required: true, message: this.$t('MC时间') + this.$t('不能为空'), trigger: "change" }
  1452. // ],
  1453. // mcDetail: [
  1454. // { required: true, message: this.$t('MC情况') + this.$t('不能为空'), trigger: "change" }
  1455. // ],
  1456. // remarks: [
  1457. // { required: true, message: this.$t('备注') + this.$t('不能为空'), trigger: "change" }
  1458. // ],
  1459. // riskLevel: [
  1460. // { required: true, message: this.$t('风险等级') + this.$t('不能为空'), trigger: "change" }
  1461. // ],
  1462. // ehsCheck: [
  1463. // { required: true, message: this.$t('EHS评估/审查') + this.$t('不能为空'), trigger: "change" }
  1464. // ],
  1465. // training: [
  1466. // { required: true, message: this.$t('培训') + this.$t('不能为空'), trigger: "change" }
  1467. // ],
  1468. // pidMaster: [
  1469. // { required: true, message: this.$t('PID更新') + this.$t('不能为空'), trigger: "change" }
  1470. // ],
  1471. // sopUpdate: [
  1472. // { required: true, message: this.$t('SOP更新') + this.$t('不能为空'), trigger: "change" }
  1473. // ],
  1474. docUpdate: [
  1475. // { required: true, message: this.$t('文档更新') + this.$t('不能为空'), trigger: "change" },
  1476. { validator: validateDocUpdate, trigger: 'change' }
  1477. ],
  1478. // pssr: [
  1479. // { required: true, message: this.$t('PSSR') + this.$t('不能为空'), trigger: "change" }
  1480. // ],
  1481. // pssrNo: [
  1482. // { required: true, message: this.$t('PSSR编号') + this.$t('不能为空'), trigger: "change" }
  1483. // ],
  1484. deptId: [
  1485. { required: true, message: this.$t('归属部门') + this.$t('不能为空'), trigger: "change" }
  1486. ],
  1487. },
  1488. // commonRules: {
  1489. // plantCode: [
  1490. // { required: true, message: this.$t('装置') + this.$t('不能为空'), trigger: "change" }
  1491. // ],
  1492. // trueState: [
  1493. // { required: true, message: this.$t('实施情况') + this.$t('不能为空'), trigger: "change" }
  1494. // ],
  1495. // deptId: [
  1496. // { required: true, message: this.$t('部门编号') + this.$t('不能为空'), trigger: "blur" }
  1497. // ]
  1498. // },
  1499. // chooseRules: {
  1500. // plantCode: [
  1501. // { required: true, message: this.$t('装置') + this.$t('不能为空'), trigger: "change" }
  1502. // ],
  1503. // mocNo: [
  1504. // { required: true, message: this.$t('MOC编号') + this.$t('不能为空'), trigger: "blur" }
  1505. // ],
  1506. // area: [
  1507. // { required: true, message: this.$t('区域') + this.$t('不能为空'), trigger: "change" }
  1508. // ],
  1509. // title: [
  1510. // { required: true, message: this.$t('标题') + this.$t('不能为空'), trigger: "blur" }
  1511. // ],
  1512. // owner: [
  1513. // { required: true, message: this.$t('负责人') + this.$t('不能为空'), trigger: "blur" }
  1514. // ],
  1515. // approveTime: [
  1516. // { required: true, message: this.$t('申请时间') + this.$t('不能为空'), trigger: "blur" }
  1517. // ],
  1518. // endtime: [
  1519. // { required: true, message: this.$t('完成时间') + this.$t('不能为空'), trigger: "blur" }
  1520. // ],
  1521. // trueState: [
  1522. // { required: true, message: this.$t('实施情况') + this.$t('不能为空'), trigger: "change" }
  1523. // ],
  1524. // overTime: [
  1525. // { required: true, message: this.$t('到期时间') + this.$t('不能为空'), trigger: "blur" }
  1526. // ],
  1527. // riskLevel: [
  1528. // { required: true, message: this.$t('风险等级') + this.$t('不能为空'), trigger: "change" }
  1529. // ],
  1530. // ehsCheck: [
  1531. // { required: true, message: this.$t('EHS审查') + this.$t('不能为空'), trigger: "blur" }
  1532. // ],
  1533. // pidMaster: [
  1534. // { required: true, message: this.$t('PID更新') + this.$t('不能为空'), trigger: "blur" }
  1535. // ],
  1536. // sopUpdate: [
  1537. // { required: true, message: this.$t('SOP更新') + this.$t('不能为空'), trigger: "blur" }
  1538. // ],
  1539. // docUpdate: [
  1540. // { required: true, message: this.$t('SOP更新') + this.$t('不能为空'), trigger: "blur" }
  1541. // ],
  1542. // deptId: [
  1543. // { required: true, message: this.$t('部门编号') + this.$t('不能为空'), trigger: "blur" }
  1544. // ]
  1545. // },
  1546. // temporaryRules: {
  1547. // overTime: [
  1548. // { required: true, message: this.$t('到期时间') + this.$t('不能为空'), trigger: "blur" }
  1549. // ],
  1550. // deptId: [
  1551. // { required: true, message: this.$t('部门编号') + this.$t('不能为空'), trigger: "blur" }
  1552. // ]
  1553. // },
  1554. };
  1555. },
  1556. watch: {
  1557. // 根据名称筛选部门树
  1558. deptName(val) {
  1559. this.$refs.tree.filter(val);
  1560. }
  1561. },
  1562. created() {
  1563. //设置表格高度对应屏幕高度
  1564. this.$nextTick(() => {
  1565. this.clientHeight = (document.body.clientHeight - 80) * 0.8
  1566. })
  1567. this.getList();
  1568. this.getTreeselect();
  1569. this.getDicts("MOC_STATUS").then(response => {
  1570. this.mocStatusOptions = response.data;
  1571. });
  1572. this.getDicts("MC_DETAIL").then(response => {
  1573. this.mcDetailOptions = response.data;
  1574. });
  1575. this.getDicts("MOC_TYPE").then(response => {
  1576. this.mocTypeOptions = response.data;
  1577. });
  1578. this.getDicts("PLANT_DIVIDE").then(response => {
  1579. this.plantCodeOptions = response.data;
  1580. });
  1581. this.getDicts("MOC_CATEGORY").then(response => {
  1582. this.categoryOptions = response.data;
  1583. });
  1584. this.getDicts("MOC_AREA").then(response => {
  1585. this.areaOptions = response.data;
  1586. });
  1587. this.getDicts("YES_NO_EN").then(response => {
  1588. this.pidMasterOptions = response.data;
  1589. this.sopUpdateOptions = response.data;
  1590. this.docUpdateOptions = response.data;
  1591. });
  1592. this.getDicts("MOC_TEMPORARYSTATE").then(response => {
  1593. this.temporaryStateOptions = response.data;
  1594. });
  1595. this.getDicts("MOC_STATE").then(response => {
  1596. this.trueStateOptions = response.data;
  1597. });
  1598. this.getDicts("MOC_CHANGE").then(response => {
  1599. this.changeNatureOptions = response.data;
  1600. });
  1601. this.getDicts("MOC_RISKLEVEL").then(response => {
  1602. this.riskLevelOptions = response.data;
  1603. });
  1604. },
  1605. methods: {
  1606. /** 移除按钮操作 */
  1607. handleRemove(row) {
  1608. this.$confirm(this.$t('是否确认移除?'), this.$t('警告'), {
  1609. confirmButtonText: this.$t('确定'),
  1610. cancelButtonText: this.$t('取消'),
  1611. type: "warning"
  1612. }).then(function() {
  1613. updateMoc({id: row.id, status: 0});
  1614. }).then(() => {
  1615. this.getList();
  1616. this.msgSuccess(this.$t('移除成功'));
  1617. })
  1618. },
  1619. /** 查询MOC管理列表 */
  1620. getList() {
  1621. this.loading = true;
  1622. let _this = this
  1623. listAquifier(this.queryParams).then(response => {
  1624. this.mocList = response.rows;
  1625. this.mocList.forEach(function (value,key,arr) {
  1626. if (value.overTime == null) {
  1627. _this.mocList[key].overTime = "N.A."
  1628. }
  1629. });
  1630. this.total = response.total;
  1631. this.loading = false;
  1632. });
  1633. },
  1634. // 单元格样式
  1635. tableCellStyle( {row, column, rowIndex, columnIndex} ) {
  1636. let today = new Date(); // 当前时间
  1637. let expTime = new Date(row.expTime);
  1638. let difference = expTime.getTime() - today.getTime(); // 时间差
  1639. if (row.tempState == 0 || row.status == 0) { // 移除的数据
  1640. return "background-color: rgba(0, 255, 0, 0.2);";
  1641. } else if (row.expTime != null && row.expTime != '') {
  1642. if (difference <= 7 * 24 * 60 * 60 * 1000) { // 到期时间 - 当前时间 <= 7
  1643. return "background-color: rgba(255, 0, 0, 0.2);";
  1644. } else if (difference >= 7 * 24 * 60 * 60 * 1000
  1645. && difference <= 14 * 24 * 60 * 60 * 1000) { // 7 <= 到期时间 - 当前时间 <= 14
  1646. return "background-color: rgba(255, 255, 0, 0.2);";
  1647. }
  1648. }
  1649. },
  1650. //根据分数显示颜色提示
  1651. // tableCellStyle({ row, column, rowIndex, columnIndex }) {
  1652. // if (columnIndex == 3 && row.trueState == 10){
  1653. // return "color: rgba(45, 58, 79, 0.98) "
  1654. // }else if (columnIndex == 3 && row.trueState == 12){
  1655. // return "color: rgba(255, 26, 26, 0.98) "
  1656. // }else if (columnIndex == 3 && row.trueState == 14){
  1657. // return "color: rgba(95, 153, 248, 0.98) "
  1658. // }
  1659. // },
  1660. /** 查询部门下拉树结构 */
  1661. getTreeselect() {
  1662. treeselect().then(response => {
  1663. this.deptOptions = response.data;
  1664. });
  1665. },
  1666. // 卡具状态字典翻译
  1667. mocStatusFormat(row, column) {
  1668. return this.selectDictLabel(this.mocStatusOptions, row.status);
  1669. },
  1670. // 装置字典翻译
  1671. plantCodeFormat(row, column) {
  1672. return this.selectDictLabel(this.plantCodeOptions, row.plantCode);
  1673. },
  1674. // 类别字典翻译
  1675. categoryFormat(row, column) {
  1676. return this.selectDictLabel(this.categoryOptions, row.category);
  1677. },
  1678. // 实施情况字典翻译
  1679. trueStateFormat(row, column) {
  1680. return this.selectDictLabel(this.trueStateOptions, row.trueState);
  1681. },
  1682. // 变更性质字典翻译
  1683. changeNatureFormat(row, column) {
  1684. return this.selectDictLabel(this.changeNatureOptions, row.changeNature);
  1685. },
  1686. // 风险等级字典翻译
  1687. riskLevelFormat(row, column) {
  1688. return this.selectDictLabel(this.riskLevelOptions, row.riskLevel);
  1689. },
  1690. // 区域字典翻译
  1691. areaFormat(row, column) {
  1692. return this.selectDictLabel(this.areaOptions, row.area);
  1693. },
  1694. // PID MASTER更新字典翻译
  1695. pidMasterFormat(row, column) {
  1696. return this.selectDictLabel(this.pidMasterOptions, row.pidMaster);
  1697. },
  1698. // 临时MOC状态字典翻译
  1699. temporaryStateFormat(row, column) {
  1700. return this.selectDictLabel(this.temporaryStateOptions, row.temporaryState);
  1701. },
  1702. // SOP更新字典翻译
  1703. sopUpdateFormat(row, column) {
  1704. return this.selectDictLabel(this.sopUpdateOptions, row.sopUpdate);
  1705. },
  1706. // MC情况字典翻译
  1707. mcDetailFormat(row, column) {
  1708. return this.selectDictLabel(this.mcDetailOptions, row.mcDetail);
  1709. },
  1710. // MOC类型字典翻译
  1711. mocTypeFormat(row, column) {
  1712. return this.selectDictLabel(this.mocTypeOptions, row.mocType);
  1713. },
  1714. // 文件更新字典翻译
  1715. docUpdateFormat(row, column) {
  1716. return this.selectDictLabel(this.docUpdateOptions, row.docUpdate);
  1717. },
  1718. // 取消按钮
  1719. cancelDelay() {
  1720. this.delayDialog.open = false;
  1721. },
  1722. cancel() {
  1723. this.open = false;
  1724. this.reset();
  1725. },
  1726. // 表单重置
  1727. reset() {
  1728. this.form = {
  1729. id: null,
  1730. plantCode: null,
  1731. mocNo: null,
  1732. plantNumber: null,
  1733. noticeLetter: null,
  1734. workLetter: null,
  1735. cteNo: null,
  1736. investCost: null,
  1737. category: null,
  1738. significance: null,
  1739. classification: null,
  1740. area: null,
  1741. dashControl: null,
  1742. title: null,
  1743. owner: null,
  1744. approveTime: null,
  1745. estimateEndtime: null,
  1746. endtime: null,
  1747. trueState: null,
  1748. changeNature: null,
  1749. overTime: null,
  1750. riskLevel: null,
  1751. training: null,
  1752. pssr: null,
  1753. ehsCheck: null,
  1754. ehsDb: null,
  1755. pidMaster: null,
  1756. pssrDb: null,
  1757. capex: null,
  1758. delFlag: null,
  1759. createrCode: null,
  1760. createdate: null,
  1761. updaterCode: null,
  1762. updatedate: null,
  1763. deptId: null,
  1764. remarks: null,
  1765. temporaryState: null,
  1766. sopUpdate: null
  1767. };
  1768. this.resetForm("form");
  1769. },
  1770. // 限制时间范围
  1771. pickerOptionsTraining() {
  1772. const self = this
  1773. return {
  1774. disabledDate(time){
  1775. return time.getTime() < new Date(self.form.ehsCheck).getTime()
  1776. }
  1777. }
  1778. },
  1779. pickerOptionsPssr() {
  1780. const self = this
  1781. return {
  1782. disabledDate(time){
  1783. if (self.form.training != null) {
  1784. return time.getTime() < new Date(self.form.training).getTime()
  1785. }else {
  1786. return time.getTime() < new Date(self.form.ehsCheck).getTime()
  1787. }
  1788. }
  1789. }
  1790. },
  1791. /** 搜索按钮操作 */
  1792. handleQuery() {
  1793. this.queryParams.pageNum = 1;
  1794. this.getList();
  1795. },
  1796. /** 重置按钮操作 */
  1797. resetQuery() {
  1798. this.resetForm("queryForm");
  1799. this.handleQuery();
  1800. },
  1801. // 多选框选中数据
  1802. handleSelectionChange(selection) {
  1803. this.ids = selection.map(item => item.id)
  1804. this.single = selection.length!==1
  1805. this.multiple = !selection.length
  1806. },
  1807. /** 新增按钮操作 */
  1808. handleAdd() {
  1809. this.reset();
  1810. this.open = true;
  1811. this.title = this.$t('新增') + " " + this.$t('MOC管理');
  1812. },
  1813. //实施情况Finished变更
  1814. changeTrueState(val) {
  1815. if (val == 10) {
  1816. // this.rules = this.chooseRules
  1817. }else {
  1818. this.$refs['form'].clearValidate();
  1819. // this.rules = this.commonRules
  1820. }
  1821. },
  1822. changeChangeNature(val) {
  1823. if (val == 10) {
  1824. // this.rules = this.temporaryRules
  1825. }else if (val = 12) {
  1826. this.$refs['form'].clearValidate();
  1827. this.form.temporaryState = "14";
  1828. this.form.overTime = "";
  1829. // this.rules = this.commonRules
  1830. }
  1831. },
  1832. //根据分数显示颜色提示
  1833. tableCellClassName({ row, column, rowIndex, columnIndex }) {
  1834. if (columnIndex == 13){
  1835. return this.changeColor(row.isEhsCheck, row.ehsCheck)
  1836. }
  1837. if (columnIndex == 14){
  1838. return this.changeColor(row.isTraining, row.training)
  1839. }
  1840. if (columnIndex == 15){
  1841. return this.changeColor(row.isPssr, row.pssr)
  1842. }
  1843. },
  1844. changeColor (value, dateValue) {
  1845. if (value !== "1" && dateValue !== null){
  1846. return 'cellMoc'
  1847. }
  1848. },
  1849. /** 延期按钮操作 */
  1850. handleDelay(row) {
  1851. this.delayForm.id = row.id;
  1852. this.delayDialog.open = true;
  1853. this.delayDialog.title = row.mocNo.toString() + '延期操作';
  1854. },
  1855. /** 修改按钮操作 */
  1856. handleUpdate(row) {
  1857. this.reset();
  1858. // this.rules = this.commonRules
  1859. const id = row.id || this.ids
  1860. getMoc(id).then(response => {
  1861. this.form = response.data;
  1862. this.open = true;
  1863. this.title = this.$t('修改') + this.$t('MOC管理');
  1864. });
  1865. },
  1866. /** 提交按钮 */
  1867. submitDelayForm() {
  1868. delay(this.delayForm).then(response => {
  1869. this.msgSuccess(this.$t('延期成功'));
  1870. this.delayDialog.open = false;
  1871. this.getList();
  1872. });
  1873. },
  1874. submitForm() {
  1875. this.$refs["form"].validate(valid => {
  1876. if (valid) {
  1877. if (this.form.trueState == "10") {
  1878. if (this.form.mocNo != null && this.form.plantNumber != null && this.form.category != null && this.form.significance != null && this.form.classification != null
  1879. && this.form.area != null && this.form.title != null && this.form.owner != null && this.form.approveTime != null && this.form.estimateEndtime != null
  1880. && this.form.endtime != null && this.form.changeNature != null && this.form.riskLevel != null && this.form.training != null && this.form.pssr != null) {
  1881. if (this.form.id != null) {
  1882. updateMoc(this.form).then(response => {
  1883. this.msgSuccess(this.$t('修改成功'));
  1884. this.open = false;
  1885. this.getList();
  1886. });
  1887. } else {
  1888. this.form.timeliness = 2;
  1889. this.form.tempCategory = 1;
  1890. addMoc(this.form).then(response => {
  1891. this.msgSuccess(this.$t('新增成功'));
  1892. this.open = false;
  1893. this.getList();
  1894. });
  1895. }
  1896. } else {
  1897. this.msgError(this.$t('存在必填项未填,实施情况修改Finished失败'));
  1898. }
  1899. }else {
  1900. if (this.form.id != null) {
  1901. updateMoc(this.form).then(response => {
  1902. this.msgSuccess(this.$t('修改成功'));
  1903. this.open = false;
  1904. this.getList();
  1905. });
  1906. } else {
  1907. this.form.timeliness = 2;
  1908. this.form.tempCategory = 1;
  1909. addMoc(this.form).then(response => {
  1910. this.msgSuccess(this.$t('新增成功'));
  1911. this.open = false;
  1912. this.getList();
  1913. });
  1914. }
  1915. }
  1916. }
  1917. });
  1918. },
  1919. /** 删除按钮操作 */
  1920. handleDelete(row) {
  1921. const ids = row.id || this.ids;
  1922. this.$confirm(this.$t('是否确认删除?'), this.$t('警告'), {
  1923. confirmButtonText: this.$t('确定'),
  1924. cancelButtonText: this.$t('取消'),
  1925. type: "warning"
  1926. }).then(function() {
  1927. return delMoc(ids);
  1928. }).then(() => {
  1929. this.getList();
  1930. this.msgSuccess(this.$t('删除成功'));
  1931. })
  1932. },
  1933. /** 导出按钮操作 */
  1934. handleExport() {
  1935. const queryParams = this.queryParams;
  1936. this.$confirm(this.$t('是否确认导出所有MOC管理数据项?'), this.$t('警告'), {
  1937. confirmButtonText: this.$t('确定'),
  1938. cancelButtonText: this.$t('取消'),
  1939. type: "warning"
  1940. }).then(function() {
  1941. return exportMoc(queryParams);
  1942. }).then(response => {
  1943. this.download(response.msg);
  1944. })
  1945. },
  1946. /** 导入按钮操作 */
  1947. handleImport() {
  1948. this.upload.title = this.$t('用户导入');
  1949. this.upload.open = true;
  1950. },
  1951. /** 下载模板操作 */
  1952. importTemplate() {
  1953. this.$refs['downloadFileForm'].submit()
  1954. },
  1955. // 文件上传中处理
  1956. handleFileUploadProgress(event, file, fileList) {
  1957. this.upload.isUploading = true;
  1958. },
  1959. // 文件上传成功处理
  1960. handleFileSuccess(response, file, fileList) {
  1961. this.upload.open = false;
  1962. this.upload.isUploading = false;
  1963. this.$refs.upload.clearFiles();
  1964. if (response.data[0] != null) {
  1965. this.$alert(this.$t('成功导入') + response.msg + this.$t('条数据') + "," + this.$t('第') + response.data + this.$t('行数据出现错误导入失败')+"。", this.$t('导入结果'), { dangerouslyUseHTMLString: true });
  1966. }else {
  1967. this.$alert(this.$t('成功导入') + response.msg + this.$t('条数据'), this.$t('导入结果'), { dangerouslyUseHTMLString: true });
  1968. }
  1969. this.getList();
  1970. },
  1971. // 提交上传文件
  1972. submitFileForm() {
  1973. this.$refs.upload.submit();
  1974. },
  1975. //数据分析
  1976. handleData(){
  1977. var now = new Date();
  1978. var year = now.getFullYear(); //得到年份
  1979. this.yearOption = [year-2 , year-1 ,year]
  1980. this.drawer = true
  1981. },
  1982. /** 报告附件按钮操作 */
  1983. handleDoc(row , fileType) {
  1984. this.doc.pType = fileType
  1985. this.doc.queryParams.pType = fileType
  1986. this.doc.id = row.id;
  1987. this.doc.title = row.title;
  1988. this.doc.open = true;
  1989. this.doc.queryParams.pId = row.id
  1990. this.doc.pId = row.id
  1991. this.getFileList()
  1992. this.$nextTick(() => {
  1993. this.$refs.doc.clearFiles()
  1994. })
  1995. },
  1996. getFileList (){
  1997. allFileList(this.doc.queryParams).then(response => {
  1998. response.forEach(element => {
  1999. element["isEdit"] = false
  2000. });
  2001. response.forEach(element => {
  2002. element["isAdd"] = false
  2003. });
  2004. this.doc.commonfileList = response;
  2005. });
  2006. },
  2007. //附件上传中处理
  2008. handleFileDocProgress(event, file, fileList) {
  2009. this.doc.file = file;
  2010. this.doc.isUploading = true;
  2011. },
  2012. //附件上传成功处理
  2013. handleFileDocSuccess(response, file, fileList) {
  2014. this.doc.isUploading = false;
  2015. this.$alert(response.msg, this.$t('导入结果'), { dangerouslyUseHTMLString: true });
  2016. this.getFileList()
  2017. },
  2018. // 文件下载处理
  2019. handleDownload(row) {
  2020. var name = row.fileName;
  2021. var url = row.fileUrl;
  2022. var suffix = url.substring(url.lastIndexOf("."), url.length);
  2023. const a = document.createElement('a')
  2024. a.setAttribute('download', name)
  2025. a.setAttribute('target', '_blank')
  2026. a.setAttribute('href', process.env.VUE_APP_BASE_API + url)
  2027. a.click()
  2028. },
  2029. //pdf预览
  2030. openPdf(){
  2031. window.open(this.pdf.pdfUrl);//path是文件的全路径地址
  2032. },
  2033. handleSee (row){
  2034. this.pdf.open =true
  2035. this.pdf.title = row.fileName
  2036. this.pdf.pdfUrl = process.env.VUE_APP_BASE_API +'/pdf/web/viewer.html?file=' + process.env.VUE_APP_BASE_API + row.fileUrl
  2037. },
  2038. // 取消
  2039. cancelFile(row, index) {
  2040. // 如果是新增的数据
  2041. if (row.isAdd) {
  2042. this.doc.commonfileList.splice(index, 1)
  2043. } else {
  2044. // 不是新增的数据 还原数据
  2045. for (const i in row.oldRow) {
  2046. row[i] = row.oldRow[i]
  2047. }
  2048. row.isEdit = false
  2049. }
  2050. },
  2051. edit(row) {
  2052. // 备份原始数据
  2053. row['oldRow'] = JSON.parse(JSON.stringify(row));
  2054. this.$nextTick(() => {
  2055. row.isEdit = true;
  2056. })
  2057. },
  2058. save(row) {
  2059. row.isEdit = false;
  2060. var that = this;
  2061. that.loading = true;
  2062. this.form = row;
  2063. if (row.isAdd == true) {
  2064. addCommonfile(this.form).then(response => {
  2065. this.msgSuccess(this.$t('新增成功'));
  2066. this.open = false;
  2067. this.getList();
  2068. });
  2069. }else {
  2070. updateCommonfile(this.form).then(response => {
  2071. this.msgSuccess(this.$t('修改成功'));
  2072. this.open = false;
  2073. this.getList();
  2074. });
  2075. }
  2076. },
  2077. /** 删除按钮操作 */
  2078. handleDeleteDoc(row) {
  2079. const ids = row.id || this.ids;
  2080. this.$confirm(this.$t('是否确认删除?'), this.$t('警告'), {
  2081. confirmButtonText: this.$t('确定'),
  2082. cancelButtonText: this.$t('取消'),
  2083. type: "warning"
  2084. }).then(function() {
  2085. return delCommonfile(ids);
  2086. }).then(() => {
  2087. this.getFileList()
  2088. this.msgSuccess(this.$t('删除成功'));
  2089. })
  2090. },
  2091. }
  2092. };
  2093. </script>
  2094. <style>
  2095. #moc-type:hover{
  2096. cursor: pointer;
  2097. }
  2098. .text {
  2099. font-size: 14px;
  2100. }
  2101. .item {
  2102. margin-bottom: 18px;
  2103. }
  2104. .clearfix {
  2105. color: #1e1e1e;
  2106. }
  2107. .clearfix:before,
  2108. .clearfix:after {
  2109. display: table;
  2110. content: "";
  2111. }
  2112. .clearfix:after {
  2113. clear: both
  2114. }
  2115. .box-card {
  2116. width: 100%;
  2117. }
  2118. .el-drawer__body {
  2119. overflow: auto;
  2120. }
  2121. .el-drawer__container ::-webkit-scrollbar {
  2122. display: none;
  2123. }
  2124. </style>