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.

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