Selaa lähdekoodia

设备添加字段!特别备注:机械手臂,被注释了,但是注释不全,保存不了,我已经完整注释【机械手臂】!

王克恕 4 vuotta sitten
vanhempi
commit
ec133b5230

+ 141 - 141
imcs-ui/src/api/AuthUser.js

@@ -1,141 +1,141 @@
-import axiosApi from './AxiosApi.js'
-
-const apiList = {
-	getList: {
-    method: 'POST',
-    url: `/authority/authUser/all`
-  },
-  page: {
-    method: 'POST',
-    url: `/authority/authUser/page`
-  },
-  selectUserList: {
-    method: 'POST',
-    url: `/authority/authUser/selectUserList`
-  },
-  update: {
-    method: 'POST',
-    url: `/authority/authUser/update`
-  },
-  save: {
-    method: 'POST',
-    url: `/authority/authUser`
-  },
-  updateStatus: {
-    method: 'POST',
-    url: `/authority/authUser/status`
-  },
-  remove: {
-    method: 'DELETE',
-    url: `/authority/authUser`
-  },
-  delete: {
-    method: 'POST',
-    url: `/authority/authUser/delete`
-  },
-  list: {
-    method: 'POST',
-    url: `/authority/authUser/query`
-  },
-  preview: {
-    method: 'POST',
-    url: `/authority/authUser/preview`
-  },
-  export: {
-    method: 'POST',
-    url: `/authority/authUser/export`
-  },
-  import: {
-    method: 'POST',
-    url: `/authority/authUser/import`
-  }
-}
-
-export default {
-	getList (data) {
-    return axiosApi({
-      ...apiList.getList,
-      data
-    })
-  },
-  page (data) {
-    return axiosApi({
-      ...apiList.page,
-      data
-    })
-  },
-  selectUserList (data) {
-    return axiosApi({
-      ...apiList.selectUserList,
-      data
-    })
-  },
-  save (data) {
-    return axiosApi({
-      ...apiList.save,
-      data
-    })
-  },
-  update (data) {
-    return axiosApi({
-      ...apiList.update,
-      data
-    })
-  },
-  updateStatus (data) {
-    return axiosApi({
-      ...apiList.updateStatus,
-      data
-    })
-  },
-  remove (data) {
-    return axiosApi({
-      ...apiList.remove,
-      data
-    })
-  },
-  delete (data) {
-    return axiosApi({
-      ...apiList.remove,
-      data
-    })
-  },
-  list (data) {
-    return axiosApi({
-      ...apiList.list,
-      data
-    })
-  },
-  check (code) {
-    return axiosApi({
-      method: 'GET',
-      url: `/authority/authUser/check/${code}`
-    })
-  },
-  checkField (data) {
-    return axiosApi({
-      method: 'POST',
-      url: `/authority/authUser/check`,
-      data
-    })
-  },
-  preview (data) {
-    return axiosApi({
-      ...apiList.preview,
-      data
-    })
-  },
-  export (data) {
-    return axiosApi({
-      ...apiList.export,
-      responseType: "blob",
-      data
-    })
-  },
-  import (data) {
-    return axiosApi({
-      ...apiList.import,
-      data
-    })
-  }
-}
+import axiosApi from './AxiosApi.js'
+
+const apiList = {
+	getList: {
+    method: 'POST',
+    url: `/authority/authUser/all`
+  },
+  page: {
+    method: 'POST',
+    url: `/authority/authUser/page`
+  },
+  selectUserList: {
+    method: 'POST',
+    url: `/authority/authUser/selectUserList`
+  },
+  update: {
+    method: 'POST',
+    url: `/authority/authUser/update`
+  },
+  save: {
+    method: 'POST',
+    url: `/authority/authUser`
+  },
+  updateStatus: {
+    method: 'POST',
+    url: `/authority/authUser/status`
+  },
+  remove: {
+    method: 'DELETE',
+    url: `/authority/authUser`
+  },
+  delete: {
+    method: 'POST',
+    url: `/authority/authUser/delete`
+  },
+  list: {
+    method: 'POST',
+    url: `/authority/authUser/query`
+  },
+  preview: {
+    method: 'POST',
+    url: `/authority/authUser/preview`
+  },
+  export: {
+    method: 'POST',
+    url: `/authority/authUser/export`
+  },
+  import: {
+    method: 'POST',
+    url: `/authority/authUser/import`
+  }
+}
+
+export default {
+	getList (data) {
+    return axiosApi({
+      ...apiList.getList,
+      data
+    })
+  },
+  page (data) {
+    return axiosApi({
+      ...apiList.page,
+      data
+    })
+  },
+  selectUserList (data) {
+    return axiosApi({
+      ...apiList.selectUserList,
+      data
+    })
+  },
+  save (data) {
+    return axiosApi({
+      ...apiList.save,
+      data
+    })
+  },
+  update (data) {
+    return axiosApi({
+      ...apiList.update,
+      data
+    })
+  },
+  updateStatus (data) {
+    return axiosApi({
+      ...apiList.updateStatus,
+      data
+    })
+  },
+  remove (data) {
+    return axiosApi({
+      ...apiList.remove,
+      data
+    })
+  },
+  delete (data) {
+    return axiosApi({
+      ...apiList.remove,
+      data
+    })
+  },
+  list (data) {
+    return axiosApi({
+      ...apiList.list,
+      data
+    })
+  },
+  check (code) {
+    return axiosApi({
+      method: 'GET',
+      url: `/authority/authUser/check/${code}`
+    })
+  },
+  checkField (data) {
+    return axiosApi({
+      method: 'POST',
+      url: `/authority/authUser/check`,
+      data
+    })
+  },
+  preview (data) {
+    return axiosApi({
+      ...apiList.preview,
+      data
+    })
+  },
+  export (data) {
+    return axiosApi({
+      ...apiList.export,
+      responseType: "blob",
+      data
+    })
+  },
+  import (data) {
+    return axiosApi({
+      ...apiList.import,
+      data
+    })
+  }
+}

+ 61 - 61
imcs-ui/src/api/Dispatch.js

@@ -1,61 +1,61 @@
-import axiosApi from './AxiosApi.js'
-
-const apiList = {
-  page: {
-    url: `/authority/dispatchRecord/page`,
-    method: 'POST'
-  },
-  pageException: {
-    url: `/authority/dispatchException/page`,
-    method: 'POST'
-  },
-  save: {
-    url: `/authority/dispatchException`,
-    method: 'POST'
-  },
-  update: {
-    url: `/authority/dispatchException`,
-    method: 'PUT'
-  },
-  delete: {
-    url: `/authority/dispatchException`,
-    method: 'DELETE'
-  },
-  preview: {
-    method: 'POST',
-    url: `/authority/dispatch/preview`
-  }
-}
-
-export default {
-  page (data) {
-    return axiosApi({
-      ...apiList.page,
-      data
-    })
-  },
-  pageException (data) {
-    return axiosApi({
-      ...apiList.pageException,
-      data
-    })
-  },
-  save (data) {
-    return axiosApi({
-      ...apiList.save,
-      data
-    })
-  },
-  update (data) {
-    return axiosApi({
-      ...apiList.update,
-      data
-    })
-  },
-  delete (data) {
-    return axiosApi({
-      ...apiList.delete,
-      data
-    })
-  }
-}
+import axiosApi from './AxiosApi.js'
+
+const apiList = {
+  page: {
+    url: `/authority/dispatchRecord/page`,
+    method: 'POST'
+  },
+  pageException: {
+    url: `/authority/dispatchException/page`,
+    method: 'POST'
+  },
+  save: {
+    url: `/authority/dispatchException`,
+    method: 'POST'
+  },
+  update: {
+    url: `/authority/dispatchException`,
+    method: 'PUT'
+  },
+  delete: {
+    url: `/authority/dispatchException`,
+    method: 'DELETE'
+  },
+  preview: {
+    method: 'POST',
+    url: `/authority/dispatch/preview`
+  }
+}
+
+export default {
+  page (data) {
+    return axiosApi({
+      ...apiList.page,
+      data
+    })
+  },
+  pageException (data) {
+    return axiosApi({
+      ...apiList.pageException,
+      data
+    })
+  },
+  save (data) {
+    return axiosApi({
+      ...apiList.save,
+      data
+    })
+  },
+  update (data) {
+    return axiosApi({
+      ...apiList.update,
+      data
+    })
+  },
+  delete (data) {
+    return axiosApi({
+      ...apiList.delete,
+      data
+    })
+  }
+}

+ 145 - 145
imcs-ui/src/api/User.js

@@ -1,145 +1,145 @@
-import axiosApi from './AxiosApi.js'
-
-const apiList = {
-  page: {
-    method: 'POST',
-    url: `/authority/user/page`
-  },
-  save: {
-    method: 'POST',
-    url: `/authority/user`
-  },
-  update: {
-    method: 'PUT',
-    url: `/authority/user`
-  },
-  updateBaseInfo: {
-    method: 'PUT',
-    url: `/authority/user/base`
-  },
-  avatar: {
-    method: 'PUT',
-    url: `/authority/user/avatar`
-  },
-  delete: {
-    method: 'DELETE',
-    url: `/authority/user`
-  },
-  reset: {
-    method: 'POST',
-    url: `/authority/user/reset`
-  },
-  updatePassword: {
-    method: 'PUT',
-    url: `/authority/user/password`
-  },
-  reload: {
-    method: 'POST',
-    url: `/authority/user/reload`
-  },
-  preview: {
-    method: 'POST',
-    url: `/authority/user/preview`
-  },
-  export: {
-    method: 'POST',
-    url: `/authority/user/export`
-  },
-  import: {
-    method: 'POST',
-    url: `/authority/user/import`
-  },
-  getCurrUser: {
-    method: 'POST',
-    url: `/authority/user/getCurrUser`
-  }
-}
-
-export default {
-  page (data) {
-    return axiosApi({
-      ...apiList.page,
-      data
-    })
-  },
-  save (data) {
-    return axiosApi({
-      ...apiList.save,
-      data
-    })
-  },
-  update (data) {
-    return axiosApi({
-      ...apiList.update,
-      data
-    })
-  },
-  updateBaseInfo (data) {
-    return axiosApi({
-      ...apiList.updateBaseInfo,
-      data
-    })
-  },
-  updatePassword (data) {
-    return axiosApi({
-      ...apiList.updatePassword,
-      data
-    })
-  },
-  delete (data) {
-    return axiosApi({
-      ...apiList.delete,
-      data
-    })
-  },
-  get (id) {
-    return axiosApi({
-      method: 'GET',
-      url: `/authority/user/${id}`
-    })
-  },
-  reset (data) {
-    return axiosApi({
-      ...apiList.reset,
-      data
-    })
-  },
-  avatar (data) {
-    return axiosApi({
-      ...apiList.avatar,
-      data
-    })
-  },
-  reload (userId) {
-    return axiosApi({
-      ...apiList.reload,
-      formData: true,
-      data: { userId: userId }
-    })
-  },
-  preview (data) {
-    return axiosApi({
-      ...apiList.preview,
-      data
-    })
-  },
-  export (data) {
-    return axiosApi({
-      ...apiList.export,
-      responseType: "blob",
-      data
-    })
-  },
-  import (data) {
-    return axiosApi({
-      ...apiList.import,
-      data
-    })
-  },
-  getCurrUser (data) {
-    return axiosApi({
-      ...apiList.getCurrUser,
-      data
-    })
-  },
-}
+import axiosApi from './AxiosApi.js'
+
+const apiList = {
+  page: {
+    method: 'POST',
+    url: `/authority/user/page`
+  },
+  save: {
+    method: 'POST',
+    url: `/authority/user`
+  },
+  update: {
+    method: 'PUT',
+    url: `/authority/user`
+  },
+  updateBaseInfo: {
+    method: 'PUT',
+    url: `/authority/user/base`
+  },
+  avatar: {
+    method: 'PUT',
+    url: `/authority/user/avatar`
+  },
+  delete: {
+    method: 'DELETE',
+    url: `/authority/user`
+  },
+  reset: {
+    method: 'POST',
+    url: `/authority/user/reset`
+  },
+  updatePassword: {
+    method: 'PUT',
+    url: `/authority/user/password`
+  },
+  reload: {
+    method: 'POST',
+    url: `/authority/user/reload`
+  },
+  preview: {
+    method: 'POST',
+    url: `/authority/user/preview`
+  },
+  export: {
+    method: 'POST',
+    url: `/authority/user/export`
+  },
+  import: {
+    method: 'POST',
+    url: `/authority/user/import`
+  },
+  getCurrUser: {
+    method: 'POST',
+    url: `/authority/user/getCurrUser`
+  }
+}
+
+export default {
+  page (data) {
+    return axiosApi({
+      ...apiList.page,
+      data
+    })
+  },
+  save (data) {
+    return axiosApi({
+      ...apiList.save,
+      data
+    })
+  },
+  update (data) {
+    return axiosApi({
+      ...apiList.update,
+      data
+    })
+  },
+  updateBaseInfo (data) {
+    return axiosApi({
+      ...apiList.updateBaseInfo,
+      data
+    })
+  },
+  updatePassword (data) {
+    return axiosApi({
+      ...apiList.updatePassword,
+      data
+    })
+  },
+  delete (data) {
+    return axiosApi({
+      ...apiList.delete,
+      data
+    })
+  },
+  get (id) {
+    return axiosApi({
+      method: 'GET',
+      url: `/authority/user/${id}`
+    })
+  },
+  reset (data) {
+    return axiosApi({
+      ...apiList.reset,
+      data
+    })
+  },
+  avatar (data) {
+    return axiosApi({
+      ...apiList.avatar,
+      data
+    })
+  },
+  reload (userId) {
+    return axiosApi({
+      ...apiList.reload,
+      formData: true,
+      data: { userId: userId }
+    })
+  },
+  preview (data) {
+    return axiosApi({
+      ...apiList.preview,
+      data
+    })
+  },
+  export (data) {
+    return axiosApi({
+      ...apiList.export,
+      responseType: "blob",
+      data
+    })
+  },
+  import (data) {
+    return axiosApi({
+      ...apiList.import,
+      data
+    })
+  },
+  getCurrUser (data) {
+    return axiosApi({
+      ...apiList.getCurrUser,
+      data
+    })
+  },
+}

+ 151 - 151
imcs-ui/src/api/classScheduleMgr/shiftChangeMgr.js

@@ -1,151 +1,151 @@
-import axiosApi from '../AxiosApi.js'
-
-const apiList = {
-	getList: {
-    method: 'POST',
-    url: `/authority/scheduleUserChange/all`
-  },
-  page: {
-    method: 'POST',
-    url: `/authority/scheduleUserChange/page`
-  },
-  update: {
-    method: 'POST',
-    url: `/authority/scheduleUserChange/update`
-  },
-  save: {
-    method: 'POST',
-    url: `/authority/scheduleUserChange`
-  },
-  updateStatus: {
-    method: 'POST',
-    url: `/authority/scheduleUserChange/updateStatus`
-  },
-  remove: {
-    method: 'DELETE',
-    url: `/authority/scheduleUserChange`
-  },
-  delete: {
-    method: 'POST',
-    url: `/authority/scheduleUserChange/delete`
-  },
-  list: {
-    method: 'POST',
-    url: `/authority/scheduleUserChange/query`
-  },
-  preview: {
-    method: 'POST',
-    url: `/authority/scheduleUserChange/preview`
-  },
-  export: {
-    method: 'POST',
-    url: `/authority/scheduleUserChange/export`
-  },
-  import: {
-    method: 'POST',
-    url: `/authority/scheduleUserChange/import`
-  },
-  queryUserApplyData: {
-    method: 'POST',
-    url: `/authority/scheduleUserChange/queryUserApplyData`
-  },
-  queryUserChangeData: {
-    method: 'POST',
-    url: `/authority/scheduleUserChange/queryUserChangeData`
-  }
-}
-
-export default {
-	getList (data) {
-    return axiosApi({
-      ...apiList.getList,
-      data
-    })
-  },
-  page (data) {
-    return axiosApi({
-      ...apiList.page,
-      data
-    })
-  },
-  save (data) {
-    return axiosApi({
-      ...apiList.save,
-      data
-    })
-  },
-  update (data) {
-    return axiosApi({
-      ...apiList.update,
-      data
-    })
-  },
-  updateStatus (data) {
-    return axiosApi({
-      ...apiList.updateStatus,
-      data
-    })
-  },
-  remove (data) {
-    return axiosApi({
-      ...apiList.remove,
-      data
-    })
-  },
-  delete (data) {
-    return axiosApi({
-      ...apiList.delete,
-      data
-    })
-  },
-  list (data) {
-    return axiosApi({
-      ...apiList.list,
-      data
-    })
-  },
-  check (code) {
-    return axiosApi({
-      method: 'GET',
-      url: `/authority/scheduleUserChange/check/${code}`
-    })
-  },
-  checkField (data) {
-    return axiosApi({
-      method: 'POST',
-      url: `/authority/scheduleUserChange/check`,
-      data
-    })
-  },
-  preview (data) {
-    return axiosApi({
-      ...apiList.preview,
-      data
-    })
-  },
-  export (data) {
-    return axiosApi({
-      ...apiList.export,
-      responseType: "blob",
-      data
-    })
-  },
-  import (data) {
-    return axiosApi({
-      ...apiList.import,
-      data
-    })
-  },
-  queryUserApplyData (data) {
-    return axiosApi({
-      ...apiList.queryUserApplyData,
-      data
-    })
-  },
-  queryUserChangeData (data) {
-    return axiosApi({
-      ...apiList.queryUserChangeData,
-      data
-    })
-  }
-}
+import axiosApi from '../AxiosApi.js'
+
+const apiList = {
+	getList: {
+    method: 'POST',
+    url: `/authority/scheduleUserChange/all`
+  },
+  page: {
+    method: 'POST',
+    url: `/authority/scheduleUserChange/page`
+  },
+  update: {
+    method: 'POST',
+    url: `/authority/scheduleUserChange/update`
+  },
+  save: {
+    method: 'POST',
+    url: `/authority/scheduleUserChange`
+  },
+  updateStatus: {
+    method: 'POST',
+    url: `/authority/scheduleUserChange/updateStatus`
+  },
+  remove: {
+    method: 'DELETE',
+    url: `/authority/scheduleUserChange`
+  },
+  delete: {
+    method: 'POST',
+    url: `/authority/scheduleUserChange/delete`
+  },
+  list: {
+    method: 'POST',
+    url: `/authority/scheduleUserChange/query`
+  },
+  preview: {
+    method: 'POST',
+    url: `/authority/scheduleUserChange/preview`
+  },
+  export: {
+    method: 'POST',
+    url: `/authority/scheduleUserChange/export`
+  },
+  import: {
+    method: 'POST',
+    url: `/authority/scheduleUserChange/import`
+  },
+  queryUserApplyData: {
+    method: 'POST',
+    url: `/authority/scheduleUserChange/queryUserApplyData`
+  },
+  queryUserChangeData: {
+    method: 'POST',
+    url: `/authority/scheduleUserChange/queryUserChangeData`
+  }
+}
+
+export default {
+	getList (data) {
+    return axiosApi({
+      ...apiList.getList,
+      data
+    })
+  },
+  page (data) {
+    return axiosApi({
+      ...apiList.page,
+      data
+    })
+  },
+  save (data) {
+    return axiosApi({
+      ...apiList.save,
+      data
+    })
+  },
+  update (data) {
+    return axiosApi({
+      ...apiList.update,
+      data
+    })
+  },
+  updateStatus (data) {
+    return axiosApi({
+      ...apiList.updateStatus,
+      data
+    })
+  },
+  remove (data) {
+    return axiosApi({
+      ...apiList.remove,
+      data
+    })
+  },
+  delete (data) {
+    return axiosApi({
+      ...apiList.delete,
+      data
+    })
+  },
+  list (data) {
+    return axiosApi({
+      ...apiList.list,
+      data
+    })
+  },
+  check (code) {
+    return axiosApi({
+      method: 'GET',
+      url: `/authority/scheduleUserChange/check/${code}`
+    })
+  },
+  checkField (data) {
+    return axiosApi({
+      method: 'POST',
+      url: `/authority/scheduleUserChange/check`,
+      data
+    })
+  },
+  preview (data) {
+    return axiosApi({
+      ...apiList.preview,
+      data
+    })
+  },
+  export (data) {
+    return axiosApi({
+      ...apiList.export,
+      responseType: "blob",
+      data
+    })
+  },
+  import (data) {
+    return axiosApi({
+      ...apiList.import,
+      data
+    })
+  },
+  queryUserApplyData (data) {
+    return axiosApi({
+      ...apiList.queryUserApplyData,
+      data
+    })
+  },
+  queryUserChangeData (data) {
+    return axiosApi({
+      ...apiList.queryUserChangeData,
+      data
+    })
+  }
+}

+ 39 - 39
imcs-ui/src/api/machiningClient/measuringOffsetMgr.js

@@ -1,39 +1,39 @@
-/*********************** 【质量中心-查看质检结果】API ********************/
-import axiosApi from '../AxiosApi.js'
-
-const apiList = {
-	getList: {
-	    method: 'POST',
-	    url: `/authority/measuring/query`
-	},
-  page: {
-    method: 'POST',
-    url: `/authority/measuring/page`
-  },
-  download: {
-    method: 'POST',
-    url: `/authority/measuring/downloadFile`
-  }
-}
-
-export default {
-	getList (data) {
-    return axiosApi({
-      ...apiList.page,
-      data
-    })
-  },
-  page (data) {
-    return axiosApi({
-        ...apiList.page,
-        data
-    })
-  },
-  download (data) {
-    return axiosApi({
-        ...apiList.download,
-        responseType: "blob",
-      data
-    })
-  }
-}
+/*********************** 【质量中心-查看质检结果】API ********************/
+import axiosApi from '../AxiosApi.js'
+
+const apiList = {
+	getList: {
+	    method: 'POST',
+	    url: `/authority/measuring/query`
+	},
+  page: {
+    method: 'POST',
+    url: `/authority/measuring/page`
+  },
+  download: {
+    method: 'POST',
+    url: `/authority/measuring/downloadFile`
+  }
+}
+
+export default {
+	getList (data) {
+    return axiosApi({
+      ...apiList.page,
+      data
+    })
+  },
+  page (data) {
+    return axiosApi({
+        ...apiList.page,
+        data
+    })
+  },
+  download (data) {
+    return axiosApi({
+        ...apiList.download,
+        responseType: "blob",
+      data
+    })
+  }
+}

+ 104 - 104
imcs-ui/src/api/machiningClient/stationMgr.js

@@ -1,105 +1,105 @@
-/*********************** 【机加工人端-待完成任务/已完成任务】API ********************/
-import axiosApi from '../AxiosApi.js'
-
-const apiList = {
-	getList: {
-	    method: 'POST',
-	    url: `/authority/stationUser/query`
-	},  	
-  	update: {
-	    method: 'PUT',
-	    url: `/authority/stationUser`
-  	},
-	saveAll: {
-	    method: 'POST',
-	    url: `/authority/stationUser/saveAll`
-	},
-	updateAll: {
-	    method: 'POST',
-	    url: `/authority/stationUser/updateAll`
-	},
-	allStation: {
-	    method: 'GET',
-	    url: `/authority/stationUser/allStation`
-	}, 
-	allUser: {
-	    method: 'GET',
-	    url: `/authority/stationUser/allUser`
-	}, 
-	stationUser: {
-	    method: 'GET',
-	    url: `/authority/stationUser/stationUser`
-	},	
-	getStation:{
-		method: 'GET',
-	    url: `/authority/stationUser/getStation`
-	},
-  	remove: {
-    	method: 'DELETE',
-    	url: `/authority/stationUser`
-  	},
-}
-
-export default {
-	getList (data) {
-	    return axiosApi({
-	    	...apiList.getList,
-	    	data
-	    })
-  	},
-  	// 获取【所有人员】信息
-  	allUser (data) {
-	    return axiosApi({
-	    	...apiList.allUser,
-	    	data
-	    })
-  	},
-  	page (data) {
-	    return axiosApi({
-	      	...apiList.page,
-	      	data
-	    })
-  	},
-  	saveAll (data) {
-	    return axiosApi({
-	      	...apiList.saveAll,
-	      	data
-	    })
-  	},
-	updateAll (data) {
-	    return axiosApi({
-	      	...apiList.updateAll,
-	      	data
-	    })
-  	},
-  	allStation (data) {
-	    return axiosApi({
-	      	...apiList.allStation,
-	      	data
-	    })
-  	},  
-	stationUser (data) {
-	    return axiosApi({
-	      	...apiList.stationUser,
-	      	data
-	    })
-  	}, 
-	getStation (data) {
-	    return axiosApi({
-	      	...apiList.getStation,
-	      	data
-	    })
-  	},     
-  	update (data) {
-	    return axiosApi({
-	      	...apiList.update,
-	      	data
-	    })
-  	},
-  	remove (data) {
-	    return axiosApi({
-	      	...apiList.remove,
-	      	data
-	    })
-  	}  	
+/*********************** 【机加工人端-待完成任务/已完成任务】API ********************/
+import axiosApi from '../AxiosApi.js'
+
+const apiList = {
+	getList: {
+	    method: 'POST',
+	    url: `/authority/stationUser/query`
+	},  	
+  	update: {
+	    method: 'PUT',
+	    url: `/authority/stationUser`
+  	},
+	saveAll: {
+	    method: 'POST',
+	    url: `/authority/stationUser/saveAll`
+	},
+	updateAll: {
+	    method: 'POST',
+	    url: `/authority/stationUser/updateAll`
+	},
+	allStation: {
+	    method: 'GET',
+	    url: `/authority/stationUser/allStation`
+	}, 
+	allUser: {
+	    method: 'GET',
+	    url: `/authority/stationUser/allUser`
+	}, 
+	stationUser: {
+	    method: 'GET',
+	    url: `/authority/stationUser/stationUser`
+	},	
+	getStation:{
+		method: 'GET',
+	    url: `/authority/stationUser/getStation`
+	},
+  	remove: {
+    	method: 'DELETE',
+    	url: `/authority/stationUser`
+  	},
+}
+
+export default {
+	getList (data) {
+	    return axiosApi({
+	    	...apiList.getList,
+	    	data
+	    })
+  	},
+  	// 获取【所有人员】信息
+  	allUser (data) {
+	    return axiosApi({
+	    	...apiList.allUser,
+	    	data
+	    })
+  	},
+  	page (data) {
+	    return axiosApi({
+	      	...apiList.page,
+	      	data
+	    })
+  	},
+  	saveAll (data) {
+	    return axiosApi({
+	      	...apiList.saveAll,
+	      	data
+	    })
+  	},
+	updateAll (data) {
+	    return axiosApi({
+	      	...apiList.updateAll,
+	      	data
+	    })
+  	},
+  	allStation (data) {
+	    return axiosApi({
+	      	...apiList.allStation,
+	      	data
+	    })
+  	},  
+	stationUser (data) {
+	    return axiosApi({
+	      	...apiList.stationUser,
+	      	data
+	    })
+  	}, 
+	getStation (data) {
+	    return axiosApi({
+	      	...apiList.getStation,
+	      	data
+	    })
+  	},     
+  	update (data) {
+	    return axiosApi({
+	      	...apiList.update,
+	      	data
+	    })
+  	},
+  	remove (data) {
+	    return axiosApi({
+	      	...apiList.remove,
+	      	data
+	    })
+  	}  	
 }

+ 24 - 0
imcs-ui/src/api/resourceProductMgr/equipmentMgr.js

@@ -7,26 +7,37 @@ const apiList = {
 	    method: 'POST',
 	    url: `/authority/productionresource/pageList`
 	},
+	
 	// 【设备管理】-列表数据
 	getList: {
 	    method: 'POST',
 	    url: `/authority/productionresource/getList`
 	},
+	
+	//【设备管理-弹出】-列表数据
+	resourcePageList: {
+	    method: 'POST',
+	    url: `/authority/resourceBusiness/resourcePageList`
+	},
+	
 	// 【设置设备-确定】-保存数据
 	setResource: {
 	    method: 'POST',
 	    url: `/authority/zZone/setResource`
 	},
+	
 	// 【生产资源管理-删除】
 	remove: {
 	    method: 'DELETE',
 	    url: `/authority/productionresource`
 	},
+	
 	// 【设备-包含指令】-数据
 	getProductionresourceList: {
 	    method: 'POST',
 	    url: `/authority/productionresource/getProductionresourceList`
 	},
+	
 	removeMore: {
 	    method: 'POST',
 	    url: `/authority/productionresource/delete`
@@ -40,30 +51,43 @@ export default {
 	      data
 	    })
 	},
