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.

1258 lines
44 KiB

2 years ago
10 months ago
1 year ago
2 years ago
2 years ago
2 years ago
10 months ago
2 years ago
11 months ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
9 months ago
9 months ago
9 months ago
9 months ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
11 months ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
9 months ago
1 year ago
9 months ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
11 months ago
1 year ago
10 months ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
10 months ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
9 months ago
2 years ago
2 years ago
2 years ago
2 years ago
9 months ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
9 months ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
  1. <template>
  2. <div class="mod-config">
  3. <el-form :inline="true" label-position="top" label-width="100px" style="margin-top: 0px;">
  4. <el-form-item label="工艺">
  5. <bu-select v-model="searchData.buNo" style="width: 120px"></bu-select>
  6. </el-form-item>
  7. <el-form-item :label="'参数卡编码'">
  8. <el-input v-model="searchData.oriCodeNo" style="width: 130px"></el-input>
  9. </el-form-item>
  10. <el-form-item >
  11. <span slot="label" style="" @click="getBaseList(105,1)"><a herf="#">料号</a></span>
  12. <el-input v-model="searchData.testPartNo" style="width: 120px" clearable></el-input>
  13. </el-form-item>
  14. <el-form-item label="客户">
  15. <el-input v-model="searchData.customerDesc" style="width: 120px" clearable></el-input>
  16. </el-form-item>
  17. <el-form-item label="刀版号">
  18. <el-input v-model="searchData.cutterNumber" style="width: 120px" clearable></el-input>
  19. </el-form-item>
  20. <el-form-item :label="'状态'">
  21. <el-select v-model="searchData.statusDesc" clearable style="width: 130px">
  22. <el-option label="全部" value=""></el-option>
  23. <el-option label="草稿" value="草稿"></el-option>
  24. <el-option label="审批中" value="审批中"></el-option>
  25. <el-option label="已升版" value="已升版"></el-option>
  26. <el-option label="已完成" value="已完成"></el-option>
  27. </el-select>
  28. </el-form-item>
  29. <el-form-item :label="'ECN'">
  30. <el-select v-model="searchData.ecnFlag" clearable style="width: 130px">
  31. <el-option label="全部" value=""></el-option>
  32. <el-option label="Y" value="Y"></el-option>
  33. <el-option label="N" value="N"></el-option>
  34. </el-select>
  35. </el-form-item>
  36. <el-form-item label=" ">
  37. <el-button @click="search()" type="primary" style="margin-left: 2px;margin-top:0px">查询</el-button>
  38. <el-button @click="addOrUpdateHandle()" type="primary" style="margin-left: 2px;margin-top: 0px">新增</el-button>
  39. <download-excel
  40. :fields="fields()"
  41. :data="exportData"
  42. type="xls"
  43. :name="exportName"
  44. :header="exportHeader"
  45. :footer="exportFooter"
  46. :fetch="createExportData"
  47. :before-generate="startDownload"
  48. :before-finish="finishDownload"
  49. worksheet="导出信息"
  50. class="el-button el-button--primary el-button--medium">
  51. {{ '导出' }}
  52. </download-excel>
  53. <!-- <el-button @click="test()" type="primary" style="margin-left: 2px;margin-top:0px">测试</el-button>-->
  54. </el-form-item>
  55. </el-form>
  56. <el-table
  57. :data="dataList1"
  58. :height="height"
  59. border
  60. ref="mainTable"
  61. @row-click="changeData"
  62. highlight-current-row
  63. v-loading="dataListLoading"
  64. style="width: 100%; ">
  65. <el-table-column
  66. v-for="(item,index) in columnList1" :key="index"
  67. :sortable="item.columnSortable"
  68. :prop="item.columnProp"
  69. :header-align="item.headerAlign"
  70. :show-overflow-tooltip="item.showOverflowTooltip"
  71. :align="item.align"
  72. :fixed="item.fixed==''?false:item.fixed"
  73. :min-width="item.columnWidth"
  74. :label="item.columnLabel">
  75. <template slot-scope="scope">
  76. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  77. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  78. </template>
  79. </el-table-column>
  80. <el-table-column
  81. header-align="center"
  82. align="center"
  83. width="150"
  84. fixed="right"
  85. label="操作">
  86. <template slot-scope="scope">
  87. <!-- <a type="text" size="small" @click="addRevModel(scope.row)" v-if="scope.row.statusDesc!=='已完成'">升版</a>-->
  88. <a type="text" size="small" v-if="scope.row.statusDesc==='已完成'||scope.row.statusDesc==='已升版'" @click="jumpDetail(scope.row)">详情</a>
  89. <a type="text" size="small" v-if="scope.row.statusDesc!=='已完成'&&scope.row.statusDesc!=='已升版'" @click="jumpDetail(scope.row)">修改</a>
  90. <!-- <a type="text" size="small" @click="addOrUpdateHandle(scope.row.id)" v-if="scope.row.statusDesc!=='已完成'">修改</a>-->
  91. <a type="text" size="small" @click="deleteData(scope.row)" v-if="scope.row.statusDesc!=='已完成'&&scope.row.statusDesc!=='已升版'">删除</a>
  92. <a type="text" size="small" v-if="scope.row.status === 'cg'" @click="issueModal(scope.row)">下达</a>
  93. <a type="text" size="small" v-if="scope.row.statusDesc!=='已升版'" @click="copyBM(scope.row)">拷贝</a>
  94. </template>
  95. </el-table-column>
  96. </el-table>
  97. <el-pagination
  98. @size-change="sizeChangeHandle"
  99. @current-change="currentChangeHandle"
  100. :current-page="pageIndex"
  101. :page-sizes="[20, 50, 100, 1000]"
  102. :page-size="pageSize"
  103. :total="totalPage"
  104. layout="total, sizes, prev, pager, next, jumper">
  105. </el-pagination>
  106. <el-tabs style="font-size: 12px;min-height: 330px" class="customer-tab" v-model="activeName" type="border-card" @tab-click="refreshCurrentTabTable">
  107. <el-tab-pane label="基本信息" name="info">
  108. <el-form label-position="top" label-width="100px" >
  109. <el-row :gutter="20">
  110. <el-col :span="6">
  111. <div class="grid-content bg-purple">
  112. <el-form-item :label="'项目号'">
  113. <el-input v-model="infoData.projectId" readonly></el-input>
  114. </el-form-item>
  115. </div>
  116. </el-col>
  117. <el-col :span="6">
  118. <div class="grid-content bg-purple">
  119. <el-form-item :label="'项目名称'">
  120. <el-input v-model="infoData.projectName" readonly></el-input>
  121. </el-form-item>
  122. </div>
  123. </el-col>
  124. <el-col :span="6">
  125. <div class="grid-content bg-purple">
  126. <el-form-item :label="'物料类型'">
  127. <el-input v-model="infoData.partTypeDesc" readonly></el-input>
  128. </el-form-item>
  129. </div>
  130. </el-col>
  131. <el-col :span="6">
  132. <div class="grid-content bg-purple">
  133. <el-form-item :label="'版本号'">
  134. <el-input v-model="infoData.revNo" readonly></el-input>
  135. </el-form-item>
  136. </div>
  137. </el-col>
  138. </el-row>
  139. <el-row :gutter="20">
  140. <el-col :span="6">
  141. <div class="grid-content bg-purple">
  142. <el-form-item :label="'ECN变更'">
  143. <el-input v-model="infoData.ecnFlag" readonly></el-input>
  144. </el-form-item>
  145. </div>
  146. </el-col>
  147. <el-col :span="6">
  148. <div class="grid-content bg-purple">
  149. <el-form-item :label="'ECN单据号'">
  150. <el-input v-model="infoData.ecnNo" readonly></el-input>
  151. </el-form-item>
  152. </div>
  153. </el-col>
  154. <el-col :span="12"><div class="grid-content bg-purple">
  155. <el-form-item :label="'ECN文档链接'">
  156. <el-input v-model="infoData.ecnAddress" readonly></el-input>
  157. </el-form-item>
  158. </div></el-col>
  159. </el-row>
  160. <el-row :gutter="20">
  161. <el-col :span="6">
  162. <div class="grid-content bg-purple">
  163. <el-form-item :label="'Select CS'">
  164. <el-input v-model="infoData.csOperaterName" ref="csOperaterName" placeholder="未选择人员" readonly></el-input>
  165. </el-form-item>
  166. </div>
  167. </el-col>
  168. <el-col :span="6">
  169. <div class="grid-content bg-purple">
  170. <el-form-item :label="'Select Engineer'">
  171. <el-input v-model="infoData.engineer" ref="peOperaterName" placeholder="未选择人员" readonly></el-input>
  172. </el-form-item>
  173. </div>
  174. </el-col>
  175. <el-col :span="6">
  176. <div class="grid-content bg-purple">
  177. <el-form-item :label="'Select Artwork'">
  178. <el-input v-model="infoData.technician" ref="csOperaterName" placeholder="未选择人员" readonly></el-input>
  179. </el-form-item>
  180. </div>
  181. </el-col>
  182. <el-col :span="6">
  183. <div class="grid-content bg-purple">
  184. <el-form-item :label="'Select Technical'">
  185. <el-input v-model="infoData.mpOperatorName" ref="mpOperatorName" placeholder="未选择人员" readonly></el-input>
  186. </el-form-item>
  187. </div>
  188. </el-col>
  189. </el-row>
  190. <el-row :gutter="20">
  191. <!-- <el-col :span="6">-->
  192. <!-- <div class="grid-content bg-purple">-->
  193. <!-- <el-form-item :label="'PE人员'">-->
  194. <!-- <el-input v-model="infoData.peOperaterName" ref="peOperaterName" placeholder="未选择人员" readonly ></el-input>-->
  195. <!-- </el-form-item>-->
  196. <!-- </div>-->
  197. <!-- </el-col>-->
  198. <el-col :span="6">
  199. <div class="grid-content bg-purple">
  200. <el-form-item :label="'Select CQC'">
  201. <el-input v-model="infoData.cqcOperatorName" ref="dccOperaterName" placeholder="未选择人员" readonly></el-input>
  202. </el-form-item>
  203. </div>
  204. </el-col>
  205. <el-col :span="6">
  206. <div class="grid-content bg-purple">
  207. <el-form-item :label="'Select FAI'">
  208. <el-input v-model="infoData.faiOperatorName" ref="mpOperatorName" placeholder="未选择人员" readonly></el-input>
  209. </el-form-item>
  210. </div>
  211. </el-col>
  212. <el-col :span="6">
  213. <div class="grid-content bg-purple">
  214. <el-form-item :label="'Select DCC'">
  215. <el-input v-model="infoData.dccOperaterName" ref="dccOperaterName" placeholder="未选择人员" readonly></el-input>
  216. </el-form-item>
  217. </div>
  218. </el-col>
  219. </el-row>
  220. <el-row :gutter="20">
  221. <el-col :span="24"><div class="grid-content bg-purple">
  222. <el-form-item :label="'备注信息'" style="height: 70px">
  223. <el-input
  224. type="textarea"
  225. v-model="infoData.remarkPage "
  226. :rows="3"
  227. resize='none'
  228. maxlength="120"
  229. show-word-limit
  230. readonly
  231. style="height: 60px">
  232. </el-input>
  233. </el-form-item>
  234. </div></el-col>
  235. </el-row>
  236. </el-form>
  237. </el-tab-pane>
  238. <el-tab-pane label="客户信息" name="customerInfo">
  239. <customer-info :project="currentRow"></customer-info>
  240. <!-- <el-form label-position="top" label-width="100px" >-->
  241. <!-- <el-row :gutter="20">-->
  242. <!-- <el-col :span="6"><div class="grid-content bg-purple">-->
  243. <!-- <el-form-item :label="'客户代码'">-->
  244. <!-- <el-input v-model="customerData.customerId" readonly ></el-input>-->
  245. <!-- </el-form-item>-->
  246. <!-- </div></el-col>-->
  247. <!-- <el-col :span="6"><div class="grid-content bg-purple">-->
  248. <!-- <el-form-item :label="'客户名称'">-->
  249. <!-- <el-input v-model="customerData.customerName" readonly ></el-input>-->
  250. <!-- </el-form-item>-->
  251. <!-- </div></el-col>-->
  252. <!-- <el-col :span="12"><div class="grid-content bg-purple">-->
  253. <!-- <el-form-item :label="'客户描述'">-->
  254. <!-- <el-input v-model="customerData.customerDesc" readonly ></el-input>-->
  255. <!-- </el-form-item>-->
  256. <!-- </div></el-col>-->
  257. <!-- </el-row>-->
  258. <!-- <el-row :gutter="20">-->
  259. <!-- <el-col :span="24"><div class="grid-content bg-purple">-->
  260. <!-- <el-form-item :label="'客户要求'" style="height: 70px">-->
  261. <!-- <el-input-->
  262. <!-- type="textarea"-->
  263. <!-- v-model="customerData.customerRemark "-->
  264. <!-- :rows="3"-->
  265. <!-- resize='none'-->
  266. <!-- maxlength="120"-->
  267. <!-- show-word-limit-->
  268. <!-- readonly-->
  269. <!-- style=";height: 60px">-->
  270. <!-- </el-input>-->
  271. <!-- </el-form-item>-->
  272. <!-- </div></el-col>-->
  273. <!-- </el-row>-->
  274. <!-- <el-row :gutter="20">-->
  275. <!-- <el-col :span="24"><div class="grid-content bg-purple">-->
  276. <!-- <el-form-item :label="'客户图纸'" style="margin-top: 15px">-->
  277. <!-- <el-input v-model="customerData.pictureAddess" readonly ></el-input>-->
  278. <!-- </el-form-item>-->
  279. <!-- </div></el-col>-->
  280. <!-- </el-row>-->
  281. <!-- <el-row :gutter="20">-->
  282. <!-- <el-col :span="24"><div class="grid-content bg-purple">-->
  283. <!-- <el-form-item :label="'客户图纸变更说明'">-->
  284. <!-- <el-input v-model="customerData.customerPictureChangeRemark" readonly ></el-input>-->
  285. <!-- </el-form-item>-->
  286. <!-- </div></el-col>-->
  287. <!-- </el-row>-->
  288. <!-- <el-row :gutter="20">-->
  289. <!-- <el-col :span="24"><div class="grid-content bg-purple" >-->
  290. <!-- <el-form-item :label="'转量产附档说明'" style="height: 70px">-->
  291. <!-- <el-input-->
  292. <!-- type="textarea"-->
  293. <!-- v-model="customerData.productionFileComments "-->
  294. <!-- :rows="3"-->
  295. <!-- resize='none'-->
  296. <!-- maxlength="120"-->
  297. <!-- show-word-limit-->
  298. <!-- readonly-->
  299. <!-- style="height: 60px">-->
  300. <!-- </el-input>-->
  301. <!-- </el-form-item>-->
  302. <!-- </div></el-col>-->
  303. <!-- </el-row>-->
  304. <!-- <el-row :gutter="20">-->
  305. <!-- <el-col :span="24"><div class="grid-content bg-purple" >-->
  306. <!-- <el-form-item :label="'其他特殊要求'" style="height: 70px;margin-top: 15px">-->
  307. <!-- <el-input-->
  308. <!-- type="textarea"-->
  309. <!-- v-model="customerData.remark "-->
  310. <!-- :rows="3"-->
  311. <!-- resize='none'-->
  312. <!-- maxlength="120"-->
  313. <!-- show-word-limit-->
  314. <!-- readonly-->
  315. <!-- style="height: 60px">-->
  316. <!-- </el-input>-->
  317. <!-- </el-form-item>-->
  318. <!-- </div></el-col>-->
  319. <!-- </el-row>-->
  320. <!-- </el-form>-->
  321. <!-- <el-form :inline="true" label-position="top" label-width="100px" style="height: 70px;margin-top: 15px">-->
  322. <!-- <el-form-item :label="'客户应用/要求'">-->
  323. <!-- <el-input-->
  324. <!-- type="textarea"-->
  325. <!-- v-model="customerData.remark "-->
  326. <!-- :rows="3"-->
  327. <!-- resize='none'-->
  328. <!-- maxlength="120"-->
  329. <!-- show-word-limit-->
  330. <!-- readonly-->
  331. <!-- style="width: 926px;height: 60px">-->
  332. <!-- </el-input>-->
  333. <!-- </el-form-item>-->
  334. <!-- </el-form>-->
  335. </el-tab-pane>
  336. <!-- 审批信息 -->
  337. <el-tab-pane label="审批信息" name="approvalInformation">
  338. <approval-information ref="approvalTable" v-model:data-list="approvalList" :height="240"></approval-information>
  339. </el-tab-pane>
  340. </el-tabs>
  341. <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="search" v-drag></add-or-update>
  342. <el-dialog width="500px"
  343. :title="'升版'"
  344. :close-on-click-modal="false"
  345. :visible.sync="revNoFlag">
  346. <el-form :inline="true" label-position="top" label-width="100px" >
  347. <el-form-item :label="'参数卡编码'">
  348. <el-input v-model="revNoData.oriCodeNo" style="width: 130px" disabled></el-input>
  349. </el-form-item>
  350. <el-form-item :label="'版本号'">
  351. <el-input v-model="revNoData.oldRevNo" style="width: 130px" disabled></el-input>
  352. </el-form-item>
  353. <el-form-item :label="'项目物料'">
  354. <el-input v-model="revNoData.testPartNo" style="width: 130px" disabled></el-input>
  355. </el-form-item>
  356. </el-form>
  357. <el-form :inline="true" label-position="top" label-width="100px" >
  358. <el-form-item :label="'版本号'">
  359. <el-input v-model="revNoData.revNo" style="width: 130px" ></el-input>
  360. </el-form-item>
  361. </el-form>
  362. <el-form label-position="top" style="margin-top: 60px; margin-left: 0px;text-align:center">
  363. <el-button type="primary" @click="upBMRevNo()">{{'确定'}}</el-button>
  364. <el-button type="primary" @click="revNoFlag = false">{{'关闭'}}</el-button>
  365. </el-form>
  366. </el-dialog>
  367. <el-dialog
  368. width="750px"
  369. title="选择物料"
  370. :close-on-click-modal="false"
  371. :visible.sync="partModelFlag">
  372. <el-form :inline="true" label-position="top" label-width="100px" >
  373. <el-form-item style="margin-left: 0px" label="技术参数卡">
  374. <el-input v-model="copyData.oriCodeNo" style="width: 130px" disabled ></el-input>
  375. </el-form-item>
  376. <el-form-item style="margin-left: 0px" label="版本">
  377. <el-input v-model="copyData.revNo" style="width: 130px" disabled ></el-input>
  378. </el-form-item>
  379. <el-form-item style="margin-left: 0px" label="项目料号">
  380. <el-input v-model="copyData.testPartNo" style="width: 130px" disabled ></el-input>
  381. </el-form-item>
  382. <el-form-item style="margin-left: 0px" label="项目号">
  383. <el-input v-model="copyData.projectId" style="width: 130px" disabled ></el-input>
  384. </el-form-item>
  385. </el-form>
  386. <el-table
  387. height="450"
  388. :data="partList"
  389. border
  390. @row-dblclick="choosePartNo"
  391. style="width: 100%;">
  392. <el-table-column
  393. prop="finalPartNo"
  394. header-align="center"
  395. align="left"
  396. min-width="120"
  397. style="font-size: 20px"
  398. label="正式料号">
  399. </el-table-column>
  400. <el-table-column
  401. prop="testPartNo"
  402. header-align="center"
  403. align="left"
  404. min-width="120"
  405. style="font-size: 20px"
  406. label="项目料号">
  407. </el-table-column>
  408. <el-table-column
  409. prop="projectId"
  410. header-align="center"
  411. align="left"
  412. min-width="120"
  413. style="font-size: 20px"
  414. label="项目号">
  415. </el-table-column>
  416. <el-table-column
  417. prop="customerPartNo"
  418. header-align="center"
  419. align="left"
  420. min-width="120"
  421. label="客户料号">
  422. </el-table-column>
  423. <el-table-column
  424. prop="partDesc"
  425. header-align="center"
  426. align="left"
  427. min-width="120"
  428. label="物料名称">
  429. </el-table-column>
  430. <el-table-column
  431. prop="buNo"
  432. header-align="center"
  433. align="left"
  434. min-width="70"
  435. label="BU">
  436. </el-table-column>
  437. </el-table>
  438. </el-dialog>
  439. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  440. </div>
  441. </template>
  442. <script>
  443. import {
  444. getTechnicalCustomerInfoData,
  445. technicalSpecificationListSearch,
  446. deleteTechnicalSpecificationList,
  447. upBMRevNo,
  448. issueChange, // 下达
  449. searchCopyPart,
  450. copyBm,
  451. } from "@/api/sampleManagement/technicalSpecificationList.js"
  452. import Chooselist from '@/views/modules/common/Chooselist'
  453. import AddOrUpdate from './com_technical-add-or-update'
  454. import BuSelect from "../base/BuSelect.vue";
  455. import {
  456. getNodeAuthority, // 获取节点权限
  457. getApprovalList, // 查询审批信息
  458. } from '@/api/changeManagement/changeManagement.js'
  459. import ApprovalInformation from "../changeManagement/approvalInformation.vue";
  460. import CustomerInfo from "../quotation/sellForQuotation/customerInfo.vue";
  461. export default {
  462. components: {
  463. CustomerInfo,
  464. ApprovalInformation,
  465. Chooselist,
  466. AddOrUpdate,
  467. BuSelect,
  468. },
  469. data() {
  470. return {
  471. approvalList:[],
  472. activeName:'info',
  473. addOrUpdateVisible:false,
  474. height:200,
  475. dataList1: [],
  476. partList:[],
  477. copyData:{
  478. site:'',
  479. codeNo:'',
  480. oriCodeNo:'',
  481. testPartNo:'',
  482. projectId:'',
  483. revNo:'',
  484. newPartNo:'',
  485. },
  486. partModelFlag:false,
  487. searchData: {
  488. page: 1,
  489. limit: 100,
  490. site: this.$store.state.user.site,
  491. userName: this.$store.state.user.name,
  492. testPartNo: '',
  493. oriCodeNo: '',
  494. statusDesc: '',
  495. codeNo:'',
  496. ecnFlag: '',
  497. buNo:'',
  498. customerDesc:'',
  499. },
  500. pageIndex: 1,
  501. pageSize: 100,
  502. totalPage: 0,
  503. dataListLoading: false,
  504. currentRow:'',
  505. exportList:[],
  506. columnList1:[
  507. {
  508. userId: this.$store.state.user.name,
  509. functionId: 103002,
  510. serialNumber: '103002Table1BuNo',
  511. tableId: "103002Table1",
  512. tableName: "技术参数卡列表",
  513. columnProp: "buNo",
  514. headerAlign: "center",
  515. align: "center",
  516. columnLabel: "工艺",
  517. columnHidden: false,
  518. columnImage: false,
  519. columnSortable: false,
  520. sortLv: 0,
  521. status: true,
  522. fixed: '',
  523. columnWidth: 80
  524. },{
  525. userId: this.$store.state.user.name,
  526. functionId: 103002,
  527. serialNumber: '103002Table1OriCodeNo',
  528. tableId: "103002Table1",
  529. tableName: "技术参数卡列表",
  530. columnProp: "oriCodeNo",
  531. headerAlign: "center",
  532. align: "left",
  533. columnLabel: "参数卡编码",
  534. columnHidden: false,
  535. columnImage: false,
  536. columnSortable: false,
  537. sortLv: 0,
  538. status: true,
  539. fixed: '',
  540. columnWidth: 100
  541. },{
  542. userId: this.$store.state.user.name,
  543. functionId: 103002,
  544. serialNumber: '103002Table1RevNo',
  545. tableId: "103002Table1",
  546. tableName: "技术参数卡列表",
  547. columnProp: "revNo",
  548. headerAlign: "center",
  549. align: "left",
  550. columnLabel: "版本号",
  551. columnHidden: false,
  552. columnImage: false,
  553. columnSortable: false,
  554. sortLv: 0,
  555. status: true,
  556. fixed: '',
  557. columnWidth: 80
  558. },{
  559. userId: this.$store.state.user.name,
  560. functionId: 103002,
  561. serialNumber: '103002Table1ProofingNo',
  562. tableId: "103002Table1",
  563. tableName: "技术参数卡列表",
  564. columnProp: "proofingNo",
  565. headerAlign: "center",
  566. align: "center",
  567. columnLabel: "打样单号",
  568. columnHidden: false,
  569. columnImage: false,
  570. columnSortable: false,
  571. sortLv: 0,
  572. status: true,
  573. fixed: '',
  574. columnWidth: 100
  575. },{
  576. userId: this.$store.state.user.name,
  577. functionId: 103002,
  578. serialNumber: '103002Table1Status',
  579. tableId: "103002Table1",
  580. tableName: "技术参数卡列表",
  581. columnProp: "statusDesc",
  582. headerAlign: "center",
  583. align: "left",
  584. columnLabel: "状态",
  585. columnHidden: false,
  586. columnImage: false,
  587. columnSortable: false,
  588. sortLv: 0,
  589. status: true,
  590. fixed: '',
  591. columnWidth: 80
  592. },
  593. {
  594. userId: this.$store.state.user.name,
  595. functionId: 103002,
  596. serialNumber: '103002Table1NodeId',
  597. tableId: "103002Table1",
  598. tableName: "技术参数卡列表",
  599. columnProp: "nodeId",
  600. headerAlign: "center",
  601. align: "left",
  602. columnLabel: "当前节点",
  603. columnHidden: false,
  604. columnImage: false,
  605. columnSortable: false,
  606. sortLv: 0,
  607. status: true,
  608. fixed: '',
  609. columnWidth: 70
  610. },
  611. {
  612. userId: this.$store.state.user.name,
  613. functionId: 103002,
  614. serialNumber: '103002Table1NodeName',
  615. tableId: "103002Table1",
  616. tableName: "技术参数卡列表",
  617. columnProp: "nodeName",
  618. headerAlign: "center",
  619. align: "left",
  620. columnLabel: "节点名称",
  621. columnHidden: false,
  622. columnImage: false,
  623. columnSortable: false,
  624. sortLv: 0,
  625. status: true,
  626. fixed: '',
  627. columnWidth: 150
  628. },{
  629. userId: this.$store.state.user.name,
  630. functionId: 103002,
  631. serialNumber: '103002Table1SP',
  632. tableId: "103002Table1",
  633. tableName: "技术参数卡列表",
  634. columnProp: "sp",
  635. headerAlign: "center",
  636. align: "left",
  637. columnLabel: "当前审批人",
  638. columnHidden: false,
  639. columnImage: false,
  640. columnSortable: false,
  641. sortLv: 0,
  642. status: true,
  643. fixed: '',
  644. columnWidth: 80
  645. },{
  646. userId: this.$store.state.user.name,
  647. functionId: 103002,
  648. serialNumber: '103002Table1FinalPartNo',
  649. tableId: "103002Table1",
  650. tableName: "技术参数卡列表",
  651. columnProp: "finalPartNo",
  652. headerAlign: "center",
  653. align: "center",
  654. columnLabel: "IFS物料编码",
  655. columnHidden: false,
  656. columnImage: false,
  657. columnSortable: false,
  658. sortLv: 0,
  659. status: true,
  660. fixed: '',
  661. columnWidth: 100
  662. },{
  663. userId: this.$store.state.user.name,
  664. functionId: 103002,
  665. serialNumber: '103002Table1TestPartNo',
  666. tableId: "103002Table1",
  667. tableName: "技术参数卡列表",
  668. columnProp: "testPartNo",
  669. headerAlign: "center",
  670. align: "center",
  671. columnLabel: "PLM物料编码",
  672. columnHidden: false,
  673. columnImage: false,
  674. columnSortable: false,
  675. sortLv: 0,
  676. status: true,
  677. fixed: '',
  678. columnWidth: 140
  679. },{
  680. userId: this.$store.state.user.name,
  681. functionId: 103002,
  682. serialNumber: '103002Table1TestPartNo',
  683. tableId: "103002Table1",
  684. tableName: "技术参数卡列表",
  685. columnProp: "projectId",
  686. headerAlign: "center",
  687. align: "center",
  688. columnLabel: "项目号",
  689. columnHidden: false,
  690. columnImage: false,
  691. columnSortable: false,
  692. sortLv: 0,
  693. status: true,
  694. fixed: '',
  695. columnWidth: 100
  696. // },{
  697. // userId: this.$store.state.user.name,
  698. // functionId: 103002,
  699. // serialNumber: '103002Table1TestPartNo',
  700. // tableId: "103002Table1",
  701. // tableName: "技术参数卡列表",
  702. // columnProp: "buNo",
  703. // headerAlign: "center",
  704. // align: "center",
  705. // columnLabel: "BU",
  706. // columnHidden: false,
  707. // columnImage: false,
  708. // columnSortable: false,
  709. // sortLv: 0,
  710. // status: true,
  711. // fixed: '',
  712. // columnWidth: 80
  713. // },{
  714. // userId: this.$store.state.user.name,
  715. // functionId: 103002,
  716. // serialNumber: '103002Table1TestPartNo',
  717. // tableId: "103002Table1",
  718. // tableName: "技术参数卡列表",
  719. // columnProp: "buDesc",
  720. // headerAlign: "center",
  721. // align: "left",
  722. // columnLabel: "BU名称",
  723. // columnHidden: false,
  724. // columnImage: false,
  725. // columnSortable: false,
  726. // sortLv: 0,
  727. // status: true,
  728. // fixed: '',
  729. // columnWidth: 80
  730. },{
  731. userId: this.$store.state.user.name,
  732. functionId: 103002,
  733. serialNumber: '103002Table1PartName',
  734. tableId: "103002Table1",
  735. tableName: "技术参数卡列表",
  736. columnProp: "partDesc",
  737. headerAlign: "center",
  738. align: "left",
  739. columnLabel: "物料名称",
  740. columnHidden: false,
  741. columnImage: false,
  742. columnSortable: false,
  743. sortLv: 0,
  744. status: true,
  745. fixed: '',
  746. columnWidth: 150
  747. },{
  748. userId: this.$store.state.user.name,
  749. functionId: 103002,
  750. serialNumber: '103002Table1ECNFlag',
  751. tableId: "103002Table1",
  752. tableName: "技术参数卡列表",
  753. columnProp: "ecnFlag",
  754. headerAlign: "center",
  755. align: "center",
  756. columnLabel: "ECN变更",
  757. columnHidden: false,
  758. columnImage: false,
  759. columnSortable: false,
  760. sortLv: 0,
  761. status: true,
  762. fixed: '',
  763. columnWidth: 65
  764. },{
  765. userId: this.$store.state.user.name,
  766. functionId: 103002,
  767. serialNumber: '103002Table1EcnNo',
  768. tableId: "103002Table1",
  769. tableName: "技术参数卡列表",
  770. columnProp: "ecnNo",
  771. headerAlign: "center",
  772. align: "center",
  773. columnLabel: "ECN单据号",
  774. columnHidden: false,
  775. columnImage: false,
  776. columnSortable: false,
  777. sortLv: 0,
  778. status: true,
  779. fixed: '',
  780. columnWidth: 100
  781. },{
  782. userId: this.$store.state.user.name,
  783. functionId: 103002,
  784. serialNumber: '103002Table1CreateDate',
  785. tableId: "103002Table1",
  786. tableName: "技术参数卡列表",
  787. columnProp: "createDate",
  788. headerAlign: "center",
  789. align: "center",
  790. columnLabel: "创建时间",
  791. columnHidden: false,
  792. columnImage: false,
  793. columnSortable: false,
  794. sortLv: 0,
  795. status: true,
  796. fixed: '',
  797. columnWidth: 120
  798. },{
  799. userId: this.$store.state.user.name,
  800. functionId: 103002,
  801. serialNumber: '103002Table1CreateBy',
  802. tableId: "103002Table1",
  803. tableName: "技术参数卡列表",
  804. columnProp: "createBy",
  805. headerAlign: "center",
  806. align: "left",
  807. columnLabel: "创建人",
  808. columnHidden: false,
  809. columnImage: false,
  810. columnSortable: false,
  811. sortLv: 0,
  812. status: true,
  813. fixed: '',
  814. columnWidth: 80
  815. },{
  816. userId: this.$store.state.user.name,
  817. functionId: 103002,
  818. serialNumber: '103002Table1UpdateDate',
  819. tableId: "103002Table1",
  820. tableName: "技术参数卡列表",
  821. columnProp: "updateDate",
  822. headerAlign: "center",
  823. align: "center",
  824. columnLabel: "上次修改日期",
  825. columnHidden: false,
  826. columnImage: false,
  827. columnSortable: false,
  828. sortLv: 0,
  829. status: true,
  830. fixed: '',
  831. columnWidth: 120
  832. },{
  833. userId: this.$store.state.user.name,
  834. functionId: 103002,
  835. serialNumber: '103002Table1UpdateBy',
  836. tableId: "103002Table1",
  837. tableName: "技术参数卡列表",
  838. columnProp: "updateBy",
  839. headerAlign: "center",
  840. align: "left",
  841. columnLabel: "修改人",
  842. columnHidden: false,
  843. columnImage: false,
  844. columnSortable: false,
  845. sortLv: 0,
  846. status: true,
  847. fixed: '',
  848. columnWidth: 80
  849. },{
  850. userId: this.$store.state.user.name,
  851. functionId: 103002,
  852. serialNumber: '103002Table1ecnAddress',
  853. tableId: "103002Table1",
  854. tableName: "技术参数卡列表",
  855. columnProp: "ecnAddress",
  856. headerAlign: "center",
  857. align: "left",
  858. columnLabel: "ECN文档链接",
  859. columnHidden: false,
  860. columnImage: false,
  861. columnSortable: false,
  862. sortLv: 0,
  863. status: true,
  864. fixed: '',
  865. columnWidth: 200
  866. },
  867. ],
  868. infoData:{
  869. testPartNo:'',
  870. partTypeDesc:'',
  871. revNo:'',
  872. projectId:'',
  873. ecnFlag:'',
  874. ecnNo:'',
  875. ecnAddress:'',
  876. quotationOfficer:'',
  877. engineer:'',
  878. technician:'',
  879. remark:'',
  880. },
  881. customerData:{
  882. customerId:'',
  883. customerName:'',
  884. customerDesc:'',
  885. finalCustomer:'',
  886. customerRemark:'',
  887. remark:'',
  888. },
  889. dataRole: {
  890. partTypeDesc: [
  891. {
  892. required: true,
  893. message: ' ',
  894. trigger: 'change'
  895. }
  896. ],
  897. partName: [
  898. {
  899. required: true,
  900. message: ' ',
  901. trigger: 'change'
  902. }
  903. ],
  904. },
  905. revNoFlag:false,
  906. revNoData: {
  907. site:'',
  908. oriCodeNo:'',
  909. oldCodeNo:'',
  910. oldRevNo:'',
  911. revNo:'',
  912. testPartNo:'',
  913. },
  914. // 导出 start
  915. exportData: [],
  916. exportName: '技术参数卡清单'+this.dayjs().format('YYYYMMDDHHmmss'),
  917. exportHeader: ["技术参数卡清单"],
  918. exportFooter: [],
  919. // 导出 end
  920. }
  921. },
  922. mounted() {
  923. this.$nextTick(() => {
  924. this.height = window.innerHeight - 520;
  925. })
  926. },
  927. activated() {
  928. if (this.$route.params.type === 'tokenLogin') {
  929. console.log("进来啦")
  930. if (this.$route.params.docNo) {
  931. // this.searchData.applyNo = this.$route.params.docNo
  932. let inData={
  933. page: 1,
  934. limit: 100,
  935. site: this.$store.state.user.site,
  936. userName: this.$store.state.user.name,
  937. codeNo:this.$route.params.docNo,
  938. }
  939. technicalSpecificationListSearch(inData).then(({data}) => {
  940. if (data.code == 0) {
  941. this.dataList1 = data.page.list
  942. this.pageIndex = data.page.currPage
  943. this.pageSize = data.page.pageSize
  944. this.totalPage = data.page.totalCount
  945. if(this.dataList1.length>0){
  946. this.$refs.mainTable.setCurrentRow(this.dataList1[0]);
  947. this.changeData(this.dataList1[0])
  948. this.jumpDetail(this.dataList1[0])
  949. }
  950. }
  951. this.dataListLoading = false
  952. })
  953. }
  954. }
  955. if (this.$route.params.codeNo){
  956. this.searchData.oriCodeNo = this.$route.params.codeNo;
  957. this.search();
  958. setTimeout(() => {
  959. this.searchData.oriCodeNo = '';
  960. }, 200)
  961. }
  962. if (this.$route.params.nowCodeNo){
  963. this.searchData.codeNo = this.$route.params.nowCodeNo;
  964. this.search();
  965. setTimeout(() => {
  966. this.searchData.codeNo = '';
  967. }, 200)
  968. }
  969. },
  970. methods: {
  971. // 下达
  972. issueModal (row) {
  973. this.$confirm(`是否确认下达?`, '提示', {
  974. confirmButtonText: '确定',
  975. cancelButtonText: '取消',
  976. type: 'warning'
  977. }).then(() => {
  978. let tempData = {
  979. site: row.site,
  980. userName: this.$store.state.user.name,
  981. codeNo: row.codeNo,
  982. menuId: this.$route.meta.menuId
  983. }
  984. issueChange(tempData).then(({data}) => {
  985. if (data && data.code === 0) {
  986. this.search()
  987. this.$message({message: '操作成功', type: 'success'})
  988. } else {
  989. this.$alert(data.msg, '错误', {
  990. confirmButtonText: '确定'
  991. })
  992. }
  993. })
  994. })
  995. },
  996. // 每页数
  997. sizeChangeHandle (val) {
  998. this.pageSize = val
  999. this.pageIndex = 1
  1000. this.search()
  1001. },
  1002. // 当前页
  1003. currentChangeHandle (val) {
  1004. this.pageIndex = val
  1005. this.search()
  1006. },
  1007. search(){
  1008. this.searchData.limit = this.pageSize
  1009. this.searchData.page = this.pageIndex
  1010. technicalSpecificationListSearch(this.searchData).then(({data}) => {
  1011. if (data.code == 0) {
  1012. this.dataList1 = data.page.list
  1013. this.pageIndex = data.page.currPage
  1014. this.pageSize = data.page.pageSize
  1015. this.totalPage = data.page.totalCount
  1016. if(this.dataList1.length>0){
  1017. this.$refs.mainTable.setCurrentRow(this.dataList1[0]);
  1018. this.changeData(this.dataList1[0])
  1019. }
  1020. }
  1021. this.dataListLoading = false
  1022. })
  1023. },
  1024. changeData(row) {
  1025. this.currentRow = JSON.parse(JSON.stringify(row));
  1026. this.infoData=row;
  1027. this.refreshCurrentTabTable ();
  1028. },
  1029. // 获取基础数据列表S
  1030. getBaseList (val, type) {
  1031. this.tagNo = val
  1032. this.tagNo1 = type
  1033. this.$nextTick(() => {
  1034. let strVal = ''
  1035. if (val === 1013) {
  1036. if(type==1) {
  1037. strVal = this.dataForm.partType
  1038. }
  1039. }
  1040. if (val === 105) {
  1041. if(type==1) {
  1042. strVal = this.searchData.testPartNo
  1043. }
  1044. }
  1045. this.$refs.baseList.init(val, strVal)
  1046. })
  1047. },
  1048. refreshCurrentTabTable () {
  1049. if (this.activeName == 'customerInfo') {
  1050. this.getTechnicalCustomerInfoData();
  1051. }
  1052. if (this.activeName === 'approvalInformation') {
  1053. this.getApprovalList()
  1054. }
  1055. },
  1056. getTechnicalCustomerInfoData(){
  1057. let inData={
  1058. id:this.currentRow.id
  1059. }
  1060. getTechnicalCustomerInfoData(inData).then(({data}) => {
  1061. //区分请求成功和失败的状况
  1062. if (data && data.code == 0) {
  1063. this.customerData = data.row;
  1064. } else {
  1065. this.customerData = [];
  1066. }
  1067. });
  1068. },
  1069. /* 列表方法的回调 */
  1070. getBaseData (val) {
  1071. if (this.tagNo === 1013) {
  1072. if(this.tagNo1==1) {
  1073. this.dataForm.partType = val.Base_id
  1074. this.dataForm.partTypeDesc = val.Base_desc
  1075. }
  1076. }
  1077. if (this.tagNo === 105) {
  1078. if(this.tagNo1==1) {
  1079. this.searchData.testPartNo = val.Test_part_no
  1080. }
  1081. }
  1082. },
  1083. // 新增 / 修改
  1084. addOrUpdateHandle (id) {
  1085. this.addOrUpdateVisible = true
  1086. this.$nextTick(() => {
  1087. this.$refs.addOrUpdate.init(id)
  1088. })
  1089. },
  1090. jumpDetail(row){
  1091. let inData={
  1092. site:this.$store.state.user.site,
  1093. codeNo:row.codeNo,
  1094. buNo:row.buNo,
  1095. username:this.$store.state.user.name};
  1096. localStorage.setItem('tsfData', JSON.stringify(inData))
  1097. window.open('#/BMPage');
  1098. // this.$router.replace('sampleManagement-technicalSpecificationDetail/technicalSpecificationDetail')
  1099. },
  1100. deleteData(row){
  1101. this.$confirm('确定要删除这条数据?', '提示', {
  1102. confirmButtonText: '确定',
  1103. cancelButtonText: '取消',
  1104. type: 'warning'
  1105. }).then(() => {
  1106. deleteTechnicalSpecificationList(row).then(({data}) => {
  1107. if (data && data.code === 0) {
  1108. this.$message.success( '操作成功')
  1109. this.search();
  1110. } else {
  1111. this.$message.error(data.msg)
  1112. }
  1113. })
  1114. }).catch(() => {
  1115. })
  1116. },
  1117. addRevModel(row){
  1118. this.revNoData={
  1119. site:row.site,
  1120. oriCodeNo:row.oriCodeNo,
  1121. oldCodeNo:row.codeNo,
  1122. oldRevNo:row.revNo,
  1123. revNo:'',
  1124. testPartNo:row.testPartNo,
  1125. }
  1126. this.revNoFlag=true;
  1127. },
  1128. upBMRevNo(){
  1129. this.$confirm('确定要升版?', '提示', {
  1130. confirmButtonText: '确定',
  1131. cancelButtonText: '取消',
  1132. type: 'warning'
  1133. }).then(() => {
  1134. upBMRevNo(this.revNoData).then(({data}) => {
  1135. if (data && data.code === 0) {
  1136. this.$message.success( '操作成功')
  1137. this.revNoFlag=false;
  1138. this.search();
  1139. } else {
  1140. this.$message.error(data.msg)
  1141. }
  1142. })
  1143. }).catch(() => {
  1144. })
  1145. },
  1146. //导出excel
  1147. async createExportData() {
  1148. this.searchData.limit = -1
  1149. this.searchData.page = 1
  1150. await technicalSpecificationListSearch(this.searchData).then(({data}) => {
  1151. this.exportList= data.page.list;
  1152. })
  1153. return this.exportList;
  1154. },
  1155. startDownload() {
  1156. // this.exportData = this.dataList
  1157. },
  1158. finishDownload() {
  1159. },
  1160. fields() {
  1161. let json = "{"
  1162. this.columnList1.forEach((item, index) => {
  1163. if (index == this.columnList1.length - 1) {
  1164. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1165. } else {
  1166. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1167. }
  1168. })
  1169. json += "}"
  1170. let s = eval("(" + json + ")")
  1171. return s
  1172. },
  1173. // test() {
  1174. // this.$router.push('quotation-sellForQuotation-quoteDetail')
  1175. // },
  1176. getApprovalList () {
  1177. if (Object.keys(this.currentRow).length !== 0) {
  1178. let tempData = {
  1179. site: this.$store.state.user.site,
  1180. menuId: this.$route.meta.menuId,
  1181. documentNo:this.currentRow.codeNo
  1182. }
  1183. getApprovalList(tempData).then(({data}) => {
  1184. if (data && data.code === 0) {
  1185. this.approvalList = data.rows
  1186. } else {
  1187. this.approvalList = []
  1188. }
  1189. })
  1190. }
  1191. },
  1192. copyBM(row){
  1193. this.copyData={
  1194. site:row.site,
  1195. codeNo:row.codeNo,
  1196. oriCodeNo:row.oriCodeNo,
  1197. testPartNo:row.testPartNo,
  1198. projectId:row.projectId,
  1199. revNo:row.revNo,
  1200. newPartNo:'',
  1201. }
  1202. searchCopyPart(this.copyData).then(({data}) => {
  1203. if (data.code == 0) {
  1204. this.partList=data.rows
  1205. }
  1206. this.dataListLoading = false
  1207. })
  1208. this.partModelFlag=true
  1209. },
  1210. choosePartNo(row){
  1211. let saveData={
  1212. site:this.copyData.site,
  1213. codeNo:this.copyData.codeNo,
  1214. testPartNo:this.copyData.testPartNo,
  1215. projectId:this.copyData.projectId,
  1216. revNo:this.copyData.revNo,
  1217. newPartNo:row.testPartNo,
  1218. username:this.$store.state.user.name
  1219. }
  1220. this.$confirm('确定要拷贝?', '提示', {
  1221. confirmButtonText: '确定',
  1222. cancelButtonText: '取消',
  1223. type: 'warning'
  1224. }).then(() => {
  1225. copyBm(saveData).then(({data}) => {
  1226. if (data && data.code === 0) {
  1227. this.$message.success( '操作成功')
  1228. this.partModelFlag=false;
  1229. this.search();
  1230. } else {
  1231. this.$message.error(data.msg)
  1232. }
  1233. })
  1234. }).catch(() => {
  1235. })
  1236. },
  1237. },
  1238. }
  1239. </script>
  1240. <style scoped>
  1241. </style>