moldDetail.vue 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964
  1. <template>
  2. <section>
  3. <!--工具条-->
  4. <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
  5. <el-form :inline="true">
  6. <el-form-item>
  7. <el-button type="text" @click="backToList" icon="el-icon-back" class="back">返回</el-button>
  8. </el-form-item>
  9. <el-form-item class="divLine"></el-form-item>
  10. <el-form-item>
  11. <span class="projectTitle">{{moldDetail.modelName}}</span>
  12. </el-form-item>
  13. <el-form-item class="state">
  14. 当前状态:
  15. <a style="color: #999999; cursor: pointer" @click="toDetection" v-if="moldDetail.state == 0">静止</a>
  16. <a style="color: #00CD66; cursor: pointer" @click="toDetection" v-if="moldDetail.state == 1">运行</a>
  17. <span class="tips">(点击查看运行状态)</span>
  18. </el-form-item>
  19. </el-form>
  20. </el-col>
  21. <!-- 主区域 -->
  22. <el-col :span="24" :style="allDetail">
  23. <el-col :span="24" class="title">
  24. 模具基本信息
  25. <i class="el-icon-edit editDetail" v-if="user.id == moldDetail.managerId || user.id == moldDetail.creatorId" @click="edit"></i>
  26. </el-col>
  27. <el-col :span="24" class="main">
  28. <el-col :span="6" class="detail">
  29. 模具编号:
  30. <span class="info">{{moldDetail.modelNo}}</span>
  31. </el-col>
  32. <el-col :span="6" class="detail">
  33. 云模盒编号:
  34. <span class="info">{{moldDetail.equipmentNo}}</span>
  35. </el-col>
  36. <el-col :span="6" class="detail">
  37. 设备电量:
  38. <span class="info">{{moldDetail.hillNumber}}</span>
  39. </el-col>
  40. <el-col :span="6" class="detail">
  41. 倒计时:
  42. <span class="info">{{moldDetail.diffTime}}</span>
  43. </el-col>
  44. <el-col :span="6" class="detail">
  45. 初始模次:
  46. <span class="info">{{moldDetail.initialModulus}}</span>
  47. </el-col>
  48. <el-col :span="6" class="detail">
  49. 模次寿命:
  50. <span class="info">{{moldDetail.settingLife}}</span>
  51. </el-col>
  52. <el-col :span="6" class="detail">
  53. 对应RFID码:
  54. <span class="info">{{moldDetail.rfid}}</span>
  55. </el-col>
  56. <el-col :span="6" class="detail">
  57. 穴数:
  58. <span class="info">{{moldDetail.waterGap}}</span>
  59. </el-col>
  60. <el-col :span="12" class="detail">
  61. 所属项目:
  62. <span class="info">{{moldDetail.projectName}}</span>
  63. </el-col>
  64. <el-col :span="24" class="detail">
  65. 生产方:
  66. <!-- <span class="info" v-for="(item, index) in customCompany">
  67. {{item.companyName}}
  68. <span v-if="index != customCompany.length-1">、</span>
  69. </span> -->
  70. <span class="info">{{moldDetail.produceCompany}}</span>
  71. </el-col>
  72. <el-col :span="24" class="detail">
  73. 生产方地址:
  74. <!-- <span class="info" v-for="(item, index) in customCompany">
  75. {{item.companyName}}
  76. <span v-if="index != customCompany.length-1">、</span>
  77. </span> -->
  78. <span class="info">{{moldDetail.area}}</span>
  79. </el-col>
  80. </el-col>
  81. <el-col :span="24" class="title">
  82. 文档资料
  83. <!-- 上传 模具0 零件1 时 -->
  84. <el-dropdown trigger="click" style="float:right;" v-show="(activeTab == 0 || activeTab == 1) && update == 1">
  85. <el-button size="small" type="primary">
  86. 上传
  87. <i class="el-icon-arrow-down el-icon--right"></i>
  88. </el-button>
  89. <el-dropdown-menu slot="dropdown">
  90. <el-upload ref="upload" action="customize" :http-request="uploadFile" :show-file-list="false" multiple :limit="5" style="float:right;">
  91. <el-dropdown-item @click.native="fileType = 0">2D</el-dropdown-item>
  92. <el-dropdown-item @click.native="fileType = 1">3D</el-dropdown-item>
  93. </el-upload>
  94. </el-dropdown-menu>
  95. </el-dropdown>
  96. <!-- 零件1 新建零件 -->
  97. <el-dropdown trigger="click" style="float:right; margin-right: 10px;" v-show=" activeTab == 1 && update == 1">
  98. <el-button size="small" type="primary">
  99. 新建零件
  100. <i class="el-icon-arrow-down el-icon--right"></i>
  101. </el-button>
  102. <el-dropdown-menu slot="dropdown">
  103. <el-dropdown-item @click.native="centerDialog3Visible = true">单个新建</el-dropdown-item>
  104. <el-dropdown-item>批量新建</el-dropdown-item>
  105. </el-dropdown-menu>
  106. </el-dropdown>
  107. <!-- 上传 试模2 保养3 更新4 时 -->
  108. <el-upload ref="upload"
  109. v-show="(activeTab == 2 || activeTab == 3 || activeTab == 4) && update == 1"
  110. action="customize"
  111. :http-request="uploadFile"
  112. :show-file-list="false"
  113. multiple
  114. :limit="5"
  115. style="float:right;"
  116. >
  117. <el-button size="small" type="primary">上传</el-button>
  118. </el-upload>
  119. <!-- 上传 报废5 时 -->
  120. <el-button
  121. v-show="activeTab == 5 && update == 1"
  122. size="small"
  123. type="primary"
  124. style="float:right;"
  125. @click="centerDialog2Visible = true;"
  126. >上传</el-button>
  127. </el-col>
  128. <el-col :span="24">
  129. <el-tabs v-model="activePage" @tab-click="handleClick">
  130. <!-- 模具文档 -->
  131. <el-tab-pane label="模具文档" name="0">
  132. <el-table
  133. :data="documents.mould"
  134. highlight-current-row
  135. v-loading="listLoading"
  136. style="width: 100%;"
  137. >
  138. <el-table-column type="index" width="40"></el-table-column>
  139. <el-table-column prop="fileName" label="名称" sortable></el-table-column>
  140. <el-table-column prop="fileSize" label="大小" width="200" align="center" sortable></el-table-column>
  141. <el-table-column prop="uploadtor" label="上传者" width="200" align="center" sortable></el-table-column>
  142. <el-table-column prop="indate" label="上传时间" width="200" sortable></el-table-column>
  143. <el-table-column label="状态" width="120" align="center" sortable>
  144. <template slot-scope="scope">
  145. <span v-if="scope.row.state == -2">生产方审核不通过</span>
  146. <span v-else-if="scope.row.state == -1">资产方审核不通过</span>
  147. <span v-else-if="scope.row.state == 0">待双方审核</span>
  148. <span v-else-if="scope.row.state == 1">待生产方审核</span>
  149. <span v-else-if="scope.row.state == 2">待资产方审核</span>
  150. <span v-else-if="scope.row.state == 3">审核通过</span>
  151. </template>
  152. </el-table-column>
  153. <el-table-column label="操作" width="200" align="center" sortable>
  154. <template slot-scope="scope">
  155. <el-button size="small"
  156. v-if="approve == 1 && (scope.row.state == 0 || (scope.row.state == 1 && user.subordinateType == 1) || (scope.row.state == 2 && user.subordinateType == 0))"
  157. @click="checkOpen(scope.row.id, scope.row.fileName)">审批</el-button>
  158. <a :href="scope.row.fileUrl" :download="scope.row.fileName" v-if="download == 1 && scope.row.state == 3">
  159. <el-button size="small" @click="dowloadfile(scope.row.id)">下载</el-button>
  160. </a>
  161. <el-button size="small"
  162. v-if="scope.row.uplodtorId == user.id && scope.row.state <= 0"
  163. @click="deleteFile(scope.row.id)" type="danger">删除</el-button>
  164. </template>
  165. </el-table-column>
  166. </el-table>
  167. </el-tab-pane>
  168. <!-- 零件文档 -->
  169. <el-tab-pane label="零件文档" name="1">
  170. <el-table
  171. :data="documents.part"
  172. highlight-current-row
  173. v-loading="listLoading"
  174. style="width: 100%;"
  175. >
  176. <el-table-column type="index" width="40"></el-table-column>
  177. <el-table-column label="零件编号" width="200" sortable></el-table-column>
  178. <el-table-column prop="fileName" label="零件名称" sortable></el-table-column>
  179. <el-table-column label="寿命次数" width="100" sortable></el-table-column>
  180. <el-table-column label="易损件" width="100" sortable></el-table-column>
  181. <el-table-column prop="fileSize" label="大小" width="200" sortable></el-table-column>
  182. <el-table-column prop="uploadtor" label="上传者" width="200" sortable></el-table-column>
  183. <el-table-column prop="indate" label="上传时间" width="200" sortable></el-table-column>
  184. <el-table-column label="状态" width="120" sortable>
  185. <template slot-scope="scope">
  186. <span v-if="scope.row.state == -2">生产方审核不通过</span>
  187. <span v-else-if="scope.row.state == -1">资产方审核不通过</span>
  188. <span v-else-if="scope.row.state == 0">待双方审核</span>
  189. <span v-else-if="scope.row.state == 1">待生产方审核</span>
  190. <span v-else-if="scope.row.state == 2">待资产方审核</span>
  191. <span v-else-if="scope.row.state == 3">审核通过</span>
  192. </template>
  193. </el-table-column>
  194. <el-table-column label="操作" width="200" sortable>
  195. <template slot-scope="scope">
  196. <el-button size="small"
  197. v-if="approve == 1 && (scope.row.state == 0 || (scope.row.state == 1 && user.subordinateType == 1) || (scope.row.state == 2 && user.subordinateType == 0))"
  198. @click="checkOpen(scope.row.id, scope.row.fileName)">审批</el-button>
  199. <a :href="scope.row.fileUrl" :download="scope.row.fileName" v-if="download == 1 && scope.row.state == 3">
  200. <el-button size="small" @click="dowloadfile(scope.row.id)">下载</el-button>
  201. </a>
  202. <el-button size="small"
  203. v-if="scope.row.uplodtorId == user.id && scope.row.state <= 0"
  204. @click="deleteFile(scope.row.id)" type="danger">删除</el-button>
  205. </template>
  206. </el-table-column>
  207. </el-table>
  208. </el-tab-pane>
  209. <!-- 试模及验收 -->
  210. <el-tab-pane label="试模及验收" name="2">
  211. <el-table
  212. :data="documents.check"
  213. highlight-current-row
  214. v-loading="listLoading"
  215. style="width: 100%;"
  216. >
  217. <el-table-column type="index" width="40"></el-table-column>
  218. <el-table-column prop="fileName" label="名称" sortable></el-table-column>
  219. <el-table-column prop="fileSize" label="大小" width="200" sortable></el-table-column>
  220. <el-table-column prop="uploadtor" label="上传者" width="200" sortable></el-table-column>
  221. <el-table-column prop="indate" label="上传时间" width="200" sortable></el-table-column>
  222. <el-table-column label="状态" width="120" sortable>
  223. <template slot-scope="scope">
  224. <span v-if="scope.row.state == -2">生产方审核不通过</span>
  225. <span v-else-if="scope.row.state == -1">资产方审核不通过</span>
  226. <span v-else-if="scope.row.state == 0">待双方审核</span>
  227. <span v-else-if="scope.row.state == 1">待生产方审核</span>
  228. <span v-else-if="scope.row.state == 2">待资产方审核</span>
  229. <span v-else-if="scope.row.state == 3">审核通过</span>
  230. </template>
  231. </el-table-column>
  232. <el-table-column label="操作" width="200" sortable>
  233. <template slot-scope="scope">
  234. <el-button size="small"
  235. v-if="approve == 1 && (scope.row.state == 0 || (scope.row.state == 1 && user.subordinateType == 1) || (scope.row.state == 2 && user.subordinateType == 0))"
  236. @click="checkOpen(scope.row.id, scope.row.fileName)">审批</el-button>
  237. <a :href="scope.row.fileUrl" :download="scope.row.fileName" v-if="download == 1 && scope.row.state == 3">
  238. <el-button size="small" @click="dowloadfile(scope.row.id)">下载</el-button>
  239. </a>
  240. <el-button size="small"
  241. v-if="scope.row.uplodtorId == user.id && scope.row.state <= 0"
  242. @click="deleteFile(scope.row.id)" type="danger">删除</el-button>
  243. </template>
  244. </el-table-column>
  245. </el-table>
  246. </el-tab-pane>
  247. <!-- 保养方案 -->
  248. <el-tab-pane label="保养方案" name="3">
  249. <el-table
  250. :data="documents.maintain"
  251. highlight-current-row
  252. v-loading="listLoading"
  253. style="width: 100%;"
  254. >
  255. <el-table-column type="index" width="40"></el-table-column>
  256. <el-table-column prop="fileName" label="名称" sortable></el-table-column>
  257. <el-table-column prop="fileSize" label="大小" width="200" sortable></el-table-column>
  258. <el-table-column prop="uploadtor" label="上传者" width="200" sortable></el-table-column>
  259. <el-table-column prop="indate" label="上传时间" width="200" sortable></el-table-column>
  260. <el-table-column label="状态" width="120" sortable>
  261. <template slot-scope="scope">
  262. <span v-if="scope.row.state == -2">生产方审核不通过</span>
  263. <span v-else-if="scope.row.state == -1">资产方审核不通过</span>
  264. <span v-else-if="scope.row.state == 0">待双方审核</span>
  265. <span v-else-if="scope.row.state == 1">待生产方审核</span>
  266. <span v-else-if="scope.row.state == 2">待资产方审核</span>
  267. <span v-else-if="scope.row.state == 3">审核通过</span>
  268. </template>
  269. </el-table-column>
  270. <el-table-column label="操作" width="200" sortable>
  271. <template slot-scope="scope">
  272. <el-button size="small"
  273. v-if="approve == 1 && (scope.row.state == 0 || (scope.row.state == 1 && user.subordinateType == 1) || (scope.row.state == 2 && user.subordinateType == 0))"
  274. @click="checkOpen(scope.row.id, scope.row.fileName)">审批</el-button>
  275. <a :href="scope.row.fileUrl" :download="scope.row.fileName" v-if="download == 1 && scope.row.state == 3">
  276. <el-button size="small" @click="dowloadfile(scope.row.id)">下载</el-button>
  277. </a>
  278. <el-button size="small"
  279. v-if="scope.row.uplodtorId == user.id && scope.row.state <= 0"
  280. @click="deleteFile(scope.row.id)" type="danger">删除</el-button>
  281. </template>
  282. </el-table-column>
  283. </el-table>
  284. </el-tab-pane>
  285. <!-- 模具更新 -->
  286. <el-tab-pane label="模具更新" name="4">
  287. <el-table :data="documents.update" highlight-current-row v-loading="listLoading" style="width: 100%;">
  288. <el-table-column type="index" width="40"></el-table-column>
  289. <el-table-column prop="fileName" label="名称" sortable></el-table-column>
  290. <el-table-column prop="fileSize" label="大小" width="200" sortable></el-table-column>
  291. <el-table-column prop="uploadtor" label="上传者" width="200" sortable></el-table-column>
  292. <el-table-column prop="indate" label="上传时间" width="200" sortable></el-table-column>
  293. <el-table-column label="状态" width="120" sortable>
  294. <template slot-scope="scope">
  295. <span v-if="scope.row.state == -2">生产方审核不通过</span>
  296. <span v-else-if="scope.row.state == -1">资产方审核不通过</span>
  297. <span v-else-if="scope.row.state == 0">待双方审核</span>
  298. <span v-else-if="scope.row.state == 1">待生产方审核</span>
  299. <span v-else-if="scope.row.state == 2">待资产方审核</span>
  300. <span v-else-if="scope.row.state == 3">审核通过</span>
  301. </template>
  302. </el-table-column>
  303. <el-table-column label="操作" width="200" sortable>
  304. <template slot-scope="scope">
  305. <el-button size="small"
  306. v-if="approve == 1 && (scope.row.state == 0 || (scope.row.state == 1 && user.subordinateType == 1) || (scope.row.state == 2 && user.subordinateType == 0))"
  307. @click="checkOpen(scope.row.id, scope.row.fileName)">审批</el-button>
  308. <a :href="scope.row.fileUrl" :download="scope.row.fileName" v-if="download == 1 && scope.row.state == 3">
  309. <el-button size="small" @click="dowloadfile(scope.row.id)">下载</el-button>
  310. </a>
  311. <el-button size="small"
  312. v-if="scope.row.uplodtorId == user.id && scope.row.state <= 0"
  313. @click="deleteFile(scope.row.id)" type="danger">删除</el-button>
  314. </template>
  315. </el-table-column>
  316. </el-table>
  317. </el-tab-pane>
  318. <!-- 模具报废 -->
  319. <el-tab-pane label="模具报废" name="5">
  320. <el-table :data="documents.abandon" highlight-current-row v-loading="listLoading" style="width: 100%;">
  321. <el-table-column type="index" width="40"></el-table-column>
  322. <el-table-column prop="fileName" label="名称" sortable></el-table-column>
  323. <el-table-column prop="fileSize" label="大小" width="200" sortable></el-table-column>
  324. <el-table-column prop="uploadtor" label="上传者" width="200" sortable></el-table-column>
  325. <el-table-column prop="indate" label="上传时间" width="200" sortable></el-table-column>
  326. <el-table-column label="状态" width="120" sortable>
  327. <template slot-scope="scope">
  328. <span v-if="scope.row.state == -2">生产方审核不通过</span>
  329. <span v-else-if="scope.row.state == -1">资产方审核不通过</span>
  330. <span v-else-if="scope.row.state == 0">待双方审核</span>
  331. <span v-else-if="scope.row.state == 1">待生产方审核</span>
  332. <span v-else-if="scope.row.state == 2">待资产方审核</span>
  333. <span v-else-if="scope.row.state == 3">审核通过</span>
  334. </template>
  335. </el-table-column>
  336. <el-table-column label="操作" width="200" sortable>
  337. <template slot-scope="scope">
  338. <el-button size="small"
  339. v-if="approve == 1 && (scope.row.state == 0 || (scope.row.state == 1 && user.subordinateType == 1) || (scope.row.state == 2 && user.subordinateType == 0))"
  340. @click="checkOpen(scope.row.id, scope.row.fileName)">审批</el-button>
  341. <a :href="scope.row.fileUrl" :download="scope.row.fileName" v-if="download == 1 && scope.row.state == 3">
  342. <el-button size="small" @click="dowloadfile(scope.row.id)">下载</el-button>
  343. </a>
  344. <el-button size="small"
  345. v-if="scope.row.uplodtorId == user.id && scope.row.state <= 0"
  346. @click="deleteFile(scope.row.id)" type="danger">删除</el-button>
  347. </template>
  348. </el-table-column>
  349. </el-table>
  350. </el-tab-pane>
  351. </el-tabs>
  352. </el-col>
  353. <!-- 操作记录 -->
  354. <el-col :span="24" class="title">操作记录</el-col>
  355. <el-table :data="operations" highlight-current-row v-loading="listLoading" style="width: 100%;">
  356. <el-table-column type="index" width="40"></el-table-column>
  357. <el-table-column prop="content" label="操作" width="120" sortable></el-table-column>
  358. <el-table-column prop="fileName" label="操作文档名称" sortable></el-table-column>
  359. <el-table-column prop="operatorName" label="操作人" align="center" width="120" sortable></el-table-column>
  360. <el-table-column prop="indate" label="操作时间" width="200" align="center" sortable></el-table-column>
  361. </el-table>
  362. </el-col>
  363. <!-- 审批弹窗 -->
  364. <el-dialog title="审批" :visible.sync="centerDialogVisible" width="30%" center>
  365. <span>{{this.activeFileName}}</span>
  366. <span slot="footer" class="dialog-footer">
  367. <el-button @click="check(false)">不通过</el-button>
  368. <el-button type="primary" @click="check(true)">通过</el-button>
  369. </span>
  370. </el-dialog>
  371. <!-- 模具报废上传弹窗 -->
  372. <el-dialog title="模具报废上传" :visible.sync="centerDialog2Visible" width="30%" :before-close="clearFileRecord" center>
  373. <p>申请单</p>
  374. <el-upload ref="upload1" action="customize" :http-request="uploadFile" :limit="1" :auto-upload="false">
  375. <el-button size="small" type="primary">上传</el-button>
  376. </el-upload>
  377. <p>报废单</p>
  378. <el-upload ref="upload2" action="customize" :http-request="uploadFile" :limit="1" :auto-upload="false">
  379. <el-button size="small" type="primary">上传</el-button>
  380. </el-upload>
  381. <span slot="footer" class="dialog-footer">
  382. <el-button @click="confirmUpload">确定</el-button>
  383. </span>
  384. </el-dialog>
  385. <!-- 单个新增零件弹窗 -->
  386. <el-dialog title="编辑模具" v-if="centerDialog3Visible" :visible.sync="centerDialog3Visible" :close-on-click-modal="false" customClass="customWidth">
  387. <el-form :model="newParts" label-width="100px" :rules="formRules" ref="newParts" :inline="true" class="demo-form-inline">
  388. <el-form-item label="零件编号" prop="number">
  389. <el-input v-model="newParts.number" autocomplete="off" placeholder="请输入模具名称"></el-input>
  390. </el-form-item>
  391. <el-form-item label="零件名称" prop="name">
  392. <el-input v-model="newParts.name" autocomplete="off" placeholder="请输入模具编号"></el-input>
  393. </el-form-item>
  394. <el-form-item label="零件寿命" prop="life">
  395. <el-input v-model="newParts.life" autocomplete="off" placeholder="请输入初始模次"></el-input>
  396. </el-form-item>
  397. </el-form>
  398. <div slot="footer" class="dialog-footer">
  399. <el-button @click.native="centerDialog3Visible = false">取消</el-button>
  400. <el-button type="primary">提交</el-button>
  401. </div>
  402. </el-dialog>
  403. <!--编辑界面-->
  404. <el-dialog title="编辑模具" v-if="editFormVisible" :visible.sync="editFormVisible" :close-on-click-modal="false" customClass="customWidth">
  405. <el-form :model="editForm" label-width="100px" :rules="formRules" ref="editForm" :inline="true" class="demo-form-inline">
  406. <el-form-item label="模具名称" prop="modelName">
  407. <el-input v-model="editForm.modelName" autocomplete="off" placeholder="请输入模具名称"></el-input>
  408. </el-form-item>
  409. <el-form-item label="模具编号" prop="modelNo">
  410. <el-input v-model="editForm.modelNo" autocomplete="off" placeholder="请输入模具编号"></el-input>
  411. </el-form-item>
  412. <el-form-item label="云模盒编号" prop="equipmentId">
  413. <el-select v-model="editForm.equipmentId" clearable filterable placeholder="请选择云模盒编号" style="width:202px">
  414. <el-option v-for="item in boxes" :key="item.id" :label="item.equipmentNo" :value="item.id"></el-option>
  415. </el-select>
  416. </el-form-item>
  417. <el-form-item label="初始模次">
  418. <el-input v-model="editForm.initialModulus" autocomplete="off" placeholder="请输入初始模次"></el-input>
  419. </el-form-item>
  420. <el-form-item label="模次寿命">
  421. <el-input v-model="editForm.settingLife" autocomplete="off" placeholder="请输入模次寿命"></el-input>
  422. </el-form-item>
  423. <el-form-item label="RIFD码">
  424. <el-input v-model="editForm.rfid" autocomplete="off" placeholder="请输入RIFD码"></el-input>
  425. </el-form-item>
  426. <el-form-item label="所属生产方" v-if="moldDetail.projectId != null">
  427. <el-select v-model="editForm.produceCompanyId" clearable filterable placeholder="请选择所属生产方" style="width:202px">
  428. <el-option v-for="item in customCompany" :key="item.companyId" :label="item.companyName" :value="item.companyId"></el-option>
  429. </el-select>
  430. </el-form-item>
  431. </el-form>
  432. <div slot="footer" class="dialog-footer">
  433. <el-button @click.native="editFormVisible = false">取消</el-button>
  434. <el-button type="primary" @click.native="addSubmit" :loading="editLoading">提交</el-button>
  435. </div>
  436. </el-dialog>
  437. </section>
  438. </template>
  439. <script>
  440. import util from "../../common/js/util";
  441. export default {
  442. data() {
  443. return {
  444. detailId: this.$route.params.id,
  445. user: JSON.parse(sessionStorage.getItem("user")),
  446. moldDetail: {},
  447. customCompany: [],
  448. boxes: [],
  449. //单独新增零件时所需的三个变量
  450. newParts: {
  451. number: "",
  452. name: "",
  453. life: ""
  454. },
  455. formRules: {
  456. modelNo: [
  457. { required: true, message: "请输入模具编号", trigger: "blur" }
  458. ],
  459. modelName: [
  460. { required: true, message: "请输入模具名称", trigger: "blur" }
  461. ],
  462. equipmentId: [
  463. {
  464. required: true,
  465. message: "请选择云模盒编号",
  466. trigger: ["blur", "change"]
  467. }
  468. ],
  469. number: [
  470. { required: true, message: "请输入零件编号", trigger: "blur" }
  471. ],
  472. name: [
  473. { required: true, message: "请输入零件名称", trigger: "blur" }
  474. ],
  475. life: [
  476. { required: true, message: "请输入零件寿命次数", trigger: "blur" }
  477. ],
  478. },
  479. //权限
  480. update: 0,
  481. download: 0,
  482. view: 0,
  483. approve: 0,
  484. //6种文档
  485. documents: {
  486. mould: [],
  487. part: [],
  488. check: [],
  489. maintain: [],
  490. update: [],
  491. abandon: []
  492. },
  493. //2D还是3D
  494. fileType: 1,
  495. //操作记录
  496. operations: [],
  497. allDetail: {
  498. overflow: "auto",
  499. padding: "0px 5px",
  500. height: 0
  501. },
  502. centerDialogVisible: false, //审批界面
  503. centerDialog2Visible: false, //模具界面
  504. centerDialog3Visible: false, //创建零件界面
  505. listLoading: false,
  506. activeTab: 0,
  507. activePage: 0,
  508. activeArticleId: null,
  509. activeFileName: null,
  510. editFormVisible: false, //修改界面是否显示
  511. editLoading: false,
  512. //修改界面数据
  513. editForm: {
  514. id: 0,
  515. modelName: "",
  516. modelNo: "",
  517. equipmentId: "",
  518. initialModulus: "",
  519. settingLife: "",
  520. rfid: "",
  521. produceCompanyId: "",
  522. flag: 1
  523. }
  524. };
  525. },
  526. methods: {
  527. backToList() {
  528. this.$router.go(-1);
  529. },
  530. toDetection() {
  531. this.$router.push("/detection");
  532. },
  533. //标签页面切换时
  534. handleClick(tab, event) {
  535. this.activeTab = tab.name;
  536. this.getOperationRecord(this.activeTab);
  537. },
  538. getMsg() {
  539. this.http.post( this.port.base.moulds, {
  540. belongCompanyId: this.user.companyId,
  541. mouldId: this.detailId
  542. },
  543. res => {
  544. if (res.code == "ok") {
  545. this.boxes = res.data;
  546. } else {
  547. this.$message({
  548. message: res.msg,
  549. type: "error"
  550. });
  551. }
  552. },
  553. error => {
  554. this.listLoading = false;
  555. this.$message({
  556. message: error,
  557. type: "error"
  558. });
  559. });
  560. },
  561. //模具详情
  562. getDetail() {
  563. this.http.post( this.port.mold.moldDetail, {
  564. id: this.detailId
  565. },
  566. res => {
  567. if (res.code == "ok") {
  568. var detail = res.data.vo;
  569. if (detail.endTime == null) {
  570. detail.diffTime = "";
  571. } else {
  572. detail.diffTime = util.formatDate.dateDiff(
  573. util.formatDate.format(new Date(detail.endTime), "yyyy-MM-dd"),
  574. util.formatDate.format(new Date(new Date()), "yyyy-MM-dd")
  575. );
  576. }
  577. this.moldDetail = detail;
  578. this.customCompany = res.data.customCompany;
  579. this.update = res.data.update;
  580. this.download = res.data.download;
  581. this.view = res.data.view;
  582. this.approve = res.data.approve;
  583. this.getDocument();
  584. } else {
  585. this.$message({
  586. message: res.msg,
  587. type: "error"
  588. });
  589. }
  590. },
  591. error => {
  592. this.$message({
  593. message: error,
  594. type: "error"
  595. });
  596. });
  597. },
  598. //打开编辑
  599. edit() {
  600. this.editFormVisible = true;
  601. this.editForm = {
  602. id: this.moldDetail.id,
  603. modelName: this.moldDetail.modelName,
  604. modelNo: this.moldDetail.modelNo,
  605. equipmentId: this.moldDetail.equipmentId,
  606. initialModulus: this.moldDetail.initialModulus,
  607. settingLife: this.moldDetail.settingLife,
  608. rfid: this.moldDetail.rfid,
  609. produceCompanyId: this.moldDetail.produceCompanyId,
  610. flag: 1
  611. };
  612. },
  613. addSubmit() {
  614. this.$refs.editForm.validate(valid => {
  615. if (valid) {
  616. this.editLoading = true;
  617. this.http.post( this.port.mold.addMold, this.editForm,
  618. res => {
  619. this.editLoading = false;
  620. if (res.code == "ok") {
  621. this.editFormVisible = false;
  622. this.$message({
  623. message: "修改成功",
  624. type: "success"
  625. });
  626. this.getDetail();
  627. } else {
  628. this.$message({
  629. message: res.msg,
  630. type: "error"
  631. });
  632. }
  633. },
  634. error => {
  635. this.editLoading = false;
  636. this.editFormVisible = false;
  637. this.$message({
  638. message: error,
  639. type: "error"
  640. });
  641. });
  642. }
  643. });
  644. },
  645. //获取文档
  646. getDocument() {
  647. this.http.post( this.port.mold.moldFileListAll, {
  648. mouldId: this.detailId
  649. },
  650. res => {
  651. if (res.code == "ok") {
  652. for(var i in res.data){
  653. this.setList(res.data[i].list,i);
  654. }
  655. //顺便再把下面操作记录读取一下
  656. this.getOperationRecord(this.activeTab);
  657. } else {
  658. this.$message({
  659. message: res.msg,
  660. type: "error"
  661. });
  662. }
  663. },
  664. error => {
  665. this.$message({
  666. message: error,
  667. type: "error"
  668. });
  669. });
  670. },
  671. //将list中对应的文件传入相应的document下
  672. setList(list, num) {
  673. var array = [];
  674. for(var i in list){
  675. if(this.approve == 1){
  676. array.push(list[i]);
  677. } else {
  678. if(list[i].uplodtorId == this.user.id && list[i].state <= 0){
  679. array.push(list[i]);
  680. }
  681. }
  682. }
  683. if(num == 0){
  684. this.documents.mould = array;
  685. } else if(num == 1) {
  686. this.documents.part = array;
  687. } else if(num == 2) {
  688. this.documents.check = array;
  689. } else if(num == 3) {
  690. this.documents.maintain = array;
  691. } else if(num == 4) {
  692. this.documents.update = array;
  693. } else if(num == 5) {
  694. this.documents.abandon = array;
  695. }
  696. },
  697. //打开审批窗口
  698. checkOpen(id, name) {
  699. this.activeArticleId = id;
  700. this.activeFileName = name;
  701. this.centerDialogVisible = true;
  702. },
  703. //清理报废文档上传窗口中的文件
  704. clearFileRecord() {
  705. this.centerDialog2Visible = false;
  706. this.$refs.upload1.clearFiles();
  707. this.$refs.upload2.clearFiles();
  708. },
  709. //审批文件
  710. check(adoption) {
  711. this.http.post( this.port.mold.moldFileCheck, {
  712. mouldFileId: this.activeArticleId,
  713. isPass: adoption ? 1 : 0 //通过为1 不通过为0
  714. },
  715. res => {
  716. if (res.code == "ok") {
  717. this.centerDialogVisible = false;
  718. this.$message({
  719. message: "审批成功",
  720. type: "success"
  721. });
  722. this.getDocument();
  723. } else {
  724. this.$message({
  725. message: res.msg,
  726. type: "error"
  727. });
  728. }
  729. },
  730. error => {
  731. this.$message({
  732. message: error,
  733. type: "error"
  734. });
  735. }
  736. );
  737. },
  738. //报废文件上传
  739. confirmUpload() {
  740. if (this.$refs.upload1.uploadFiles.length == 1 && this.$refs.upload2.uploadFiles.length == 1) {
  741. this.$refs.upload1.submit();
  742. this.$refs.upload2.submit();
  743. this.centerDialog2Visible = false;
  744. this.clearFileRecord();
  745. } else {
  746. this.$message({
  747. message: "必须各上传一个文件",
  748. type: "error"
  749. });
  750. }
  751. },
  752. //文件上传
  753. uploadFile(params) {
  754. var fileObj = params.file;
  755. var form = new FormData();
  756. form.append("file", fileObj);
  757. form.append("blongType", this.activeTab);
  758. form.append("mouldId", this.detailId);
  759. if (this.activeTab == 0 || this.activeTab == 1) {
  760. form.append("dwgType", this.fileType);
  761. }
  762. this.http.uploadFile( this.port.mold.moldFileUpload, form,
  763. res => {
  764. if (res.code == "ok") {
  765. this.$message({
  766. message: "上传成功",
  767. type: "success"
  768. });
  769. this.$refs.upload.clearFiles();
  770. this.getDocument();
  771. } else {
  772. this.$message({
  773. message: res.msg,
  774. type: "error"
  775. });
  776. }
  777. },
  778. error => {
  779. this.$message({
  780. message: error,
  781. type: "error"
  782. });
  783. });
  784. },
  785. //文件下载
  786. dowloadfile(id) {
  787. this.http.post( this.port.mold.moldFileDowload, {
  788. id: id
  789. },
  790. res => {
  791. this.getOperationRecord(this.activePage);
  792. },
  793. error => {
  794. });
  795. },
  796. //文件删除
  797. deleteFile(fileId) {
  798. this.$confirm('确认删除该文档吗?', '提示', {
  799. type: 'warning'
  800. }).then(() => {
  801. this.http.post( this.port.mold.moldFileDelete, { id: fileId },
  802. res => {
  803. if (res.code == "ok") {
  804. this.$message({
  805. message: "删除成功",
  806. type: "success"
  807. });
  808. this.getDocument();
  809. } else {
  810. this.$message({
  811. message: res.msg,
  812. type: "error"
  813. });
  814. }
  815. },
  816. error => {
  817. this.$message({
  818. message: error,
  819. type: "error"
  820. });
  821. });
  822. })
  823. },
  824. //获取操作记录
  825. getOperationRecord(type) {
  826. this.http.post( this.port.mold.moldOperationList, {
  827. mouldId: this.detailId,
  828. belongType: type
  829. },
  830. res => {
  831. if (res.code == "ok") {
  832. this.operations = res.data;
  833. } else {
  834. this.$message({
  835. message: res.msg,
  836. type: "error"
  837. });
  838. }
  839. },
  840. error => {
  841. this.$message({
  842. message: error,
  843. type: "error"
  844. });
  845. });
  846. }
  847. },
  848. created() {
  849. let height = window.innerHeight;
  850. this.allDetail.height = height - 170 + "px";
  851. const that = this;
  852. window.onresize = function temp() {
  853. that.allDetail.height = window.innerHeight - 170;
  854. };
  855. },
  856. mounted() {
  857. this.getMsg();
  858. this.getDetail();
  859. }
  860. };
  861. </script>
  862. <style scoped>
  863. .toolbar .el-form-item {
  864. font-size: 14px;
  865. vertical-align: middle;
  866. }
  867. .back {
  868. font-size: 16px;
  869. }
  870. .divLine {
  871. width: 2px;
  872. background: #c3c3c3;
  873. height: 100%;
  874. }
  875. .projectTitle {
  876. font-size: 18px;
  877. color: #333;
  878. }
  879. .state {
  880. float: right;
  881. }
  882. .tips {
  883. color: #bbb;
  884. }
  885. .title {
  886. padding-left: 10px;
  887. padding-bottom: 0px;
  888. margin: 20px 0;
  889. font-size: 16px;
  890. line-height: 24px;
  891. border-left: 1px #20a0ff solid;
  892. }
  893. .editDetail {
  894. margin-left: 10px;
  895. color: #20a0ff;
  896. cursor: pointer;
  897. }
  898. .info {
  899. color: grey;
  900. }
  901. .main {
  902. padding-left: 10px;
  903. }
  904. .detail {
  905. margin-bottom: 20px;
  906. }
  907. </style>