You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2097 lines
71 KiB

4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
4 years ago
3 years ago
4 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
  1. <template>
  2. <div class="mod-config">
  3. <el-form :inline="true" label-position="top" label-width="100px" style="margin-top: -5px;">
  4. <el-form-item :label="labels.workCenterNo">
  5. <el-input v-model="modelData.workCenterNo" readonly style="width: 130px"></el-input>
  6. <el-button @click="getData()" type="primary" style="margin-left: 2px;margin-top: 0px">{{buttons.search}}</el-button>
  7. </el-form-item>
  8. <el-form-item :label="labels.workCenterDesc">
  9. <el-input v-model="modelData.workCenterDesc" readonly style="width: 130px"></el-input>
  10. </el-form-item>
  11. <el-form-item :label="labels.site">
  12. <el-input v-model="modelData.site" readonly style="width: 130px"></el-input>
  13. </el-form-item>
  14. <el-form-item :label="labels.active">
  15. <el-input v-model="modelData.active" readonly style="width: 40px"></el-input>
  16. <el-button @click="addModal()" type="primary" :disabled = "authAdd" style="margin-left: 2px;margin-top: 0px">{{buttons.add}}</el-button>
  17. <download-excel
  18. :fields="fields()"
  19. :data="exportData"
  20. type="xls"
  21. :name="exportName"
  22. :header="exportHeader"
  23. :footer="exportFooter"
  24. :fetch="createExportData"
  25. :before-generate="startDownload"
  26. :before-finish="finishDownload"
  27. worksheet="导出信息"
  28. class="el-button el-button--primary el-button--medium">
  29. {{ buttons.download }}
  30. </download-excel>
  31. <download-excel
  32. :fields="fields2()"
  33. :data="exportData2"
  34. type="xls"
  35. :name="exportName2"
  36. :header="exportHeader2"
  37. :footer="exportFooter2"
  38. :fetch="createExportData2"
  39. :before-generate="startDownload2"
  40. :before-finish="finishDownload2"
  41. worksheet="导出信息"
  42. class="el-button el-button--primary el-button--medium">
  43. {{ buttons.download2 }}
  44. </download-excel>
  45. </el-form-item>
  46. </el-form>
  47. <el-tabs v-model="activeName" >
  48. <el-tab-pane :label="labels.base" name="first">
  49. <el-form :inline="true" label-position="top" label-width="100px" style="margin-top: 0px;">
  50. <el-form-item :label="labels.workCenterType">
  51. <el-input v-model="modelData.workCenterType" readonly style="width: 130px"></el-input>
  52. </el-form-item>
  53. <el-form-item :label="labels.proLineNo">
  54. <el-input v-model="modelData.proLineNo" readonly style="width: 130px"></el-input>
  55. </el-form-item>
  56. <el-form-item :label="labels.productionLineDesc">
  57. <el-input v-model="modelData.productionLineDesc" readonly style="width: 130px"></el-input>
  58. </el-form-item>
  59. <el-form-item :label="labels.canCreateNewRollFlag">
  60. <el-input v-model="modelData.canCreateNewRollFlag" readonly style="width: 40px"></el-input>
  61. </el-form-item>
  62. </el-form>
  63. <el-form :inline="true" label-position="top" label-width="100px" style="margin-top: -5px;">
  64. <el-form-item :label="labels.createdDate">
  65. <el-input v-model="modelData.createdDate" readonly style="width: 130px"></el-input>
  66. </el-form-item>
  67. <el-form-item :label="labels.remark">
  68. <el-input v-model="modelData.remark" readonly style="width: 130px"></el-input>
  69. </el-form-item>
  70. <el-form-item :label="labels.needSetupFlag">
  71. <el-input v-model="modelData.needSetupFlag" readonly style="width: 40px"></el-input>
  72. </el-form-item>
  73. </el-form>
  74. </el-tab-pane>
  75. <el-tab-pane :label="labels.partInvolved" name="second">
  76. <el-form :inline="true" label-position="top" label-width="100px" style="margin-top: 0px;">
  77. <el-button @click="getPartDetail()" type="primary" style="margin-left: 2px;margin-top: 0px">{{buttons.partInfo}}</el-button>
  78. </el-form>
  79. <el-table
  80. :height="height"
  81. :data="dataList"
  82. border
  83. @row-click="clickData"
  84. highlight-current-row
  85. v-loading="dataListLoading"
  86. style="width: 100%;">
  87. <el-table-column
  88. v-for="(item,index) in columnList" :key="index"
  89. :sortable="item.columnSortable"
  90. :prop="item.columnProp"
  91. :header-align="item.headerAlign"
  92. :show-overflow-tooltip="item.showOverflowTooltip"
  93. :align="item.align"
  94. :fixed="item.fixed==''?false:item.fixed"
  95. :min-width="item.columnWidth"
  96. :label="item.columnLabel">
  97. <template slot-scope="scope">
  98. <span v-if="!item.columnHidden"> {{scope.row[item.columnProp]}}</span>
  99. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  100. style="width: 100px; height: 80px"/></span>
  101. </template>
  102. </el-table-column>
  103. </el-table>
  104. </el-tab-pane>
  105. <el-tab-pane :label="labels.resource2" name="third">
  106. <el-form :inline="true" label-position="top" label-width="100px" style="margin-top: 0px;">
  107. <el-button @click="jumpCalendar()" type="primary" style="margin-left: 2px;margin-top: 0px">{{buttons.jumpCalendar}}</el-button>
  108. <el-button @click="addResource()" v-if="!authAdd" type="primary" style="margin-left: 2px;margin-top: 0px">{{buttons.add}}</el-button>
  109. <el-button @click="editResource()" v-if="!authEdit" type="primary" style="margin-left: 2px;margin-top: 0px">{{buttons.update}}</el-button>
  110. <el-button @click="deleteCalendar()" v-if="!authDelete" type="primary" style="margin-left: 2px;margin-top: 0px">{{buttons.delete}}</el-button>
  111. <el-button @click="setResource()" type="primary" style="margin-left: 2px;margin-top: 0px">{{buttons.setResource}}</el-button>
  112. <el-button @click="uploadSOP()" type="primary" style="margin-left: 2px;margin-top: 0px">上传SOP</el-button>
  113. </el-form>
  114. <el-table
  115. :height="height"
  116. :data="dataList2"
  117. border
  118. @row-click="clickData2"
  119. highlight-current-row
  120. v-loading="dataListLoading"
  121. style="width: 100%;">
  122. <el-table-column
  123. v-for="(item,index) in columnList2" :key="index"
  124. :sortable="item.columnSortable"
  125. :prop="item.columnProp"
  126. :header-align="item.headerAlign"
  127. :show-overflow-tooltip="item.showOverflowTooltip"
  128. :align="item.align"
  129. :fixed="item.fixed==''?false:item.fixed"
  130. :min-width="item.columnWidth"
  131. :label="item.columnLabel">
  132. <template slot-scope="scope">
  133. <span v-if="!item.columnHidden"> {{scope.row[item.columnProp]}}</span>
  134. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  135. style="width: 100px; height: 80px"/></span>
  136. </template>
  137. </el-table-column>
  138. </el-table>
  139. </el-tab-pane>
  140. </el-tabs>
  141. <el-dialog :title="labels.dataList" :close-on-click-modal="false" v-drag :visible.sync="modelFlag2" width="680px" >
  142. <el-table
  143. height="400"
  144. :data="dataList3"
  145. border
  146. @row-dblclick="tableHanddle"
  147. v-loading="dataListLoading"
  148. style="width: 100%;">
  149. <el-table-column
  150. header-align="center"
  151. align="center"
  152. width="80"
  153. :label="labels.do">
  154. <template slot-scope="scope">
  155. <a type="text" size="small" v-if="!authEdit" @click="editModel(scope.row)">{{buttons.update}}</a>
  156. <a type="text" size="small" v-if="!authDelete" @click="deleteData(scope.row)">{{buttons.delete}}</a>
  157. </template>
  158. </el-table-column>
  159. <el-table-column
  160. v-for="(item,index) in columnList3" :key="index"
  161. :sortable="item.columnSortable"
  162. :prop="item.columnProp"
  163. :header-align="item.headerAlign"
  164. :show-overflow-tooltip="item.showOverflowTooltip"
  165. :align="item.align"
  166. :fixed="item.fixed==''?false:item.fixed"
  167. :width="item.columnWidth"
  168. :label="item.columnLabel">
  169. <template slot-scope="scope">
  170. <span v-if="!item.columnHidden"> {{scope.row[item.columnProp]}}</span>
  171. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  172. style="width: 100px; height: 80px"/></span>
  173. </template>
  174. </el-table-column>
  175. </el-table>
  176. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  177. <el-button type="primary" @click="modelFlag2 = false">{{buttons.close}}</el-button>
  178. </el-footer>
  179. </el-dialog>
  180. <el-dialog :title="labels.workCenter" :close-on-click-modal="false" v-drag :visible.sync="modelFlag" width="619px" >
  181. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  182. <el-form-item :label="labels.workCenterNo">
  183. <el-input v-model="modelData2.workCenterNo" style="width: 130px" onblur="this.value=this.value.toUpperCase()"></el-input>
  184. </el-form-item>
  185. <el-form-item :label="labels.workCenterDesc">
  186. <el-input v-model="modelData2.workCenterDesc" style="width: 130px"></el-input>
  187. </el-form-item>
  188. <el-form-item :label="labels.site">
  189. <el-input v-model="modelData2.site" style="width: 130px"></el-input>
  190. </el-form-item>
  191. <el-form-item :label="labels.active">
  192. <el-select filterable v-model="modelData2.active" style="width: 130px">
  193. <el-option label="Y" value="Y"></el-option>
  194. <el-option label="N" value="N"></el-option>
  195. </el-select>
  196. </el-form-item>
  197. </el-form>
  198. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  199. <el-form-item :label="labels.workCenterType">
  200. <el-select filterable v-model="modelData2.workCenterType" style="width: 130px">
  201. <el-option :label="labels.inner" value="内部"></el-option>
  202. <el-option :label="labels.outer" value="外部"></el-option>
  203. </el-select>
  204. </el-form-item>
  205. <el-form-item >
  206. <span slot="label" style="" @click="getBaseList(25)"><a herf="#">{{labels.proLineNo}}</a></span>
  207. <el-input v-model="modelData2.proLineNo" @change="getProLineNo" style="width: 130px" onblur="this.value=this.value.toUpperCase()"></el-input>
  208. </el-form-item>
  209. <el-form-item :label="labels.productionLineDesc">
  210. <el-input v-model="modelData2.productionLineDesc" disabled style="width: 130px"></el-input>
  211. </el-form-item>
  212. <el-form-item :label="labels.canCreateNewRollFlag">
  213. <el-select filterable v-model="modelData2.canCreateNewRollFlag" style="width: 130px">
  214. <el-option label="Y" value="Y"></el-option>
  215. <el-option label="N" value="N"></el-option>
  216. </el-select>
  217. </el-form-item>
  218. </el-form>
  219. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  220. <el-form-item :label="labels.createdDate">
  221. <el-date-picker
  222. style="width: 130px"
  223. v-model="modelData2.createdDate"
  224. value-format="yyyy-MM-dd"
  225. placeholder="选择日期">
  226. </el-date-picker>
  227. </el-form-item>
  228. <el-form-item :label="labels.remark">
  229. <el-input v-model="modelData2.remark" style="width: 130px"></el-input>
  230. </el-form-item>
  231. <el-form-item :label="labels.needSetupFlag">
  232. <el-select filterable v-model="modelData2.needSetupFlag" style="width: 130px">
  233. <el-option label="Y" value="Y"></el-option>
  234. <el-option label="N" value="N"></el-option>
  235. </el-select>
  236. </el-form-item>
  237. </el-form>
  238. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  239. <el-button type="primary" @click="ModelSave()">{{buttons.save}}</el-button>
  240. <el-button type="primary" @click="modelFlag = false">{{buttons.close}}</el-button>
  241. </el-footer>
  242. </el-dialog>
  243. <el-dialog :title="labels.resource" :close-on-click-modal="false" v-drag :visible.sync="modelFlag3" width="460px" >
  244. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  245. <el-form-item :label="labels.workCenterNo">
  246. <el-input v-model="modelData3.workCenterNo" disabled style="width: 130px" ></el-input>
  247. </el-form-item>
  248. <el-form-item :label="labels.site">
  249. <el-input v-model="modelData3.site" disabled style="width: 130px"></el-input>
  250. </el-form-item>
  251. </el-form>
  252. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 0px;">
  253. <el-form-item :label="labels.resourceID">
  254. <el-input v-model="modelData3.resourceID" :disabled="model3InputFlag" style="width: 130px" onblur="this.value=this.value.toUpperCase()"></el-input>
  255. </el-form-item>
  256. <el-form-item :label="labels.resourceDesc">
  257. <el-input v-model="modelData3.resourceDesc" style="width: 130px"></el-input>
  258. </el-form-item>
  259. <el-form-item :label="labels.efficiency">
  260. <el-input v-model="modelData3.efficiency" type="number" style="width: 130px"></el-input>
  261. </el-form-item>
  262. </el-form>
  263. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 0px;">
  264. <el-form-item :label="labels.utilization">
  265. <el-input v-model="modelData3.utilization" type="number" style="width: 130px"></el-input>
  266. </el-form-item>
  267. <el-form-item :label="labels.active">
  268. <el-select filterable v-model="modelData3.active" style="width: 130px">
  269. <el-option label="Y" value="Y"></el-option>
  270. <el-option label="N" value="N"></el-option>
  271. </el-select>
  272. </el-form-item>
  273. <el-form-item>
  274. <span slot="label" style="" @click="getBaseList(91)"><a herf="#">{{labels.calendarID}}</a></span>
  275. <el-input v-model="modelData3.calendarID" style="width: 130px"></el-input>
  276. </el-form-item>
  277. </el-form>
  278. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 0px;">
  279. <el-form-item :label="labels.remark">
  280. <el-input v-model="modelData3.remark" style="width: 420px"></el-input>
  281. </el-form-item>
  282. </el-form>
  283. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  284. <el-button type="primary" @click="ResourceSave()">{{buttons.save}}</el-button>
  285. <el-button type="primary" @click="modelFlag3 = false">{{buttons.close}}</el-button>
  286. </el-footer>
  287. </el-dialog>
  288. <el-dialog :title="labels.partNo2" :close-on-click-modal="false" v-drag :visible.sync="partFlag" width="630px" >
  289. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  290. <el-form-item :label="labels.partNo">
  291. <el-input v-model="partData.partNo" readonly style="width: 130px"></el-input>
  292. </el-form-item>
  293. <el-form-item :label="labels.partDescription">
  294. <el-input v-model="partData.partDescription" readonly style="width: 260px"></el-input>
  295. </el-form-item>
  296. <el-form-item :label="labels.site">
  297. <el-input v-model="partData.site" readonly style="width: 130px"></el-input>
  298. </el-form-item>
  299. </el-form>
  300. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  301. <el-form-item :label="labels.createDate">
  302. <el-input v-model="partData.createDate" readonly style="width: 130px"></el-input>
  303. </el-form-item>
  304. <el-form-item :label="labels.umid">
  305. <el-input v-model="partData.umid" readonly style="width: 130px"></el-input>
  306. </el-form-item>
  307. <el-form-item :label="labels.active" style="margin-left: 130px">
  308. <el-input v-model="partData.active" readonly style="width: 130px;"></el-input>
  309. </el-form-item>
  310. </el-form>
  311. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  312. <el-form-item :label="labels.configurationTemplateID">
  313. <el-input v-model="partData.configurationTemplateID" readonly style="width: 130px"></el-input>
  314. </el-form-item>
  315. <el-form-item :label="labels.remark2">
  316. <el-input v-model="partData.remark" readonly style="width: 260px"></el-input>
  317. </el-form-item>
  318. </el-form>
  319. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  320. <el-button type="primary" @click="partFlag = false">{{buttons.close}}</el-button>
  321. </el-footer>
  322. </el-dialog>
  323. <el-dialog title="上传机器SOP" :close-on-click-modal="false" v-drag :visible.sync="uploadSOPFlag" width="630px" >
  324. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  325. <el-form-item :label="labels.workCenterNo">
  326. <el-input v-model="sopModelData.workCenterNo" disabled style="width: 116px"></el-input>
  327. </el-form-item>
  328. <el-form-item :label="labels.workCenterDesc">
  329. <el-input v-model="sopModelData.workCenterDesc" disabled style="width: 260px"></el-input>
  330. </el-form-item>
  331. </el-form>
  332. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  333. <el-form-item :label="labels.resourceID">
  334. <el-input v-model="sopModelData.resourceID" disabled style="width: 116px"></el-input>
  335. </el-form-item>
  336. <el-form-item :label="labels.resourceDesc">
  337. <el-input v-model="sopModelData.resourceDesc" disabled style="width: 260px"></el-input>
  338. </el-form-item>
  339. </el-form>
  340. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  341. <el-form-item label="版本号">
  342. <el-input v-model="sopModelData.versionNumber" disabled style="width: 116px"></el-input>
  343. </el-form-item>
  344. <el-form-item label="生效日期" prop="effectiveDate" :rules="rules.effectiveDate">
  345. <el-date-picker
  346. style="width: 123px"
  347. v-model="sopModelData.effectiveDate"
  348. type="date"
  349. value-format="yyyy-MM-dd"
  350. placeholder="选择日期">
  351. </el-date-picker>
  352. </el-form-item>
  353. <el-form-item label="失效日期">
  354. <el-date-picker
  355. style="width: 123px"
  356. v-model="sopModelData.expiryDate"
  357. type="date"
  358. value-format="yyyy-MM-dd"
  359. placeholder="选择日期">
  360. </el-date-picker>
  361. </el-form-item>
  362. </el-form>
  363. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 5px;">
  364. <el-form-item label="">
  365. <a href="javascript:void(0);" @click="triggerUpload">SOP文件(点击上传)</a>
  366. <tr></tr>
  367. <el-input v-model="this.fileName" readonly placeholder="文件名称(仅支持PDF以及图片文件!)" style="width: 391px"></el-input>
  368. <el-button type="primary" @click="uploadSOPSave">保存</el-button>
  369. <el-upload class="custom-upload" :file-list="fileList"
  370. action="javascript:void(0);" ref="uploadFile"
  371. :on-change="onChange" :on-close="closeFileUpdate"
  372. accept=".pdf,image/*"
  373. multiple :auto-upload="false"
  374. style="text-align: left;margin-top: 0px;margin-left: 6px;display: none;">
  375. </el-upload>
  376. </el-form-item>
  377. </el-form>
  378. <el-table
  379. :height="height - 200"
  380. :data="sopFileList"
  381. border
  382. highlight-current-row
  383. v-loading="dataListLoading"
  384. style="width: 100%;margin-top: 17px">
  385. <el-table-column
  386. v-for="(item,index) in columnSopFileList" :key="index"
  387. :sortable="item.columnSortable"
  388. :prop="item.columnProp"
  389. :header-align="item.headerAlign"
  390. :show-overflow-tooltip="item.showOverflowTooltip"
  391. :align="item.align"
  392. :fixed="item.fixed==''?false:item.fixed"
  393. :min-width="item.columnWidth"
  394. :label="item.columnLabel">
  395. <template slot-scope="scope">
  396. <span v-if="!item.columnHidden"> {{scope.row[item.columnProp]}}</span>
  397. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  398. style="width: 100px; height: 80px"/></span>
  399. </template>
  400. </el-table-column>
  401. <el-table-column
  402. fixed="right"
  403. header-align="center"
  404. align="center"
  405. width="80"
  406. label="操作">
  407. <template slot-scope="scope">
  408. <a type="text" size="small" @click="updateSOPFile(scope.row)">编辑</a>
  409. <a type="text" size="small" @click="deleteSOPFile(scope.row)">删除</a>
  410. </template>
  411. </el-table-column>
  412. </el-table>
  413. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  414. <el-button type="primary" @click="closeUploadFileVisible()">{{buttons.close}}</el-button>
  415. </el-footer>
  416. </el-dialog>
  417. <el-dialog title="编辑机器SOP" :close-on-click-modal="false" v-drag :visible.sync="uploadSOPEditFlag" width="427px" >
  418. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  419. <el-form-item :label="labels.workCenterNo">
  420. <el-input v-model="sopUpdateModelData.workCenterNo" disabled style="width: 116px"></el-input>
  421. </el-form-item>
  422. <el-form-item :label="labels.workCenterDesc">
  423. <el-input v-model="sopUpdateModelData.workCenterDesc" disabled style="width: 260px"></el-input>
  424. </el-form-item>
  425. </el-form>
  426. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  427. <el-form-item :label="labels.resourceID">
  428. <el-input v-model="sopUpdateModelData.resourceID" disabled style="width: 116px"></el-input>
  429. </el-form-item>
  430. <el-form-item :label="labels.resourceDesc">
  431. <el-input v-model="sopUpdateModelData.resourceDesc" disabled style="width: 260px"></el-input>
  432. </el-form-item>
  433. </el-form>
  434. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  435. <el-form-item label="版本号">
  436. <el-input v-model="sopUpdateModelData.versionNumber" disabled style="width: 116px"></el-input>
  437. </el-form-item>
  438. <el-form-item label="生效日期" prop="effectiveDate" :rules="rules.effectiveDate">
  439. <el-date-picker
  440. style="width: 123px"
  441. v-model="sopUpdateModelData.effectiveDate"
  442. type="date"
  443. value-format="yyyy-MM-dd"
  444. placeholder="选择日期">
  445. </el-date-picker>
  446. </el-form-item>
  447. <el-form-item label="失效日期">
  448. <el-date-picker
  449. style="width: 123px"
  450. v-model="sopUpdateModelData.expiryDate"
  451. type="date"
  452. value-format="yyyy-MM-dd"
  453. placeholder="选择日期">
  454. </el-date-picker>
  455. </el-form-item>
  456. </el-form>
  457. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 5px;">
  458. <el-form-item label="SOP文件">
  459. <el-input v-model="this.fileName" disabled placeholder="文件名称" style="width: 391px"></el-input>
  460. </el-form-item>
  461. </el-form>
  462. <el-footer style="height:30px;margin-top: 3px;text-align:center">
  463. <el-button type="primary" @click="updateSopFile">保存</el-button>
  464. <el-button type="primary" @click="closeUploadFileEditVisible()">{{buttons.close}}</el-button>
  465. </el-footer>
  466. </el-dialog>
  467. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  468. </div>
  469. </template>
  470. <script>
  471. import {
  472. saveTableDefaultList,
  473. getTableDefaultListLanguage,
  474. getTableUserListLanguage,
  475. removerDefault,
  476. removerUser
  477. } from "@/api/table.js"
  478. import {
  479. getWorkCenterData,
  480. getWorkCenterDataDetail,
  481. getProLineNoDetail,
  482. saveWorkCenterData,
  483. deleteWorkCenterData,
  484. saveResource,
  485. deleteResource,
  486. setResourceFlag,
  487. sopFileListSearch,
  488. deleteSOPFile,
  489. }from "@/api/base/site.js"
  490. import {
  491. searchPartNoData,
  492. } from "@/api/base/site.js"
  493. import Chooselist from '@/views/modules/common/Chooselist'
  494. import {
  495. searchFunctionButtonList,
  496. } from "@/api/sysLanguage.js"
  497. import {uploadSOPFile,sopFileEdit} from "../../../api/base/site";
  498. var functionId='103004';
  499. export default {
  500. //加工中心
  501. name: "workCenter",
  502. components: {
  503. Chooselist
  504. },
  505. data() {
  506. return {
  507. visible: false,
  508. queryTable: {
  509. functionId: this.$route.meta.menuId,
  510. tableId: "mainTable",
  511. languageCode: this.$i18n.locale
  512. },
  513. // 用户table 查询参数
  514. queryTableUser: {
  515. userId: this.$store.state.user.name,
  516. functionId: this.$route.meta.menuId,
  517. tableId: "mainTable",
  518. status: true,
  519. languageCode: this.$i18n.locale
  520. },
  521. labels: {
  522. workCenterNo:'加工中心编码:',
  523. workCenterDesc:'名称:',
  524. site:'工厂编号:',
  525. active:'是否在用:',
  526. base:'基本信息',
  527. workCenterType:'加工中心类型:',
  528. proLineNo:'生产线编码:',
  529. productionLineDesc:'生产线名称:',
  530. canCreateNewRollFlag:'是否可以创建新卷:',
  531. createdDate:'新增日期:',
  532. remark:'备注:',
  533. needSetupFlag:'生产是否需要调机:',
  534. partInvolved:'涉及产品',
  535. dataList:'数据表',
  536. workCenter:'加工中心',
  537. inner:'内部',
  538. outer:'外部',
  539. chooseDate:'选择日期',
  540. resource:'机台维护',
  541. resourceID:'机台编码:',
  542. resourceDesc:'机台名称:',
  543. efficiency:'效率:',
  544. utilization:'利用率:',
  545. calendarID:'工作日历编码:',
  546. partNo:'物料编码:',
  547. partNo2:'物料编码',
  548. partDescription:'物料名称:',
  549. createDate:'新增日期:',
  550. umid:'计量单位:',
  551. configurationTemplateID:'客户名称:',
  552. remark2:'客户产品料号:',
  553. resource2:'机台',
  554. do:'操作',
  555. error:'错误',
  556. true:'确定',
  557. point:'提示',
  558. cancel:'取消',
  559. doYes:'操作成功',
  560. resourceIn:'请选择机台!',
  561. workCenterNoChoose:'请先选择加工中心!',
  562. resourceIDIn:'请输入机台编码!',
  563. resourceDescIn:'请输入机台名称!',
  564. efficiencyIn:'请输入效率!',
  565. utilizationIn:'请输入利用率!',
  566. activeIn:'请输入是否在用!',
  567. calendarIDIn:'请输入工作日编码!',
  568. virturlFlagAsk1:'是否将该机台设为虚拟机台?',
  569. virturlFlagAsk2:'是否将该机台设为常规机台?',
  570. deleteResourceAsk:'是否删除此机台?',
  571. rollIn:'请选择卷!',
  572. partNot:'该物料编码不存在',
  573. workCenterNoIn:'请输入加工中心编码!',
  574. workCenterDescIn:'请输入加工中心名称!',
  575. siteIn:'请输入工厂编码!',
  576. createdDateIn:'请选择新增日期!',
  577. workCenterDeleteAsk:'是否删除此加工中心',
  578. },
  579. buttons:{
  580. search:'查询',
  581. download:'导出',
  582. list:'列表',
  583. add:'新增',
  584. partInfo:'物料信息',
  585. jumpCalendar:'工作日历',
  586. update:'编辑',
  587. delete:'删除',
  588. setResource:'设为虚拟/常规机台',
  589. close:'关闭',
  590. save:'保存',
  591. download2:'导出机台'
  592. },
  593. rules: {
  594. effectiveDate: [
  595. {
  596. required: true,
  597. message: ' ',
  598. trigger: ['blur','change']
  599. }
  600. ]
  601. },
  602. queryButton: {
  603. functionId: functionId,
  604. table_id: '*',
  605. languageCode: this.$i18n.locale,
  606. objectType: 'button'
  607. },
  608. queryLabel: {
  609. functionId: functionId,
  610. table_id: '*',
  611. languageCode: this.$i18n.locale,
  612. objectType: 'label'
  613. },
  614. tagNo:'',
  615. currentRow:null,
  616. partFlag:false,
  617. partData:{
  618. partNo:'',
  619. partDescription:'',
  620. site:'',
  621. createDate:'',
  622. umid:'',
  623. active:'',
  624. configurationTemplateID:'',
  625. modelFlag:'',
  626. },
  627. model3InputFlag:false,
  628. currentRow2:null,
  629. // 导出 start
  630. exportData: [],
  631. exportName: "加工中心涉及产品"+this.dayjs().format('YYYYMMDDHHmmss'),
  632. exportHeader: ["加工中心涉及产品"],
  633. exportFooter: [],
  634. // 导出 end
  635. // 导出 start
  636. exportData2: [],
  637. exportName2: "加工中心机台"+this.dayjs().format('YYYYMMDDHHmmss'),
  638. exportHeader2: ["加工中心机台"],
  639. exportFooter2: [],
  640. // 导出 end
  641. activeName:'first',
  642. height: 200,
  643. modelFlag3:false,
  644. modelFlag2:false,
  645. modelFlag:false,
  646. modelInputFlag:true,
  647. fileName:'',
  648. uploadSOPFlag:false,
  649. uploadSOPEditFlag:false,
  650. uploadSOPDisableFlag:true,
  651. sopFileList:[],
  652. fileList:[],
  653. sopModelData:{
  654. flag:'',
  655. id : '',
  656. workCenterNo:'',
  657. workCenterDesc: '',
  658. site:'',
  659. resourceID:'',
  660. resourceDesc:'',
  661. versionNumber:'',
  662. effectiveDate:'',
  663. expiryDate:'',
  664. },
  665. sopUpdateModelData:{
  666. flag:'',
  667. id : '',
  668. workCenterNo:'',
  669. workCenterDesc: '',
  670. site:'',
  671. resourceID:'',
  672. resourceDesc:'',
  673. versionNumber:'',
  674. effectiveDate:'',
  675. expiryDate:null,
  676. },
  677. selectList:[],
  678. modelData: {
  679. add:'',
  680. workCenterNo:'',
  681. workCenterDesc:'',
  682. site:'',
  683. active:'',
  684. workCenterType:'',
  685. proLineNo:'',
  686. productionLineDesc:'',
  687. canCreateNewRollFlag:'',
  688. createdDate:'',
  689. remark:'',
  690. needSetupFlag:'',
  691. user:this.$store.state.user.name,
  692. },
  693. modelData2: {
  694. add:'',
  695. workCenterNo:'',
  696. workCenterDesc:'',
  697. site:'',
  698. active:'',
  699. workCenterType:'',
  700. proLineNo:'',
  701. productionLineDesc:'',
  702. canCreateNewRollFlag:'',
  703. createdDate:'',
  704. remark:'',
  705. needSetupFlag:'',
  706. user:this.$store.state.user.name,
  707. },
  708. modelData3:{
  709. workCenterNo:'',
  710. site:'',
  711. resourceID:'',
  712. resourceDesc:'',
  713. efficiency:'',
  714. utilization:'',
  715. active:'',
  716. calendarID:'',
  717. remark:'',
  718. add:'',
  719. },
  720. dataList:[],
  721. dataList2:[],
  722. dataList3:[],
  723. dataListLoading: false,
  724. columnList: [
  725. {
  726. userId: this.$store.state.user.name,
  727. functionId: 103004,
  728. serialNumber: '103004TablePartNo',
  729. tableId: "103004Table",
  730. tableName: "加工中心涉及产品表",
  731. columnProp: "partNo",
  732. headerAlign: "center",
  733. align: "left",
  734. columnLabel: "产品编码",
  735. columnHidden: false,
  736. columnImage: false,
  737. columnSortable: false,
  738. sortLv: 0,
  739. status: true,
  740. fixed: '',
  741. columnWidth: 120
  742. },
  743. {
  744. userId: this.$store.state.user.name,
  745. functionId: 103004,
  746. serialNumber: '103004TableRevNo',
  747. tableId: "103004Table",
  748. tableName: "加工中心涉及产品表",
  749. columnProp: "revNo",
  750. headerAlign: "center",
  751. align: "left",
  752. columnLabel: "版本号",
  753. columnHidden: false,
  754. columnImage: false,
  755. columnSortable: false,
  756. sortLv: 0,
  757. status: true,
  758. fixed: '',
  759. columnWidth: 60
  760. },
  761. {
  762. userId: this.$store.state.user.name,
  763. functionId: 103004,
  764. serialNumber: '103004TableItemNo',
  765. tableId: "103004Table",
  766. tableName: "加工中心涉及产品表",
  767. columnProp: "itemNo",
  768. headerAlign: "center",
  769. align: "right",
  770. columnLabel: "工序号",
  771. columnHidden: false,
  772. columnImage: false,
  773. columnSortable: false,
  774. sortLv: 0,
  775. status: true,
  776. fixed: '',
  777. columnWidth: 60
  778. },
  779. {
  780. userId: this.$store.state.user.name,
  781. functionId: 103004,
  782. serialNumber: '103004TableOperationDesc',
  783. tableId: "103004Table",
  784. tableName: "加工中心涉及产品表",
  785. columnProp: "operationDesc",
  786. headerAlign: "center",
  787. align: "left",
  788. columnLabel: "工序名称",
  789. columnHidden: false,
  790. columnImage: false,
  791. columnSortable: false,
  792. sortLv: 0,
  793. status: true,
  794. fixed: '',
  795. columnWidth: 160
  796. },
  797. {
  798. userId: this.$store.state.user.name,
  799. functionId: 103004,
  800. serialNumber: '103004TableMachSetuptime',
  801. tableId: "103004Table",
  802. tableName: "加工中心涉及产品表",
  803. columnProp: "machSetuptime",
  804. headerAlign: "center",
  805. align: "right",
  806. columnLabel: "计划调试时间",
  807. columnHidden: false,
  808. columnImage: false,
  809. columnSortable: false,
  810. sortLv: 0,
  811. status: true,
  812. fixed: '',
  813. columnWidth: 100
  814. },
  815. {
  816. userId: this.$store.state.user.name,
  817. functionId: 103004,
  818. serialNumber: '103004TableMachRunFactor',
  819. tableId: "103004Table",
  820. tableName: "加工中心涉及产品表",
  821. columnProp: "machRunFactor",
  822. headerAlign: "center",
  823. align: "right",
  824. columnLabel: "单位产出量",
  825. columnHidden: false,
  826. columnImage: false,
  827. columnSortable: false,
  828. sortLv: 0,
  829. status: true,
  830. fixed: '',
  831. columnWidth: 100
  832. },
  833. {
  834. userId: this.$store.state.user.name,
  835. functionId: 103004,
  836. serialNumber: '103004TableFactorUnit',
  837. tableId: "103004Table",
  838. tableName: "加工中心涉及产品表",
  839. columnProp: "factorUnit",
  840. headerAlign: "center",
  841. align: "left",
  842. columnLabel: "产出类型",
  843. columnHidden: false,
  844. columnImage: false,
  845. columnSortable: false,
  846. sortLv: 0,
  847. status: true,
  848. fixed: '',
  849. columnWidth: 80
  850. },
  851. {
  852. userId: this.$store.state.user.name,
  853. functionId: 103004,
  854. serialNumber: '103004TableCrewsize',
  855. tableId: "103004Table",
  856. tableName: "加工中心涉及产品表",
  857. columnProp: "crewsize",
  858. headerAlign: "center",
  859. align: "right",
  860. columnLabel: "操作工人数",
  861. columnHidden: false,
  862. columnImage: false,
  863. columnSortable: false,
  864. sortLv: 0,
  865. status: true,
  866. fixed: '',
  867. columnWidth: 100
  868. },
  869. {
  870. userId: this.$store.state.user.name,
  871. functionId: 103004,
  872. serialNumber: '103004TableEfficiency',
  873. tableId: "103004Table",
  874. tableName: "加工中心涉及产品表",
  875. columnProp: "efficiency",
  876. headerAlign: "center",
  877. align: "right",
  878. columnLabel: "效率",
  879. columnHidden: false,
  880. columnImage: false,
  881. columnSortable: false,
  882. sortLv: 0,
  883. status: true,
  884. fixed: '',
  885. columnWidth: 50
  886. },
  887. {
  888. userId: this.$store.state.user.name,
  889. functionId: 103004,
  890. serialNumber: '103004TableStatus',
  891. tableId: "103004Table",
  892. tableName: "加工中心涉及产品表",
  893. columnProp: "status",
  894. headerAlign: "center",
  895. align: "left",
  896. columnLabel: "状态",
  897. columnHidden: false,
  898. columnImage: false,
  899. columnSortable: false,
  900. sortLv: 0,
  901. status: true,
  902. fixed: '',
  903. columnWidth: 50
  904. },
  905. {
  906. userId: this.$store.state.user.name,
  907. functionId: 103004,
  908. serialNumber: '103004TableRoutingType',
  909. tableId: "103004Table",
  910. tableName: "加工中心涉及产品表",
  911. columnProp: "routingType",
  912. headerAlign: "center",
  913. align: "left",
  914. columnLabel: "工序类别",
  915. columnHidden: false,
  916. columnImage: false,
  917. columnSortable: false,
  918. sortLv: 0,
  919. status: true,
  920. fixed: '',
  921. columnWidth: 80
  922. },
  923. {
  924. userId: this.$store.state.user.name,
  925. functionId: 103004,
  926. serialNumber: '103004TableRemark',
  927. tableId: "103004Table",
  928. tableName: "加工中心涉及产品表",
  929. columnProp: "remark",
  930. headerAlign: "center",
  931. align: "left",
  932. columnLabel: "备注",
  933. columnHidden: false,
  934. columnImage: false,
  935. columnSortable: false,
  936. sortLv: 0,
  937. status: true,
  938. fixed: '',
  939. columnWidth: 300
  940. }
  941. ],
  942. columnList2: [
  943. {
  944. userId: this.$store.state.user.name,
  945. functionId: 103004,
  946. serialNumber: '103004Table2ResourceID',
  947. tableId: "103004Table2",
  948. tableName: "加工中心涉及机台表",
  949. columnProp: "resourceID",
  950. headerAlign: "center",
  951. align: "left",
  952. columnLabel: "机台编码",
  953. columnHidden: false,
  954. columnImage: false,
  955. columnSortable: false,
  956. sortLv: 0,
  957. status: true,
  958. fixed: '',
  959. columnWidth: 120
  960. },
  961. {
  962. userId: this.$store.state.user.name,
  963. functionId: 103004,
  964. serialNumber: '103004Table2ResourceDesc',
  965. tableId: "103004Table2",
  966. tableName: "加工中心涉及机台表",
  967. columnProp: "resourceDesc",
  968. headerAlign: "center",
  969. align: "left",
  970. columnLabel: "机台名称",
  971. columnHidden: false,
  972. columnImage: false,
  973. columnSortable: false,
  974. sortLv: 0,
  975. status: true,
  976. fixed: '',
  977. columnWidth: 150
  978. },
  979. {
  980. userId: this.$store.state.user.name,
  981. functionId: 103004,
  982. serialNumber: '103004Table2Efficiency',
  983. tableId: "103004Table2",
  984. tableName: "加工中心涉及机台表",
  985. columnProp: "efficiency",
  986. headerAlign: "center",
  987. align: "right",
  988. columnLabel: "效率",
  989. columnHidden: false,
  990. columnImage: false,
  991. columnSortable: false,
  992. sortLv: 0,
  993. status: true,
  994. fixed: '',
  995. columnWidth: 80
  996. },
  997. {
  998. userId: this.$store.state.user.name,
  999. functionId: 103004,
  1000. serialNumber: '103004Table2Utilization',
  1001. tableId: "103004Table2",
  1002. tableName: "加工中心涉及机台表",
  1003. columnProp: "utilization",
  1004. headerAlign: "center",
  1005. align: "right",
  1006. columnLabel: "利用率",
  1007. columnHidden: false,
  1008. columnImage: false,
  1009. columnSortable: false,
  1010. sortLv: 0,
  1011. status: true,
  1012. fixed: '',
  1013. columnWidth: 80
  1014. },
  1015. {
  1016. userId: this.$store.state.user.name,
  1017. functionId: 103004,
  1018. serialNumber: '103004Table2Active',
  1019. tableId: "103004Table2",
  1020. tableName: "加工中心涉及机台表",
  1021. columnProp: "active",
  1022. headerAlign: "center",
  1023. align: "left",
  1024. columnLabel: "在用",
  1025. columnHidden: false,
  1026. columnImage: false,
  1027. columnSortable: false,
  1028. sortLv: 0,
  1029. status: true,
  1030. fixed: '',
  1031. columnWidth: 60
  1032. },
  1033. {
  1034. userId: this.$store.state.user.name,
  1035. functionId: 103004,
  1036. serialNumber: '103004Table2CreatedDate',
  1037. tableId: "103004Table2",
  1038. tableName: "加工中心涉及机台表",
  1039. columnProp: "createdDate",
  1040. headerAlign: "center",
  1041. align: "left",
  1042. columnLabel: "新增日期",
  1043. columnHidden: false,
  1044. columnImage: false,
  1045. columnSortable: false,
  1046. sortLv: 0,
  1047. status: true,
  1048. fixed: '',
  1049. columnWidth: 200
  1050. },
  1051. {
  1052. userId: this.$store.state.user.name,
  1053. functionId: 103004,
  1054. serialNumber: '103004Table2Remark',
  1055. tableId: "103004Table2",
  1056. tableName: "加工中心涉及机台表",
  1057. columnProp: "remark",
  1058. headerAlign: "center",
  1059. align: "left",
  1060. columnLabel: "备注",
  1061. columnHidden: false,
  1062. columnImage: false,
  1063. columnSortable: false,
  1064. sortLv: 0,
  1065. status: true,
  1066. fixed: '',
  1067. columnWidth: 400
  1068. },
  1069. {
  1070. userId: this.$store.state.user.name,
  1071. functionId: 103004,
  1072. serialNumber: '103004Table2CalendarID',
  1073. tableId: "103004Table2",
  1074. tableName: "加工中心涉及机台表",
  1075. columnProp: "calendarID",
  1076. headerAlign: "center",
  1077. align: "left",
  1078. columnLabel: "工作日历编码",
  1079. columnHidden: false,
  1080. columnImage: false,
  1081. columnSortable: false,
  1082. sortLv: 0,
  1083. status: true,
  1084. fixed: '',
  1085. columnWidth: 120
  1086. },
  1087. {
  1088. userId: this.$store.state.user.name,
  1089. functionId: 103004,
  1090. serialNumber: '103004Table2VirturlFlag',
  1091. tableId: "103004Table2",
  1092. tableName: "加工中心涉及机台表",
  1093. columnProp: "virturlFlag",
  1094. headerAlign: "center",
  1095. align: "left",
  1096. columnLabel: "虚拟机台",
  1097. columnHidden: false,
  1098. columnImage: false,
  1099. columnSortable: false,
  1100. sortLv: 0,
  1101. status: true,
  1102. fixed: '',
  1103. columnWidth: 80
  1104. }
  1105. ],
  1106. columnList3: [
  1107. {
  1108. userId: this.$store.state.user.name,
  1109. functionId: 103004,
  1110. serialNumber: '103004Table3WorkCenterNo',
  1111. tableId: "103004Table3",
  1112. tableName: "加工中心表",
  1113. columnProp: "workCenterNo",
  1114. headerAlign: "center",
  1115. align: "left",
  1116. columnLabel: "加工中心编码",
  1117. columnHidden: false,
  1118. columnImage: false,
  1119. columnSortable: false,
  1120. sortLv: 0,
  1121. status: true,
  1122. fixed: '',
  1123. columnWidth: 120
  1124. },
  1125. {
  1126. userId: this.$store.state.user.name,
  1127. functionId: 103004,
  1128. serialNumber: '103004Table3WorkCenterDesc',
  1129. tableId: "103004Table3",
  1130. tableName: "加工中心表",
  1131. columnProp: "workCenterDesc",
  1132. headerAlign: "center",
  1133. align: "left",
  1134. columnLabel: "加工中心名称",
  1135. columnHidden: false,
  1136. columnImage: false,
  1137. columnSortable: false,
  1138. sortLv: 0,
  1139. status: true,
  1140. fixed: '',
  1141. columnWidth: 200
  1142. },
  1143. {
  1144. userId: this.$store.state.user.name,
  1145. functionId: 103004,
  1146. serialNumber: '103004Table3WorkCenterType',
  1147. tableId: "103004Table3",
  1148. tableName: "加工中心表",
  1149. columnProp: "workCenterType",
  1150. headerAlign: "center",
  1151. align: "left",
  1152. columnLabel: "加工中心类型",
  1153. columnHidden: false,
  1154. columnImage: false,
  1155. columnSortable: false,
  1156. sortLv: 0,
  1157. status: true,
  1158. fixed: '',
  1159. columnWidth: 100
  1160. },
  1161. {
  1162. userId: this.$store.state.user.name,
  1163. functionId: 103004,
  1164. serialNumber: '103004Table3Active',
  1165. tableId: "103004Table3",
  1166. tableName: "加工中心表",
  1167. columnProp: "active",
  1168. headerAlign: "center",
  1169. align: "left",
  1170. columnLabel: "在用",
  1171. columnHidden: false,
  1172. columnImage: false,
  1173. columnSortable: false,
  1174. sortLv: 0,
  1175. status: true,
  1176. fixed: '',
  1177. columnWidth: 40
  1178. },
  1179. {
  1180. userId: this.$store.state.user.name,
  1181. functionId: 103004,
  1182. serialNumber: '103004Table3Site',
  1183. tableId: "103004Table3",
  1184. tableName: "加工中心表",
  1185. columnProp: "site",
  1186. headerAlign: "center",
  1187. align: "left",
  1188. columnLabel: "工厂编号",
  1189. columnHidden: false,
  1190. columnImage: false,
  1191. columnSortable: false,
  1192. sortLv: 0,
  1193. status: true,
  1194. fixed: '',
  1195. columnWidth: 80
  1196. }
  1197. ],
  1198. columnSopFileList:[
  1199. {
  1200. userId: this.$store.state.user.name,
  1201. functionId: 103004,
  1202. serialNumber: '103004Table4VersionNumber',
  1203. tableId: "103004Table3",
  1204. tableName: "SOP文件表",
  1205. columnProp: "versionNumber",
  1206. headerAlign: "center",
  1207. align: "center",
  1208. columnLabel: "版本号",
  1209. columnHidden: false,
  1210. columnImage: false,
  1211. columnSortable: false,
  1212. sortLv: 0,
  1213. status: true,
  1214. fixed: '',
  1215. columnWidth: 80
  1216. },
  1217. {
  1218. userId: this.$store.state.user.name,
  1219. functionId: 103004,
  1220. serialNumber: '103004Table4FileName',
  1221. tableId: "103004Table3",
  1222. tableName: "SOP文件表",
  1223. columnProp: "fileName",
  1224. headerAlign: "center",
  1225. align: "left",
  1226. columnLabel: "文件名称",
  1227. columnHidden: false,
  1228. columnImage: false,
  1229. columnSortable: false,
  1230. sortLv: 0,
  1231. status: true,
  1232. fixed: '',
  1233. columnWidth: 200
  1234. },
  1235. {
  1236. userId: this.$store.state.user.name,
  1237. functionId: 103004,
  1238. serialNumber: '103004Table4CreatedBy',
  1239. tableId: "103004Table3",
  1240. tableName: "SOP文件表",
  1241. columnProp: "createdBy",
  1242. headerAlign: "center",
  1243. align: "left",
  1244. columnLabel: "上传人",
  1245. columnHidden: false,
  1246. columnImage: false,
  1247. columnSortable: false,
  1248. sortLv: 0,
  1249. status: true,
  1250. fixed: '',
  1251. columnWidth: 100
  1252. },
  1253. {
  1254. userId: this.$store.state.user.name,
  1255. functionId: 103004,
  1256. serialNumber: '103004Table4CreateDate',
  1257. tableId: "103004Table3",
  1258. tableName: "SOP文件表",
  1259. columnProp: "createDate",
  1260. headerAlign: "center",
  1261. align: "center",
  1262. columnLabel: "上传时间",
  1263. columnHidden: false,
  1264. columnImage: false,
  1265. columnSortable: false,
  1266. sortLv: 0,
  1267. status: true,
  1268. fixed: '',
  1269. columnWidth: 100
  1270. },
  1271. {
  1272. userId: this.$store.state.user.name,
  1273. functionId: 103004,
  1274. serialNumber: '103004Table4EffectiveDate',
  1275. tableId: "103004Table3",
  1276. tableName: "SOP文件表",
  1277. columnProp: "effectiveDate",
  1278. headerAlign: "center",
  1279. align: "center",
  1280. columnLabel: "生效日期",
  1281. columnHidden: false,
  1282. columnImage: false,
  1283. columnSortable: false,
  1284. sortLv: 0,
  1285. status: true,
  1286. fixed: '',
  1287. columnWidth: 100
  1288. },
  1289. {
  1290. userId: this.$store.state.user.name,
  1291. functionId: 103004,
  1292. serialNumber: '103004Table4ExpiryDate',
  1293. tableId: "103004Table3",
  1294. tableName: "SOP文件表",
  1295. columnProp: "expiryDate",
  1296. headerAlign: "center",
  1297. align: "center",
  1298. columnLabel: "失效日期",
  1299. columnHidden: false,
  1300. columnImage: false,
  1301. columnSortable: false,
  1302. sortLv: 0,
  1303. status: true,
  1304. fixed: '',
  1305. columnWidth: 100
  1306. },
  1307. {
  1308. userId: this.$store.state.user.name,
  1309. functionId: 103004,
  1310. serialNumber: '103004Table4Status',
  1311. tableId: "103004Table3",
  1312. tableName: "SOP文件表",
  1313. columnProp: "status",
  1314. headerAlign: "center",
  1315. align: "center",
  1316. columnLabel: "状态",
  1317. columnHidden: false,
  1318. columnImage: false,
  1319. columnSortable: false,
  1320. sortLv: 0,
  1321. status: true,
  1322. fixed: '',
  1323. columnWidth: 80
  1324. },
  1325. ],
  1326. authEdit: false,
  1327. authAdd: false,
  1328. authDelete: false,
  1329. menuId: this.$route.meta.menuId,
  1330. }
  1331. },
  1332. mounted() {
  1333. this.$nextTick(() => {
  1334. this.height = window.innerHeight - 225;
  1335. })
  1336. },
  1337. watch: {
  1338. '$route' (to, from) {
  1339. if(localStorage.getItem('workCenterNo')!=undefined){
  1340. this.jump();
  1341. }
  1342. },
  1343. modelData2: {
  1344. deep: true,
  1345. handler: function (newV, oldV) {
  1346. this.modelData2.proLineNo = this.modelData2.proLineNo.toUpperCase()
  1347. this.modelData2.workCenterNo = this.modelData2.workCenterNo.toUpperCase()
  1348. }
  1349. },
  1350. modelData3: {
  1351. deep: true,
  1352. handler: function (newV, oldV) {
  1353. this.modelData3.resourceID = this.modelData3.resourceID.toUpperCase()
  1354. this.modelData3.calendarID = this.modelData3.calendarID.toUpperCase()
  1355. }
  1356. },
  1357. },
  1358. methods: {
  1359. editResource(){
  1360. if(this.currentRow2==null){
  1361. this.$alert(this.labels.resourceIn,this.labels.error, {
  1362. confirmButtonText: this.labels.true
  1363. })
  1364. return false;
  1365. }
  1366. this.modelData3={
  1367. workCenterNo:this.modelData.workCenterNo,
  1368. site:this.modelData.site,
  1369. resourceID:this.currentRow2.resourceID,
  1370. resourceDesc:this.currentRow2.resourceDesc,
  1371. efficiency:this.currentRow2.efficiency,
  1372. utilization:this.currentRow2.utilization,
  1373. active:this.currentRow2.active,
  1374. calendarID:this.currentRow2.calendarID,
  1375. remark:this.currentRow2.remark,
  1376. add:1,
  1377. };
  1378. this.model3InputFlag=true;
  1379. this.modelFlag3=true;
  1380. },
  1381. addResource(){
  1382. if(this.modelData.workCenterNo==''||this.modelData.workCenterNo==null){
  1383. this.$alert(this.labels.workCenterNoChoose,this.labels.error, {
  1384. confirmButtonText: this.labels.true
  1385. })
  1386. return false;
  1387. }
  1388. this.modelData3={
  1389. workCenterNo:this.modelData.workCenterNo,
  1390. site:this.modelData.site,
  1391. resourceID:'',
  1392. resourceDesc:'',
  1393. efficiency:'',
  1394. utilization:'',
  1395. active:'Y',
  1396. calendarID:'',
  1397. remark:'',
  1398. add:0,
  1399. };
  1400. this.model3InputFlag=false;
  1401. this.modelFlag3=true;
  1402. },
  1403. ResourceSave(){
  1404. if(this.modelData3.resourceID==''||this.modelData3.resourceID==null){
  1405. this.$alert(this.labels.resourceIDIn,this.labels.error, {
  1406. confirmButtonText: this.labels.true
  1407. })
  1408. return false;
  1409. }
  1410. if(this.modelData3.resourceDesc==''||this.modelData3.resourceDesc==null){
  1411. this.$alert(this.labels.resourceDescIn,this.labels.error, {
  1412. confirmButtonText: this.labels.true
  1413. })
  1414. return false;
  1415. }
  1416. if(this.modelData3.efficiency==''||this.modelData3.efficiency==null){
  1417. this.$alert(this.labels.efficiencyIn,this.labels.error, {
  1418. confirmButtonText: this.labels.true
  1419. })
  1420. return false;
  1421. }
  1422. if(this.modelData3.utilization==''||this.modelData3.utilization==null){
  1423. this.$alert(this.labels.utilizationIn,this.labels.error, {
  1424. confirmButtonText: this.labels.true
  1425. })
  1426. return false;
  1427. }
  1428. if(this.modelData3.active==''||this.modelData3.active==null){
  1429. this.$alert(this.labels.activeIn,this.labels.error, {
  1430. confirmButtonText: this.labels.true
  1431. })
  1432. return false;
  1433. }
  1434. if(this.modelData3.calendarID==''||this.modelData3.calendarID==null){
  1435. this.$alert(this.labels.calendarIDIn,this.labels.error, {
  1436. confirmButtonText: this.labels.true
  1437. })
  1438. return false;
  1439. }
  1440. saveResource(this.modelData3).then(({data}) => {
  1441. if (data && data.code == 200) {
  1442. this.modelFlag3 = false
  1443. getWorkCenterDataDetail(this.modelData).then(({data}) => {
  1444. this.dataList2 = data.rows2;
  1445. })
  1446. this.$message.success(this.labels.doYes)
  1447. } else {
  1448. this.$alert(data.msg, this.labels.error, {
  1449. confirmButtonText: this.labels.true
  1450. })
  1451. }
  1452. })
  1453. },
  1454. setResource(){
  1455. if(this.currentRow2==null){
  1456. this.$alert(this.labels.resourceIn, this.labels.error, {
  1457. confirmButtonText: this.labels.true
  1458. })
  1459. return false;
  1460. }
  1461. let msg=this.labels.virturlFlagAsk1;
  1462. if(this.currentRow2.virturlFlag=='Y'){
  1463. msg=this.labels.virturlFlagAsk2;
  1464. }
  1465. this.$confirm(msg, this.labels.point, {
  1466. confirmButtonText: this.labels.true,
  1467. cancelButtonText: this.labels.cancel,
  1468. type: 'warning'
  1469. }).then(() => {
  1470. setResourceFlag(this.currentRow2).then(({data}) => {
  1471. if (data && data.code == 200) {
  1472. getWorkCenterDataDetail(this.modelData).then(({data}) => {
  1473. this.dataList2 = data.rows2;
  1474. })
  1475. this.$message.success(this.labels.doYes)
  1476. } else {
  1477. this.$alert(data.msg, this.labels.error, {
  1478. confirmButtonText: this.labels.true
  1479. })
  1480. }
  1481. })
  1482. })
  1483. },
  1484. formatDate(date) {
  1485. const year = date.getFullYear();
  1486. const month = String(date.getMonth() + 1).padStart(2, '0');
  1487. const day = String(date.getDate()).padStart(2, '0');
  1488. return `${year}-${month}-${day}`;
  1489. },
  1490. uploadSOP(){
  1491. if(this.currentRow2==null){
  1492. this.$alert(this.labels.resourceIn, this.labels.error, {
  1493. confirmButtonText: this.labels.true
  1494. })
  1495. return false;
  1496. }
  1497. this.sopModelData={
  1498. workCenterNo:this.currentRow2.workCenterNo,
  1499. workCenterDesc: this.currentRow2.workCenterDesc,
  1500. site:this.currentRow2.site,
  1501. resourceID:this.currentRow2.resourceID,
  1502. resourceDesc:this.currentRow2.resourceDesc,
  1503. versionNumber:'A01',
  1504. effectiveDate:this.formatDate(new Date()),
  1505. expiryDate:'',
  1506. };
  1507. this.sopFileListSearch();
  1508. this.uploadSOPFlag=true;
  1509. },
  1510. updateSOPFile(row){
  1511. this.sopUpdateModelData= {
  1512. id: row.id,
  1513. workCenterNo: this.currentRow2.workCenterNo,
  1514. workCenterDesc: this.currentRow2.workCenterDesc,
  1515. site: this.currentRow2.site,
  1516. resourceID: this.currentRow2.resourceID,
  1517. resourceDesc: this.currentRow2.resourceDesc,
  1518. versionNumber: row.versionNumber,
  1519. effectiveDate: new Date(row.effectiveDate),
  1520. expiryDate: row.expiryDate,
  1521. }
  1522. this.fileName = row.fileName;
  1523. this.uploadSOPDisableFlag=false
  1524. this.uploadSOPEditFlag=true;
  1525. },
  1526. sopFileListSearch(){
  1527. let inData={
  1528. orderRef1:this.currentRow2.site,
  1529. orderRef2:this.currentRow2.workCenterNo,
  1530. orderRef3:this.currentRow2.resourceID,
  1531. orderRef4:'',
  1532. fileType: 'SOP'
  1533. }
  1534. sopFileListSearch(inData).then(({data}) => {
  1535. // 遍历data
  1536. for (let i = 0; i < data.rows.length; i++) {
  1537. if (i + 1 !== data.rows.length){
  1538. data.rows[i].status = '失效'
  1539. } else {
  1540. if (data.rows[i].expiryDate != null) {
  1541. if (data.rows[i].expiryDate < this.dayjs().format('YYYY-MM-DD')) {
  1542. data.rows[i].status = '失效'
  1543. } else {
  1544. data.rows[i].status = '有效'
  1545. }
  1546. } else {
  1547. data.rows[i].status = '有效'
  1548. }
  1549. }
  1550. this.sopFileList.push(data.rows[i]);
  1551. this.sopFileList[i].versionNumber = data.rows[i].orderRef4
  1552. }
  1553. // 如果this.sopFileList不为空,拿到versionNumber的最后一个并给versionNumber赋值(versionNumber由 A + 两位数组成,赋值时给数字+1)
  1554. if (this.sopFileList.length > 0) {
  1555. let versionNumber = this.sopFileList[this.sopFileList.length - 1].versionNumber;
  1556. // 如果A后面的数字小于10则为A0+数字加一,否则为A+数字加一
  1557. if (versionNumber.substring(1) < 9) {
  1558. this.sopModelData.versionNumber = 'A0' + (parseInt(versionNumber.substring(1)) + 1);
  1559. } else {
  1560. this.sopModelData.versionNumber = 'A' + (parseInt(versionNumber.substring(1)) + 1);
  1561. }
  1562. } else {
  1563. this.sopModelData.versionNumber = 'A01';
  1564. }
  1565. })
  1566. },
  1567. triggerUpload() {
  1568. this.$refs.uploadFile.$el.querySelector('input').click()
  1569. },
  1570. /*选择上传文件时*/
  1571. onChange(file,fileList){
  1572. const newFileName = file.name;
  1573. if (this.fileName) {
  1574. this.fileName += ', ' + newFileName;
  1575. } else {
  1576. this.fileName = newFileName;
  1577. }
  1578. this.fileList.push(file);
  1579. },
  1580. closeFileUpdate() {
  1581. this.fileName = '';
  1582. //this.fileRemark = ''
  1583. this.$refs.uploadFile.clearFiles()
  1584. this.fileList = []
  1585. },
  1586. uploadSOPSave() {
  1587. if (this.sopModelData.effectiveDate === '' || this.sopModelData.effectiveDate == null) {
  1588. this.$alert('请选择生效日期!', this.labels.error, {
  1589. confirmButtonText: this.labels.true
  1590. })
  1591. return false;
  1592. }
  1593. if (this.fileList.length === 0) {
  1594. this.$alert('上传的SOP文件不能为空!', this.labels.error, {
  1595. confirmButtonText: this.labels.true
  1596. })
  1597. return false;
  1598. }
  1599. const formData = new FormData();
  1600. //片接文件
  1601. for (let i = 0; i < this.fileList.length; i++) {
  1602. formData.append("file", this.fileList[i].raw)
  1603. }
  1604. formData.append("orderRef2", this.sopModelData.workCenterNo)
  1605. formData.append("orderRef1", this.sopModelData.site)
  1606. formData.append("orderRef3", this.sopModelData.resourceID)
  1607. formData.append("orderRef4", this.sopModelData.versionNumber)
  1608. formData.append("effectiveDate", this.sopModelData.effectiveDate)
  1609. if (this.sopModelData.expiryDate != null && this.sopModelData.expiryDate !== '') {
  1610. formData.append("expiryDate", this.sopModelData.expiryDate)
  1611. }
  1612. formData.append("fileType", 'SOP')
  1613. console.log(this.sopModelData.expiryDate)
  1614. uploadSOPFile(formData).then(({data}) => {
  1615. if (data && data.code === 0) {
  1616. this.uploadSOPFlag = false
  1617. this.$message.success(this.labels.doYes)
  1618. //清空文件上传记录
  1619. this.$refs.uploadFile.clearFiles();
  1620. this.closeFileUpdate();
  1621. this.sopFileList = []
  1622. } else {
  1623. this.$alert(data.msg, this.labels.error, {
  1624. confirmButtonText: this.labels.true
  1625. })
  1626. }
  1627. })
  1628. },
  1629. updateSopFile(){
  1630. if (this.sopModelData.effectiveDate === '' || this.sopModelData.effectiveDate == null) {
  1631. this.$alert('请选择生效日期!', this.labels.error, {
  1632. confirmButtonText: this.labels.true
  1633. })
  1634. return false;
  1635. }
  1636. let inData = {
  1637. id: this.sopUpdateModelData.id,
  1638. effectiveDate: this.sopUpdateModelData.effectiveDate,
  1639. expiryDate: this.sopUpdateModelData.expiryDate,
  1640. }
  1641. sopFileEdit(inData).then(({data}) => {
  1642. if (data && data.code === 0) {
  1643. this.sopFileList = [];
  1644. this.sopFileListSearch();
  1645. this.uploadSOPEditFlag = false
  1646. this.fileName = '';
  1647. this.$message.success(this.labels.doYes)
  1648. } else {
  1649. this.$alert(data.msg, this.labels.error, {
  1650. confirmButtonText: this.labels.true
  1651. })
  1652. }
  1653. })
  1654. },
  1655. deleteSOPFile(row){
  1656. this.$confirm('确认删除该文件?', this.labels.point, {
  1657. confirmButtonText: this.labels.true,
  1658. cancelButtonText: this.labels.cancel,
  1659. type: 'warning'
  1660. }).then(() => {
  1661. deleteSOPFile(row).then(({data}) => {
  1662. if (data && data.code === 0) {
  1663. this.sopFileList = [];
  1664. this.sopFileListSearch();
  1665. this.$message.success(this.labels.doYes)
  1666. } else {
  1667. this.$alert(data.msg, this.labels.error, {
  1668. confirmButtonText: this.labels.true
  1669. })
  1670. }
  1671. })
  1672. })
  1673. },
  1674. closeUploadFileVisible(){
  1675. this.uploadSOPFlag=false;
  1676. this.sopFileList=[];
  1677. this.fileList = [];
  1678. this.closeFileUpdate();
  1679. },
  1680. closeUploadFileEditVisible(){
  1681. this.uploadSOPEditFlag=false;
  1682. this.fileName = '';
  1683. },
  1684. deleteCalendar(){
  1685. if(this.currentRow2==null){
  1686. this.$alert(this.labels.resourceIn, this.labels.error, {
  1687. confirmButtonText: this.labels.true
  1688. })
  1689. return false;
  1690. }
  1691. this.$confirm( this.labels.deleteResourceAsk, this.labels.point, {
  1692. confirmButtonText: this.labels.true,
  1693. cancelButtonText: this.labels.cancel,
  1694. type: 'warning'
  1695. }).then(() => {
  1696. deleteResource(this.currentRow2).then(({data}) => {
  1697. if (data && data.code == 200) {
  1698. getWorkCenterDataDetail(this.modelData).then(({data}) => {
  1699. this.dataList2 = data.rows2;
  1700. })
  1701. this.$message.success(this.labels.doYes)
  1702. } else {
  1703. this.$alert(data.msg, this.labels.error, {
  1704. confirmButtonText: this.labels.true
  1705. })
  1706. }
  1707. })
  1708. })
  1709. },
  1710. getBaseData(val){
  1711. if (this.tagNo === 25){
  1712. this.modelData2.proLineNo = val.ProLineNo
  1713. }
  1714. if (this.tagNo === 91){
  1715. this.modelData3.calendarID = val.CalendarID
  1716. }
  1717. },
  1718. // 获取基础数据列表
  1719. getBaseList(val){
  1720. this.tagNo = val
  1721. this.$nextTick(() => {
  1722. let strVal = "";
  1723. if (val === 25){
  1724. strVal = this.modelData2.proLineNo
  1725. }
  1726. if (val === 91){
  1727. strVal = this.modelData3.calendarID
  1728. }
  1729. this.$refs.baseList.init(val,strVal)
  1730. })
  1731. },
  1732. clickData2(row){
  1733. this.currentRow2 = JSON.parse(JSON.stringify(row));
  1734. },
  1735. jumpCalendar(){
  1736. if(this.currentRow2==null){
  1737. this.$alert(this.labels.resourceIn, this.labels.error, {
  1738. confirmButtonText: this.labels.true
  1739. })
  1740. return false;
  1741. }
  1742. let inData={user:this.$store.state.user.name,site:this.currentRow2.site,calendarId:this.currentRow2.calendarID};
  1743. localStorage.setItem('calendar', JSON.stringify(inData))
  1744. this.$router.replace('base-calendar')
  1745. },
  1746. getPartDetail(){
  1747. if(this.currentRow==null){
  1748. this.$alert(this.labels.rollIn, this.labels.error, {
  1749. confirmButtonText: this.labels.true
  1750. })
  1751. return false;
  1752. }
  1753. let inData={
  1754. user:this.$store.state.user.name,
  1755. site:this.currentRow.site,
  1756. partNo:this.currentRow.partNo
  1757. }
  1758. searchPartNoData(inData).then(({data}) => {
  1759. if (data.rows.length==0){
  1760. this.$alert(this.labels.partNot, this.labels.error, {
  1761. confirmButtonText: this.labels.true
  1762. })
  1763. return false;
  1764. }
  1765. this.partData = data.rows[0];
  1766. this.partFlag=true;
  1767. })
  1768. },
  1769. first(){
  1770. if(localStorage.getItem('workCenterNo')!=undefined){
  1771. this.jump();
  1772. }
  1773. },
  1774. getData(){
  1775. let inData={
  1776. user:this.$store.state.user.name
  1777. }
  1778. getWorkCenterData(inData).then(({data}) => {
  1779. this.dataList3 = data.rows;
  1780. this.modelFlag2=true;
  1781. })
  1782. },
  1783. jump(){
  1784. let data=JSON.parse(localStorage.getItem('workCenterNo'));
  1785. localStorage.removeItem('workCenterNo');
  1786. getWorkCenterData(data).then(({data}) => {
  1787. this.dataList3 = data.rows;
  1788. this.modelData=data.rows[0];
  1789. getWorkCenterDataDetail(this.modelData).then(({data}) => {
  1790. this.dataList2 = data.rows2;
  1791. this.dataList = data.rows1;
  1792. })
  1793. })
  1794. },
  1795. clickData(row){
  1796. this.currentRow = JSON.parse(JSON.stringify(row));
  1797. },
  1798. addModal(){
  1799. this.modelData2={
  1800. add:'',
  1801. workCenterNo:'',
  1802. workCenterDesc:'',
  1803. site:this.$store.state.user.site,
  1804. active:'',
  1805. workCenterType:'',
  1806. proLineNo:'',
  1807. productionLineDesc:'',
  1808. canCreateNewRollFlag:'',
  1809. createdDate:'',
  1810. remark:'',
  1811. needSetupFlag:'',
  1812. user:this.$store.state.user.name,
  1813. },
  1814. this.modelData2.add=0;
  1815. this.modelInputFlag=false;
  1816. this.modelData2.active='Y';
  1817. this.modelData2.canCreateNewRollFlag='Y';
  1818. this.modelData2.needSetupFlag='Y';
  1819. this.modelData2.workCenterType='内部',
  1820. this.modelData2.createdDate=new Date();
  1821. this.modelFlag=true;
  1822. },
  1823. editModel(row){
  1824. this.modelData2=JSON.parse(JSON.stringify(row));
  1825. this.modelData2.add=1;
  1826. this.modelInputFlag=true;
  1827. this.modelFlag=true;
  1828. },
  1829. ModelSave(){
  1830. if(this.modelData2.workCenterNo==''||this.modelData2.workCenterNo==null){
  1831. this.$alert(this.labels.workCenterNoIn, this.labels.error, {
  1832. confirmButtonText: this.labels.true
  1833. })
  1834. return false;
  1835. }
  1836. if(this.modelData2.workCenterDesc==''||this.modelData2.workCenterDesc==null){
  1837. this.$alert(this.labels.workCenterDescIn, this.labels.error, {
  1838. confirmButtonText: this.labels.true
  1839. })
  1840. return false;
  1841. }
  1842. if(this.modelData2.site==''||this.modelData2.site==null){
  1843. this.$alert(this.labels.siteIn, this.labels.error, {
  1844. confirmButtonText: this.labels.true
  1845. })
  1846. return false;
  1847. }
  1848. if(this.modelData2.createdDate==''||this.modelData2.createdDate==null){
  1849. this.$alert(this.labels.createdDateIn, this.labels.error, {
  1850. confirmButtonText: this.labels.true
  1851. })
  1852. return false;
  1853. }
  1854. this.modelData2.user=this.$store.state.user.name;
  1855. saveWorkCenterData(this.modelData2).then(({data}) => {
  1856. if (data && data.code == 200) {
  1857. this.modelFlag = false
  1858. this.getData();
  1859. this.$message.success(this.labels.doYes)
  1860. } else {
  1861. this.$alert(data.msg, this.labels.error, {
  1862. confirmButtonText: this.labels.true
  1863. })
  1864. }
  1865. })
  1866. },
  1867. deleteData(row){
  1868. this.$confirm( this.labels.workCenterDeleteAsk, this.labels.point, {
  1869. confirmButtonText: this.labels.true,
  1870. cancelButtonText: this.labels.cancel,
  1871. type: 'warning'
  1872. }).then(() => {
  1873. let inData = {
  1874. workCenterNo: row.workCenterNo,
  1875. site:row.site
  1876. }
  1877. deleteWorkCenterData(inData).then(({data}) => {
  1878. if (data && data.code == 200) {
  1879. this.modelFlag = false
  1880. this.getData();
  1881. this.$message.success( this.labels.doYes)
  1882. } else {
  1883. this.$alert(data.msg, this.labels.error, {
  1884. confirmButtonText: this.labels.true
  1885. })
  1886. }
  1887. })
  1888. })
  1889. },
  1890. tableHanddle(row){
  1891. this.modelData=row;
  1892. this.modelFlag2=false;
  1893. getWorkCenterDataDetail(this.modelData).then(({data}) => {
  1894. this.dataList2 = data.rows2;
  1895. this.dataList = data.rows1;
  1896. })
  1897. },
  1898. getProLineNo(){
  1899. let inData={
  1900. site : this.$store.state.user.site,
  1901. proLineNo : this.modelData2.proLineNo
  1902. }
  1903. getProLineNoDetail(inData).then(({data}) => {
  1904. let outList = data.rows
  1905. if (outList.length>0){
  1906. this.modelData2.productionLineDesc=outList[0].proLineDesc;
  1907. this.modelData2=JSON.parse(JSON.stringify(this.modelData2));
  1908. }else {
  1909. this.modelData2.productionLineDesc='';
  1910. }
  1911. })
  1912. },
  1913. //导出excel
  1914. createExportData() {
  1915. return this.dataList;
  1916. },
  1917. startDownload() {
  1918. // this.exportData = this.dataList
  1919. },
  1920. finishDownload() {
  1921. },
  1922. fields() {
  1923. let json = "{"
  1924. this.columnList.forEach((item, index) => {
  1925. if (index == this.columnList.length - 1) {
  1926. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1927. } else {
  1928. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1929. }
  1930. })
  1931. json += "}"
  1932. let s = eval("(" + json + ")")
  1933. return s
  1934. },
  1935. // 导出 end
  1936. //导出excel
  1937. createExportData2() {
  1938. return this.dataList2;
  1939. },
  1940. startDownload2() {
  1941. // this.exportData = this.dataList
  1942. },
  1943. finishDownload2() {
  1944. },
  1945. fields2() {
  1946. let json = "{"
  1947. this.columnList2.forEach((item, index) => {
  1948. if (index == this.columnList2.length - 1) {
  1949. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1950. } else {
  1951. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1952. }
  1953. })
  1954. json += "}"
  1955. let s = eval("(" + json + ")")
  1956. return s
  1957. },
  1958. // 导出 end
  1959. //获取按钮的权限数据
  1960. getButtonAuthData(){
  1961. let updateFlag = this.isAuth(this.menuId+":revise");
  1962. let fullControFlag = this.isAuth(this.menuId+":fullContro");
  1963. let deleteFlag = this.isAuth(this.menuId+":remove");
  1964. //处理页面的权限数据
  1965. this.authEdit = !updateFlag ||!fullControFlag;
  1966. this.authAdd = !fullControFlag;
  1967. this.authDelete = !deleteFlag;
  1968. },
  1969. //多语言
  1970. getMultiLanguageList() {
  1971. //首先查询当前按钮的多语言
  1972. searchFunctionButtonList(this.queryButton).then(({data}) => {
  1973. if (data && data.code == 0) {
  1974. this.buttons = data.data
  1975. } else {
  1976. // saveButtonList(this.buttonList).then(({data}) => {
  1977. // })
  1978. }
  1979. });
  1980. //其次查询当前标签的多语言
  1981. searchFunctionButtonList(this.queryLabel).then(({data}) => {
  1982. if (data && data.code == 0) {
  1983. this.labels = data.data
  1984. } else {
  1985. // saveButtonList(this.buttonList).then(({data}) => {
  1986. // })
  1987. }
  1988. });
  1989. },
  1990. // 获取 用户保存的 格式列
  1991. async getTableUserColumn(tableId, columnId) {
  1992. let queryTableUser = {
  1993. userId: this.$store.state.user.name,
  1994. functionId: this.$route.meta.menuId,
  1995. tableId: tableId,
  1996. status: true,
  1997. languageCode: this.$i18n.locale
  1998. }
  1999. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  2000. if (data.rows.length > 0) {
  2001. //this.columnList = []
  2002. switch (columnId) {
  2003. case 1:
  2004. this.columnList = data.rows
  2005. break;
  2006. case 2:
  2007. this.columnList2 = data.rows
  2008. break;
  2009. case 3:
  2010. this.columnList3 = data.rows
  2011. break;
  2012. }
  2013. } else {
  2014. this.getColumnList(tableId, columnId)
  2015. }
  2016. })
  2017. },
  2018. // 获取 tableDefault 列
  2019. async getColumnList(tableId, columnId) {
  2020. this.queryTable.tableId = tableId
  2021. let queryTable= {
  2022. functionId: this.$route.meta.menuId,
  2023. tableId: tableId,
  2024. languageCode: this.$i18n.locale
  2025. }
  2026. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  2027. if (!data.rows.length == 0) {
  2028. switch (columnId) {
  2029. case 1:
  2030. this.columnList = data.rows
  2031. break;
  2032. case 2:
  2033. this.columnList2 = data.rows
  2034. break;
  2035. case 3:
  2036. this.columnList3 = data.rows
  2037. break;
  2038. }
  2039. } else {
  2040. // this.showDefault = true
  2041. }
  2042. })
  2043. },
  2044. },
  2045. created() {
  2046. this.first();
  2047. //获取按钮的权限
  2048. this.getButtonAuthData();
  2049. //
  2050. this.getMultiLanguageList()//刷新按钮
  2051. this.getTableUserColumn('103004Table',1)
  2052. this.getTableUserColumn('103004Table2',2)
  2053. this.getTableUserColumn('103004Table3',3)
  2054. }
  2055. }
  2056. </script>
  2057. <style scoped>
  2058. </style>