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

443 lines
18 KiB

3 years ago
11 months ago
3 years ago
2 years ago
11 months ago
3 years ago
11 months ago
3 years ago
11 months ago
3 years ago
11 months ago
3 years ago
11 months ago
2 years ago
11 months ago
2 years ago
11 months ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
11 months ago
3 years ago
11 months ago
11 months ago
11 months ago
11 months ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
1 year ago
3 years ago
1 year ago
1 year ago
1 year ago
2 years ago
3 years ago
1 year ago
1 year ago
1 year ago
1 year ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1 year ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. <template>
  2. <div class="mod-config">
  3. <el-tabs v-if="dataForm.buNo === 'Flexo'" class="tabs" tab-position="left" style="height: 100vh;" type="border-card" v-model="activeName" @tab-click="refreshCurrentTabTable">
  4. <el-tab-pane label="基本信息" name="baseInfo" >
  5. <basicInformation :readonly="readonly" ref="basicInformation"></basicInformation>
  6. </el-tab-pane>
  7. <!-- <el-tab-pane label="备注区" name="remarkPage" >-->
  8. <!-- <remarkPage ref="remarkPage" ></remarkPage>-->
  9. <!-- </el-tab-pane>-->
  10. <el-tab-pane label="客户信息" name="customerInfo" v-if="getPageIf('customerInfo')">
  11. <customerInfo :readonly="readonly" ref="customerInfo"></customerInfo>
  12. </el-tab-pane>
  13. <el-tab-pane label="包装信息" name="packageInfo" v-if="getPageIf('packageInfo')">
  14. <packageInfo :readonly="readonly" ref="packageInfo"></packageInfo>
  15. </el-tab-pane>
  16. <el-tab-pane label="材料信息" name="bom" v-if="getPageIf('bom')">
  17. <bom ref="bom" :readonly="readonly"></bom>
  18. </el-tab-pane>
  19. <el-tab-pane label="工艺信息" name="routing" v-if="getPageIf('routing')">
  20. <routing ref="routing" :readonly="readonly"></routing>
  21. </el-tab-pane>
  22. <el-tab-pane label="图稿信息" name="drawing" v-if="getPageIf('drawing')">
  23. <drawing ref="drawing" :readonly="readonly" :default-value="true"></drawing>
  24. </el-tab-pane>
  25. <el-tab-pane label="FAI" name="fai" v-if="getPageIf('fai')">
  26. <fai ref="fai" :readonly="readonly" :default-value="true"></fai>
  27. </el-tab-pane>
  28. <el-tab-pane label="品质文件" name="qualityDocument" v-if="getPageIf('qualityDocument')">
  29. <qualityDocument :readonly="readonly" ref="qualityDocument" :default-value="true"></qualityDocument>
  30. </el-tab-pane>
  31. <!-- <el-tab-pane label="TP工程师填写信息" name="tpInfo" v-if="getPageIf('tpInfo')">-->
  32. <!-- <tpInfo ref="tpInfo"></tpInfo>-->
  33. <!-- </el-tab-pane>-->
  34. <!-- <el-tab-pane label="产品技术要求" name="technicalRequirement" v-if="getPageIf('technicalRequirement')">-->
  35. <!-- <technicalRequirement ref="technicalRequirement"></technicalRequirement>-->
  36. <!-- </el-tab-pane>-->
  37. <!-- <el-tab-pane label="PE确认信息" name="PEConfirm" v-if="getPageIf('PEConfirm')">-->
  38. <!-- <PEConfirm ref="PEConfirm"></PEConfirm>-->
  39. <!-- </el-tab-pane>-->
  40. <!-- <el-tab-pane label="文档控制" name="documentControl" v-if="getPageIf('documentControl')">-->
  41. <!-- <documentControl ref="documentControl"></documentControl>-->
  42. <!-- </el-tab-pane>-->
  43. <!-- <el-tab-pane label="产品工程师审核/确认" name="peReviewed" v-if="getPageIf('peReviewed')">-->
  44. <!-- <peReviewed ref="peReviewed"></peReviewed>-->
  45. <!-- </el-tab-pane>-->
  46. <!--&lt;!&ndash; 可能不要&ndash;&gt;-->
  47. <!-- <el-tab-pane label="报价专员确认信息" name="queteConfirm" v-if="getPageIf('queteConfirm')">-->
  48. <!-- <queteConfirm ref="queteConfirm"></queteConfirm>-->
  49. <!-- </el-tab-pane>-->
  50. <!-- <el-tab-pane label="CQE确认" name="cqeComfirm" v-if="getPageIf('cqeComfirm')">-->
  51. <!-- <cqeComfirm ref="cqeComfirm"></cqeComfirm>-->
  52. <!-- </el-tab-pane>-->
  53. </el-tabs>
  54. <el-tabs v-else-if="dataForm.buNo === 'RDC'" class="tabs" tab-position="left" style="height: 100vh;" type="border-card" v-model="activeName" @tab-click="refreshCurrentTabTable">
  55. <el-tab-pane label="基本信息" name="baseInfo" >
  56. <basicInformation :readonly="readonly" ref="basicInformation"></basicInformation>
  57. </el-tab-pane>
  58. <el-tab-pane label="客户信息" name="customerInfo" v-if="getPageIf('customerInfo')">
  59. <customerInfo :readonly="readonly" ref="customerInfo"></customerInfo>
  60. </el-tab-pane>
  61. <el-tab-pane label="包装信息" name="packageInfo" v-if="getPageIf('packageInfo')">
  62. <packageInfo :readonly="readonly" ref="packageInfo"></packageInfo>
  63. </el-tab-pane>
  64. <el-tab-pane label="材料信息" name="bom" v-if="getPageIf('bom')">
  65. <bom ref="bom" :readonly="readonly"></bom>
  66. </el-tab-pane>
  67. <el-tab-pane label="工艺信息" name="routing" v-if="getPageIf('routing')">
  68. <routing ref="routing" :readonly="readonly"></routing>
  69. </el-tab-pane>
  70. <el-tab-pane label="图稿信息" name="drawing" v-if="getPageIf('drawing')">
  71. <drawing ref="drawing" :readonly="readonly" :default-value="true"></drawing>
  72. </el-tab-pane>
  73. <el-tab-pane label="FAI" name="fai" v-if="getPageIf('fai')">
  74. <fai ref="fai" :readonly="readonly" :default-value="true"></fai>
  75. </el-tab-pane>
  76. <el-tab-pane label="品质文件" name="qualityDocument" v-if="getPageIf('qualityDocument')">
  77. <qualityDocument :readonly="readonly" ref="qualityDocument" :default-value="true"></qualityDocument>
  78. </el-tab-pane>
  79. </el-tabs>
  80. <el-tabs v-else-if="dataForm.buNo === 'DBE'" class="tabs" tab-position="left" style="height: 100vh;" type="border-card" v-model="activeName" @tab-click="refreshCurrentTabTable">
  81. <el-tab-pane label="基本信息" name="baseInfo" >
  82. <basicInformation :readonly="readonly" ref="basicInformation"></basicInformation>
  83. </el-tab-pane>
  84. <el-tab-pane label="客户信息" name="customerInfo" v-if="getPageIf('customerInfo')">
  85. <customerInfo :readonly="readonly" ref="customerInfo"></customerInfo>
  86. </el-tab-pane>
  87. <el-tab-pane label="包装信息" name="packageInfo" v-if="getPageIf('packageInfo')">
  88. <packageInfo :readonly="readonly" ref="packageInfo"></packageInfo>
  89. </el-tab-pane>
  90. <el-tab-pane label="材料信息" name="bom" v-if="getPageIf('bom')">
  91. <bom ref="bom" :readonly="readonly"></bom>
  92. </el-tab-pane>
  93. <el-tab-pane label="工艺信息" name="routing" v-if="getPageIf('routing')">
  94. <routing ref="routing" :readonly="readonly"></routing>
  95. </el-tab-pane>
  96. <el-tab-pane label="图稿信息" name="drawing" v-if="getPageIf('drawing')">
  97. <drawing ref="drawing" :readonly="readonly" :default-value="true"></drawing>
  98. </el-tab-pane>
  99. <el-tab-pane label="FAI" name="fai" v-if="getPageIf('fai')">
  100. <fai ref="fai" :readonly="readonly" :default-value="true"></fai>
  101. </el-tab-pane>
  102. <el-tab-pane label="品质文件" name="qualityDocument" v-if="getPageIf('qualityDocument')">
  103. <qualityDocument :readonly="readonly" ref="qualityDocument" :default-value="true"></qualityDocument>
  104. </el-tab-pane>
  105. </el-tabs>
  106. <el-tabs v-else-if="dataForm.buNo === 'SS'" class="tabs" tab-position="left" style="height: 100vh;" type="border-card" v-model="activeName" @tab-click="refreshCurrentTabTable">
  107. <el-tab-pane label="基本信息" name="baseInfo" >
  108. <basicInformation :readonly="readonly" ref="basicInformation"></basicInformation>
  109. </el-tab-pane>
  110. <el-tab-pane label="客户信息" name="customerInfo" v-if="getPageIf('customerInfo')">
  111. <customerInfo :readonly="readonly" ref="customerInfo"></customerInfo>
  112. </el-tab-pane>
  113. <el-tab-pane label="包装信息" name="packageInfo" v-if="getPageIf('packageInfo')">
  114. <packageInfo :readonly="readonly" ref="packageInfo"></packageInfo>
  115. </el-tab-pane>
  116. <el-tab-pane label="材料信息" name="bom" v-if="getPageIf('bom')">
  117. <bom ref="bom" :readonly="readonly"></bom>
  118. </el-tab-pane>
  119. <el-tab-pane label="工艺信息" name="routing" v-if="getPageIf('routing')">
  120. <routing ref="routing" :readonly="readonly"></routing>
  121. </el-tab-pane>
  122. <el-tab-pane label="图稿信息" name="drawing" v-if="getPageIf('drawing')">
  123. <drawing ref="drawing" :readonly="readonly" :default-value="true"></drawing>
  124. </el-tab-pane>
  125. <el-tab-pane label="FAI" name="fai" v-if="getPageIf('fai')">
  126. <fai ref="fai" :readonly="readonly" :default-value="true"></fai>
  127. </el-tab-pane>
  128. <el-tab-pane label="品质文件" name="qualityDocument" v-if="getPageIf('qualityDocument')">
  129. <qualityDocument :readonly="readonly" ref="qualityDocument" :default-value="true"></qualityDocument>
  130. </el-tab-pane>
  131. </el-tabs>
  132. </div>
  133. </template>
  134. <script>
  135. import {
  136. getBMPageBase
  137. } from '@/api/sampleManagement/technicalSpecificationList.js'
  138. import basicInformation from "./com_tsd_basicInformation";/*組件*/
  139. import remarkPage from "./com_bm_remarkSlot.vue";/*备注*/
  140. import customerInfo from "./com_bm_customerInformation";/*客户信息*/
  141. import packageInfo from "./com_bm_packageInfo";/*包装信息*/
  142. import bom from "./com_bm_bom";/*BOM*/
  143. import routing from "./com_bm_routing";/*工艺*/
  144. import prepress from "./com_bm_prepress";/*组件*/
  145. import technicalRequirement from "./com_bm_demoSlot";/*组件*/
  146. import drawing from "./com_bm_demoSlot";/*组件*/
  147. import PEConfirm from "./com_bm_demoSlot";/*组件*/
  148. import overprinting from "./com_bm_demoSlot";/*组件*/
  149. import slitting from "./com_bm_demoSlot";/*组件*/
  150. import lamTemperature from "./com_bm_demoSlot";/*组件*/
  151. import cutting from "./com_bm_demoSlot";/*组件*/
  152. import packagePage from "./com_bm_demoSlot";/*组件*/
  153. import fqc from "./com_bm_demoSlot";/*组件*/
  154. import cqc from "./com_bm_demoSlot";/*组件*/
  155. import qualityDocument from "./com_bm_demoSlot";/*组件*/
  156. import documentControl from "./com_bm_demoSlot";/*组件*/
  157. import peReviewed from "./com_bm_demoSlot";/*组件*/
  158. import queteConfirm from "./com_bm_demoSlot";/*组件*/
  159. import fai from "./com_bm_demoSlot";/*组件*/
  160. import cqeComfirm from "./com_bm_demoSlot";/*组件*/
  161. import tpInfo from "./com_bm_tpInfo";/*组件*/
  162. import printOther from "./com_bm_printOther";/*组件*/
  163. import InkMixing from "./com_bm_inkMixing";/*组件*/
  164. import InkFormulation from "./com_bm_inkFormulation";/*组件*/
  165. import lamination from "./com_bm_lamination";/*组件*/
  166. import printing from "./com_bm_printing";/*组件*/
  167. import CNC from "./com_bm_cnc";
  168. import Cut from "./com_bm_cut";
  169. import {isAuth} from "../../../../utils";
  170. export default {
  171. name: "technicalSpecificationDetail",
  172. props:{
  173. readonly:{
  174. type:Boolean,
  175. default:false
  176. }
  177. },
  178. watch: {
  179. 'activeName': {
  180. deep: true,
  181. handler: function (val, oldVal) {
  182. if (this.readonly===false&&isAuth('103002:bmSave')){
  183. if (oldVal === 'baseInfo') {
  184. this.$refs.basicInformation.saveData1()
  185. } else if (oldVal === 'customerInfo') {
  186. this.$refs.customerInfo.saveData1()
  187. } else if (oldVal === 'packageInfo') {
  188. this.$refs.packageInfo.saveData()
  189. } else if (oldVal === 'bom') {
  190. this.$refs.bom.updateBMProcess()
  191. } else if (oldVal === 'routing') {
  192. this.$refs.routing.updateBMProcess()
  193. } else if (oldVal === 'drawing') {
  194. this.$refs.drawing.saveTable()
  195. } else if (oldVal === 'fai') {
  196. this.$refs.fai.saveTable()
  197. } else if (oldVal === 'qualityDocument') {
  198. this.$refs.qualityDocument.saveTable()
  199. }
  200. }
  201. }
  202. }
  203. },
  204. components: {
  205. basicInformation,
  206. customerInfo,
  207. packageInfo,
  208. bom,
  209. routing,
  210. technicalRequirement,
  211. drawing,
  212. PEConfirm,
  213. qualityDocument,
  214. documentControl,
  215. peReviewed,
  216. queteConfirm,
  217. fai,
  218. cqeComfirm,
  219. tpInfo,
  220. remarkPage,
  221. },
  222. data() {
  223. return {
  224. dataForm:{
  225. site:'',
  226. codeNo:'',
  227. buNo:'',
  228. username:this.$store.state.user.name,
  229. type:'',
  230. ifDisableFlag:false,
  231. fieldId:'',
  232. },
  233. pageRole:'',
  234. activeName:'baseInfo',
  235. }
  236. },
  237. created() {
  238. // 注册 页面销毁前,即刷新 存储最新的activeName 即 TAB标签
  239. window.addEventListener('beforeunload', () => {
  240. localStorage.setItem('activeName', this.activeName);
  241. });
  242. },
  243. mounted() {
  244. let data = JSON.parse(localStorage.getItem('tsfData'))
  245. if (data) {
  246. let id = this.$route.params.id
  247. if (data.uuid !== id) {
  248. // localStorage.removeItem('tsfData');
  249. this.$router.replace("/404")
  250. }
  251. this.dataForm.site = data.site
  252. this.dataForm.codeNo = data.codeNo
  253. this.dataForm.buNo = data.buNo
  254. this.dataForm.username = data.username
  255. this.readonly = data.readonly
  256. // 页面数据和页面高度
  257. this.getPageRole()
  258. this.changeHeightAuto();
  259. // 传递的 tab
  260. if (data.activeName) {
  261. // 当前使用哪个tab
  262. this.activeName = data.activeName
  263. // 使用后清除
  264. data.activeName = ''
  265. } else {
  266. // 使用刷新的tab
  267. this.activeName = localStorage.getItem('activeName')
  268. }
  269. // 重新保存当前数据 目的是刷新首次的TAB
  270. localStorage.setItem('tsfData',JSON.stringify(data))
  271. // 刷新数据
  272. // this.$nextTick(() => {
  273. // // this.getBaseInfoData();
  274. // })
  275. }
  276. },
  277. methods: {
  278. refreshCurrentTabTable () {
  279. this.dataForm.fieldId = this.activeName
  280. //先调整页面的高度
  281. this.changeHeightAuto()
  282. if (this.activeName === 'baseInfo') {
  283. this.getBaseInfoData()
  284. // }else if (this.activeName == 'remarkPage') {
  285. // this.changeHeight(800);
  286. // this.getRemarkSlot();
  287. } else if (this.activeName === 'customerInfo') {
  288. //有的页面要高一点
  289. this.changeHeight(1000)
  290. this.getCustomerInfo()
  291. } else if (this.activeName === 'packageInfo') {
  292. this.getPackageInfo()
  293. } else if (this.activeName === 'bom') {
  294. this.getBom()
  295. } else if (this.activeName === 'routing') {
  296. this.changeHeight(2000)
  297. this.getRouting()
  298. } else if (this.activeName === 'technicalRequirement') {
  299. this.getTechnicalRequirement()
  300. } else if (this.activeName === 'PEConfirm') {
  301. this.getPEConfirm()
  302. } else if (this.activeName === 'drawing') {
  303. this.getDrawing()
  304. } else if (this.activeName === 'qualityDocument') {
  305. this.getQualityDocument()
  306. } else if (this.activeName === 'documentControl') {
  307. this.getDocumentControl()
  308. } else if (this.activeName === 'peReviewed') {
  309. this.getPeReviewed()
  310. } else if (this.activeName === 'queteConfirm') {
  311. this.getQueteConfirm()
  312. } else if (this.activeName === 'fai') {
  313. this.getFai()
  314. } else if (this.activeName === 'cqeComfirm') {
  315. this.getCqeComfirm()
  316. } else if (this.activeName === 'tpInfo') {
  317. this.changeHeight(800)
  318. this.getTpInfo()
  319. }
  320. },
  321. // 基本信息
  322. getBaseInfoData () {
  323. this.$refs.basicInformation.init(JSON.parse(JSON.stringify(this.dataForm)))
  324. },
  325. getRemarkSlot () {
  326. this.$refs.remarkPage.init(JSON.parse(JSON.stringify(this.dataForm)))
  327. },
  328. // 客户信息
  329. getCustomerInfo () {
  330. this.$refs.customerInfo.init(JSON.parse(JSON.stringify(this.dataForm)))
  331. },
  332. // 包装信息
  333. getPackageInfo () {
  334. this.$refs.packageInfo.init(JSON.parse(JSON.stringify(this.dataForm)))
  335. },
  336. // BOM
  337. getBom () {
  338. this.$refs.bom.init(JSON.parse(JSON.stringify(this.dataForm)))
  339. },
  340. // Routing
  341. getRouting () {
  342. this.$refs.routing.init(JSON.parse(JSON.stringify(this.dataForm)))
  343. },
  344. getTechnicalRequirement () {
  345. this.dataForm.type = 'technicalRequirement'
  346. this.$refs.technicalRequirement.init(JSON.parse(JSON.stringify(this.dataForm)))
  347. },
  348. getPEConfirm () {
  349. this.dataForm.type = 'PEConfirm'
  350. this.$refs.PEConfirm.init(JSON.parse(JSON.stringify(this.dataForm)))
  351. },
  352. // 图稿信息
  353. getDrawing () {
  354. this.dataForm.type = 'drawing'
  355. this.$refs.drawing.init(JSON.parse(JSON.stringify(this.dataForm)))
  356. },
  357. // 品质文件
  358. getQualityDocument () {
  359. this.dataForm.type = 'qualityDocument'
  360. this.$refs.qualityDocument.init(JSON.parse(JSON.stringify(this.dataForm)))
  361. },
  362. getDocumentControl () {
  363. this.dataForm.type = 'documentControl'
  364. this.$refs.documentControl.init(JSON.parse(JSON.stringify(this.dataForm)))
  365. },
  366. getPeReviewed () {
  367. this.dataForm.type='peReviewed'
  368. this.$refs.peReviewed.init(JSON.parse(JSON.stringify(this.dataForm)))
  369. },
  370. getQueteConfirm () {
  371. this.dataForm.type = 'queteConfirm'
  372. this.$refs.queteConfirm.init(JSON.parse(JSON.stringify(this.dataForm)))
  373. },
  374. // FAI
  375. getFai () {
  376. this.dataForm.type = 'fai'
  377. this.$refs.fai.init(JSON.parse(JSON.stringify(this.dataForm)))
  378. },
  379. getCqeComfirm () {
  380. this.dataForm.type = 'cqeComfirm'
  381. this.$refs.cqeComfirm.init(JSON.parse(JSON.stringify(this.dataForm)))
  382. },
  383. getTpInfo () {
  384. this.dataForm.type = 'tpInfo'
  385. this.$refs.tpInfo.init(JSON.parse(JSON.stringify(this.dataForm)))
  386. },
  387. //看有没有这个页面的权限
  388. getPageRole(){
  389. getBMPageBase(this.dataForm).then(({data}) => {
  390. if (data && data.code === 0) {
  391. this.pageRole=data.row
  392. // 2025-05-12 新增页面初始化后调用
  393. // 用于刷新当前使用的TAB数据
  394. this.$nextTick(()=>{
  395. this.refreshCurrentTabTable();
  396. })
  397. }
  398. })
  399. },
  400. getPageIf(key){
  401. return this.pageRole.indexOf(';'+key+';') !== -1 || false
  402. },
  403. changeHeight(height){
  404. var tabsElement = document.querySelector('.tabs');
  405. // tabsElement.style.minHeight = window.innerHeight+'px';
  406. tabsElement.style.minHeight = height +'px';
  407. },
  408. changeHeightAuto(){
  409. //页签大小铺满网页
  410. var tabsElement = document.querySelector('.tabs');
  411. tabsElement.style.minHeight = window.innerHeight+'px';
  412. }
  413. },
  414. }
  415. </script>
  416. <style >
  417. </style>