+	
 	getPageList (data) {
 	    return axiosApi({
 	      ...apiList.getPageList,
 	      data
 	    })
 	},
+	
+	//【设备管理-弹出】-列表数据
+	resourcePageList (data) {
+	    return axiosApi({
+	      ...apiList.resourcePageList,
+	      data
+	    })
+	},
+	
 	getProductionresourceList (data) {
 	    return axiosApi({
 	      ...apiList.getProductionresourceList,
 	      data
 	    })
 	},
+	
 	setResource (data) {
 	    return axiosApi({
 	      ...apiList.setResource,
 	      data
 	    })
 	},
+	
 	remove (data) {
 	    return axiosApi({
 	      ...apiList.remove,
 	      data
 	    })
 	},
+	
 	removeMore (data) {
 	    return axiosApi({
 	      ...apiList.removeMore,

+ 28 - 28
imcs-ui/src/api/statisticalAnalysis/agvAvailability.js

@@ -1,28 +1,28 @@
-/*********************** 【质量中心-查看质检结果】API ********************/
-import axiosApi from '../AxiosApi.js'
-
-const apiList = {
-	getList: {
-	    method: 'POST',
-	    url: `/authority/agvHikOrderDetailInfo/query`
-	},
-  page: {
-    method: 'POST',
-    url: `/authority/agvHikOrderDetailInfo/page`
-  }
-}
-
-export default {
-	getList (data) {
-    return axiosApi({
-      ...apiList.page,
-      data
-    })
-  },
-  page (data) {
-    return axiosApi({
-        ...apiList.page,
-        data
-    })
-  }
-}
+/*********************** 【质量中心-查看质检结果】API ********************/
+import axiosApi from '../AxiosApi.js'
+
+const apiList = {
+	getList: {
+	    method: 'POST',
+	    url: `/authority/agvHikOrderDetailInfo/query`
+	},
+  page: {
+    method: 'POST',
+    url: `/authority/agvHikOrderDetailInfo/page`
+  }
+}
+
+export default {
+	getList (data) {
+    return axiosApi({
+      ...apiList.page,
+      data
+    })
+  },
+  page (data) {
+    return axiosApi({
+        ...apiList.page,
+        data
+    })
+  }
+}

+ 48 - 48
imcs-ui/src/api/statisticalAnalysis/productlineAvailability.js

@@ -1,48 +1,48 @@
-/*********************** 【质量中心-查看质检结果】API ********************/
-import axiosApi from '../AxiosApi.js'
-
-const apiList = {
-	getList: {
-	    method: 'POST',
-	    url: `/authority/productLinePerformance/query`
-	},
-  page: {
-    method: 'POST',
-    url: `/authority/productLinePerformance/page`
-  },
-  queryOperatorDetailPerformance: {
-    method: 'POST',
-    url: `/authority/productLinePerformance/queryOperatorDetailPerformance`
-  },
-  queryOperatorDetailsPerformance: {
-    method: 'POST',
-    url: `/authority/productLinePerformance/queryOperatorDetailsPerformance`
-  }
-}
-
-export default {
-	getList (data) {
-    return axiosApi({
-      ...apiList.page,
-      data
-    })
-  },
-  page (data) {
-    return axiosApi({
-        ...apiList.page,
-        data
-    })
-  },
-  queryOperatorDetailPerformance (data) {
-    return axiosApi({
-      ...apiList.queryOperatorDetailPerformance,
-      data
-    })
-  },
-  queryOperatorDetailsPerformance (data) {
-    return axiosApi({
-      ...apiList.queryOperatorDetailsPerformance,
-      data
-    })
-  }
-}
+/*********************** 【质量中心-查看质检结果】API ********************/
+import axiosApi from '../AxiosApi.js'
+
+const apiList = {
+	getList: {
+	    method: 'POST',
+	    url: `/authority/productLinePerformance/query`
+	},
+  page: {
+    method: 'POST',
+    url: `/authority/productLinePerformance/page`
+  },
+  queryOperatorDetailPerformance: {
+    method: 'POST',
+    url: `/authority/productLinePerformance/queryOperatorDetailPerformance`
+  },
+  queryOperatorDetailsPerformance: {
+    method: 'POST',
+    url: `/authority/productLinePerformance/queryOperatorDetailsPerformance`
+  }
+}
+
+export default {
+	getList (data) {
+    return axiosApi({
+      ...apiList.page,
+      data
+    })
+  },
+  page (data) {
+    return axiosApi({
+        ...apiList.page,
+        data
+    })
+  },
+  queryOperatorDetailPerformance (data) {
+    return axiosApi({
+      ...apiList.queryOperatorDetailPerformance,
+      data
+    })
+  },
+  queryOperatorDetailsPerformance (data) {
+    return axiosApi({
+      ...apiList.queryOperatorDetailsPerformance,
+      data
+    })
+  }
+}

+ 97 - 97
imcs-ui/src/lang/zh/calssSchedule.js

@@ -1,97 +1,97 @@
-/**************** 【生产准备中心】菜单  **************/
-export default {
-	calssSchedule: {
-		// 本模型下的共通
-		common: {
-			aduio: '审核产品',
-			schedFlag0: '不需排班',
-			schedFlag1: '需要排班',
-			classSchul: '班表',
-			userSchul: '个人班表'
-		},
-		// 列表搜索表单名称
-		searchForm: {
-			name: '班表名称',
-			no: '编号',
-			numb: '工号',
-			deptName: '部门',
-			userName: '姓名',
-			month: '月份',
-			applyName: '申请人',
-			applyTime: '申请日期',
-			audioStatus: '审核状态'
-		},
-		// 按钮的名称
-	  	buttons: {
-	  		setClass: '设置班表',
-	  		allClear: '全部清除'
-	  	},
-	  	// 列表的cell名称
-		table: {
-			// 【班表管理】列表table字段名称
-			schedule: {
-				year: '年',
-				month: '月',
-				status: '状态',
-				addTime: '新增时间',
-				audioTime: '审核时间'
-			},
-			// 【班次管理】列表table字段名称
-			calsses: {
-				no: '编号',
-				name: '班次名称',
-				model: '班次时间段',
-				hours: '班次时间(小时)',
-				remark: '备注'
-			},
-			// 【排班人员管理】列表table字段名称
-			staff: {
-				type: '类型',
-				numbers: '人员数量',
-			},
-			// 【换班管理】列表table字段名称
-			staffChange: {
-				auditUser: '申请人',
-				applyTime: '申请日期',
-				model: '更换班表',
-				hours: '更换人',
-				changeTime: '更换日期',
-				remark: '更换班表',
-				auditStatus: '审核状态',
-				createTime: '新增时间',
-				statusTime: '审核时间'
-			},
-			// 【设置班表】列表table字段名称
-			setClass: {
-				deptName: '部门',
-				name: '姓名',
-				no: '工号'
-			}
-		},
-		// 表单数据名称
-		form: {
-			beginTime: '班次开始时间',
-      endTime: '班次结束时间',
-			sumTime: '总时间',
-			tipsColor: '标注颜色',
-			month: '班表月份',
-			deptUsers: '部门人员',
-			setDate: '设置日期',
-			setClass: '设置班次'
-		},
-		// 表单验证规则提示信息
-		rules: {
-		},
-		// 提示或者显示信息
-		tips:{
-			accossDay: '第二天',
-			startTime: '开始时间',
-			endTime: '结束时间',
-			areaTips: '删除班次管理数据后,会将班次管理数据全部删除,确认删除?',
-			schedulTips: '删除班表管理数据后,会将班表管理数据全部删除,确认删除?',
-			settingTips: '清除设置班表数据后,会将设置班表人员数据全部清除,确认清除?',
-			settingAllTips: '全部清除设置班表数据后,会将设置班表人员数据全部清除,确认全部清除?',
-      shiftChangeTips: '删除人员换班数据后,会将该人员当前换班数据全部删除,确认删除?',
-		}
-	}
-}
+/**************** 【生产准备中心】菜单  **************/
+export default {
+	calssSchedule: {
+		// 本模型下的共通
+		common: {
+			aduio: '审核产品',
+			schedFlag0: '不需排班',
+			schedFlag1: '需要排班',
+			classSchul: '班表',
+			userSchul: '个人班表'
+		},
+		// 列表搜索表单名称
+		searchForm: {
+			name: '班表名称',
+			no: '编号',
+			numb: '工号',
+			deptName: '部门',
+			userName: '姓名',
+			month: '月份',
+			applyName: '申请人',
+			applyTime: '申请日期',
+			audioStatus: '审核状态'
+		},
+		// 按钮的名称
+	  	buttons: {
+	  		setClass: '设置班表',
+	  		allClear: '全部清除'
+	  	},
+	  	// 列表的cell名称
+		table: {
+			// 【班表管理】列表table字段名称
+			schedule: {
+				year: '年',
+				month: '月',
+				status: '状态',
+				addTime: '新增时间',
+				audioTime: '审核时间'
+			},
+			// 【班次管理】列表table字段名称
+			calsses: {
+				no: '编号',
+				name: '班次名称',
+				model: '班次时间段',
+				hours: '班次时间(小时)',
+				remark: '备注'
+			},
+			// 【排班人员管理】列表table字段名称
+			staff: {
+				type: '类型',
+				numbers: '人员数量',
+			},
+			// 【换班管理】列表table字段名称
+			staffChange: {
+				auditUser: '申请人',
+				applyTime: '申请日期',
+				model: '更换班表',
+				hours: '更换人',
+				changeTime: '更换日期',
+				remark: '更换班表',
+				auditStatus: '审核状态',
+				createTime: '新增时间',
+				statusTime: '审核时间'
+			},
+			// 【设置班表】列表table字段名称
+			setClass: {
+				deptName: '部门',
+				name: '姓名',
+				no: '工号'
+			}
+		},
+		// 表单数据名称
+		form: {
+			beginTime: '班次开始时间',
+      endTime: '班次结束时间',
+			sumTime: '总时间',
+			tipsColor: '标注颜色',
+			month: '班表月份',
+			deptUsers: '部门人员',
+			setDate: '设置日期',
+			setClass: '设置班次'
+		},
+		// 表单验证规则提示信息
+		rules: {
+		},
+		// 提示或者显示信息
+		tips:{
+			accossDay: '第二天',
+			startTime: '开始时间',
+			endTime: '结束时间',
+			areaTips: '删除班次管理数据后,会将班次管理数据全部删除,确认删除?',
+			schedulTips: '删除班表管理数据后,会将班表管理数据全部删除,确认删除?',
+			settingTips: '清除设置班表数据后,会将设置班表人员数据全部清除,确认清除?',
+			settingAllTips: '全部清除设置班表数据后,会将设置班表人员数据全部清除,确认全部清除?',
+      shiftChangeTips: '删除人员换班数据后,会将该人员当前换班数据全部删除,确认删除?',
+		}
+	}
+}

+ 41 - 41
imcs-ui/src/lang/zh/dispatch.js

@@ -1,42 +1,42 @@
-/**************** 【调度对话记录】菜单  **************/
-export default {
-    dispatch: {
-        // 本模型下的共通
-        common: {
-
-        },
-        // 列表搜索表单名称
-        searchForm: {
-            name: '指令名称',
-            type: '分类',
-            status: '状态',
-            startTime: '开始时间',
-            endTime: '结束时间',
-        },
-        table: {
-            record: {
-                name: '指令名称',
-                status: '启用状态',
-                createTime: '创建时间',
-                updateTime: '修改时间',
-                distributeTime: '下发时间'
-            },
-            exception: {
-                operationTime: '操作时间',
-                device: '设备',
-                name: '指令内容',
-                status: {
-                    normal: "状态",
-                    running: "执行中",
-                    runFail: "执行失败",
-                    sendFail: "发送失败"
-                },
-                operation: '操作'
-            }
-        },
-        button: {
-            resend: "指令重新发送",
-            marked: "指令标记完"
-        }
-    }
+/**************** 【调度对话记录】菜单  **************/
+export default {
+    dispatch: {
+        // 本模型下的共通
+        common: {
+
+        },
+        // 列表搜索表单名称
+        searchForm: {
+            name: '指令名称',
+            type: '分类',
+            status: '状态',
+            startTime: '开始时间',
+            endTime: '结束时间',
+        },
+        table: {
+            record: {
+                name: '指令名称',
+                status: '启用状态',
+                createTime: '创建时间',
+                updateTime: '修改时间',
+                distributeTime: '下发时间'
+            },
+            exception: {
+                operationTime: '操作时间',
+                device: '设备',
+                name: '指令内容',
+                status: {
+                    normal: "状态",
+                    running: "执行中",
+                    runFail: "执行失败",
+                    sendFail: "发送失败"
+                },
+                operation: '操作'
+            }
+        },
+        button: {
+            resend: "指令重新发送",
+            marked: "指令标记完"
+        }
+    }
 }

+ 133 - 133
imcs-ui/src/lang/zh/machining.js

@@ -1,133 +1,133 @@
-/***************************【机加工人端】***********************************/
-export default {
-	machining: {
-		// 本模型下的共通
-		common: {
-			uniqueCode: '请先输入入产线编码!',
-			marking: '标注处理',
-			viewTask: '任务详情',
-			viewOrder: '查看补单',
-			viewPlan: '查看计划',
-			custerm: '客户名称',
-			orderNo: '订单编号',
-			jiaohuTime: '交货期',
-			downloadReport: '下载报告',
-			status: '状态',
-			exeStatus:{
-				noStart: '待执行',
-				run: '进行中',
-				finished: '已完成'
-			},
-			testResult: {
-				one: '合格',
-				two: '不合格'
-			},
-			handleWay: {
-				one: '补单',
-				two: '废品发货'
-			},
-			handleStatus: {
-				one: '待处理',
-				two: '已处理'
-			}
-		},
-		// 列表搜索表单名称
-		searchForm: {
-      offset: {
-        workpieceName: '零件名称',
-        orderNo: '订单编号',
-        workpieceId: '零件编号',
-        createTime: '生成日期',
-      },
-		},
-		// 按钮的名称
-	  	buttons: {
-	  		noFinished: '暂不完成',
-	  		finished: '我已完成'
-	  	},
-	  	// 列表的cell名称
-		table: {
-			// 【待完成任务】列表table字段名称
-			schedul: {
-				taskNodeNo: '节点任务编号',
-				prority: '优先级',
-				exeStatus: '节点任务状态',
-				overtimeStatus: '是否超时',
-				bomDesc: '产品名称',
-				procedureNo: '工序号',
-				procedureDesc: '工序名称',
-				resourceDesc: '执行位置',
-				planTime: '计划时间',
-				ratedWorkHours: '额定工时',
-				orderNo: '订单编号',
-				planNo: '计划编号',
-				taskNo: '任务编号'
-			},
-			// 质量中心-不合格品管理
-			unQuality: {
-				no: '单据编号',
-				bomName: '产品名称',
-				uniqueCode: '产品唯一码',
-				testResult: '质检结果',
-				bomNum: '数量',
-				handleUserName: '质检人',
-				handleStatus: '处理状态',
-				handleWay: '处理方式',
-				name9: '补单单号',
-				name10: '所属订单号',
-				name11: '所属计划',
-				name12: '生成单据时间',
-				createUserName: '生成人',
-				handleTime: '处理时间',
-				handleUserName: '处理人'
-			},
-			// 质量中心-质量管理
-			qualityMgr: {
-				no: '订单编号',
-				bomName: '客户简称',
-				uniqueCode: '来源',
-				testResult: '订单状态',
-				bomNum: '产品数量',
-				handleUserName: '生产中',
-				handleStatus: '已完成',
-				handleWay: '不合格产品',
-				name9: '合格产品',
-				name10: '补单次',
-				name12: '下单日期',
-				handleTime: '交货日期',
-			},
-			qualityResult: {
-				no: '单据编号',
-				bomName: '产品名称',
-				productCode: '产品编码',
-				uniqueCode: '产品系统唯一码',
-				testResult: '质检结果',
-				name10: '所属订单号',
-				name11: '所属计划'
-			},
-      // 【偏置点管理】列表table字段名称
-      offset: {
-        no: '编号',
-        orderNo: '订单编号',
-        workpieceName: '零件名称',
-        workpieceId: '零件编号',
-        procedureName: '工序名称',
-        offsetX: 'X',
-        offsetY: 'Y',
-        offsetZ: 'Z',
-        createTime: '生成日期',
-      },
-		},
-		// 表单数据名称
-		form: {
-			handleWay: '处理方式',
-			addOrderId: '补单订单',
-			handleStatus: '处理状态'
-
-		},
-		// 表单验证规则提示信息
-		rules: {
-
-		}
-	}
-}
+/***************************【机加工人端】***********************************/
+export default {
+	machining: {
+		// 本模型下的共通
+		common: {
+			uniqueCode: '请先输入入产线编码!',
+			marking: '标注处理',
+			viewTask: '任务详情',
+			viewOrder: '查看补单',
+			viewPlan: '查看计划',
+			custerm: '客户名称',
+			orderNo: '订单编号',
+			jiaohuTime: '交货期',
+			downloadReport: '下载报告',
+			status: '状态',
+			exeStatus:{
+				noStart: '待执行',
+				run: '进行中',
+				finished: '已完成'
+			},
+			testResult: {
+				one: '合格',
+				two: '不合格'
+			},
+			handleWay: {
+				one: '补单',
+				two: '废品发货'
+			},
+			handleStatus: {
+				one: '待处理',
+				two: '已处理'
+			}
+		},
+		// 列表搜索表单名称
+		searchForm: {
+      offset: {
+        workpieceName: '零件名称',
+        orderNo: '订单编号',
+        workpieceId: '零件编号',
+        createTime: '生成日期',
+      },
+		},
+		// 按钮的名称
+	  	buttons: {
+	  		noFinished: '暂不完成',
+	  		finished: '我已完成'
+	  	},
+	  	// 列表的cell名称
+		table: {
+			// 【待完成任务】列表table字段名称
+			schedul: {
+				taskNodeNo: '节点任务编号',
+				prority: '优先级',
+				exeStatus: '节点任务状态',
+				overtimeStatus: '是否超时',
+				bomDesc: '产品名称',
+				procedureNo: '工序号',
+				procedureDesc: '工序名称',
+				resourceDesc: '执行位置',
+				planTime: '计划时间',
+				ratedWorkHours: '额定工时',
+				orderNo: '订单编号',
+				planNo: '计划编号',
+				taskNo: '任务编号'
+			},
+			// 质量中心-不合格品管理
+			unQuality: {
+				no: '单据编号',
+				bomName: '产品名称',
+				uniqueCode: '产品唯一码',
+				testResult: '质检结果',
+				bomNum: '数量',
+				handleUserName: '质检人',
+				handleStatus: '处理状态',
+				handleWay: '处理方式',
+				name9: '补单单号',
+				name10: '所属订单号',
+				name11: '所属计划',
+				name12: '生成单据时间',
+				createUserName: '生成人',
+				handleTime: '处理时间',
+				handleUserName: '处理人'
+			},
+			// 质量中心-质量管理
+			qualityMgr: {
+				no: '订单编号',
+				bomName: '客户简称',
+				uniqueCode: '来源',
+				testResult: '订单状态',
+				bomNum: '产品数量',
+				handleUserName: '生产中',
+				handleStatus: '已完成',
+				handleWay: '不合格产品',
+				name9: '合格产品',
+				name10: '补单次',
+				name12: '下单日期',
+				handleTime: '交货日期',
+			},
+			qualityResult: {
+				no: '单据编号',
+				bomName: '产品名称',
+				productCode: '产品编码',
+				uniqueCode: '产品系统唯一码',
+				testResult: '质检结果',
+				name10: '所属订单号',
+				name11: '所属计划'
+			},
+      // 【偏置点管理】列表table字段名称
+      offset: {
+        no: '编号',
+        orderNo: '订单编号',
+        workpieceName: '零件名称',
+        workpieceId: '零件编号',
+        procedureName: '工序名称',
+        offsetX: 'X',
+        offsetY: 'Y',
+        offsetZ: 'Z',
+        createTime: '生成日期',
+      },
+		},
+		// 表单数据名称
+		form: {
+			handleWay: '处理方式',
+			addOrderId: '补单订单',
+			handleStatus: '处理状态'
+
+		},
+		// 表单验证规则提示信息
+		rules: {
+
+		}
+	}
+}

+ 302 - 301
imcs-ui/src/lang/zh/resource.js

@@ -1,301 +1,302 @@
-/**************** 【生产資源中心】菜单  **************/
-export default {
-	resource: {
-		// 本模型下的共通
-		common: {
-			aduio: '审核产品',
-			selectAdd: '选择设备',
-			peizhi: '生产资源配置',
-			toolList: '刀具列表',
-			programList: '程序列表',
-			jiankong: '监控方式',
-			setJiankong: '设置监控',
-			jiankongRecord: '监控记录',
-			noJiank: '无监控',
-			jiankongTime: '监控使用寿命',
-			jiankongNums: '监控使用次数',
-			seconds: '分钟',
-			nums: '次',
-			mimm: 'm/s',
-			jichuang: '机床',
-			jxsbi: '机械手臂',
-			agv: 'AGV',
-			users: '使用',
-			history: '历史',
-			eqDelete: '从设备删除',
-			zhixingPg: '执行程序',
-			maxWorkHours: '小时',
-			displayStatus: '是否显示',
-			stopTaskHours: '小时(不派任务)',
-			eqCenter: {
-				allCount: '设备总数',
-				supervisionCount: '系统监管',
-				independentCount: '独立运行',
-				onlineCount: '在线',
-				offlineCount: '离线',
-				workCount: '生产中',
-				freeCount: '空闲',
-				waitCount: '等待配送资源',
-				exceptionCount: '异常',
-				anArea: '按产线',
-				anType: '按分类',
-				waitTask: '待完成任务',
-				detail: '详情',
-				geKuwei: '个库位'
-			}
-		},
-		// 列表搜索表单名称
-		searchForm: {
-			programName: '产品名称',
-			startEndTime: '时间',
-			guige: '规格',
-			xinghao: '型号',
-			jichuang: '所在机床',
-			resourceName: '资源名称',
-			linkStatus: '在线状态',
-			eqName: '设备名称',
-			name: '名称',
-			no: '编号',
-			isCNC: '包含CNC程序',
-			isDao: '包含刀具库',
-			idJindu: '具备进度条',
-			isStatus: '具备状态',
-			isProStaus: '产线控制状态',
-			maxTime: '每日最多加工',
-			baoyang: '临近保养',
-			isAutoCode: '是否工序设备'
-		},
-		// 按钮的名称
-	  	buttons: {
-	  		equipment: '设备管理',
-	  		position: '设备位置管理',
-	  		setBtn: '设置控制状态',
-	  		work: '工作位置管理',
-	  		setting: '配置',
-	  		hardware: '硬件配置',
-	  		linkLine: '关联边线库',
-	  		tongbu: '同步刀具',
-	  		tongbEq: '同步到设备',
-	  		tongbSk: '同步数控程序',
-        upload: '上传程序',
-			mode:  '模式',
-			autoCode: '设备业务自动化节点',
-			detailConf: '详情配置'
-	  	},
-	  	// 列表的cell名称
-		table: {
-			// 【生产单元管理】列表table字段名称
-			area: {
-				no: '编号',
-				name: '产线名称',
-				nums: '资源数量',
-				layoutMap: '布局图',
-				resources: '包含生产资源',
-				mode: '产线模式',
-				remark: '备注',
-				status: '启用状态',
-				createUser: '操作人',
-				updateTime: '修改时间'
-			},
-			// 【设备管理】列表table字段名称
-			equipment: {
-				no: '编号',
-				pic: '主图',
-				name: '设备名称',
-				brand: '品牌',
-				specification: '规格',
-				model: '型号',
-			},
-			// 【选择设备】列表table字段名称
-			selectQm: {
-				no: '编号',
-				pic: '主图',
-				name: '设备名称',
-				brand: '品牌',
-				specification: '规格',
-				model: '型号',
-				zoneName: '已被选的生产单元',
-			},
-			// 【生产资源管理】列表table字段名称
-			resours: {
-				no: '编号',
-				pic: '主图',
-				name: '设备名称',
-				brand: '品牌',
-				specification: '规格',
-				capitalNo: '资产编号',
-			    capitalName: '资产名称',
-				capitalType: '资产类别',
-			    modeSpecification: '型号规格',
-				capitalPrice: '资产原值',
-				productionDate: '出厂年月',
-				productionNo: '出厂编号',
-				manufacturer: '制造厂家',
-				model: '型号',
-				category: '分类',
-				zoneName: '所属产线',
-        programSynTime: '同步时间',
-        programNum: '程序数量',
-				nums: '工作位置数量',
-				isProgram: '是否需要程序',
-				linkStatus: "连接状态",
-				controlStatus: '控制状态',
-				productionStatus: '生产状态'
-			},
-      //【维保计划管理】列表table字段名称
-      repair:{
-			  select:'选择设备',
-			  code: '设备编号',
-        productionresourceName: '设备名称',
-        lineDesc: '所在产线',
-        countdown: '维修倒计时进度',
-        repairStartTime: '维保开始时间',
-        repairEndTime: '下次维保时间',
-        repairStatus: '维修状态',
-        status: '启用状态',
-        createUserDesc: '操作人',
-        weight:'排序',
-        createTime: '创建时间',
-        updateTime: '更新时间',
-        remark: '备注',
-        maintenanceTime: '维保日期',
-        maintenanceContent: '维保内容',
-        maintenanceStatus: '维保后设备状态',
-        maintenanceUser: '维保人',
-        maintenanceCreateTime: '提交日期',
-
-      },
-			// 【设备位置管理】列表table字段名称
-			eqPosition: {
-				no: '位置编号',
-				name: '名称',
-				pointId: '点位ID',
-				status: '锁定状态'
-			},
-			// 【设备刀具管理-设备列表】列表table字段名称
-			eqList: {
-				name: '设备名称',
-				name2: '设备编号',
-				name3: '设备类似',
-				name4: '所属生产单元',
-				name5: '设备连接状态',
-				name6: '同步时间',
-				name7: '刀库刀具数量'
-			},
-			// 【设备刀具管理-刀具列表】列表table字段名称
-			toolList: {
-				specification: '刀具规格',
-				model: '型号',
-				brand: '品牌',
-				no: '刀库刀具编号',
-				stopBits: '停止位',
-				useStatus: '使用状态',
-				monitorWay: '监控方式',
-				rateUseLife: '额定使用寿命/次',
-				leftUseLife: '剩余使用次数/次',
-				warnLimit: '预警极限',
-				synTime: '同步时间'
-			},
-			// 【设备刀具管理-监控记录】列表table字段名称
-			jkRecord: {
-				rateUseLife: '额定使用寿命/次',
-				leftUseLife: '剩余使用寿命/次',
-				warnLimit: '预警极限',
-				synTime: '同步时间'
-			},
-			// 【程序中心-本地库】列表table字段名称
-			program: {
-				no: '程序编号',
-				name: '程序名称',
-				runTime: '运行时间',
-				size: '大小',
-				toolNums: '刀具数量',
-				version: '版本',
-				status: '状态',
-        synTime: '同步时间'
-			},
-			// 【程序中心-新增-刀具】列表table字段名称
-			programTool: {
-				specification: '刀具规格',
-				model: '型号',
-				brand: '品牌',
-				usageTime: '使用时间',
-				duration: '持续时间'
-			},
-			// 【程序管理】列表table字段名称
-			pgMgr: {
-				bomName: '产品',
-				version: '工艺版本号',
-				procedureNo: '工序号',
-				resourceName: '设备名称',
-				programName: '程序名称',
-				runTime: '运行时长',
-				createTime: '新增时间',
-				updateTime: '更新时间',
-				createUserDesc: '操作'
-			},
-			// 【程序执行任务】列表table字段名称
-			pgTask: {
-				programNo: '程序编号',
-				programName: '程序名称',
-				version: '版本号',
-				resourceName: '设备名称',
-				resourceCode: '设备编号',
-				runStatus: '状态',
-				actualRunTime: '额定运行时间',
-				startTime: '开始时间',
-				runTime: '运行时间',
-				endTime: '结束时间',
-				createUserDesc: '操作人'
-			}
-		},
-		// 表单数据名称
-		form: {
-			positionName: '位置名称',
-			relationStorage: '关联库位',
-			isLock: '是否锁定',
-			pointId: '点位ID',
-			selectLink: '选择线边库货架',
-			userTime: '额定使用寿命',
-			warninhTime: '报警寿命',
-			userNums: '额定使用次数',
-			warninhNums: '报警次数',
-			prority: '优先级',
-			workTime: '加工时间',
-			pg: '程序',
-			pgNo: '程序编号',
-			pgName: '程序名称',
-			pgVision: '版本号',
-			pgEq: '适合设备',
-			pgUpload: '上传程序',
-			pgTime: '运行时间',
-			pgSize: '程序大小',
-			pgContent: '程序内容',
-			pgTool: '刀具',
-			workbench_num: '工作台数量',
-			hand_num: '手臂数量',
-			cache_storge_num: '缓存库数量',
-			max_speed: '最大移动速度',
-			tray_num: '可放子盘数量',
-			arm: '手抓',
-			armName: '手抓名称',
-      target_resource: '目标设备',
-			rouJiagong: '产线类型'
-		},
-		// 表单验证规则提示信息
-		rules: {
-		},
-		// 提示或者显示信息
-		tips:{
-			tongbTips: '同步成功!',
-			zhixingTips: '执行程序成功!',
-			areaTips: '删除区域管理数据后,会将区域管理数据全部删除,确认删除?',
-			fileTips: '只能上传TEXT文件!',
-			deletePg: '是否【从设备删除】数据,确认删除?',
-			zxTips: '是否【执行程序】数据,确认执行?',
-			taskTips: '删除程序执行任务数据后,会将程序执行任务数据全部删除,确认删除?',
-			resourTips: '删除生产资源数据后,会将生产资源数据全部删除,确认删除?',
-			hardware: '该硬件不需要配置!'
-		}
-	}
-}
+/**************** 【生产資源中心】菜单  **************/
+export default {
+	resource: {
+		// 本模型下的共通
+		common: {
+			aduio: '审核产品',
+			selectAdd: '选择设备',
+			peizhi: '生产资源配置',
+			toolList: '刀具列表',
+			programList: '程序列表',
+			jiankong: '监控方式',
+			setJiankong: '设置监控',
+			jiankongRecord: '监控记录',
+			noJiank: '无监控',
+			jiankongTime: '监控使用寿命',
+			jiankongNums: '监控使用次数',
+			seconds: '分钟',
+			nums: '次',
+			mimm: 'm/s',
+			jichuang: '机床',
+			jxsbi: '机械手臂',
+			agv: 'AGV',
+			users: '使用',
+			history: '历史',
+			eqDelete: '从设备删除',
+			zhixingPg: '执行程序',
+			maxWorkHours: '小时',
+			displayStatus: '是否显示',
+			stopTaskHours: '小时(不派任务)',
+			eqCenter: {
+				allCount: '设备总数',
+				supervisionCount: '系统监管',
+				independentCount: '独立运行',
+				onlineCount: '在线',
+				offlineCount: '离线',
+				workCount: '生产中',
+				freeCount: '空闲',
+				waitCount: '等待配送资源',
+				exceptionCount: '异常',
+				anArea: '按产线',
+				anType: '按分类',
+				waitTask: '待完成任务',
+				detail: '详情',
+				geKuwei: '个库位'
+			}
+		},
+		// 列表搜索表单名称
+		searchForm: {
+			programName: '产品名称',
+			startEndTime: '时间',
+			guige: '规格',
+			xinghao: '型号',
+			jichuang: '所在机床',
+			resourceName: '资源名称',
+			linkStatus: '在线状态',
+			eqName: '设备名称',
+			name: '名称',
+			no: '编号',
+			isCNC: '包含CNC程序',
+			isDao: '包含刀具库',
+			idJindu: '具备进度条',
+			isStatus: '具备状态',
+			isProStaus: '产线控制状态',
+			maxTime: '每日最多加工',
+			baoyang: '临近保养',
+			isAutoCode: '是否工序设备'
+		},
+		// 按钮的名称
+	  	buttons: {
+	  		equipment: '设备管理',
+	  		position: '设备位置管理',
+	  		setBtn: '设置控制状态',
+	  		work: '工作位置管理',
+	  		setting: '配置',
+	  		hardware: '硬件配置',
+	  		linkLine: '关联边线库',
+	  		tongbu: '同步刀具',
+	  		tongbEq: '同步到设备',
+	  		tongbSk: '同步数控程序',
+        upload: '上传程序',
+			mode:  '模式',
+			autoCode: '设备业务自动化节点',
+			detailConf: '详情配置'
+	  	},
+	  	// 列表的cell名称
+		table: {
+			// 【生产单元管理】列表table字段名称
+			area: {
+				no: '编号',
+				name: '产线名称',
+				nums: '资源数量',
+				layoutMap: '布局图',
+				resources: '包含生产资源',
+				mode: '产线模式',
+				remark: '备注',
+				status: '启用状态',
+				createUser: '操作人',
+				updateTime: '修改时间'
+			},
+			// 【设备管理】列表table字段名称
+			equipment: {
+				no: '编号',
+				pic: '主图',
+				name: '设备名称',
+				brand: '品牌',
+				specification: '规格',
+				model: '型号',
+			},
+			// 【选择设备】列表table字段名称
+			selectQm: {
+				no: '编号',
+				pic: '主图',
+				name: '设备名称',
+				brand: '品牌',
+				specification: '规格',
+				model: '型号',
+				zoneName: '已被选的生产单元',
+			},
+			// 【生产资源管理】列表table字段名称
+			resours: {
+				no: '编号',
+				pic: '主图',
+				name: '设备名称',
+				brand: '品牌',
+				specification: '规格',
+				resourceBusinessId: '设备业务',
+				capitalNo: '资产编号',
+			    capitalName: '资产名称',
+				capitalType: '资产类别',
+			    modeSpecification: '型号规格',
+				capitalPrice: '资产原值',
+				productionDate: '出厂年月',
+				productionNo: '出厂编号',
+				manufacturer: '制造厂家',
+				model: '型号',
+				category: '分类',
+				zoneName: '所属产线',
+        programSynTime: '同步时间',
+        programNum: '程序数量',
+				nums: '工作位置数量',
+				isProgram: '是否需要程序',
+				linkStatus: "连接状态",
+				controlStatus: '控制状态',
+				productionStatus: '生产状态'
+			},
+      //【维保计划管理】列表table字段名称
+      repair:{
+			  select:'选择设备',
+			  code: '设备编号',
+        productionresourceName: '设备名称',
+        lineDesc: '所在产线',
+        countdown: '维修倒计时进度',
+        repairStartTime: '维保开始时间',
+        repairEndTime: '下次维保时间',
+        repairStatus: '维修状态',
+        status: '启用状态',
+        createUserDesc: '操作人',
+        weight:'排序',
+        createTime: '创建时间',
+        updateTime: '更新时间',
+        remark: '备注',
+        maintenanceTime: '维保日期',
+        maintenanceContent: '维保内容',
+        maintenanceStatus: '维保后设备状态',
+        maintenanceUser: '维保人',
+        maintenanceCreateTime: '提交日期',
+
+      },
+			// 【设备位置管理】列表table字段名称
+			eqPosition: {
+				no: '位置编号',
+				name: '名称',
+				pointId: '点位ID',
+				status: '锁定状态'
+			},
+			// 【设备刀具管理-设备列表】列表table字段名称
+			eqList: {
+				name: '设备名称',
+				name2: '设备编号',
+				name3: '设备类似',
+				name4: '所属生产单元',
+				name5: '设备连接状态',
+				name6: '同步时间',
+				name7: '刀库刀具数量'
+			},
+			// 【设备刀具管理-刀具列表】列表table字段名称
+			toolList: {
+				specification: '刀具规格',
+				model: '型号',
+				brand: '品牌',
+				no: '刀库刀具编号',
+				stopBits: '停止位',
+				useStatus: '使用状态',
+				monitorWay: '监控方式',
+				rateUseLife: '额定使用寿命/次',
+				leftUseLife: '剩余使用次数/次',
+				warnLimit: '预警极限',
+				synTime: '同步时间'
+			},
+			// 【设备刀具管理-监控记录】列表table字段名称
+			jkRecord: {
+				rateUseLife: '额定使用寿命/次',
+				leftUseLife: '剩余使用寿命/次',
+				warnLimit: '预警极限',
+				synTime: '同步时间'
+			},
+			// 【程序中心-本地库】列表table字段名称
+			program: {
+				no: '程序编号',
+				name: '程序名称',
+				runTime: '运行时间',
+				size: '大小',
+				toolNums: '刀具数量',
+				version: '版本',
+				status: '状态',
+        synTime: '同步时间'
+			},
+			// 【程序中心-新增-刀具】列表table字段名称
+			programTool: {
+				specification: '刀具规格',
+				model: '型号',
+				brand: '品牌',
+				usageTime: '使用时间',
+				duration: '持续时间'
+			},
+			// 【程序管理】列表table字段名称
+			pgMgr: {
+				bomName: '产品',
+				version: '工艺版本号',
+				procedureNo: '工序号',
+				resourceName: '设备名称',
+				programName: '程序名称',
+				runTime: '运行时长',
+				createTime: '新增时间',
+				updateTime: '更新时间',
+				createUserDesc: '操作'
+			},
+			// 【程序执行任务】列表table字段名称
+			pgTask: {
+				programNo: '程序编号',
+				programName: '程序名称',
+				version: '版本号',
+				resourceName: '设备名称',
+				resourceCode: '设备编号',
+				runStatus: '状态',
+				actualRunTime: '额定运行时间',
+				startTime: '开始时间',
+				runTime: '运行时间',
+				endTime: '结束时间',
+				createUserDesc: '操作人'
+			}
+		},
+		// 表单数据名称
+		form: {
+			positionName: '位置名称',
+			relationStorage: '关联库位',
+			isLock: '是否锁定',
+			pointId: '点位ID',
+			selectLink: '选择线边库货架',
+			userTime: '额定使用寿命',
+			warninhTime: '报警寿命',
+			userNums: '额定使用次数',
+			warninhNums: '报警次数',
+			prority: '优先级',
+			workTime: '加工时间',
+			pg: '程序',
+			pgNo: '程序编号',
+			pgName: '程序名称',
+			pgVision: '版本号',
+			pgEq: '适合设备',
+			pgUpload: '上传程序',
+			pgTime: '运行时间',
+			pgSize: '程序大小',
+			pgContent: '程序内容',
+			pgTool: '刀具',
+			workbench_num: '工作台数量',
+			hand_num: '手臂数量',
+			cache_storge_num: '缓存库数量',
+			max_speed: '最大移动速度',
+			tray_num: '可放子盘数量',
+			arm: '手抓',
+			armName: '手抓名称',
+      target_resource: '目标设备',
+			rouJiagong: '产线类型'
+		},
+		// 表单验证规则提示信息
+		rules: {
+		},
+		// 提示或者显示信息
+		tips:{
+			tongbTips: '同步成功!',
+			zhixingTips: '执行程序成功!',
+			areaTips: '删除区域管理数据后,会将区域管理数据全部删除,确认删除?',
+			fileTips: '只能上传TEXT文件!',
+			deletePg: '是否【从设备删除】数据,确认删除?',
+			zxTips: '是否【执行程序】数据,确认执行?',
+			taskTips: '删除程序执行任务数据后,会将程序执行任务数据全部删除,确认删除?',
+			resourTips: '删除生产资源数据后,会将生产资源数据全部删除,确认删除?',
+			hardware: '该硬件不需要配置!'
+		}
+	}
+}

+ 48 - 48
imcs-ui/src/lang/zh/statisticalAnalysis.js

@@ -1,48 +1,48 @@
-/***************************【统计分析】***********************************/
-export default {
-  statisticalAnalysis: {
-    // 本模型下的共通
-    common: {
-    },
-    // 列表搜索表单名称
-    searchForm: {
-      agvAvailability: {
-        statisticalDate: '日期',
-      },
-    },
-    // 按钮的名称
-    buttons: {
-      operatorPerformance: {
-        operatorPerformanceDetail: '查看人员工时详情'
-      }
-    },
-    // 列表的cell名称
-    table: {
-      // agv工时
-      agvAvailability: {
-        statisticalDate: '日期',
-        statisticalHours: '生产工时汇总(小时)',
-      },
-      // OEE
-      resouceOee: {
-      },
-      // 工时管理
-      operatorPerformance: {
-        productLine: '产线',
-        statisticalHours: '生产工时汇总(小时)',
-        statisticalDate: '月份',
-        operatorName: '姓名',
-        operatorDept: '部门',
-        operatorStatisticalHours: '生产工时汇总(小时)',
-        operatorStatisticalDate: '月份',
-      }
-    },
-    // 表单数据名称
-    form: {
-    },
-    // 表单验证规则提示信息
-    rules: {
-
-    }
-  }
-}
+/***************************【统计分析】***********************************/
+export default {
+  statisticalAnalysis: {
+    // 本模型下的共通
+    common: {
+    },
+    // 列表搜索表单名称
+    searchForm: {
+      agvAvailability: {
+        statisticalDate: '日期',
+      },
+    },
+    // 按钮的名称
+    buttons: {
+      operatorPerformance: {
+        operatorPerformanceDetail: '查看人员工时详情'
+      }
+    },
+    // 列表的cell名称
+    table: {
+      // agv工时
+      agvAvailability: {
+        statisticalDate: '日期',
+        statisticalHours: '生产工时汇总(小时)',
+      },
+      // OEE
+      resouceOee: {
+      },
+      // 工时管理
+      operatorPerformance: {
+        productLine: '产线',
+        statisticalHours: '生产工时汇总(小时)',
+        statisticalDate: '月份',
+        operatorName: '姓名',
+        operatorDept: '部门',
+        operatorStatisticalHours: '生产工时汇总(小时)',
+        operatorStatisticalDate: '月份',
+      }
+    },
+    // 表单数据名称
+    form: {
+    },
+    // 表单验证规则提示信息
+    rules: {
+
+    }
+  }
+}

+ 662 - 662
imcs-ui/src/lang/zh/zh.js

@@ -1,662 +1,662 @@
-// 【订单】
-import zhOrder from './order'
-// 【边线库管理】
-import zhLineSide from './lineSide'
-// 【建模中心】
-import zhModeling from './modeling'
-// 【生产准备中心】
-import zhPrepare from './prepare'
-// 【生产资源中心】
-import zhResource from './resource'
-// 【班表管理】
-import zhCalssSchedule from './calssSchedule'
-// 【基础配置】
-import zhBasicConfig from './basicConfig'
-// 【运行管理中心】
-import zhRunCenter from './runCenter'
-// 【机加工人端】
-import zhMachining from './machining'
-// 【仓储管理】
-import zhWms from './wmsMenu'
-// 【大屏相关】
-import zhLargeScreen from './largeScreen'
-// 【日志管理】
-import zhDeveloper from './developer'
-// 【打标码管理】
-import zhMarking from './marking'
-// 【打标码管理】
-import zhDispatch from './dispatch'
-// 【统计分析】
-import zhStatisticalAnalysis from './statisticalAnalysis'
-
-export default {
-	/********* 分类整理多语言文件(start)  ********/
-	...zhOrder,
-	...zhLineSide,
-	...zhModeling,
-	...zhPrepare,
-	...zhResource,
-	...zhCalssSchedule,
-	...zhBasicConfig,
-	...zhRunCenter,
-	...zhMachining,
-	...zhLargeScreen,
-  ...zhWms,
-  ...zhDeveloper,
-  ...zhMarking,
-  ...zhDispatch,
-  ...zhStatisticalAnalysis,
-	/********* 分类整理多语言文件(end)  ********/
-  	route: {
-    	dashboard: '系统主页',
-    	profile: '个人中心'
-  	},
-  	navbar: {
-	    setting: '系统设置',
-	    github: '项目地址',
-	    logOut: '退出登录',
-	    profile: '个人中心',
-	    docs: '项目文档',
-	    theme: '换肤',
-	    size: '布局大小',
-	    deleteCache: '清除缓存'
-  	},
-  	index: {   // 首页的语言
-  		normalTenant: '在线生产资源数量/总数',
-  		frozenTenant: '待生产订单',
-  		lineNum: '待完成计划',
-  		resourceNum: '待完成任务',
-  		runTimeStatics: '企产线任务完成量统计',
-  		resourceTime: '产线生产资源任务完成量排行',
-  		comBtn: '常用功能',
-  		loginInfo: '登录监控',
-  		tips: '选择不超过30天!',
-  		dates: {
-  			day: '今日',
-  			week: '本周',
-  			month: '本月',
-  			year: '全年'
-  		},
-  		table: {
-  			userName: '名称',
-  			requestIp: 'IP',
-  			createTime: '时间'
-  		}
-  	},
-  	login: {
-	    title: '企业端登录',
-	    logIn: '立即登录',
-	    tenant: '企业',
-	    username: '账号',
-	    password: '密码',
-	    code: '验证码',
-	    ortherLoginType: '其他登录方式',
-	    chooseToSignIn: '选择以下账号登录:',
-	    type: {
-	      up: '账号密码登录',
-	      social: '第三方账号登录'
-	    },
-	    shuoming: {
-	    	title: '智能总控系统-企业端',
-	    	tips: 'IMCS-ECS'
-	    }
-  	},
-  documentation: {
-    documentation: '项目文档',
-    github: '项目地址'
-  },
-  table: {
-    blockList: {
-      id: 'ID',
-      ip: '阻止访问ip',
-      requestUri: '请求URI',
-      requestMethod: '请求方法',
-      limitStart: '限制时间起',
-      limitEnd: '限制时间止',
-      status: '状态',
-      location: '位置',
-    },
-    rateLimiter: {
-      id: 'ID',
-      count: '次数',
-      requestUri: '请求URI',
-      requestMethod: '请求方法',
-      limitStart: '限制时间起',
-      limitEnd: '限制时间止',
-      status: '状态',
-      intervalSec: '时间窗口',
-    },
-    tenant: {
-      code: '企业编码',
-      name: '企业名称',
-      type: '类型',
-      status: '状态',
-      duty: '责任人',
-      expirationTime: '有效期',
-      logo: 'logo',
-      describe: '企业简介',
-      passwordExpire: '密码有效期',
-      isMultipleLogin: '是否允许多地登录',
-      passwordErrorNum: '密码输错次数',
-      passwordErrorLockTime: '账号锁定时间'
-    },
-    user: {
-      account: '账号',
-      name: '姓名',
-      password: '密码',
-      orgId: '组织',
-      stationId: '岗位',
-      email: '邮箱',
-      sex: '性别',
-      status: '状态',
-      mobile: '电话',
-      avatar: '头像',
-      workDescribe: '个人描述',
-      passwordErrorLastTime: '最后一次输错密码时间',
-      passwordErrorNum: '密码错误次数',
-      passwordExpireTime: '密码过期时间',
-      lastLoginTime: '最后登录时间',
-      nation: '民族',
-      education: '学历',
-      positionStatus: '职位状态',
-      createTime: '创建时间',
-      updateTime: '修改时间',
-      oldPassword: '旧密码',
-      newPassword: '新密码',
-      confirmPassword: '确认密码',
-      social: '第三方账号'
-    },
-    role: {
-      code: '编码',
-      name: '角色名称',
-      describe: '角色描述',
-      status: '状态',
-      readonly: '是否内置',
-      createTime: '创建时间',
-      dsType: '数据范围',
-      orgList: '组织'
-    },
-    menu: {
-      id: 'ID',
-      label: '名称',
-      describe: '描述',
-      code: '权限编码',
-      isPublic: '是否公有',
-      path: '路由URI',
-      type: '类型',
-      component: '组件',
-      isEnable: '是否启用',
-      sortValue: '排序',
-      parentId: '上级ID',
-      icon: '图标',
-      group: '分组'
-    },
-    resource: {
-      code: '编码',
-      name: '名称',
-      describe: '描述'
-    },
-    org: {
-      label: '部门名称',
-      abbreviation: '简称',
-      describe: '描述',
-      parentId: '上级ID',
-      sortValue: '排序',
-      status: '状态'
-    },
-    station: {
-      name: '岗位名称',
-      describe: '描述',
-      orgId: '组织',
-      status: '状态'
-    },
-    optLog: {
-      requestIp: 'IP',
-      type: '类型',
-      userName: '操作人',
-      description: '操作描述',
-      classPath: '类路径',
-      actionMethod: '请求方法',
-      requestUri: '请求地址',
-      httpMethod: '请求类型',
-      params: '方法参数',
-      result: '返回值',
-      exDesc: '异常详情信息',
-      consumingTime: '消耗时间',
-      startTime: '开始时间',
-      finishTime: '完成时间',
-      ua: '浏览器请求头'
-    },
-    loginLog: {
-      userName: '姓名',
-      account: '账号',
-      requestIp: 'IP',
-      description: '描述',
-      loginDate: '登录时间',
-      ua: '浏览器请求头',
-      browser: '浏览器',
-      browserVersion: '浏览器版本',
-      operatingSystem: '操作系统',
-      location: '地区'
-    },
-    attachment: {
-      bizId: '业务ID',
-      bizType: '业务类型',
-      dataType: '数据类型',
-      submittedFileName: '文件名',
-      group: '组',
-      path: '路径',
-      relativePath: '相对路径',
-      url: '访问链接',
-      fileMd5: 'md5',
-      contextType: '类型',
-      filename: '唯一文件名',
-      ext: '后缀',
-      size: '大小',
-      orgId: '组织',
-      icon: '图标'
-    },
-    smsTemplate: {
-      providerType: '类型',
-      appId: '应用ID',
-      appSecret: '应用密码',
-      url: 'SMS服务域名',
-      customCode: '模板编码',
-      name: '模板名称',
-      content: '模板内容',
-      templateParams: '模板参数',
-      templateCode: '模板CODE',
-      signName: '模板签名',
-      templateDescribe: '模板描述'
-    },
-    smsTask: {
-      templateId: '短信模板',
-      status: '执行状态',
-      sourceType: '来源类型',
-      receiver: '接收者',
-      topic: '主题',
-      templateParams: '模板参数',
-      sendTime: '发送时间',
-      content: '发送内容',
-      draft: '是否草稿'
-    },
-    smsSendStatus: {
-      taskId: '任务',
-      sendStatus: '发送状态',
-      receiver: '接收者手机号',
-      bizId: '发送回执',
-      ext: '发送返回',
-      code: '状态码',
-      message: '状态码的描述',
-      fee: '计费条数'
-    },
-    msgs: {
-      bizType: '业务类型',
-      bizId: '业务ID',
-      msgsCenterType: '消息类型',
-      title: '标题',
-      content: '内容',
-      author: '作者',
-      handlerUrl: '处理地址',
-      handlerParams: '处理参数',
-      isSingleHandle: '是否单人处理',
-      isDelete: '是否删除',
-      isRead: '状态',
-      readTime: '读消息的时间'
-    },
-    systemApi: {
-      code: "接口编码",
-      name: "接口名称",
-      describe: "资源描述",
-      requestMethod: "请求方式",
-      contentType: "响应类型",
-      serviceId: "服务ID",
-      path: "请求路径",
-      status: "状态",
-      isPersist: "保留数据",
-      isAuth: "是否需要认证",
-      isOpen: "是否公开",
-      className: "类名",
-      methodName: "方法名"
-    },
-    application: {
-      clientId: "clientId",
-      clientSecret: "clientSecret",
-      website: "官网",
-      name: "应用名称",
-      icon: "应用图标",
-      appType: "类型",
-      describe: "备注",
-      status: "状态"
-    },
-    dictionary: {
-      type: "类型",
-      name: "名称",
-      describe: "描述",
-      status: "状态"
-    },
-    dictionaryItem: {
-      dictionaryId: "字典ID",
-      dictionaryType: "类型",
-      code: "编码",
-      name: "名称",
-      describe: "描述",
-      status: "状态",
-      sortValue: "排序"
-    },
-    area: {
-      code: "编码",
-      label: "名称",
-      fullName: '全名',
-      sortValue: '排序',
-      longitude: '经度',
-      latitude: '维度',
-      level: "行政区级",
-      parentCode: '父编码',
-      parentId: '上级地区',
-      source: '数据来源'
-    },
-    parameter: {
-      key: "参数键",
-      name: "参数名称",
-      value: '参数值',
-      describe: '描述',
-      status: '状态',
-      readonly: '只读'
-    },
-    gen: {
-      config: {
-        author: '作者名称',
-        basePackage: '基础包名',
-        entityPackage: 'entity包名',
-        mapperPackage: 'mapper包名',
-        mapperXmlPackage: 'mapperXml包名',
-        servicePackage: 'service包名',
-        serviceImplPackage: 'serviceImpl包名',
-        controllerPackage: 'controller包名',
-        isTrim: '是否去除表前缀',
-        trimValue: '表前缀'
-      },
-      generate: {
-        tableName: '表名',
-        remark: '备注',
-        dataRows: '数据量(行)',
-        createTime: '创建时间',
-        updateTime: '更新时间'
-      }
-    },
-    eximport: {
-      field1: '字段1',
-      field2: '字段2',
-      field3: '字段3',
-      createTime: '导入时间'
-    },
-    update: '更新',
-    status: '状态',
-    refresh: '刷新',
-    operation: '操作',
-    assistOperation: '辅佐操作',
-    search: '搜索',
-    reset: '重置',
-    more: '更多',
-    add: '添加',
-    export: '导出',
-    exportPreview: '导出预览',
-    import: '导入',
-    upload: '上传',
-    download: '下载',
-    templateDownload: '模板下载',
-    delete: '删除',
-    resetPassword: '密码重置',
-    openInNewPage: '新页面打开',
-    createTime: '创建时间',
-    updateTime: '修改时间'
-  },
-  tagsView: {
-    refresh: '刷新当前',
-    close: '关闭当前',
-    closeOthers: '关闭其它',
-    closeAll: '关闭所有'
-  },
-  settings: {
-    title: '系统布局配置',
-    theme: '主题色',
-    tagsView: '开启 Tags-View',
-    fixedHeader: '固定 Header',
-    sidebarLogo: '侧边栏 Logo'
-  },
-  system: {
-    title: '智能总控端'
-  },
-  tips: {
-  	audioTips: '你确定提交审核?',
-    storage: '你确定提交入库?',
-  	comTips: '删除数据后,将会消失,您的努力将白费,请确认删除?',
-    systemError: '系统维护中,请稍微再试~',
-    usernameShouldNotBeEmpty: '用户名不能为空',
-    passwordShouldNotBeEmpty: '密码不能为空',
-    switchLanguageSuccess: '切换语言成功',
-    loginSuccess: '登录成功',
-    loginFail: '登录失败',
-    defaultPassword: '用户的默认密码为123456',
-    getDataFail: '获取数据失败',
-    createSuccess: '新增成功',
-    lockSuccess: '锁定成功!',
-    unlockSuccess: '解锁成功!',
-    copySelected: '复制成功',
-    updateSuccess: '修改成功',
-    deleteSuccess: '删除成功',
-    noDataSelected: '请先选择需要操作的数据',
-    confirmDelete: '选中数据将被永久删除, 是否继续?',
-    confirmDeleteCache: '是否立即清除用户权限缓存?',
-    containCurrentUser: '包含当前登录用户,操作已取消',
-    neverLogin: '从未登录过系统',
-    nothing: '这家伙很懒,什么都没留下',
-    topId: '值为0时表示顶级节点',
-    choose: '已选择:',
-    chooseNothing: '尚未选择任何图标',
-    onlyChooseOne: '只能选择一个节点作为父节点',
-    noNodeSelected: '请先选择节点',
-    confirmDeleteNode: '选中节点及其子结点将被永久删除, 是否继续?',
-    iframeGrant: '用户名:zuihou 密码:zuihou',
-    notEqual: '两次输入不一致',
-    oldPasswordIncorrect: '原密码不正确',
-    uploadSuccess: '上传成功',
-    uploadFailed: '上传失败',
-    onlySupportXlsx: '只支持Xlsx类型文件',
-    updating: '修改中',
-    updateFailed: '修改失败',
-    noPermission: '无权限',
-    confirmRestPassword: '确定重置所选用户密码?',
-    resetPasswordSuccess: '所选用户密码重置已被重置为123456',
-    getCodeImageFailed: '获取图形验证码失败',
-    tooManyRequest: '获取验证码过于频繁,请1分钟后再试',
-    clientOriginSecret: '该客户端原始密码为:',
-    unSelected: '请至少选择一条数据!',
-    mustOne: '请只能选择一条数据!',
-    frozen: '冻结成功!',
-    enable: '启用成功!',
-    numberTips: '不超过100个字符。',
-    optionSuccess: '操作成功!'
-  },
-  rules: {
-    require: '不能为空',
-    range0to255: '长度在 0 到 255 个字符',
-    range2to10: '长度在 2 到 10 个字符',
-    range3to10: '长度在 3 到 10 个字符',
-    range3to20: '长度在 3 到 20 个字符',
-    range4to10: '长度在 4 到 10 个字符',
-    range6to20: '长度在 6 到 20 个字符',
-    email: '请输入正确的邮箱地址',
-    mobile: '请输入合法的手机号',
-    usernameExist: '该用户名已存在',
-    clientIdExist: '该Client ID已存在',
-    roleNameExist: '该角色名称已存在',
-    noMoreThan10: '长度不能超过10个字符',
-    noMoreThan11: '长度不能超过11个字符',
-    noMoreThan20: '长度不能超过20个字符',
-    noMoreThan50: '长度不能超过50个字符',
-    noMoreThan100: '长度不能超过100个字符',
-    invalidInteger: '请输入大于零的整数',
-    invalidURL: '不是有效的URL',
-    fields: '请输入正确的字段标志符!'
-  },
-  common: {
-  	save: '保存',
-    system: 'SaaS型微服务快速开发平台',
-    desc: {
-      a: '基于SpringBoot 2.2.9 & SpringCloud Hoxton.SR7',
-      b: '使用Jwt自定义统一认证',
-      c: '企业级设计和配置,拒绝demo项目',
-      d: '前后端分离架构,提高软件开发效率',
-      e: '集成多种监控,为微服务保驾护航',
-      f: '提供详细的文档&视频教程,手把手教你从零搭建到部署'
-    },
-    date: {
-    	year: '年',
-    	month: '月',
-    	day: '日',
-    	sun: '星期天'
-    },
-    files: {
-    	noFile: '未上传',
-    	yesFile: '已上传'
-    },
-    timeArea: {
-    	lastWeek: '最近一周',
-    	lastMonth: '最近一个月',
-    	lastThreeMonth: '最近三个月'
-    },
-    individual: '个',
-    uploadImg: '上传图片',
-    view: '查看',
-    tips: '提示',
-    clear: '清除',
-    confirm: '确定',
-    cancel: '取消',
-    add: '新增',
-    edit: '修改',
-    delete: '删除',
-	search: '搜索',
-	reset: '重置',
-	colse: '关闭',
-    copy: '复制',
-    upload: '上传',
-    preview: '预览',
-    setting: '设置',
-    execute: '执行',
-    toViod: '作废',
-    sort: '排序',
-    pleaseEnter: '请输入',
-    pleaseSelect: '请选择',
-    separator: '至',
-    startTime: '开始日期',
-    endTime: '结束日期',
-    serialNo: '序号',
-    show: '显示',
-    hide: '隐藏',
-    frozen: '冻结',
-    yes: '是',
-    no: '否',
-    lock: '锁定',
-    unlock: '未锁定',
-    readonly: '只读',
-    readCreate: '读写',
-    noData: '暂无数据',
-    vision: '版本号',
-    remark: '备注',
-    selected: '选择',
-    weight: '权重',
-    audio: {
-    	type: '审核状态',
-    	add: '新增',
-    	addAudio: '提交审核',
-    	addAudioTips: '提交审核成功!',
-    	audio: '审核',
-    	daiAudio: '待审核',
-    	audioOk: '审核通过',
-    	aduioFail: '审核不通过'
-    },
-    adopt: {
-    	adopt: '通过',
-    	unadopt: '不通过'
-    },
-    qualified: {
-    	qualified: '合格',
-    	unqualified: '不合格',
-    },
-    sex: {
-      male: '男性',
-      female: '女性',
-      secret: '保密'
-    },
-    status: {
-    	init: '状态',
-      	valid: '启用',
-      	invalid: '禁用',
-      	stop: '暂停',
-      	start: '开始'
-    },
-    menu: {
-      menu: '菜单',
-      button: '按钮'
-    },
-    tab: {
-      common: '通用类',
-      directivity: '指向性',
-      solid: '填充类',
-      food: '食品类'
-    },
-    aboutMe: '关于我',
-    changeAvatar: '更换头像',
-    lastLoginTime: '上次登录时间',
-    goodMorning: '早上好',
-    goodAfternoon: '下午好',
-    goodEvening: '晚上好',
-    randomMessage: {
-      0: '帮我帮我帮我帮我帮我帮我帮我',
-      1: '喝杯咖啡休息下吧☕',
-      2: '要不要和朋友打局LOL',
-      3: '今天又写了几个Bug🐞呢',
-      4: '今天在群里吹水了吗',
-      5: '今天吃了什么好吃的呢',
-      6: '今天您微笑了吗😊',
-      7: '今天帮别人解决问题了吗',
-      8: '准备吃些什么呢',
-      9: '周末要不要去看电影?'
-    },
-    docDetails: '了解更多',
-    allProject: '所有项目',
-    noEmail: '暂无邮箱',
-    noMobile: '暂无手机',
-    noDept: '暂无部门',
-    noRole: '暂无角色',
-    noWorkDescribe: '这家伙很懒,什么也没留下~',
-    firstLogin: '第一次登录系统',
-    todayIp: '今日IP',
-    todayVisit: '今日访问',
-    TotalVisit: '总访问量',
-    you: '您',
-    total: '总数',
-    visitTitle: '近十天系统访问记录',
-    timeline: '登录时间',
-    account: '账号信息',
-    password: '个人密码',
-    importResult: '导入结果',
-    hthz: '后田花子',
-    al: '阿里系',
-    lm: '脸萌',
-    ctc: '点击选择',
-    pleaseInputUrl: '请输入URL',
-    bind: '绑定',
-    unbind: '解绑',
-    confirmUnbind: '确定解绑该第三方账号?',
-    unbindSuccess: '解绑成功',
-    bindSuccess: '绑定成功',
-    bindLogin: '绑定并登录',
-    signLogin: '注册并登录',
-    current: '当前',
-    socialAccount: '账号',
-    socialTips: '尚未绑定任何系统账户,您可以绑定系统账户或者注册一个新的账户并绑定。'
-  }
-}
+// 【订单】
+import zhOrder from './order'
+// 【边线库管理】
+import zhLineSide from './lineSide'
+// 【建模中心】
+import zhModeling from './modeling'
+// 【生产准备中心】
+import zhPrepare from './prepare'
+// 【生产资源中心】
+import zhResource from './resource'
+// 【班表管理】
+import zhCalssSchedule from './calssSchedule'
+// 【基础配置】
+import zhBasicConfig from './basicConfig'
+// 【运行管理中心】
+import zhRunCenter from './runCenter'
+// 【机加工人端】
+import zhMachining from './machining'
+// 【仓储管理】
+import zhWms from './wmsMenu'
+// 【大屏相关】
+import zhLargeScreen from './largeScreen'
+// 【日志管理】
+import zhDeveloper from './developer'
+// 【打标码管理】
+import zhMarking from './marking'
+// 【打标码管理】
+import zhDispatch from './dispatch'
+// 【统计分析】
+import zhStatisticalAnalysis from './statisticalAnalysis'
+
+export default {
+	/********* 分类整理多语言文件(start)  ********/
+	...zhOrder,
+	...zhLineSide,
+	...zhModeling,
+	...zhPrepare,
+	...zhResource,
+	...zhCalssSchedule,
+	...zhBasicConfig,
+	...zhRunCenter,
+	...zhMachining,
+	...zhLargeScreen,
+  ...zhWms,
+  ...zhDeveloper,
+  ...zhMarking,
+  ...zhDispatch,
+  ...zhStatisticalAnalysis,
+	/********* 分类整理多语言文件(end)  ********/
+  	route: {
+    	dashboard: '系统主页',
+    	profile: '个人中心'
+  	},
+  	navbar: {
+	    setting: '系统设置',
+	    github: '项目地址',
+	    logOut: '退出登录',
+	    profile: '个人中心',
+	    docs: '项目文档',
+	    theme: '换肤',
+	    size: '布局大小',
+	    deleteCache: '清除缓存'
+  	},
+  	index: {   // 首页的语言
+  		normalTenant: '在线生产资源数量/总数',
+  		frozenTenant: '待生产订单',
+  		lineNum: '待完成计划',
+  		resourceNum: '待完成任务',
+  		runTimeStatics: '企产线任务完成量统计',
+  		resourceTime: '产线生产资源任务完成量排行',
+  		comBtn: '常用功能',
+  		loginInfo: '登录监控',
+  		tips: '选择不超过30天!',
+  		dates: {
+  			day: '今日',
+  			week: '本周',
+  			month: '本月',
+  			year: '全年'
+  		},
+  		table: {
+  			userName: '名称',
+  			requestIp: 'IP',
+  			createTime: '时间'
+  		}
+  	},
+  	login: {
+	    title: '企业端登录',
+	    logIn: '立即登录',
+	    tenant: '企业',
+	    username: '账号',
+	    password: '密码',
+	    code: '验证码',
+	    ortherLoginType: '其他登录方式',
+	    chooseToSignIn: '选择以下账号登录:',
+	    type: {
+	      up: '账号密码登录',
+	      social: '第三方账号登录'
+	    },
+	    shuoming: {
+	    	title: '智能总控系统-企业端',
+	    	tips: 'IMCS-ECS'
+	    }
+  	},
+  documentation: {
+    documentation: '项目文档',
+    github: '项目地址'
+  },
+  table: {
+    blockList: {
+      id: 'ID',
+      ip: '阻止访问ip',
+      requestUri: '请求URI',
+      requestMethod: '请求方法',
+      limitStart: '限制时间起',
+      limitEnd: '限制时间止',
+      status: '状态',
+      location: '位置',
+    },
+    rateLimiter: {
+      id: 'ID',
+      count: '次数',
+      requestUri: '请求URI',
+      requestMethod: '请求方法',
+      limitStart: '限制时间起',
+      limitEnd: '限制时间止',
+      status: '状态',
+      intervalSec: '时间窗口',
+    },
+    tenant: {
+      code: '企业编码',
+      name: '企业名称',
+      type: '类型',
+      status: '状态',
+      duty: '责任人',
+      expirationTime: '有效期',
+      logo: 'logo',
+      describe: '企业简介',
+      passwordExpire: '密码有效期',
+      isMultipleLogin: '是否允许多地登录',
+      passwordErrorNum: '密码输错次数',
+      passwordErrorLockTime: '账号锁定时间'
+    },
+    user: {
+      account: '账号',
+      name: '姓名',
+      password: '密码',
+      orgId: '组织',
+      stationId: '岗位',
+      email: '邮箱',
+      sex: '性别',
+      status: '状态',
+      mobile: '电话',
+      avatar: '头像',
+      workDescribe: '个人描述',
+      passwordErrorLastTime: '最后一次输错密码时间',
+      passwordErrorNum: '密码错误次数',
+      passwordExpireTime: '密码过期时间',
+      lastLoginTime: '最后登录时间',
+      nation: '民族',
+      education: '学历',
+      positionStatus: '职位状态',
+      createTime: '创建时间',
+      updateTime: '修改时间',
+      oldPassword: '旧密码',
+      newPassword: '新密码',
+      confirmPassword: '确认密码',
+      social: '第三方账号'
+    },
+    role: {
+      code: '编码',
+      name: '角色名称',
+      describe: '角色描述',
+      status: '状态',
+      readonly: '是否内置',
+      createTime: '创建时间',
+      dsType: '数据范围',
+      orgList: '组织'
+    },
+    menu: {
+      id: 'ID',
+      label: '名称',
+      describe: '描述',
+      code: '权限编码',
+      isPublic: '是否公有',
+      path: '路由URI',
+      type: '类型',
+      component: '组件',
+      isEnable: '是否启用',
+      sortValue: '排序',
+      parentId: '上级ID',
+      icon: '图标',
+      group: '分组'
+    },
+    resource: {
+      code: '编码',
+      name: '名称',
+      describe: '描述'
+    },
+    org: {
+      label: '部门名称',
+      abbreviation: '简称',
+      describe: '描述',
+      parentId: '上级ID',
+      sortValue: '排序',
+      status: '状态'
+    },
+    station: {
+      name: '岗位名称',
+      describe: '描述',
+      orgId: '组织',
+      status: '状态'
+    },
+    optLog: {
+      requestIp: 'IP',
+      type: '类型',
+      userName: '操作人',
+      description: '操作描述',
+      classPath: '类路径',
+      actionMethod: '请求方法',
+      requestUri: '请求地址',
+      httpMethod: '请求类型',
+      params: '方法参数',
+      result: '返回值',
+      exDesc: '异常详情信息',
+      consumingTime: '消耗时间',
+      startTime: '开始时间',
+      finishTime: '完成时间',
+      ua: '浏览器请求头'
+    },
+    loginLog: {
+      userName: '姓名',
+      account: '账号',
+      requestIp: 'IP',
+      description: '描述',
+      loginDate: '登录时间',
+      ua: '浏览器请求头',
+      browser: '浏览器',
+      browserVersion: '浏览器版本',
+      operatingSystem: '操作系统',
+      location: '地区'
+    },
+    attachment: {
+      bizId: '业务ID',
+      bizType: '业务类型',
+      dataType: '数据类型',
+      submittedFileName: '文件名',
+      group: '组',
+      path: '路径',
+      relativePath: '相对路径',
+      url: '访问链接',
+      fileMd5: 'md5',
+      contextType: '类型',
+      filename: '唯一文件名',
+      ext: '后缀',
+      size: '大小',
+      orgId: '组织',
+      icon: '图标'
+    },
+    smsTemplate: {
+      providerType: '类型',
+      appId: '应用ID',
+      appSecret: '应用密码',
+      url: 'SMS服务域名',
+      customCode: '模板编码',
+      name: '模板名称',
+      content: '模板内容',
+      templateParams: '模板参数',
+      templateCode: '模板CODE',
+      signName: '模板签名',
+      templateDescribe: '模板描述'
+    },
+    smsTask: {
+      templateId: '短信模板',
+      status: '执行状态',
+      sourceType: '来源类型',
+      receiver: '接收者',
+      topic: '主题',
+      templateParams: '模板参数',
+      sendTime: '发送时间',
+      content: '发送内容',
+      draft: '是否草稿'
+    },
+    smsSendStatus: {
+      taskId: '任务',
+      sendStatus: '发送状态',
+      receiver: '接收者手机号',
+      bizId: '发送回执',
+      ext: '发送返回',
+      code: '状态码',
+      message: '状态码的描述',
+      fee: '计费条数'
+    },
+    msgs: {
+      bizType: '业务类型',
+      bizId: '业务ID',
+      msgsCenterType: '消息类型',
+      title: '标题',
+      content: '内容',
+      author: '作者',
+      handlerUrl: '处理地址',
+      handlerParams: '处理参数',
+      isSingleHandle: '是否单人处理',
+      isDelete: '是否删除',
+      isRead: '状态',
+      readTime: '读消息的时间'
+    },
+    systemApi: {
+      code: "接口编码",
+      name: "接口名称",
+      describe: "资源描述",
+      requestMethod: "请求方式",
+      contentType: "响应类型",
+      serviceId: "服务ID",
+      path: "请求路径",
+      status: "状态",
+      isPersist: "保留数据",
+      isAuth: "是否需要认证",
+      isOpen: "是否公开",
+      className: "类名",
+      methodName: "方法名"
+    },
+    application: {
+      clientId: "clientId",
+      clientSecret: "clientSecret",
+      website: "官网",
+      name: "应用名称",
+      icon: "应用图标",
+      appType: "类型",
+      describe: "备注",
+      status: "状态"
+    },
+    dictionary: {
+      type: "类型",
+      name: "名称",
+      describe: "描述",
+      status: "状态"
+    },
+    dictionaryItem: {
+      dictionaryId: "字典ID",
+      dictionaryType: "类型",
+      code: "编码",
+      name: "名称",
+      describe: "描述",
+      status: "状态",
+      sortValue: "排序"
+    },
+    area: {
+      code: "编码",
+      label: "名称",
+      fullName: '全名',
+      sortValue: '排序',
+      longitude: '经度',
+      latitude: '维度',
+      level: "行政区级",
+      parentCode: '父编码',
+      parentId: '上级地区',
+      source: '数据来源'
+    },
+    parameter: {
+      key: "参数键",
+      name: "参数名称",
+      value: '参数值',
+      describe: '描述',
+      status: '状态',
+      readonly: '只读'
+    },
+    gen: {
+      config: {
+        author: '作者名称',
+        basePackage: '基础包名',
+        entityPackage: 'entity包名',
+        mapperPackage: 'mapper包名',
+        mapperXmlPackage: 'mapperXml包名',
+        servicePackage: 'service包名',
+        serviceImplPackage: 'serviceImpl包名',
+        controllerPackage: 'controller包名',
+        isTrim: '是否去除表前缀',
+        trimValue: '表前缀'
+      },
+      generate: {
+        tableName: '表名',
+        remark: '备注',
+        dataRows: '数据量(行)',
+        createTime: '创建时间',
+        updateTime: '更新时间'
+      }
+    },
+    eximport: {
+      field1: '字段1',
+      field2: '字段2',
+      field3: '字段3',
+      createTime: '导入时间'
+    },
+    update: '更新',
+    status: '状态',
+    refresh: '刷新',
+    operation: '操作',
+    assistOperation: '辅佐操作',
+    search: '搜索',
+    reset: '重置',
+    more: '更多',
+    add: '添加',
+    export: '导出',
+    exportPreview: '导出预览',
+    import: '导入',
+    upload: '上传',
+    download: '下载',
+    templateDownload: '模板下载',
+    delete: '删除',
+    resetPassword: '密码重置',
+    openInNewPage: '新页面打开',
+    createTime: '创建时间',
+    updateTime: '修改时间'
+  },
+  tagsView: {
+    refresh: '刷新当前',
+    close: '关闭当前',
+    closeOthers: '关闭其它',
+    closeAll: '关闭所有'
+  },
+  settings: {
+    title: '系统布局配置',
+    theme: '主题色',
+    tagsView: '开启 Tags-View',
+    fixedHeader: '固定 Header',
+    sidebarLogo: '侧边栏 Logo'
+  },
+  system: {
+    title: '智能总控端'
+  },
+  tips: {
+  	audioTips: '你确定提交审核?',
+    storage: '你确定提交入库?',
+  	comTips: '删除数据后,将会消失,您的努力将白费,请确认删除?',
+    systemError: '系统维护中,请稍微再试~',
+    usernameShouldNotBeEmpty: '用户名不能为空',
+    passwordShouldNotBeEmpty: '密码不能为空',
+    switchLanguageSuccess: '切换语言成功',
+    loginSuccess: '登录成功',
+    loginFail: '登录失败',
+    defaultPassword: '用户的默认密码为123456',
+    getDataFail: '获取数据失败',
+    createSuccess: '新增成功',
+    lockSuccess: '锁定成功!',
+    unlockSuccess: '解锁成功!',
+    copySelected: '复制成功',
+    updateSuccess: '修改成功',
+    deleteSuccess: '删除成功',
+    noDataSelected: '请先选择需要操作的数据',
+    confirmDelete: '选中数据将被永久删除, 是否继续?',
+    confirmDeleteCache: '是否立即清除用户权限缓存?',
+    containCurrentUser: '包含当前登录用户,操作已取消',
+    neverLogin: '从未登录过系统',
+    nothing: '这家伙很懒,什么都没留下',
+    topId: '值为0时表示顶级节点',
+    choose: '已选择:',
+    chooseNothing: '尚未选择任何图标',
+    onlyChooseOne: '只能选择一个节点作为父节点',
+    noNodeSelected: '请先选择节点',
+    confirmDeleteNode: '选中节点及其子结点将被永久删除, 是否继续?',
+    iframeGrant: '用户名:zuihou 密码:zuihou',
+    notEqual: '两次输入不一致',
+    oldPasswordIncorrect: '原密码不正确',
+    uploadSuccess: '上传成功',
+    uploadFailed: '上传失败',
+    onlySupportXlsx: '只支持Xlsx类型文件',
+    updating: '修改中',
+    updateFailed: '修改失败',
+    noPermission: '无权限',
+    confirmRestPassword: '确定重置所选用户密码?',
+    resetPasswordSuccess: '所选用户密码重置已被重置为123456',
+    getCodeImageFailed: '获取图形验证码失败',
+    tooManyRequest: '获取验证码过于频繁,请1分钟后再试',
+    clientOriginSecret: '该客户端原始密码为:',
+    unSelected: '请至少选择一条数据!',
+    mustOne: '请只能选择一条数据!',
+    frozen: '冻结成功!',
+    enable: '启用成功!',
+    numberTips: '不超过100个字符。',
+    optionSuccess: '操作成功!'
+  },
+  rules: {
+    require: '不能为空',
+    range0to255: '长度在 0 到 255 个字符',
+    range2to10: '长度在 2 到 10 个字符',
+    range3to10: '长度在 3 到 10 个字符',
+    range3to20: '长度在 3 到 20 个字符',
+    range4to10: '长度在 4 到 10 个字符',
+    range6to20: '长度在 6 到 20 个字符',
+    email: '请输入正确的邮箱地址',
+    mobile: '请输入合法的手机号',
+    usernameExist: '该用户名已存在',
+    clientIdExist: '该Client ID已存在',
+    roleNameExist: '该角色名称已存在',
+    noMoreThan10: '长度不能超过10个字符',
+    noMoreThan11: '长度不能超过11个字符',
+    noMoreThan20: '长度不能超过20个字符',
+    noMoreThan50: '长度不能超过50个字符',
+    noMoreThan100: '长度不能超过100个字符',
+    invalidInteger: '请输入大于零的整数',
+    invalidURL: '不是有效的URL',
+    fields: '请输入正确的字段标志符!'
+  },
+  common: {
+  	save: '保存',
+    system: 'SaaS型微服务快速开发平台',
+    desc: {
+      a: '基于SpringBoot 2.2.9 & SpringCloud Hoxton.SR7',
+      b: '使用Jwt自定义统一认证',
+      c: '企业级设计和配置,拒绝demo项目',
+      d: '前后端分离架构,提高软件开发效率',
+      e: '集成多种监控,为微服务保驾护航',
+      f: '提供详细的文档&视频教程,手把手教你从零搭建到部署'
+    },
+    date: {
+    	year: '年',
+    	month: '月',
+    	day: '日',
+    	sun: '星期天'
+    },
+    files: {
+    	noFile: '未上传',
+    	yesFile: '已上传'
+    },
+    timeArea: {
+    	lastWeek: '最近一周',
+    	lastMonth: '最近一个月',
+    	lastThreeMonth: '最近三个月'
+    },
+    individual: '个',
+    uploadImg: '上传图片',
+    view: '查看',
+    tips: '提示',
+    clear: '清除',
+    confirm: '确定',
+    cancel: '取消',
+    add: '新增',
+    edit: '修改',
+    delete: '删除',
+	search: '搜索',
+	reset: '重置',
+	colse: '关闭',
+    copy: '复制',
+    upload: '上传',
+    preview: '预览',
+    setting: '设置',
+    execute: '执行',
+    toViod: '作废',
+    sort: '排序',
+    pleaseEnter: '请输入',
+    pleaseSelect: '请选择',
+    separator: '至',
+    startTime: '开始日期',
+    endTime: '结束日期',
+    serialNo: '序号',
+    show: '显示',
+    hide: '隐藏',
+    frozen: '冻结',
+    yes: '是',
+    no: '否',
+    lock: '锁定',
+    unlock: '未锁定',
+    readonly: '只读',
+    readCreate: '读写',
+    noData: '暂无数据',
+    vision: '版本号',
+    remark: '备注',
+    selected: '选择',
+    weight: '权重',
+    audio: {
+    	type: '审核状态',
+    	add: '新增',
+    	addAudio: '提交审核',
+    	addAudioTips: '提交审核成功!',
+    	audio: '审核',
+    	daiAudio: '待审核',
+    	audioOk: '审核通过',
+    	aduioFail: '审核不通过'
+    },
+    adopt: {
+    	adopt: '通过',
+    	unadopt: '不通过'
+    },
+    qualified: {
+    	qualified: '合格',
+    	unqualified: '不合格',
+    },
+    sex: {
+      male: '男性',
+      female: '女性',
+      secret: '保密'
+    },
+    status: {
+    	init: '状态',
+      	valid: '启用',
+      	invalid: '禁用',
+      	stop: '暂停',
+      	start: '开始'
+    },
+    menu: {
+      menu: '菜单',
+      button: '按钮'
+    },
+    tab: {
+      common: '通用类',
+      directivity: '指向性',
+      solid: '填充类',
+      food: '食品类'
+    },
+    aboutMe: '关于我',
+    changeAvatar: '更换头像',
+    lastLoginTime: '上次登录时间',
+    goodMorning: '早上好',
+    goodAfternoon: '下午好',
+    goodEvening: '晚上好',
+    randomMessage: {
+      0: '帮我帮我帮我帮我帮我帮我帮我',
+      1: '喝杯咖啡休息下吧☕',
+      2: '要不要和朋友打局LOL',
+      3: '今天又写了几个Bug🐞呢',
+      4: '今天在群里吹水了吗',
+      5: '今天吃了什么好吃的呢',
+      6: '今天您微笑了吗😊',
+      7: '今天帮别人解决问题了吗',
+      8: '准备吃些什么呢',
+      9: '周末要不要去看电影?'
+    },
+    docDetails: '了解更多',
+    allProject: '所有项目',
+    noEmail: '暂无邮箱',
+    noMobile: '暂无手机',
+    noDept: '暂无部门',
+    noRole: '暂无角色',
+    noWorkDescribe: '这家伙很懒,什么也没留下~',
+    firstLogin: '第一次登录系统',
+    todayIp: '今日IP',
+    todayVisit: '今日访问',
+    TotalVisit: '总访问量',
+    you: '您',
+    total: '总数',
+    visitTitle: '近十天系统访问记录',
+    timeline: '登录时间',
+    account: '账号信息',
+    password: '个人密码',
+    importResult: '导入结果',
+    hthz: '后田花子',
+    al: '阿里系',
+    lm: '脸萌',
+    ctc: '点击选择',
+    pleaseInputUrl: '请输入URL',
+    bind: '绑定',
+    unbind: '解绑',
+    confirmUnbind: '确定解绑该第三方账号?',
+    unbindSuccess: '解绑成功',
+    bindSuccess: '绑定成功',
+    bindLogin: '绑定并登录',
+    signLogin: '注册并登录',
+    current: '当前',
+    socialAccount: '账号',
+    socialTips: '尚未绑定任何系统账户,您可以绑定系统账户或者注册一个新的账户并绑定。'
+  }
+}

+ 7 - 7
imcs-ui/src/views/zuihou/prepareProductMgr/technologyMgr/components/TechnologyEdit.vue

@@ -62,7 +62,7 @@
 		  			<quality-form ref="quality" :type="type"></quality-form>
 		  			
 		  			<!-- 机械手臂 -->
-		  			<robotarm-form ref="robotarm" :type="type"></robotarm-form>
+		  			<!--<robotarm-form ref="robotarm" :type="type"></robotarm-form>-->
 		  			
 		  		</div>
 		  	</div>
@@ -93,7 +93,7 @@ import ProgramForm from "../../technologyVersion/components/programForm/"
 // 【人工质检】组件
 import QualityForm from "../../technologyVersion/components/qualityForm/"
 // 【机械手臂】组件
-import RobotarmForm from "../../technologyVersion/components/robotarmForm/"
+//import RobotarmForm from "../../technologyVersion/components/robotarmForm/"
 // 【产品工艺版本管理】-API
 import technologyVersionApi from "@/api/prepareProductMgr/technologyVersion"
 
@@ -105,7 +105,7 @@ export default {
   	TrayForm, 
   	ProgramForm, 
   	QualityForm, 
-  	RobotarmForm 
+  	//RobotarmForm 
   },
   props: {
   	dialogVisible: {
@@ -316,7 +316,7 @@ export default {
     	this.tenant.directCuttingFlag = this.$refs.quality.directCuttingFlag
     	this.tenant.programTestPrograme = this.$refs.quality.programTestPrograme
     	// 获取【机械手臂】数据
-    	this.tenant.armConf = this.$refs.robotarm.radio
+    	/*this.tenant.armConf = this.$refs.robotarm.radio
     	// 如果是【需要】
     	if(this.tenant.armConf == '2'){
     		// 验证数据是否填写
@@ -329,7 +329,7 @@ export default {
 	            })
 	    		return false
     		}
-    	}
+    	}*/
     	console.log("表单的数据:", this.tenant)
     	
     	// 工序内容-简单验证
@@ -487,13 +487,13 @@ export default {
 		    	}
 		    	this.$refs.quality.tableData = this.setKeyList(res.data.procedureTestList)
 		    	// 获取【机械手臂】数据
-		    	this.$refs.robotarm.radio = res.data.armConf
+		    	/*this.$refs.robotarm.radio = res.data.armConf
 		    	if(res.data.armConf == '2'){
 		    		if(res.data.procedureRobotArm){
 		    			// this.$refs.robotarm.tenant = res.data.procedureRobotArm
 		    			this.$refs.robotarm.setTenant(res.data.procedureRobotArm)
 		    		}
-		    	}
+		    	}*/
     		}
     	})
     },

+ 577 - 577
imcs-ui/src/views/zuihou/prepareProductMgr/technologyVersion/components/TechnologyEdit.vue

@@ -1,577 +1,577 @@
-<template>
-	<el-dialog
-  	:close-on-click-modal="false"
-  	:close-on-press-escape="false"
-  	:title="title"
-  	:append-to-body="true"
-  	:visible.sync="isVisible"
-  	width="90%"
-  	top="50px"
-  >
-    <el-form ref="form" :model="tenant" :rules="rules" label-position="right" label-width="130px">
-		<el-row :gutter="20">
-		  <el-col :span="4">
-		  	<el-table
-		      :key="100001"
-		      ref="table"
-		      v-loading="loading"
-		      :data="tableData.data"
-		      border
-		      fit
-		      :highlight-current-row="true"
-		      style="width: 100%;"
-		      @row-click="rowClick"
-		      @current-change="onSelectChange"
-		      header-row-class-name="technologTable"
-		    >
-		      <el-table-column prop="no" :label='$t("prepare.common.tcNo")' align="center" :show-overflow-tooltip="true"></el-table-column>
-		    </el-table>
-		  </el-col>
-		  <el-col :span="20">
-		  	<!-- 工序内容 -->
-		  	<div class="prossDiv">
-		  		<div class="title">{{$t("prepare.common.tcContent")}}</div>
-		  		<el-table
-		  			ref="tableProcess"
-			        :data="tableData2"
-			      	style="width: 100%"
-			      	header-row-class-name="technologTable"
-			    >
-			    	<!-- 工序编号 -->
-			      	<el-table-column prop="id" :label='$t("prepare.table.techno.name")' :show-overflow-tooltip="true"></el-table-column>
-			      	<!-- 动态表头 -->
-			      	<el-table-column v-for="item in tableData.titleList" :key="item.id" :prop="item.field" :label='item.text' :show-overflow-tooltip="true" width="180px"></el-table-column>
-			    </el-table>
-		  	</div>
-
-		  	<!-- 工序分析 -->
-		  	<div class="prossFenxi">
-		  		<div class="title">{{$t("prepare.common.tcFenxi")}}</div>
-		  		<div class="content">
-		  			<!-- 可执行设备(位置) -->
-		  			<equipment-form ref="equipment" @setProgram="setProgram"></equipment-form>
-
-		  			<!-- 所需原材料 -->
-		  			<!-- <material-form ref="material" :technology="currentRow"></material-form> -->
-
-		  			<!-- 夹具 -->
-		  			<tray-form ref="tray" :technology="currentRow" @clearProgram="clearProgram" @setProgram="setProgramByTray"></tray-form>
-
-		  			<!-- NC程序 -->
-		  			<program-form ref="program"></program-form>
-
-		  			<!-- 人工质检 -->
-		  			<quality-form ref="quality"></quality-form>
-
-		  			<!-- 机械手臂 -->
-<!--		  			<robotarm-form ref="robotarm"></robotarm-form>-->
-
-		  		</div>
-		  	</div>
-		  </el-col>
-		</el-row>
-    </el-form>
-    <div slot="footer" class="dialog-footer">
-      <el-button plain type="warning" @click="isVisible = false">{{ $t('common.cancel') }}</el-button>
-      <el-button plain type="primary" :disabled="confirmDisabled" @click="submitForm">{{ $t('common.save') }}</el-button>
-    </div>
-  </el-dialog>
-</template>
-
-<script>
-
-// 【工艺管理】-API
-import technologyMgrApi from "@/api/prepareProductMgr/technologyMgr"
-// 【BOM管理】-API
-import bomMgrApi from "@/api/prepareProductMgr/bomMgr"
-// 【可执行设备(位置)】组件
-import EquipmentForm from "./equipmentForm/"
-// 【所需原材料】组件
-// import MaterialForm from "./materialForm/"
-// 【所需原材料】组件
-import TrayForm from "./trayForm/"
-// 【程序】组件
-import ProgramForm from "./programForm/"
-// 【人工质检】组件
-import QualityForm from "./qualityForm/"
-// 【机械手臂】组件
-import RobotarmForm from "./robotarmForm/"
-// 【产品工艺版本管理】-API
-import technologyVersionApi from "@/api/prepareProductMgr/technologyVersion"
-
-export default {
-  name: 'TenantEdit',
-  components: {
-  	EquipmentForm,
-  	//MaterialForm,
-  	TrayForm,
-  	ProgramForm,
-  	RobotarmForm,
-  	QualityForm
-  },
-  props: {
-  	dialogVisible: {
-      type: Boolean,
-      default: false
-    },
-    title: {
-      type: String,
-      default: ''
-    }
-  },
-  data () {
-    return {
-    	type: 'add',
-    	isEnd: false,
-    	processModeling: null,
-    	loading: false,
-    	tableData: {
-    		count: 0,
-    		data: [],  // 内容
-    		titleList: []  // 工序表头
-    	},  // 【左-工序列表】数据
-    	currentRow: null, // 【左-工序列表】当前选择的行数据对象
-    	oldCurrentRow: {}, // 【左-工序列表】前一条选择的行数据对象
-
-    	tableData2: [], // 工序内容-数据
-    	processTitleList: [],
-
-    	commList: {key: 1}, // 动态的数据对象,比如表单中的select、cascader、radio、checkbox等需要数据的控件
-    	filedList: [], // 字段数据
-	    tenant: this.initTenant(),
-	    screenWidth: 0,
-	    width: this.initWidth(),
-	    confirmDisabled: false,
-	    dicts:{
-	        NATION: {}
-	    },
-	    roles: [],
-	    rules: {
-	    }
-    }
-  },
-  // 监听数据的变化
-	watch: {
-	},
-  	// 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
-  	created() {
-
-	},
-	computed: {
-		isVisible: {
-	      get () {
-	        return this.dialogVisible
-	      },
-	      set () {
-	        this.close()
-	        this.reset()
-	      }
-	    }
-	},
-  	// DOM已经加载
-    mounted () {
-	    window.onresize = () => {
-	      return (() => {
-	        this.width = this.initWidth()
-	      })()
-	    }
-  	},
-  methods: {
-  	add(){
-
-  	},
-  	//【左-工序列表】,当某一行被点击时会触发该事件
-  	rowClick(row, column, event){
-  		this.$confirm(this.$t("prepare.tips.saveTips"), this.$t("common.tips"), {
-	      	distinguishCancelAndClose: true,
-	        confirmButtonText: this.$t("common.confirm"),
-	        cancelButtonText: this.$t("common.cancel"),
-	        type: "warning"
-	    }).then(() => {    // 【确定】按钮-事件
-	    	// 切换的时候,保存
-	    	this.submitForm('change')
-	    	/*// 工序内容-数据
-	    	this.tableData2 = [row]
-	    	// 根据【工艺id】查询详情信息
-	    	this.getDetail(row.id)*/
-	    }).catch(() => {   // 【取消】按钮-事件
-	    	// 工序内容-数据
-	    	this.tableData2 = [row]
-	    	// 根据【工艺id】查询详情信息
-	    	this.getDetail(row.id)
-	    })
-  	},
-  	// 【左-工序列表】,Row当表格的当前行发生变化的时候会触发该事件
-  	onSelectChange (currentRow, oldCurrentRow) {
-  		console.log("当前Row数据:", currentRow, oldCurrentRow)
-    	//this.$refs.table.setCurrentRow(currentRow)
-    	// 赋值,上一次选中的行
-    	this.oldCurrentRow = oldCurrentRow
-    	// 赋值当前选中的行
-      	this.currentRow = currentRow
-    },
-    // 把【可执行设备(位置)】传来的【需要程序】的数据,赋值给子组件【程序-设备】
-    setProgram(arr) {
-    	let list = []
-    	arr.map(item => {
-    		// 【需要程序】的设备,才需要设置【程序】
-    		if(item.cncProgram == "1"){
-    			list.push(item)
-    		}
-    	})
-    	this.$refs.program.selectedEq = list
-    },
-    // 把【托盘夹具组】传来的【夹具组】的数据,赋值给子组件【程序-夹具组】
-    setProgramByTray(arr) {
-    	this.$refs.program.selectedTray = arr
-    },
-    // 通知【程序】,清空当前数据
-    clearProgram(){
-    	// console.log("需要清除,程序的数据")
-    	this.$refs.program.tableData = []
-    },
-    initTenant () {
-      return {}
-    },
-    initWidth () {
-      this.screenWidth = document.body.clientWidth
-      if (this.screenWidth < 991) {
-        return '90%'
-      } else if (this.screenWidth < 1400) {
-        return '45%'
-      } else {
-        return '800px'
-      }
-    },
-    setTenant (val, dicts, processModeling) {
-    	if(val){
-    		this.tenant = { ...val }
-    	}
-    	// 工艺版本信息
-    	this.processModeling = processModeling
-	    // 字典表
-	    this.dicts = dicts
-	    // 查查【工序列表】-左
-    	this.getProcessList()
-    },
-    close () {
-      this.$emit('close')
-    },
-    reset () {
-      // 先清除校验,再清除表单,不然有奇怪的bug
-      this.$refs.form.clearValidate()
-      this.$refs.form.resetFields()
-      this.tenant = this.initTenant()
-      // 清除【工序内容】
-      this.tableData2 = []
-      // 清除【可执行设备(位置)】
-      this.$refs.equipment.tableData = []
-      // 清除【所需原材料】
-      //this.$refs.material.radio = null
-      //this.$refs.material.tableData = []
-      // 清除【托盘夹具组】
-      this.$refs.tray.radio = null
-      this.$refs.tray.tableData = []
-      // 清除【程序】
-      this.$refs.program.radio = null
-      this.$refs.program.tableData = []
-    },
-    submitForm (isFlag) {
-    	// 工艺版本id
-    	this.tenant.id = this.currentRow.id
-    	// 如果是切换【工序】-左的时候保存
-    	if(isFlag == 'change'){
-    		console.log("不走这里阿?", isFlag)
-    		this.tenant.id = this.oldCurrentRow.id
-    	}
-    	// 获取【可执行设备(位置)】数据
-    	this.tenant.productionresourceList = this.$refs.equipment.tableData
-    	// 获取【所需原材料】数据
-    	//this.tenant.armMeterialConf = this.$refs.material.armMeterialConf ? '1' : '0'
-    	//this.tenant.meterialConf = this.$refs.material.radio
-    	//this.tenant.meterialList = this.$refs.material.tableData
-    	// 获取【托盘夹具组】数据
-    	this.tenant.armTrayConf = this.$refs.tray.armTrayConf ? '1' : '0'
-    	this.tenant.armFixtureConf = this.$refs.tray.armFixtureConf ? '1' : '0'
-    	this.tenant.trayConf = this.$refs.tray.radio
-    	this.tenant.procedureTrayList = this.$refs.tray.tableData
-    	// 获取【程序】数据
-    	this.tenant.programConf = this.$refs.program.radio
-    	this.tenant.programList = this.$refs.program.tableData
-    	// 获取【人工质检】数据
-    	this.tenant.programTest = this.$refs.quality.radio
-    	this.tenant.procedureTestList = this.$refs.quality.tableData
-    	// 方式
-    	this.tenant.programTestWay = this.$refs.quality.programTestWay
-    	this.tenant.directCuttingFlag = this.$refs.quality.directCuttingFlag
-    	this.tenant.programTestPrograme = this.$refs.quality.programTestPrograme
-    	// 获取【机械手臂】数据
-    	this.tenant.armConf = this.$refs.robotarm.radio
-    	// 如果是【需要】
-    	if(this.tenant.armConf == '2'){
-    		// 验证数据是否填写
-    		if(this.$refs.robotarm.submitForm()){
-    			this.tenant.procedureRobotArm = this.$refs.robotarm.submitForm()
-    		}else{
-    			this.$message({
-	              	message: "请填写【机械手臂】信息~",
-	              	type: 'warning'
-	            })
-	    		return false
-    		}
-    	}
-    	console.log("表单的数据:", this.tenant)
-    	// 工序内容-简单验证
-    	if(!this.tenant.id){
-    		this.$message({
-              message: "【工序内容】没有数据~",
-              type: 'warning'
-            })
-    		return false
-    	}
-    	// 可执行设备(位置)-简单验证
-    	/*if(this.tenant.productionresourceList.length <= 0){
-    		this.$message({
-              message: "【可执行设备(位置)】没有数据~",
-              type: 'warning'
-            })
-    		return false
-    	}*/
-    	// 所需原材料-简单验证
-    	/*if(this.tenant.meterialList.length <= 0){
-    		this.$message({
-              message: "【所需原材料】没有数据~",
-              type: 'warning'
-            })
-    		return false
-    	}*/
-    	// 托盘夹具组-简单验证
-    	/*if(this.tenant.procedureTrayList.length <= 0){
-    		this.$message({
-              message: "【托盘夹具组)】没有数据~",
-              type: 'warning'
-            })
-    		return false
-    	}*/
-    	// 程序-简单验证
-    	/*if(this.tenant.programList.length <= 0){
-    		this.$message({
-              message: "【程序)】没有数据~",
-              type: 'warning'
-            })
-    		return false
-    	}*/
-    	// return false
-      	this.$refs.form.validate((valid) => {
-	        if (valid) {
-	          this.confirmDisabled = true
-	          this.save(isFlag)
-	        } else {
-	          return false
-	        }
-      	})
-    },
-    save (isFlag) {
-      technologyVersionApi.saveProcessAnalysis(this.tenant)
-        .then((response) => {
-          const res = response.data
-          if (res.isSuccess) {
-          	// 关闭页面
-            // this.isVisible = false
-            this.$message({
-              message: this.$t('tips.optionSuccess'),
-              type: 'success'
-            })
-            // 通知列表
-	        this.$emit("success");
-	        // 如果是切换【工序】-左的保存
-	        if(isFlag == 'change'){
-		    	// 工序内容-数据
-		    	this.tableData2 = [this.currentRow]
-		    	// 根据【工艺id】查询详情信息
-		    	this.getDetail(this.currentRow.id)
-	        }
-          }
-        }).finally(() => {
-          this.confirmDisabled = false
-          return true
-        })
-    },
-    update () {
-      bomMgrApi.update(this.tenant)
-        .then((response) => {
-          const res = response.data
-          if (res.isSuccess) {
-            this.isVisible = false
-            this.$message({
-              message: this.$t('tips.optionSuccess'),
-              type: 'success'
-            })
-            // 通知列表
-	          this.$emit("success");
-	          // 通知列表-并关闭弹出框
-	          this.$emit("close");
-          }
-        }).finally(() => {
-          this.confirmDisabled = false
-          return true
-        })
-    },
-    // 查询【工序列表】-左
-    getProcessList (params = {}) {
-    	this.loading = true
-		// 参数 bomVersionId  、bomId
-		// 获取Bom产品的id
-		let obj = {
-			bizType: "0", // 0 : 是工艺版本的列表; 如果是1 的话,则是正式工艺的列表
-			bomId: this.processModeling.bomId,
-			bomVersionId: this.processModeling.id,
-			size: 1000
-		}
-      	technologyMgrApi.pageList(obj).then(response => {
-	      	const res = response.data
-	        console.log("【工序列表111】-左:", res)
-	        if (res.isSuccess) {
-	        	// 工序的数据
-	        	this.tableData = res.data
-	        	// 如果数据存在--默认选中第一条数据
-	        	if(this.tableData.data.length > 0){
-	        		// 把当前选择的行,设置checkbox
-	    			this.$refs.table.setCurrentRow(this.tableData.data[0])
-	    			// 初始化的时候,上一个数据也是本身
-	    			this.oldCurrentRow = this.tableData.data[0]
-	        		// 工序内容-数据
-	    			this.tableData2 = [this.tableData.data[0]]
-	    			// 根据【工艺id】查询详情信息
-	    			this.getDetail(this.tableData.data[0].id)
-	        	}
-	        }
-        // eslint-disable-next-line no-return-assign
-      	}).finally(() => this.loading = false)
-    },
-    // 根据【工艺id】查询详情信息
-    getDetail(id){
-    	technologyVersionApi.getProcessAnalysis({id}).then(res => {
-    		res = res.data
-    		if(res.isSuccess){
-    			console.log("详情信息:", res.data)
-
-    			// 给各个组件赋值
-    			// 获取【可执行设备(位置)】数据
-    			let eqList = this.setKeyList(res.data.productionresourceList)
-		    	this.$refs.equipment.setTableData(this.setKeyList(res.data.productionresourceList))
-		    	// 把【设备】的数据,给【程序】使用
-		    	// this.setProgram(eqList)
-		    	// 获取【所需原材料】数据
-		    	/*if(!!res.data.meterialConf){
-		    		this.$refs.material.radio = res.data.meterialConf
-		    	}*/
-		    	//this.$refs.material.armMeterialConf = res.data.armMeterialConf == '1' ? true : false
-		    	//this.$refs.material.tableData = this.setKeyList(res.data.meterialList)
-		    	// 获取【托盘夹具组】数据
-		    	if(!!res.data.trayConf){
-		    		this.$refs.tray.radio = res.data.trayConf
-		    	}
-		    	this.$refs.tray.armTrayConf = res.data.armTrayConf == '1' ? true : false
-	    		this.$refs.tray.armFixtureConf = res.data.armFixtureConf == '1' ? true : false
-		    	this.$refs.tray.setDataMustSpan(this.setKeyList(res.data.procedureTrayList, 'tray'))
-		    	// 获取【程序】数据
-		    	if(!!res.data.programConf){
-		    		this.$refs.program.radio = res.data.programConf
-		    	}
-		    	this.$refs.program.tableData = this.setKeyList(res.data.programList)
-		    	// 获取【人工质检】数据
-		    	if(!!res.data.programTest){
-		    		this.$refs.quality.radio = res.data.programTest
-		    		// 方式
-		    		this.$refs.quality.programTestWay = res.data.programTestWay
-		    		this.$refs.quality.directCuttingFlag = res.data.directCuttingFlag
-		    		this.$refs.quality.programTestPrograme = res.data.programTestPrograme
-		    	}
-		    	this.$refs.quality.tableData = this.setKeyList(res.data.procedureTestList)
-		    	// 获取【机械手臂】数据
-		    	this.$refs.robotarm.radio = res.data.armConf
-		    	if(res.data.armConf == '2'){
-		    		if(res.data.procedureRobotArm){
-		    			// this.$refs.robotarm.tenant = res.data.procedureRobotArm
-		    			this.$refs.robotarm.setTenant(res.data.procedureRobotArm)
-		    		}
-		    	}
-    		}
-    	})
-    },
-    // 赋值前处理-添加key数据健
-    setKeyList(list, flag){
-    	if(list && list.length > 0){
-    		let arr = []
-    		list.forEach(item => {
-    			// 添加唯一键
-	    		item.key = ''+ Math.random()
-	    		// 如果是托盘夹具的时候,组装分类
-	    		if(flag == 'tray'){
-	    			// 把【组序】和【优先级】改成字符串
-	    			//item.groupSort = ''+ item.groupSort
-	    			//item.groupPrority = ''+ item.groupPrority
-	    			// 给图片一个列表数据,jjImgList
-	    			item.jjImgList = []
-	    			if(!!item.armorPic){
-	    				item.jjImgList.push(item.armorPic)
-	    			}
-	    			// 添加类型
-	    			/*if(item.bizType == '1'){
-	    				item.category = {key: '03',data: '托盘'}
-	    			}else{
-	    				item.category = {key: '02',data: '夹具'}
-	    			}*/
-	    		}
-	    		arr.push(item)
-	    	})
-    		list = arr
-    	}else{
-    		list = []
-    	}
-    	return list
-    }
-  }
-}
-</script>
-<style lang="scss" scoped="">
-	.title{
-		position: relative;
-		padding-left: 20px;
-		padding-bottom: 5px;
-		border-bottom: 1px dotted #1890ff;
-	}
-	.title:before{
-		content: '';
-		position: absolute;
-		background: #1890ff;
-		width: 10px;
-		height: 70%;
-		left: 0;
-		top: 1px;
-	}
-	.prossFenxi{
-		margin-top: 15px;
-	}
-	.content{
-		margin-top: 10px;
-	}
-	.titleSmall{
-		position: relative;
-		padding-left: 10px;
-		margin-right: 15px;
-	}
-	.titleSmall:before{
-		content: '';
-		position: absolute;
-		background: #1890ff;
-		width: 5px;
-		height: 90%;
-		left: 0;
-		top: 1px;
-	}
-	.itemDiv{
-		margin: 10px 0;
-	}
-</style>
+<template>
+	<el-dialog
+  	:close-on-click-modal="false"
+  	:close-on-press-escape="false"
+  	:title="title"
+  	:append-to-body="true"
+  	:visible.sync="isVisible"
+  	width="90%"
+  	top="50px"
+  >
+    <el-form ref="form" :model="tenant" :rules="rules" label-position="right" label-width="130px">
+		<el-row :gutter="20">
+		  <el-col :span="4">
+		  	<el-table
+		      :key="100001"
+		      ref="table"
+		      v-loading="loading"
+		      :data="tableData.data"
+		      border
+		      fit
+		      :highlight-current-row="true"
+		      style="width: 100%;"
+		      @row-click="rowClick"
+		      @current-change="onSelectChange"
+		      header-row-class-name="technologTable"
+		    >
+		      <el-table-column prop="no" :label='$t("prepare.common.tcNo")' align="center" :show-overflow-tooltip="true"></el-table-column>
+		    </el-table>
+		  </el-col>
+		  <el-col :span="20">
+		  	<!-- 工序内容 -->
+		  	<div class="prossDiv">
+		  		<div class="title">{{$t("prepare.common.tcContent")}}</div>
+		  		<el-table
+		  			ref="tableProcess"
+			        :data="tableData2"
+			      	style="width: 100%"
+			      	header-row-class-name="technologTable"
+			    >
+			    	<!-- 工序编号 -->
+			      	<el-table-column prop="id" :label='$t("prepare.table.techno.name")' :show-overflow-tooltip="true"></el-table-column>
+			      	<!-- 动态表头 -->
+			      	<el-table-column v-for="item in tableData.titleList" :key="item.id" :prop="item.field" :label='item.text' :show-overflow-tooltip="true" width="180px"></el-table-column>
+			    </el-table>
+		  	</div>
+
+		  	<!-- 工序分析 -->
+		  	<div class="prossFenxi">
+		  		<div class="title">{{$t("prepare.common.tcFenxi")}}</div>
+		  		<div class="content">
+		  			<!-- 可执行设备(位置) -->
+		  			<equipment-form ref="equipment" @setProgram="setProgram"></equipment-form>
+
+		  			<!-- 所需原材料 -->
+		  			<!-- <material-form ref="material" :technology="currentRow"></material-form> -->
+
+		  			<!-- 夹具 -->
+		  			<tray-form ref="tray" :technology="currentRow" @clearProgram="clearProgram" @setProgram="setProgramByTray"></tray-form>
+
+		  			<!-- NC程序 -->
+		  			<program-form ref="program"></program-form>
+
+		  			<!-- 人工质检 -->
+		  			<quality-form ref="quality"></quality-form>
+
+		  			<!-- 机械手臂 -->
+<!--		  			<robotarm-form ref="robotarm"></robotarm-form>-->
+
+		  		</div>
+		  	</div>
+		  </el-col>
+		</el-row>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button plain type="warning" @click="isVisible = false">{{ $t('common.cancel') }}</el-button>
+      <el-button plain type="primary" :disabled="confirmDisabled" @click="submitForm">{{ $t('common.save') }}</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+
+// 【工艺管理】-API
+import technologyMgrApi from "@/api/prepareProductMgr/technologyMgr"
+// 【BOM管理】-API
+import bomMgrApi from "@/api/prepareProductMgr/bomMgr"
+// 【可执行设备(位置)】组件
+import EquipmentForm from "./equipmentForm/"
+// 【所需原材料】组件
+// import MaterialForm from "./materialForm/"
+// 【所需原材料】组件
+import TrayForm from "./trayForm/"
+// 【程序】组件
+import ProgramForm from "./programForm/"
+// 【人工质检】组件
+import QualityForm from "./qualityForm/"
+// 【机械手臂】组件
+import RobotarmForm from "./robotarmForm/"
+// 【产品工艺版本管理】-API
+import technologyVersionApi from "@/api/prepareProductMgr/technologyVersion"
+
+export default {
+  name: 'TenantEdit',
+  components: {
+  	EquipmentForm,
+  	//MaterialForm,
+  	TrayForm,
+  	ProgramForm,
+  	RobotarmForm,
+  	QualityForm
+  },
+  props: {
+  	dialogVisible: {
+      type: Boolean,
+      default: false
+    },
+    title: {
+      type: String,
+      default: ''
+    }
+  },
+  data () {
+    return {
+    	type: 'add',
+    	isEnd: false,
+    	processModeling: null,
+    	loading: false,
+    	tableData: {
+    		count: 0,
+    		data: [],  // 内容
+    		titleList: []  // 工序表头
+    	},  // 【左-工序列表】数据
+    	currentRow: null, // 【左-工序列表】当前选择的行数据对象
+    	oldCurrentRow: {}, // 【左-工序列表】前一条选择的行数据对象
+
+    	tableData2: [], // 工序内容-数据
+    	processTitleList: [],
+
+    	commList: {key: 1}, // 动态的数据对象,比如表单中的select、cascader、radio、checkbox等需要数据的控件
+    	filedList: [], // 字段数据
+	    tenant: this.initTenant(),
+	    screenWidth: 0,
+	    width: this.initWidth(),
+	    confirmDisabled: false,
+	    dicts:{
+	        NATION: {}
+	    },
+	    roles: [],
+	    rules: {
+	    }
+    }
+  },
+  // 监听数据的变化
+	watch: {
+	},
+  	// 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
+  	created() {
+
+	},
+	computed: {
+		isVisible: {
+	      get () {
+	        return this.dialogVisible
+	      },
+	      set () {
+	        this.close()
+	        this.reset()
+	      }
+	    }
+	},
+  	// DOM已经加载
+    mounted () {
+	    window.onresize = () => {
+	      return (() => {
+	        this.width = this.initWidth()
+	      })()
+	    }
+  	},
+  methods: {
+  	add(){
+
+  	},
+  	//【左-工序列表】,当某一行被点击时会触发该事件
+  	rowClick(row, column, event){
+  		this.$confirm(this.$t("prepare.tips.saveTips"), this.$t("common.tips"), {
+	      	distinguishCancelAndClose: true,
+	        confirmButtonText: this.$t("common.confirm"),
+	        cancelButtonText: this.$t("common.cancel"),
+	        type: "warning"
+	    }).then(() => {    // 【确定】按钮-事件
+	    	// 切换的时候,保存
+	    	this.submitForm('change')
+	    	/*// 工序内容-数据
+	    	this.tableData2 = [row]
+	    	// 根据【工艺id】查询详情信息
+	    	this.getDetail(row.id)*/
+	    }).catch(() => {   // 【取消】按钮-事件
+	    	// 工序内容-数据
+	    	this.tableData2 = [row]
+	    	// 根据【工艺id】查询详情信息
+	    	this.getDetail(row.id)
+	    })
+  	},
+  	// 【左-工序列表】,Row当表格的当前行发生变化的时候会触发该事件
+  	onSelectChange (currentRow, oldCurrentRow) {
+  		console.log("当前Row数据:", currentRow, oldCurrentRow)
+    	//this.$refs.table.setCurrentRow(currentRow)
+    	// 赋值,上一次选中的行
+    	this.oldCurrentRow = oldCurrentRow
+    	// 赋值当前选中的行
+      	this.currentRow = currentRow
+    },
+    // 把【可执行设备(位置)】传来的【需要程序】的数据,赋值给子组件【程序-设备】
+    setProgram(arr) {
+    	let list = []
+    	arr.map(item => {
+    		// 【需要程序】的设备,才需要设置【程序】
+    		if(item.cncProgram == "1"){
+    			list.push(item)
+    		}
+    	})
+    	this.$refs.program.selectedEq = list
+    },
+    // 把【托盘夹具组】传来的【夹具组】的数据,赋值给子组件【程序-夹具组】
+    setProgramByTray(arr) {
+    	this.$refs.program.selectedTray = arr
+    },
+    // 通知【程序】,清空当前数据
+    clearProgram(){
+    	// console.log("需要清除,程序的数据")
+    	this.$refs.program.tableData = []
+    },
+    initTenant () {
+      return {}
+    },
+    initWidth () {
+      this.screenWidth = document.body.clientWidth
+      if (this.screenWidth < 991) {
+        return '90%'
+      } else if (this.screenWidth < 1400) {
+        return '45%'
+      } else {
+        return '800px'
+      }
+    },
+    setTenant (val, dicts, processModeling) {
+    	if(val){
+    		this.tenant = { ...val }
+    	}
+    	// 工艺版本信息
+    	this.processModeling = processModeling
+	    // 字典表
+	    this.dicts = dicts
+	    // 查查【工序列表】-左
+    	this.getProcessList()
+    },
+    close () {
+      this.$emit('close')
+    },
+    reset () {
+      // 先清除校验,再清除表单,不然有奇怪的bug
+      this.$refs.form.clearValidate()
+      this.$refs.form.resetFields()
+      this.tenant = this.initTenant()
+      // 清除【工序内容】
+      this.tableData2 = []
+      // 清除【可执行设备(位置)】
+      this.$refs.equipment.tableData = []
+      // 清除【所需原材料】
+      //this.$refs.material.radio = null
+      //this.$refs.material.tableData = []
+      // 清除【托盘夹具组】
+      this.$refs.tray.radio = null
+      this.$refs.tray.tableData = []
+      // 清除【程序】
+      this.$refs.program.radio = null
+      this.$refs.program.tableData = []
+    },
+    submitForm (isFlag) {
+    	// 工艺版本id
+    	this.tenant.id = this.currentRow.id
+    	// 如果是切换【工序】-左的时候保存
+    	if(isFlag == 'change'){
+    		console.log("不走这里阿?", isFlag)
+    		this.tenant.id = this.oldCurrentRow.id
+    	}
+    	// 获取【可执行设备(位置)】数据
+    	this.tenant.productionresourceList = this.$refs.equipment.tableData
+    	// 获取【所需原材料】数据
+    	//this.tenant.armMeterialConf = this.$refs.material.armMeterialConf ? '1' : '0'
+    	//this.tenant.meterialConf = this.$refs.material.radio
+    	//this.tenant.meterialList = this.$refs.material.tableData
+    	// 获取【托盘夹具组】数据
+    	this.tenant.armTrayConf = this.$refs.tray.armTrayConf ? '1' : '0'
+    	this.tenant.armFixtureConf = this.$refs.tray.armFixtureConf ? '1' : '0'
+    	this.tenant.trayConf = this.$refs.tray.radio
+    	this.tenant.procedureTrayList = this.$refs.tray.tableData
+    	// 获取【程序】数据
+    	this.tenant.programConf = this.$refs.program.radio
+    	this.tenant.programList = this.$refs.program.tableData
+    	// 获取【人工质检】数据
+    	this.tenant.programTest = this.$refs.quality.radio
+    	this.tenant.procedureTestList = this.$refs.quality.tableData
+    	// 方式
+    	this.tenant.programTestWay = this.$refs.quality.programTestWay
+    	this.tenant.directCuttingFlag = this.$refs.quality.directCuttingFlag
+    	this.tenant.programTestPrograme = this.$refs.quality.programTestPrograme
+    	// 获取【机械手臂】数据
+    	//this.tenant.armConf = this.$refs.robotarm.radio
+    	// 如果是【需要】
+    	/*if(this.tenant.armConf == '2'){
+    		// 验证数据是否填写
+    		if(this.$refs.robotarm.submitForm()){
+    			this.tenant.procedureRobotArm = this.$refs.robotarm.submitForm()
+    		}else{
+    			this.$message({
+	              	message: "请填写【机械手臂】信息~",
+	              	type: 'warning'
+	            })
+	    		return false
+    		}
+    	}*/
+    	console.log("表单的数据:", this.tenant)
+    	// 工序内容-简单验证
+    	if(!this.tenant.id){
+    		this.$message({
+              message: "【工序内容】没有数据~",
+              type: 'warning'
+            })
+    		return false
+    	}
+    	// 可执行设备(位置)-简单验证
+    	/*if(this.tenant.productionresourceList.length <= 0){
+    		this.$message({
+              message: "【可执行设备(位置)】没有数据~",
+              type: 'warning'
+            })
+    		return false
+    	}*/
+    	// 所需原材料-简单验证
+    	/*if(this.tenant.meterialList.length <= 0){
+    		this.$message({
+              message: "【所需原材料】没有数据~",
+              type: 'warning'
+            })
+    		return false
+    	}*/
+    	// 托盘夹具组-简单验证
+    	/*if(this.tenant.procedureTrayList.length <= 0){
+    		this.$message({
+              message: "【托盘夹具组)】没有数据~",
+              type: 'warning'
+            })
+    		return false
+    	}*/
+    	// 程序-简单验证
+    	/*if(this.tenant.programList.length <= 0){
+    		this.$message({
+              message: "【程序)】没有数据~",
+              type: 'warning'
+            })
+    		return false
+    	}*/
+    	// return false
+      	this.$refs.form.validate((valid) => {
+	        if (valid) {
+	          this.confirmDisabled = true
+	          this.save(isFlag)
+	        } else {
+	          return false
+	        }
+      	})
+    },
+    save (isFlag) {
+      technologyVersionApi.saveProcessAnalysis(this.tenant)
+        .then((response) => {
+          const res = response.data
+          if (res.isSuccess) {
+          	// 关闭页面
+            // this.isVisible = false
+            this.$message({
+              message: this.$t('tips.optionSuccess'),
+              type: 'success'
+            })
+            // 通知列表
+	        this.$emit("success");
+	        // 如果是切换【工序】-左的保存
+	        if(isFlag == 'change'){
+		    	// 工序内容-数据
+		    	this.tableData2 = [this.currentRow]
+		    	// 根据【工艺id】查询详情信息
+		    	this.getDetail(this.currentRow.id)
+	        }
+          }
+        }).finally(() => {
+          this.confirmDisabled = false
+          return true
+        })
+    },
+    update () {
+      bomMgrApi.update(this.tenant)
+        .then((response) => {
+          const res = response.data
+          if (res.isSuccess) {
+            this.isVisible = false
+            this.$message({
+              message: this.$t('tips.optionSuccess'),
+              type: 'success'
+            })
+            // 通知列表
+	          this.$emit("success");
+	          // 通知列表-并关闭弹出框
+	          this.$emit("close");
+          }
+        }).finally(() => {
+          this.confirmDisabled = false
+          return true
+        })
+    },
+    // 查询【工序列表】-左
+    getProcessList (params = {}) {
+    	this.loading = true
+		// 参数 bomVersionId  、bomId
+		// 获取Bom产品的id
+		let obj = {
+			bizType: "0", // 0 : 是工艺版本的列表; 如果是1 的话,则是正式工艺的列表
+			bomId: this.processModeling.bomId,
+			bomVersionId: this.processModeling.id,
+			size: 1000
+		}
+      	technologyMgrApi.pageList(obj).then(response => {
+	      	const res = response.data
+	        console.log("【工序列表111】-左:", res)
+	        if (res.isSuccess) {
+	        	// 工序的数据
+	        	this.tableData = res.data
+	        	// 如果数据存在--默认选中第一条数据
+	        	if(this.tableData.data.length > 0){
+	        		// 把当前选择的行,设置checkbox
+	    			this.$refs.table.setCurrentRow(this.tableData.data[0])
+	    			// 初始化的时候,上一个数据也是本身
+	    			this.oldCurrentRow = this.tableData.data[0]
+	        		// 工序内容-数据
+	    			this.tableData2 = [this.tableData.data[0]]
+	    			// 根据【工艺id】查询详情信息
+	    			this.getDetail(this.tableData.data[0].id)
+	        	}
+	        }
+        // eslint-disable-next-line no-return-assign
+      	}).finally(() => this.loading = false)
+    },
+    // 根据【工艺id】查询详情信息
+    getDetail(id){
+    	technologyVersionApi.getProcessAnalysis({id}).then(res => {
+    		res = res.data
+    		if(res.isSuccess){
+    			console.log("详情信息:", res.data)
+
+    			// 给各个组件赋值
+    			// 获取【可执行设备(位置)】数据
+    			let eqList = this.setKeyList(res.data.productionresourceList)
+		    	this.$refs.equipment.setTableData(this.setKeyList(res.data.productionresourceList))
+		    	// 把【设备】的数据,给【程序】使用
+		    	// this.setProgram(eqList)
+		    	// 获取【所需原材料】数据
+		    	/*if(!!res.data.meterialConf){
+		    		this.$refs.material.radio = res.data.meterialConf
+		    	}*/
+		    	//this.$refs.material.armMeterialConf = res.data.armMeterialConf == '1' ? true : false
+		    	//this.$refs.material.tableData = this.setKeyList(res.data.meterialList)
+		    	// 获取【托盘夹具组】数据
+		    	if(!!res.data.trayConf){
+		    		this.$refs.tray.radio = res.data.trayConf
+		    	}
+		    	this.$refs.tray.armTrayConf = res.data.armTrayConf == '1' ? true : false
+	    		this.$refs.tray.armFixtureConf = res.data.armFixtureConf == '1' ? true : false
+		    	this.$refs.tray.setDataMustSpan(this.setKeyList(res.data.procedureTrayList, 'tray'))
+		    	// 获取【程序】数据
+		    	if(!!res.data.programConf){
+		    		this.$refs.program.radio = res.data.programConf
+		    	}
+		    	this.$refs.program.tableData = this.setKeyList(res.data.programList)
+		    	// 获取【人工质检】数据
+		    	if(!!res.data.programTest){
+		    		this.$refs.quality.radio = res.data.programTest
+		    		// 方式
+		    		this.$refs.quality.programTestWay = res.data.programTestWay
+		    		this.$refs.quality.directCuttingFlag = res.data.directCuttingFlag
+		    		this.$refs.quality.programTestPrograme = res.data.programTestPrograme
+		    	}
+		    	this.$refs.quality.tableData = this.setKeyList(res.data.procedureTestList)
+		    	// 获取【机械手臂】数据
+		    	/*this.$refs.robotarm.radio = res.data.armConf
+		    	if(res.data.armConf == '2'){
+		    		if(res.data.procedureRobotArm){
+		    			// this.$refs.robotarm.tenant = res.data.procedureRobotArm
+		    			this.$refs.robotarm.setTenant(res.data.procedureRobotArm)
+		    		}
+		    	}*/
+    		}
+    	})
+    },
+    // 赋值前处理-添加key数据健
+    setKeyList(list, flag){
+    	if(list && list.length > 0){
+    		let arr = []
+    		list.forEach(item => {
+    			// 添加唯一键
+	    		item.key = ''+ Math.random()
+	    		// 如果是托盘夹具的时候,组装分类
+	    		if(flag == 'tray'){
+	    			// 把【组序】和【优先级】改成字符串
+	    			//item.groupSort = ''+ item.groupSort
+	    			//item.groupPrority = ''+ item.groupPrority
+	    			// 给图片一个列表数据,jjImgList
+	    			item.jjImgList = []
+	    			if(!!item.armorPic){
+	    				item.jjImgList.push(item.armorPic)
+	    			}
+	    			// 添加类型
+	    			/*if(item.bizType == '1'){
+	    				item.category = {key: '03',data: '托盘'}
+	    			}else{
+	    				item.category = {key: '02',data: '夹具'}
+	    			}*/
+	    		}
+	    		arr.push(item)
+	    	})
+    		list = arr
+    	}else{
+    		list = []
+    	}
+    	return list
+    }
+  }
+}
+</script>
+<style lang="scss" scoped="">
+	.title{
+		position: relative;
+		padding-left: 20px;
+		padding-bottom: 5px;
+		border-bottom: 1px dotted #1890ff;
+	}
+	.title:before{
+		content: '';
+		position: absolute;
+		background: #1890ff;
+		width: 10px;
+		height: 70%;
+		left: 0;
+		top: 1px;
+	}
+	.prossFenxi{
+		margin-top: 15px;
+	}
+	.content{
+		margin-top: 10px;
+	}
+	.titleSmall{
+		position: relative;
+		padding-left: 10px;
+		margin-right: 15px;
+	}
+	.titleSmall:before{
+		content: '';
+		position: absolute;
+		background: #1890ff;
+		width: 5px;
+		height: 90%;
+		left: 0;
+		top: 1px;
+	}
+	.itemDiv{
+		margin: 10px 0;
+	}
+</style>

+ 14 - 1
imcs-ui/src/views/zuihou/prepareProductMgr/technologyVersion/components/equipmentForm/components/Edit.vue

@@ -56,6 +56,19 @@
 	      <el-table-column prop="code" :label='$t("resource.table.resours.no")' :show-overflow-tooltip="true" width="100px"></el-table-column>
 	      <el-table-column prop="brand" :label='$t("resource.table.resours.brand")' width="100px"></el-table-column>
 	      <el-table-column prop="specification" :label='$t("resource.table.resours.specification")' width="160px"></el-table-column>
+	      <!-- 设备业务 -->
+	      <el-table-column prop="resourceBusinessId" :label='$t("resource.table.resours.resourceBusinessId")' width="200px">
+	      	<template slot-scope="{ row }">
+	      		<el-select v-model="row.resourceBusinessId" :placeholder='$t("common.pleaseSelect")' filterable style="width: 100%;">
+					    <el-option
+					      v-for="(obj, index) in row.businessList"
+					      :key="index"
+					      :label="obj.name"
+					      :value="obj.id">
+					    </el-option>
+						</el-select>
+	      	</template>
+	      </el-table-column>
 	      <el-table-column prop="model" :label='$t("resource.table.resours.model")'></el-table-column>
 	      <el-table-column prop="category.data" :label='$t("resource.table.resours.category")' width="100px"></el-table-column>
 	      <el-table-column prop="cncProgram" :label='$t("resource.table.resours.isProgram")' width="110px" align="center">
@@ -273,7 +286,7 @@ export default {
 	      this.queryParams.size = params.size ? params.size : this.queryParams.size
 	      // 固定参数(采集的生产资源)
 	      this.queryParams.resourceStatus = "1"
-	      equipmentMgrApi.getPageList(this.queryParams).then(response => {
+	      equipmentMgrApi.resourcePageList(this.queryParams).then(response => {
 	        const res = response.data
 	        if (res.isSuccess) {
 	          // 赋值

+ 16 - 0
imcs-ui/src/views/zuihou/prepareProductMgr/technologyVersion/components/equipmentForm/index.vue

@@ -19,6 +19,22 @@
 	      <el-table-column prop="code" :label='$t("prepare.table.eqPosion.code")' align="center" width="120px"></el-table-column>
 	      <!-- 设备(生产资源) -->
 	      <el-table-column prop="name" :label='$t("prepare.table.eqPosion.name")' align="center"></el-table-column>
+	      <!-- 设备业务 -->
+	      <el-table-column prop="resourceBusinessId" :label='$t("resource.table.resours.resourceBusinessId")' width="200px">
+	      	<template slot-scope="{ row }">
+	      		<div v-if="row.businessList && row.businessList.length>0">
+		      		<el-select v-model="row.resourceBusinessId" disabled :placeholder='$t("common.pleaseSelect")' filterable style="width: 100%;">
+						    <el-option
+						      v-for="(obj, index) in row.businessList"
+						      :key="index"
+						      :label="obj.name"
+						      :value="obj.id">
+						    </el-option>
+							</el-select>
+						</div>
+						<div v-else>{{row.resourceBusinessName ? row.resourceBusinessName : '-'}}</div>
+	      	</template>
+	      </el-table-column>
 	      <!-- 是否需要程序 -->
 	      <el-table-column prop="cncProgram" :label='$t("prepare.table.eqPosion.cncProgram")' width="110px" align="center">
 	      	<template slot-scope="{ row }">

+ 706 - 706
imcs-ui/src/views/zuihou/prepareProductMgr/technologyVersion/components/trayForm/index.vue

@@ -1,706 +1,706 @@
-<template>
-  <div class="">
-    <!-- 按钮功能 -->
-    <div class="itemDiv">
-			<span class="titleSmall">{{$t("prepare.common.tpJgroup")}}</span>
-			<el-radio-group :disabled="showRadio" v-model="radio" @change="radioChange" style="margin-right: 15px;">
-			    <el-radio label="1">{{$t("prepare.common.idNeed.unneed")}}</el-radio>
-			    <el-radio label="2">{{$t("prepare.common.idNeed.reception")}}</el-radio>
-			    <el-radio label="3">{{$t("prepare.common.idNeed.need")}}</el-radio>
-			</el-radio-group>
-			<!--<el-button :disabled="showButton" type="primary" icon="el-icon-plus" size="small" @click="add" circle></el-button>-->
-			<el-button :disabled="showButton" type="primary" icon="el-icon-plus" size="small" @click="addTools" circle></el-button>
-<!--			<span style="margin-left: 50px;">-->
-<!--				<el-checkbox v-model="armTrayConf" :disabled="showRadio">{{$t("prepare.common.armTrayConf")}}</el-checkbox>-->
-<!--				<el-checkbox v-model="armFixtureConf" :disabled="showRadio">{{$t("prepare.common.armFixtureConf")}}</el-checkbox>-->
-<!--			</span>-->
-		</div>
-		<!-- Table数据 :span-method="objectSpanMethod"  -->
-		<el-table
-				v-if="radio != '1'"
-	      ref="table"
-	      v-loading="loading"
-	      :data="tableData"
-	      border
-	      fit
-	      highlight-current-row
-    		@current-change="handleCurrentChange"
-	      style="width: 100%;"
-	      header-row-class-name="technologTable"
-	    >
-	    	<!-- 编号 -->
-	      <el-table-column prop="no" :label='$t("prepare.table.toolGroup.no")' align="center" width="180px" :show-overflow-tooltip="true">
-	      	<template slot-scope="{ row }">
-	    			<div v-if="type == 'view'">{{row.no}}</div>
-	    			<div v-else>
-	    				<el-button type="text" @click="editTools(row)">{{row.no}}</el-button>
-	    			</div>
-	    		</template>
-	      </el-table-column>
-	    	<!-- 物料名称 -->
-	    	<el-table-column prop="name" :label='$t("prepare.table.toolGroup.name")' align="center" width="120px" :show-overflow-tooltip="true"></el-table-column>
-	      <!-- 物料类型 -->
-	      <el-table-column prop="category.data" :label='$t("prepare.table.toolGroup.category")' width="150px"></el-table-column>
-	      <!-- 附件 -->
-	      <el-table-column prop="armorPic" :label='$t("prepare.table.toolGroup.armorPic")' align="center" width="180px">
-	      	<template slot-scope="{ row }">
-	      		<div v-if="row.jjImgList && row.jjImgList.length > 0" class="demo-image__preview">
-						  <el-image
-						    style="width: 100px; height: 60px"
-						    :src="row.jjImgList[0]"
-						    :preview-src-list="row.jjImgList">
-						  </el-image>
-						</div>
-	          <el-button v-else type="text" @click="handleClick(row)">{{$t("common.uploadImg")}}</el-button>
-					</template>
-	      </el-table-column>
-	      <!-- 备注 -->
-	      <el-table-column prop="remark" :label='$t("common.remark")'>
-	      	<template slot-scope="{ row }">
-	      		<el-input size="small" v-model="row.remark" :placeholder='$t("common.pleaseEnter")'></el-input>
-	      	</template>
-	      </el-table-column>
-	      <!-- 操作 -->
-	      <el-table-column
-	      	v-if="type != 'view' && radio != '2'"
-	        :label="$t('table.operation')"
-	        fixed="right"
-	        align="center"
-	        column-key="operation"
-	        width="60px"
-	      >
-	        <!--<template slot-scope="{ row }" v-if="row.category.key == '03'">-->
-	        <template slot-scope="{ row }">
-	        	<!--<el-tooltip class="item" :content='$t("common.edit")' effect="dark" placement="top-start">
-		          <i
-		            class="el-icon-edit table-operation"
-		            style="color: #2db7f5;"
-		            @click="edit(row)"
-		          />
-		        </el-tooltip>-->
-	          <el-tooltip class="item" :content='$t("common.delete")' effect="dark" placement="top-start">
-		          <i
-		            class="el-icon-delete table-operation"
-		            style="color: #f50;"
-		            @click="domDelete(row)"
-		          />
-	          </el-tooltip>
-	        </template>
-	      </el-table-column>
-	    </el-table>
-
-    <pagination
-      v-show="tableData.total > 0"
-      :limit.sync="queryParams.size"
-      :page.sync="queryParams.current"
-      :total="Number(tableData.total)"
-      @pagination="fetch"
-    />
-
-    <!-- 托盘 -->
-    <tenant-add
-      ref="add"
-      :dialog-visible="dialogAdd.isVisible"
-      :title="dialogAdd.title"
-      @close="editAddClose"
-      @success="editAddSuccess"
-    />
-
-    <!-- 夹具 -->
-    <tenant-edit
-      ref="edit"
-      :dialog-visible="dialog.isVisible"
-      :title="dialog.title"
-      @close="editClose"
-      @success="editSuccess"
-    />
-    <tenant-view
-      ref="view"
-      :dialog-visible="tenantViewVisible"
-      @close="viewClose"
-    />
-
-    <!-- 上传图片对话框 -->
-    <el-dialog
-    	title="上传图片"
-    	width="350px"
-    	:visible.sync="uploadQcVisible"
-    	:append-to-body="true"
-    	@closed="closePic"
-    >
-      <el-upload
-        :key="timer"
-        :headers="headers"
-        :action="action"
-        :data="fileOtherData"
-        list-type="picture-card"
-        :file-list="fileList"
-        :on-remove="handleRemove"
-        :on-success="handleSuccss"
-				multiple
-				:limit="1"
-      >
-        <i class="el-icon-plus" />
-      </el-upload>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-	// 【新增】组件
-	import TenantAdd from "./components/Add"
-	// 【修改】组件
-	import TenantEdit from "./components/Edit"
-	// 【详情】组件
-	import TenantView from "./components/View"
-	// 【分页】组件
-	import Pagination from "@/components/Pagination"
-	// 【工艺管理】-API
-	import technologyMgrApi from "@/api/prepareProductMgr/technologyMgr"
-	// 共通的函数
-	import { downloadFile, initEnums, initDicts, initQueryParams, arrReduce, arrSort } from '@/utils/commons'
-	// 附件上传需要的组件和函数
-	import db from "@/utils/localstorage";
-	import {Base64} from 'js-base64';
-
-	export default {
-	  name: "TrayForm",
-	  components: { Pagination, TenantAdd, TenantEdit, TenantView },
-	  props: {
-	  	type: String,
-	  	technology: Object
-	  },
-	  data () {
-	    return {
-	    	armTrayConf: false,
-	    	armFixtureConf: false,
-	    	currentRow: null, // 当前选中的数据
-	    	uploadQcVisible: false,  // 上传弹出框
-	    	// 上传附件的参数
-	    	timer: 1,   // 生产图片的key,为了重载组件使用
-	    	action: `${process.env.VUE_APP_BASE_API}/file/attachment/upload`, // 附件上传的API
-	      fileOtherData: {    // 附件其它参数
-	      	bizId: "",
-	        bizType: "TRAY"
-	      },
-	    	fileList: [],  // 附件的数据
-	    	tempObj: {}, // 当前的Row数据
-
-	    	radio: '3',
-	    	audioStatus: [],
-	    	dialogAdd: {
-	        isVisible: false,
-	        title: ""
-	      },
-	      dialog: {
-	        isVisible: false,
-	        title: ""
-	      },
-	      preview: {
-	        isVisible: false,
-	        context: ''
-	      },
-	      tenantViewVisible: false,
-	      tableKey: 0,
-	      queryParams: initQueryParams({}),
-	      selection: [],
-	      loading: false,
-	      tableData: [],
-	      spanArr: [],  // 【组序】合并单元格
-	      spanArr2: [],  // 【优先级】合并单元格
-	    }
-	  },
-	  // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
-	  created() {
-		},
-		/*watch: {
-      radio: {
-      	handler: function(val) {
-	      	// 如果是“来自上一工序”
-	      	if(val && val == '2'){
-	      		this.getPreMeterialList()
-	      	}else{
-	      		// 如果值存在
-	      		if(val){
-	      			// 清除数据
-		  				this.tableData = []
-	      		}
-	      	}
-	        console.log("rdoo按钮:",val)
-	      }
-      }
-		},*/
-	  computed: {
-	  	headers() {
-	      return {
-	        token: 'Bearer ' + db.get("TOKEN", ""),
-	        tenant: db.get("TENANT", "") || "",
-	        Authorization: `Basic ${Base64.encode(`${process.env.VUE_APP_CLIENT_ID}:${process.env.VUE_APP_CLIENT_SECRET}`)}`
-	      };
-	  	},
-		  showRadio(){
-		   	return this.type == "view" ? true : false
-		  },
-		  showButton(){
-		  	let flag = false
-	  		if(this.type == "view"){
-		  		flag = true
-		  	}else{
-		  		flag = this.radio != '3' ? true : false
-		  	}
-		  	return flag
-		  }
-	  },
-	  mounted () {
-	    // 此时 data 已经被 observed 了
-	  },
-	  methods: {
-	  	// 【Radio】按钮值变化-事件
-	  	radioChange(val){
-	  		// 提示用户,这样操作,会删除【程序】的数据。
-	  		this.$message({
-          message: '这样操作,会清空【程序】的所有数据!',
-          type: 'warning'
-        });
-	  		// 如果是“来自上一工序”
-      	if(val == '2'){
-      		this.getPreMeterialList()
-      	}else{
-      		// 清除数据
-		  		this.tableData = []
-      	}
-      	// 【托盘数据】一旦变化,【程序】必须清空数据,数据已经没有意义了
-      	this.$emit("clearProgram")
-	  	},
-	  	// 【托盘夹具组-来自上一工序】-函数
-	  	getPreMeterialList(){
-	  		technologyMgrApi.getPreProcedureTrayList(this.technology).then(res => {
-	  			console.log("【托盘夹具组-来自上一工序】: ", res)
-	  			res = res.data
-	  			if(res.isSuccess){
-	  				if(res.data){
-	  					// 添加数据
-	  					this.setDataMustSpan(this.setKeyList(res.data, 'tray'))
-	  				}
-	  			}
-	  		})
-	  	},
-	  	// 赋值前处理-添加key数据健
-	    setKeyList(list, flag){
-	    	if(list && list.length > 0){
-	    		let arr = []
-	    		list.forEach(item => {
-	    			// 添加唯一键
-		    		item.key = ''+ Math.random()
-		    		// 如果是托盘夹具的时候,组装分类
-		    		if(flag == 'tray'){
-		    			// 把【组序】和【优先级】改成字符串
-		    			//item.groupSort = ''+ item.groupSort
-		    			//item.groupPrority = ''+ item.groupPrority
-		    			// 给图片一个列表数据,jjImgList
-		    			item.jjImgList = []
-		    			if(!!item.armorPic){
-		    				item.jjImgList.push(item.armorPic)
-		    			}
-		    			// 添加类型
-		    			/*if(item.bizType == '1'){
-		    				item.category = {key: '03',data: '托盘'}
-		    			}else{
-		    				item.category = {key: '02',data: '夹具'}
-		    			}*/
-		    		}
-		    		arr.push(item)
-		    	})
-	    		list = arr
-	    	}else{
-	    		list = []
-	    	}
-	    	return list
-	    },
-
-	  	//获得数据相同的行数
-	 		rowspanFiled(data, filed) {
-	 			let spanArr5 = [];
-		    data.forEach((item,index) => {
-	        if( index === 0){
-	            spanArr5.push(1);
-	            this.position = 0;
-	        }else{
-	            if(data[index].groupSort === data[index-1].groupSort && data[index][filed] === data[index-1][filed]){
-	                spanArr5[this.position] += 1;
-	                spanArr5.push(0);
-	            }else{
-	                spanArr5.push(1);
-	                this.position = index;
-	            }
-	        }
-		    })
-		    return spanArr5;
-	    },
-	    //合并
-	 		objectSpanMethod({ row, column, rowIndex, columnIndex }) {  //表格合并行
-		    if (columnIndex === 0) {
-		        let _row = this.spanArr[rowIndex];
-		        let _col = _row > 0 ? 1 : 0;
-		        return {
-		            rowspan: _row,
-		            colspan: _col
-		        }
-		    }
-		    if(columnIndex === 1){
-		        let _row = this.spanArr2[rowIndex];
-		        let _col = _row > 0 ? 1 : 0;
-		        return {
-		            rowspan: _row,
-		            colspan: _col
-		        }
-		    }
-	    },
-	  	//点击上传,打开对话框,此时暂存row数据
-			handleClick(row){
-		    //打开对话框
-		    this.uploadQcVisible = true
-		    //定义全局变量接收row,row代表表格每一行的数据,每一行的row对象下边有一个jjImgList数组来存放上传的图片
-		    this.tempObj = row
-		    //判断row.jjImgList是否已经传过数据
-		    if(row.jjImgList.length !== 0){
-		        this.fileList = Object.assign([],row.jjImgList)
-		    }
-			},
-
-			// 上传成功,push到当前行的jjImgList数组中
-	    handleSuccss(res, file, fileList) {
-	    	// console.log("图片:", res)
-	      // this.tempObj.jjImgList.push({ name: file.name, url: res.data.url, status: file.status, uid: file.uid })
-	      this.tempObj.jjImgList.push(res.data.url)
-	      console.log("图片数据:", this.tempObj.jjImgList)
-	      // 赋值图片
-	      this.tempObj.armorPic = res.data.url
-	      // 关闭对话框时
-	      this.uploadQcVisible = false
-	      this.closePic()
-	    },
-
-	    //关闭对话框时,重载组件,并且把fileList清空,否则会有异常
-	    closePic() {
-	      this.timer = new Date().getTime()
-	      this.fileList = []
-	    },
-			// 移除图片
-	    handleRemove(file, fileList) {
-	      this.tempObj.jjImgList = Object.assign([], fileList)
-	      // 赋值图片
-	      this.tempObj.armorPic = ""
-	    },
-	    // 当Table换行的时候
-	    handleCurrentChange(val) {
-        this.currentRow = val;
-      },
-	    viewClose () {
-	      this.tenantViewVisible = false
-	    },
-	    onSelectChange (selection) {
-	      this.selection = selection
-	    },
-	    search () {
-	      this.fetch({
-	        ...this.queryParams
-	      })
-	    },
-	    reset () {
-	      this.queryParams = initQueryParams({})
-	      this.$refs.table.clearSort()
-	      this.$refs.table.clearFilter()
-	      this.search()
-	    },
-
-	    // 【删除】按钮-事件  groupSort
-	    domDelete(row){
-	    	this.$confirm(this.$t("tips.comTips"), this.$t("common.tips"), {
-	      	distinguishCancelAndClose: true,
-	        confirmButtonText: this.$t("common.confirm"),
-	        cancelButtonText: this.$t("common.cancel"),
-	        type: "warning"
-	      }).then(() => {
-	      	// 过滤我们需要的数据
-		  		let list = this.tableData.filter(item => {
-		  			let f1 = item.id || item.key;
-		  			let f2 = row.id || row.key;
-		  			return f1 != f2
-		  		});
-		  		// 重新赋值
-		  		this.tableData = list;
-	      }).catch(() => {})
-	    },
-
-	    // 【删除】按钮-事件  groupSort
-	    domDelete_v1(row){
-	    	this.$confirm(this.$t("tips.comTips"), this.$t("common.tips"), {
-	      	distinguishCancelAndClose: true,
-	        confirmButtonText: this.$t("common.confirm"),
-	        cancelButtonText: this.$t("common.cancel"),
-	        type: "warning"
-	      }).then(() => {
-	    		// 过滤需要的数据
-		    	let list = this.tableData.filter(item => item.groupSort != row.groupSort)
-		    	// 重新赋值
-		    	this.tableData = list
-
-		    	// 要合并列的准备数据
-		    	if(this.tableData.length > 0){
-		    		this.spanArr = this.rowspanFiled(this.tableData, "groupSort")
-				  	this.spanArr2 = this.rowspanFiled(this.tableData, "groupPrority")
-		    	}
-
-		    	// 把值给父组件【程序】赋值
-		    	this.$emit("setProgram", this.tableData.filter(item => item.category.key == '03'))
-	      }).catch(() => {})
-	    },
-
-	    // 托盘【新增】按钮-事件
-	    add () {
-	      // 设置【组序】
-	      if(this.tableData.length > 0){
-	      	let groupSort = parseInt(this.tableData[this.tableData.length -1].groupSort) + 1
-	      	this.$refs.add.tenant.groupSort = groupSort
-	      }
-	      this.$refs.add.setTenant(false)
-	      this.dialogAdd.title = this.$t("common.add") + this.$t("prepare.common.tpJgroup")
-	      this.dialogAdd.isVisible = true
-	    },
-
-	    // 托盘【修改】按钮-事件
-	    addRow(row){
-	    	// 设置【组序】
-	      this.$refs.add.tenant.groupSort = parseInt(row.groupSort)
-	      this.$refs.add.setTenant(row)
-	      this.dialogAdd.title = this.$t("common.edit") + this.$t("prepare.common.tpJgroup")
-	      this.dialogAdd.isVisible = true
-	    },
-
-	    // 弹出框【取消】按钮-事件
-	    editAddClose () {
-	      this.dialogAdd.isVisible = false
-	    },
-
-	    // 弹出框【确定】按钮-事件
-	    editAddSuccess (arr) {
-	    	// 通过深层复制,避免相同地址引起数据,一起改变
-	    	arr = JSON.parse(arr)
-	    	// 需要处理的最终数据
-	    	let list = []
-	    	// 把【新增-托盘】的对象信息拿出来,
-	    	let addObj = arr.filter(item => item.category.key == '03')[0]
-	    	// console.log("托盘夹具数据:", arr, addObj)
-	    	// 和已经有的数据,进行对比过滤
-	    	if(this.tableData.length > 0){
-	    		let isFlag = false;  // 默认【托盘不存在】
-	    		// 已经存在的【托盘】的分组
-	    		let groupSort = ""
-	    		this.tableData.map(item => {
-	    			// 如果数据已经存在
-	    			if(item.trayId == addObj.trayId){
-	    				// console.log("wwwww :", item, addObj)
-	    				groupSort = item.groupSort
-	    				isFlag = true
-	    				return false
-	    			}
-	    		})
-	    		// 如果存在,就比较。或者干脆全部删除
-	    		if(isFlag){
-	    			// console.log("【托盘】的分组groupSort: ", groupSort)
-	    			// 过滤已经存在的【托盘】分组数据
-	    			let target = this.tableData.filter(item => item.groupSort != groupSort)
-	    			// 合并数据
-	    			list = [...target, ...arr]
-	    			// console.log("【托盘】的分组2222: ", list)
-	    		}else{
-	    			// 合并当前数组,和新增的数组
-	    			list = [...this.tableData, ...arr]
-	    		}
-	    		// 进行排序
-    			list = arrSort(list,"groupSort")
-    			// 赋值
-    			this.tableData = list
-    			// console.log("最终数据:", list)
-	    	}else{
-	    		// 直接赋值
-	    		this.tableData = arr
-	    	}
-	    	// 要合并列的准备数据
-	    	if(this.tableData.length > 0){
-	    		this.spanArr = this.rowspanFiled(this.tableData, "groupSort")
-			  	this.spanArr2 = this.rowspanFiled(this.tableData, "groupPrority")
-	    	}
-	    	// 把值给父组件【程序】赋值
-	    	this.$emit("setProgram", this.tableData.filter(item => item.category.key == '03'))
-	    },
-
-	    // 设置数据前,需要合并
-	    setDataMustSpan(data){
-	    	this.tableData =  data
-	    	// 要合并列的准备数据
-	    	if(data.length > 0){
-	    		this.spanArr = this.rowspanFiled(this.tableData, "groupSort")
-			  	this.spanArr2 = this.rowspanFiled(this.tableData, "groupPrority")
-			  	// 把值给父组件【程序】赋值
-	    		this.$emit("setProgram", this.tableData.filter(item => item.category.key == '03'))
-	    	}
-	    },
-
-	    // 【夹具】新增-事件
-	    addTools(){
-	    	this.$refs.edit.type = "add";
-	    	this.dialog.title = this.$t("common.add") + this.$t("prepare.common.tab5");
-	      this.dialog.isVisible = true;
-	    },
-
-	    // 【夹具】修改-事件
-	    editTools(row){
-	    	this.dialog.title = this.$t("common.edit") + this.$t("prepare.common.tab5");
-	    	this.$refs.edit.type = "edit";
-	    	// 赋值,修改的识别用。
-	    	let keys = row.id || row.key;
-	    	this.$refs.edit.keys = keys;
-	      this.dialog.isVisible = true;
-	    },
-
-	    editClose(){
-	    	this.dialog.isVisible = false
-	    },
-
-	    editSuccess(data, type){
-	    	// 最新数组
-	    	let list = []
-	    	// 深度Copy,防止翻车
-	    	let tool = JSON.parse(data);
-	    	let item = {
-	    		key: tool.key, 						// 关键字
-	    		trayPositionId: tool.id,
-	    		trayId: tool.trayId,			// 夹具id
-	    		no: tool.no, 							// 编号
-	    		name: tool.name,  				// 名称
-	    		brand: tool.brand, 				// 品牌
-	    		category: tool.category		// 物料类型
-	    	};
-	    	if (type == "add") {
-	    		// 添加,附件
-	    		item.jjImgList = [];
-		    	// 添加数据
-		    	list.push(item);
-		    	// 重新赋值
-		    	this.tableData = [...this.tableData, ...list];
-	    	} else {
-	    		let target = [];
-	    		this.tableData.map(obj => {
-	    			let f1 = obj.id;
-	    			let f2 = tool.key;
-	    			if(f1 == f2){
-	    				obj.trayPositionId = tool.id;
-	    				obj.trayId = tool.trayId;				// 夹具id
-				    	obj.no = tool.no; 							// 编号
-				    	obj.name = tool.name;  					// 名称
-				    	obj.brand = tool.brand; 				// 品牌
-				    	obj.category = tool.category;		// 物料类型
-				    	obj.jjImgList = []; 						// 附件
-	    			}
-	    			target.push(obj);
-	    		});
-	    		// 赋值
-	    		this.tableData = target;
-	    		console.log("最终数据:", this.tableData);
-	    	}
-
-	    },
-
-	    editSuccess_v1(obj){
-	    	// 深度Copy,防止翻车
-	    	let tool = JSON.parse(obj)
-	    	// console.log("选择的对象:", tool)
-	    	// console.log("当前选中的对象:", this.currentRow)
-	    	// 最新数组
-	    	let list = []
-	    	this.tableData.map(item => {
-	    		if(item.key == this.currentRow.key){
-	    			item.trayPositionId = tool.id
-	    			// 夹具id
-	    			item.trayId = tool.trayId,
-	    			item.no = tool.no  // 编号
-	    			item.name = tool.name  // 名称
-	    			item.brand = tool.brand  // 品牌
-	    		}
-	    		// 添加数据
-	    		list.push(item)
-	    	})
-	    	// 重新赋值
-	    	this.tableData = list
-	    },
-
-	    clearSelections () {
-	      this.$refs.table.clearSelection()
-	    },
-	    delete (ids) {
-
-	    },
-	    view (row) {
-	      this.$refs.view.setTenant(row)
-	      this.tenantViewVisible = true
-	    },
-	    // 【修改】表头上Btn-事件
-	    editOne() {
-	    	if (!this.selection.length) {
-	        this.$message({
-	          message: this.$t("tips.noDataSelected"),
-	          type: "warning"
-	        })
-	        return
-	      }
-	    	if (this.selection.length > 1) {
-	        this.$message({
-	          message: this.$t("tips.mustOne"),
-	          type: "warning"
-	        })
-	        return
-	      }
-	    	this.edit(this.selection[0]);
-	    },
-	    edit (row) {
-	      if (row.readonly) {
-	        this.$message({
-	          message: this.$t("tips.systemData"),
-	          type: "warning"
-	        })
-	        return
-	      }
-	      this.$refs.edit.setTenant(row)
-	      this.$refs.edit.type = "edit"
-	      this.dialog.title = this.$t("common.edit")
-	      this.dialog.isVisible = true
-	    },
-	    fetch (params = {}) {
-
-	    }
-	  }
-	}
-</script>
-<style>
-</style>
-<style lang="scss" scoped>
-	.titleSmall{
-		position: relative;
-		padding-left: 10px;
-		margin-right: 15px;
-	}
-	.titleSmall:before{
-		content: '';
-		position: absolute;
-		background: #1890ff;
-		width: 5px;
-		height: 90%;
-		left: 0;
-		top: 1px;
-	}
-	.itemDiv{
-		margin: 10px 0;
-	}
-</style>
+<template>
+  <div class="">
+    <!-- 按钮功能 -->
+    <div class="itemDiv">
+			<span class="titleSmall">{{$t("prepare.common.tpJgroup")}}</span>
+			<el-radio-group :disabled="showRadio" v-model="radio" @change="radioChange" style="margin-right: 15px;">
+			    <el-radio label="1">{{$t("prepare.common.idNeed.unneed")}}</el-radio>
+			    <el-radio label="2">{{$t("prepare.common.idNeed.reception")}}</el-radio>
+			    <el-radio label="3">{{$t("prepare.common.idNeed.need")}}</el-radio>
+			</el-radio-group>
+			<!--<el-button :disabled="showButton" type="primary" icon="el-icon-plus" size="small" @click="add" circle></el-button>-->
+			<el-button :disabled="showButton" type="primary" icon="el-icon-plus" size="small" @click="addTools" circle></el-button>
+<!--			<span style="margin-left: 50px;">-->
+<!--				<el-checkbox v-model="armTrayConf" :disabled="showRadio">{{$t("prepare.common.armTrayConf")}}</el-checkbox>-->
+<!--				<el-checkbox v-model="armFixtureConf" :disabled="showRadio">{{$t("prepare.common.armFixtureConf")}}</el-checkbox>-->
+<!--			</span>-->
+		</div>
+		<!-- Table数据 :span-method="objectSpanMethod"  -->
+		<el-table
+				v-if="radio != '1'"
+	      ref="table"
+	      v-loading="loading"
+	      :data="tableData"
+	      border
+	      fit
+	      highlight-current-row
+    		@current-change="handleCurrentChange"
+	      style="width: 100%;"
+	      header-row-class-name="technologTable"
+	    >
+	    	<!-- 编号 -->
+	      <el-table-column prop="no" :label='$t("prepare.table.toolGroup.no")' align="center" width="180px" :show-overflow-tooltip="true">
+	      	<template slot-scope="{ row }">
+	    			<div v-if="type == 'view'">{{row.no}}</div>
+	    			<div v-else>
+	    				<el-button type="text" @click="editTools(row)">{{row.no}}</el-button>
+	    			</div>
+	    		</template>
+	      </el-table-column>
+	    	<!-- 物料名称 -->
+	    	<el-table-column prop="name" :label='$t("prepare.table.toolGroup.name")' align="center" width="120px" :show-overflow-tooltip="true"></el-table-column>
+	      <!-- 物料类型 -->
+	      <el-table-column prop="category.data" :label='$t("prepare.table.toolGroup.category")' width="150px"></el-table-column>
+	      <!-- 附件 -->
+	      <el-table-column prop="armorPic" :label='$t("prepare.table.toolGroup.armorPic")' align="center" width="180px">
+	      	<template slot-scope="{ row }">
+	      		<div v-if="row.jjImgList && row.jjImgList.length > 0" class="demo-image__preview">
+						  <el-image
+						    style="width: 100px; height: 60px"
+						    :src="row.jjImgList[0]"
+						    :preview-src-list="row.jjImgList">
+						  </el-image>
+						</div>
+	          <el-button v-else type="text" @click="handleClick(row)">{{$t("common.uploadImg")}}</el-button>
+					</template>
+	      </el-table-column>
+	      <!-- 备注 -->
+	      <el-table-column prop="remark" :label='$t("common.remark")'>
+	      	<template slot-scope="{ row }">
+	      		<el-input size="small" v-model="row.remark" :placeholder='$t("common.pleaseEnter")'></el-input>
+	      	</template>
+	      </el-table-column>
+	      <!-- 操作 -->
+	      <el-table-column
+	      	v-if="type != 'view' && radio != '2'"
+	        :label="$t('table.operation')"
+	        fixed="right"
+	        align="center"
+	        column-key="operation"
+	        width="60px"
+	      >
+	        <!--<template slot-scope="{ row }" v-if="row.category.key == '03'">-->
+	        <template slot-scope="{ row }">
+	        	<!--<el-tooltip class="item" :content='$t("common.edit")' effect="dark" placement="top-start">
+		          <i
+		            class="el-icon-edit table-operation"
+		            style="color: #2db7f5;"
+		            @click="edit(row)"
+		          />
+		        </el-tooltip>-->
+	          <el-tooltip class="item" :content='$t("common.delete")' effect="dark" placement="top-start">
+		          <i
+		            class="el-icon-delete table-operation"
+		            style="color: #f50;"
+		            @click="domDelete(row)"
+		          />
+	          </el-tooltip>
+	        </template>
+	      </el-table-column>
+	    </el-table>
+
+    <pagination
+      v-show="tableData.total > 0"
+      :limit.sync="queryParams.size"
+      :page.sync="queryParams.current"
+      :total="Number(tableData.total)"
+      @pagination="fetch"
+    />
+
+    <!-- 托盘 -->
+    <tenant-add
+      ref="add"
+      :dialog-visible="dialogAdd.isVisible"
+      :title="dialogAdd.title"
+      @close="editAddClose"
+      @success="editAddSuccess"
+    />
+
+    <!-- 夹具 -->
+    <tenant-edit
+      ref="edit"
+      :dialog-visible="dialog.isVisible"
+      :title="dialog.title"
+      @close="editClose"
+      @success="editSuccess"
+    />
+    <tenant-view
+      ref="view"
+      :dialog-visible="tenantViewVisible"
+      @close="viewClose"
+    />
+
+    <!-- 上传图片对话框 -->
+    <el-dialog
+    	title="上传图片"
+    	width="350px"
+    	:visible.sync="uploadQcVisible"
+    	:append-to-body="true"
+    	@closed="closePic"
+    >
+      <el-upload
+        :key="timer"
+        :headers="headers"
+        :action="action"
+        :data="fileOtherData"
+        list-type="picture-card"
+        :file-list="fileList"
+        :on-remove="handleRemove"
+        :on-success="handleSuccss"
+				multiple
+				:limit="1"
+      >
+        <i class="el-icon-plus" />
+      </el-upload>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+	// 【新增】组件
+	import TenantAdd from "./components/Add"
+	// 【修改】组件
+	import TenantEdit from "./components/Edit"
+	// 【详情】组件
+	import TenantView from "./components/View"
+	// 【分页】组件
+	import Pagination from "@/components/Pagination"
+	// 【工艺管理】-API
+	import technologyMgrApi from "@/api/prepareProductMgr/technologyMgr"
+	// 共通的函数
+	import { downloadFile, initEnums, initDicts, initQueryParams, arrReduce, arrSort } from '@/utils/commons'
+	// 附件上传需要的组件和函数
+	import db from "@/utils/localstorage";
+	import {Base64} from 'js-base64';
+
+	export default {
+	  name: "TrayForm",
+	  components: { Pagination, TenantAdd, TenantEdit, TenantView },
+	  props: {
+	  	type: String,
+	  	technology: Object
+	  },
+	  data () {
+	    return {
+	    	armTrayConf: false,
+	    	armFixtureConf: false,
+	    	currentRow: null, // 当前选中的数据
+	    	uploadQcVisible: false,  // 上传弹出框
+	    	// 上传附件的参数
+	    	timer: 1,   // 生产图片的key,为了重载组件使用
+	    	action: `${process.env.VUE_APP_BASE_API}/file/attachment/upload`, // 附件上传的API
+	      fileOtherData: {    // 附件其它参数
+	      	bizId: "",
+	        bizType: "TRAY"
+	      },
+	    	fileList: [],  // 附件的数据
+	    	tempObj: {}, // 当前的Row数据
+
+	    	radio: '3',
+	    	audioStatus: [],
+	    	dialogAdd: {
+	        isVisible: false,
+	        title: ""
+	      },
+	      dialog: {
+	        isVisible: false,
+	        title: ""
+	      },
+	      preview: {
+	        isVisible: false,
+	        context: ''
+	      },
+	      tenantViewVisible: false,
+	      tableKey: 0,
+	      queryParams: initQueryParams({}),
+	      selection: [],
+	      loading: false,
+	      tableData: [],
+	      spanArr: [],  // 【组序】合并单元格
+	      spanArr2: [],  // 【优先级】合并单元格
+	    }
+	  },
+	  // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
+	  created() {
+		},
+		/*watch: {
+      radio: {
+      	handler: function(val) {
+	      	// 如果是“来自上一工序”
+	      	if(val && val == '2'){
+	      		this.getPreMeterialList()
+	      	}else{
+	      		// 如果值存在
+	      		if(val){
+	      			// 清除数据
+		  				this.tableData = []
+	      		}
+	      	}
+	        console.log("rdoo按钮:",val)
+	      }
+      }
+		},*/
+	  computed: {
+	  	headers() {
+	      return {
+	        token: 'Bearer ' + db.get("TOKEN", ""),
+	        tenant: db.get("TENANT", "") || "",
+	        Authorization: `Basic ${Base64.encode(`${process.env.VUE_APP_CLIENT_ID}:${process.env.VUE_APP_CLIENT_SECRET}`)}`
+	      };
+	  	},
+		  showRadio(){
+		   	return this.type == "view" ? true : false
+		  },
+		  showButton(){
+		  	let flag = false
+	  		if(this.type == "view"){
+		  		flag = true
+		  	}else{
+		  		flag = this.radio != '3' ? true : false
+		  	}
+		  	return flag
+		  }
+	  },
+	  mounted () {
+	    // 此时 data 已经被 observed 了
+	  },
+	  methods: {
+	  	// 【Radio】按钮值变化-事件
+	  	radioChange(val){
+	  		// 提示用户,这样操作,会删除【程序】的数据。
+	  		this.$message({
+          message: '这样操作,会清空【程序】的所有数据!',
+          type: 'warning'
+        });
+	  		// 如果是“来自上一工序”
+      	if(val == '2'){
+      		this.getPreMeterialList()
+      	}else{
+      		// 清除数据
+		  		this.tableData = []
+      	}
+      	// 【托盘数据】一旦变化,【程序】必须清空数据,数据已经没有意义了
+      	this.$emit("clearProgram")
+	  	},
+	  	// 【托盘夹具组-来自上一工序】-函数
+	  	getPreMeterialList(){
+	  		technologyMgrApi.getPreProcedureTrayList(this.technology).then(res => {
+	  			console.log("【托盘夹具组-来自上一工序】: ", res)
+	  			res = res.data
+	  			if(res.isSuccess){
+	  				if(res.data){
+	  					// 添加数据
+	  					this.setDataMustSpan(this.setKeyList(res.data, 'tray'))
+	  				}
+	  			}
+	  		})
+	  	},
+	  	// 赋值前处理-添加key数据健
+	    setKeyList(list, flag){
+	    	if(list && list.length > 0){
+	    		let arr = []
+	    		list.forEach(item => {
+	    			// 添加唯一键
+		    		item.key = ''+ Math.random()
+		    		// 如果是托盘夹具的时候,组装分类
+		    		if(flag == 'tray'){
+		    			// 把【组序】和【优先级】改成字符串
+		    			//item.groupSort = ''+ item.groupSort
+		    			//item.groupPrority = ''+ item.groupPrority
+		    			// 给图片一个列表数据,jjImgList
+		    			item.jjImgList = []
+		    			if(!!item.armorPic){
+		    				item.jjImgList.push(item.armorPic)
+		    			}
+		    			// 添加类型
+		    			/*if(item.bizType == '1'){
+		    				item.category = {key: '03',data: '托盘'}
+		    			}else{
+		    				item.category = {key: '02',data: '夹具'}
+		    			}*/
+		    		}
+		    		arr.push(item)
+		    	})
+	    		list = arr
+	    	}else{
+	    		list = []
+	    	}
+	    	return list
+	    },
+
+	  	//获得数据相同的行数
+	 		rowspanFiled(data, filed) {
+	 			let spanArr5 = [];
+		    data.forEach((item,index) => {
+	        if( index === 0){
+	            spanArr5.push(1);
+	            this.position = 0;
+	        }else{
+	            if(data[index].groupSort === data[index-1].groupSort && data[index][filed] === data[index-1][filed]){
+	                spanArr5[this.position] += 1;
+	                spanArr5.push(0);
+	            }else{
+	                spanArr5.push(1);
+	                this.position = index;
+	            }
+	        }
+		    })
+		    return spanArr5;
+	    },
+	    //合并
+	 		objectSpanMethod({ row, column, rowIndex, columnIndex }) {  //表格合并行
+		    if (columnIndex === 0) {
+		        let _row = this.spanArr[rowIndex];
+		        let _col = _row > 0 ? 1 : 0;
+		        return {
+		            rowspan: _row,
+		            colspan: _col
+		        }
+		    }
+		    if(columnIndex === 1){
+		        let _row = this.spanArr2[rowIndex];
+		        let _col = _row > 0 ? 1 : 0;
+		        return {
+		            rowspan: _row,
+		            colspan: _col
+		        }
+		    }
+	    },
+	  	//点击上传,打开对话框,此时暂存row数据
+			handleClick(row){
+		    //打开对话框
+		    this.uploadQcVisible = true
+		    //定义全局变量接收row,row代表表格每一行的数据,每一行的row对象下边有一个jjImgList数组来存放上传的图片
+		    this.tempObj = row
+		    //判断row.jjImgList是否已经传过数据
+		    if(row.jjImgList.length !== 0){
+		        this.fileList = Object.assign([],row.jjImgList)
+		    }
+			},
+
+			// 上传成功,push到当前行的jjImgList数组中
+	    handleSuccss(res, file, fileList) {
+	    	// console.log("图片:", res)
+	      // this.tempObj.jjImgList.push({ name: file.name, url: res.data.url, status: file.status, uid: file.uid })
+	      this.tempObj.jjImgList.push(res.data.url)
+	      console.log("图片数据:", this.tempObj.jjImgList)
+	      // 赋值图片
+	      this.tempObj.armorPic = res.data.url
+	      // 关闭对话框时
+	      this.uploadQcVisible = false
+	      this.closePic()
+	    },
+
+	    //关闭对话框时,重载组件,并且把fileList清空,否则会有异常
+	    closePic() {
+	      this.timer = new Date().getTime()
+	      this.fileList = []
+	    },
+			// 移除图片
+	    handleRemove(file, fileList) {
+	      this.tempObj.jjImgList = Object.assign([], fileList)
+	      // 赋值图片
+	      this.tempObj.armorPic = ""
+	    },
+	    // 当Table换行的时候
+	    handleCurrentChange(val) {
+        this.currentRow = val;
+      },
+	    viewClose () {
+	      this.tenantViewVisible = false
+	    },
+	    onSelectChange (selection) {
+	      this.selection = selection
+	    },
+	    search () {
+	      this.fetch({
+	        ...this.queryParams
+	      })
+	    },
+	    reset () {
+	      this.queryParams = initQueryParams({})
+	      this.$refs.table.clearSort()
+	      this.$refs.table.clearFilter()
+	      this.search()
+	    },
+
+	    // 【删除】按钮-事件  groupSort
+	    domDelete(row){
+	    	this.$confirm(this.$t("tips.comTips"), this.$t("common.tips"), {
+	      	distinguishCancelAndClose: true,
+	        confirmButtonText: this.$t("common.confirm"),
+	        cancelButtonText: this.$t("common.cancel"),
+	        type: "warning"
+	      }).then(() => {
+	      	// 过滤我们需要的数据
+		  		let list = this.tableData.filter(item => {
+		  			let f1 = item.id || item.key;
+		  			let f2 = row.id || row.key;
+		  			return f1 != f2
+		  		});
+		  		// 重新赋值
+		  		this.tableData = list;
+	      }).catch(() => {})
+	    },
+
+	    // 【删除】按钮-事件  groupSort
+	    domDelete_v1(row){
+	    	this.$confirm(this.$t("tips.comTips"), this.$t("common.tips"), {
+	      	distinguishCancelAndClose: true,
+	        confirmButtonText: this.$t("common.confirm"),
+	        cancelButtonText: this.$t("common.cancel"),
+	        type: "warning"
+	      }).then(() => {
+	    		// 过滤需要的数据
+		    	let list = this.tableData.filter(item => item.groupSort != row.groupSort)
+		    	// 重新赋值
+		    	this.tableData = list
+
+		    	// 要合并列的准备数据
+		    	if(this.tableData.length > 0){
+		    		this.spanArr = this.rowspanFiled(this.tableData, "groupSort")
+				  	this.spanArr2 = this.rowspanFiled(this.tableData, "groupPrority")
+		    	}
+
+		    	// 把值给父组件【程序】赋值
+		    	this.$emit("setProgram", this.tableData.filter(item => item.category.key == '03'))
+	      }).catch(() => {})
+	    },
+
+	    // 托盘【新增】按钮-事件
+	    add () {
+	      // 设置【组序】
+	      if(this.tableData.length > 0){
+	      	let groupSort = parseInt(this.tableData[this.tableData.length -1].groupSort) + 1
+	      	this.$refs.add.tenant.groupSort = groupSort
+	      }
+	      this.$refs.add.setTenant(false)
+	      this.dialogAdd.title = this.$t("common.add") + this.$t("prepare.common.tpJgroup")
+	      this.dialogAdd.isVisible = true
+	    },
+
+	    // 托盘【修改】按钮-事件
+	    addRow(row){
+	    	// 设置【组序】
+	      this.$refs.add.tenant.groupSort = parseInt(row.groupSort)
+	      this.$refs.add.setTenant(row)
+	      this.dialogAdd.title = this.$t("common.edit") + this.$t("prepare.common.tpJgroup")
+	      this.dialogAdd.isVisible = true
+	    },
+
+	    // 弹出框【取消】按钮-事件
+	    editAddClose () {
+	      this.dialogAdd.isVisible = false
+	    },
+
+	    // 弹出框【确定】按钮-事件
+	    editAddSuccess (arr) {
+	    	// 通过深层复制,避免相同地址引起数据,一起改变
+	    	arr = JSON.parse(arr)
+	    	// 需要处理的最终数据
+	    	let list = []
+	    	// 把【新增-托盘】的对象信息拿出来,
+	    	let addObj = arr.filter(item => item.category.key == '03')[0]
+	    	// console.log("托盘夹具数据:", arr, addObj)
+	    	// 和已经有的数据,进行对比过滤
+	    	if(this.tableData.length > 0){
+	    		let isFlag = false;  // 默认【托盘不存在】
+	    		// 已经存在的【托盘】的分组
+	    		let groupSort = ""
+	    		this.tableData.map(item => {
+	    			// 如果数据已经存在
+	    			if(item.trayId == addObj.trayId){
+	    				// console.log("wwwww :", item, addObj)
+	    				groupSort = item.groupSort
+	    				isFlag = true
+	    				return false
+	    			}
+	    		})
+	    		// 如果存在,就比较。或者干脆全部删除
+	    		if(isFlag){
+	    			// console.log("【托盘】的分组groupSort: ", groupSort)
+	    			// 过滤已经存在的【托盘】分组数据
+	    			let target = this.tableData.filter(item => item.groupSort != groupSort)
+	    			// 合并数据
+	    			list = [...target, ...arr]
+	    			// console.log("【托盘】的分组2222: ", list)
+	    		}else{
+	    			// 合并当前数组,和新增的数组
+	    			list = [...this.tableData, ...arr]
+	    		}
+	    		// 进行排序
+    			list = arrSort(list,"groupSort")
+    			// 赋值
+    			this.tableData = list
+    			// console.log("最终数据:", list)
+	    	}else{
+	    		// 直接赋值
+	    		this.tableData = arr
+	    	}
+	    	// 要合并列的准备数据
+	    	if(this.tableData.length > 0){
+	    		this.spanArr = this.rowspanFiled(this.tableData, "groupSort")
+			  	this.spanArr2 = this.rowspanFiled(this.tableData, "groupPrority")
+	    	}
+	    	// 把值给父组件【程序】赋值
+	    	this.$emit("setProgram", this.tableData.filter(item => item.category.key == '03'))
+	    },
+
+	    // 设置数据前,需要合并
+	    setDataMustSpan(data){
+	    	this.tableData =  data
+	    	// 要合并列的准备数据
+	    	if(data.length > 0){
+	    		this.spanArr = this.rowspanFiled(this.tableData, "groupSort")
+			  	this.spanArr2 = this.rowspanFiled(this.tableData, "groupPrority")
+			  	// 把值给父组件【程序】赋值
+	    		this.$emit("setProgram", this.tableData.filter(item => item.category.key == '03'))
+	    	}
+	    },
+
+	    // 【夹具】新增-事件
+	    addTools(){
+	    	this.$refs.edit.type = "add";
+	    	this.dialog.title = this.$t("common.add") + this.$t("prepare.common.tab5");
+	      this.dialog.isVisible = true;
+	    },
+
+	    // 【夹具】修改-事件
+	    editTools(row){
+	    	this.dialog.title = this.$t("common.edit") + this.$t("prepare.common.tab5");
+	    	this.$refs.edit.type = "edit";
+	    	// 赋值,修改的识别用。
+	    	let keys = row.id || row.key;
+	    	this.$refs.edit.keys = keys;
+	      this.dialog.isVisible = true;
+	    },
+
+	    editClose(){
+	    	this.dialog.isVisible = false
+	    },
+
+	    editSuccess(data, type){
+	    	// 最新数组
+	    	let list = []
+	    	// 深度Copy,防止翻车
+	    	let tool = JSON.parse(data);
+	    	let item = {
+	    		key: tool.key, 						// 关键字
+	    		trayPositionId: tool.id,
+	    		trayId: tool.trayId,			// 夹具id
+	    		no: tool.no, 							// 编号
+	    		name: tool.name,  				// 名称
+	    		brand: tool.brand, 				// 品牌
+	    		category: tool.category		// 物料类型
+	    	};
+	    	if (type == "add") {
+	    		// 添加,附件
+	    		item.jjImgList = [];
+		    	// 添加数据
+		    	list.push(item);
+		    	// 重新赋值
+		    	this.tableData = [...this.tableData, ...list];
+	    	} else {
+	    		let target = [];
+	    		this.tableData.map(obj => {
+	    			let f1 = obj.id;
+	    			let f2 = tool.key;
+	    			if(f1 == f2){
+	    				obj.trayPositionId = tool.id;
+	    				obj.trayId = tool.trayId;				// 夹具id
+				    	obj.no = tool.no; 							// 编号
+				    	obj.name = tool.name;  					// 名称
+				    	obj.brand = tool.brand; 				// 品牌
+				    	obj.category = tool.category;		// 物料类型
+				    	obj.jjImgList = []; 						// 附件
+	    			}
+	    			target.push(obj);
+	    		});
+	    		// 赋值
+	    		this.tableData = target;
+	    		console.log("最终数据:", this.tableData);
+	    	}
+
+	    },
+
+	    editSuccess_v1(obj){
+	    	// 深度Copy,防止翻车
+	    	let tool = JSON.parse(obj)
+	    	// console.log("选择的对象:", tool)
+	    	// console.log("当前选中的对象:", this.currentRow)
+	    	// 最新数组
+	    	let list = []
+	    	this.tableData.map(item => {
+	    		if(item.key == this.currentRow.key){
+	    			item.trayPositionId = tool.id
+	    			// 夹具id
+	    			item.trayId = tool.trayId,
+	    			item.no = tool.no  // 编号
+	    			item.name = tool.name  // 名称
+	    			item.brand = tool.brand  // 品牌
+	    		}
+	    		// 添加数据
+	    		list.push(item)
+	    	})
+	    	// 重新赋值
+	    	this.tableData = list
+	    },
+
+	    clearSelections () {
+	      this.$refs.table.clearSelection()
+	    },
+	    delete (ids) {
+
+	    },
+	    view (row) {
+	      this.$refs.view.setTenant(row)
+	      this.tenantViewVisible = true
+	    },
+	    // 【修改】表头上Btn-事件
+	    editOne() {
+	    	if (!this.selection.length) {
+	        this.$message({
+	          message: this.$t("tips.noDataSelected"),
+	          type: "warning"
+	        })
+	        return
+	      }
+	    	if (this.selection.length > 1) {
+	        this.$message({
+	          message: this.$t("tips.mustOne"),
+	          type: "warning"
+	        })
+	        return
+	      }
+	    	this.edit(this.selection[0]);
+	    },
+	    edit (row) {
+	      if (row.readonly) {
+	        this.$message({
+	          message: this.$t("tips.systemData"),
+	          type: "warning"
+	        })
+	        return
+	      }
+	      this.$refs.edit.setTenant(row)
+	      this.$refs.edit.type = "edit"
+	      this.dialog.title = this.$t("common.edit")
+	      this.dialog.isVisible = true
+	    },
+	    fetch (params = {}) {
+
+	    }
+	  }
+	}
+</script>
+<style>
+</style>
+<style lang="scss" scoped>
+	.titleSmall{
+		position: relative;
+		padding-left: 10px;
+		margin-right: 15px;
+	}
+	.titleSmall:before{
+		content: '';
+		position: absolute;
+		background: #1890ff;
+		width: 5px;
+		height: 90%;
+		left: 0;
+		top: 1px;
+	}
+	.itemDiv{
+		margin: 10px 0;
+	}
+</style>