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.

1092 lines
37 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year 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
1 year ago
2 years ago
1 year 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
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
1 year 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
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
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
2 years 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
1 year ago
1 year ago
1 year ago
11 months ago
1 year ago
11 months 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
1 year 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
2 years ago
1 year ago
11 months ago
2 years ago
2 years 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
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
11 months ago
2 years ago
11 months 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
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
1 year 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
1 year 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
1 year 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
11 months ago
1 year 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
1 year ago
2 years ago
1 year ago
11 months ago
2 years ago
1 year ago
2 years 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
1 year 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
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year 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
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
11 months ago
2 years ago
2 years ago
10 months ago
2 years ago
10 months 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
1 year ago
11 months ago
1 year ago
2 years ago
  1. <template>
  2. <div class="mod-config">
  3. <el-dialog
  4. width="600px"
  5. :title="!dataForm.id ? '添加' :'编辑'"
  6. :close-on-click-modal="false"
  7. :visible.sync="visible">
  8. <el-form :inline="true" label-position="top" label-width="100px" :rules="dataRole">
  9. <el-form-item >
  10. <span slot="label" style="" @click="chooseProofingModel()"><a herf="#">打样单号</a></span>
  11. <el-input v-model="dataForm.proofingNo" style="width: 130px" @change="changeProofingNoChange" :disabled="dataForm.id!=0"></el-input>
  12. </el-form-item>
  13. <el-form-item label=" " >
  14. <el-checkbox v-model="jumpFlag">保存后跳转至详情</el-checkbox>
  15. </el-form-item>
  16. <!-- <el-form-item prop="testPartNo" style="margin-left: 12px" :label="'IFS料号'">-->
  17. <!--&lt;!&ndash; <span slot="label" style="" @click="getBaseList(134,1)" ><a herf="#">IFS料号</a></span>&ndash;&gt;-->
  18. <!-- <el-input v-model="dataForm.testPartNo" @change="changeTestDesc" style="width: 130px" disabled ></el-input>-->
  19. <!-- </el-form-item>-->
  20. </el-form>
  21. <el-form :inline="true" label-position="top" label-width="100px" :rules="dataRole">
  22. <el-form-item :rules="dataRole.testPartNo">
  23. <span slot="label" style="" @click="choosePartModel()"><a herf="#">IFS料号</a></span>
  24. <el-input v-model="dataForm.finalPartNo" style="width: 130px" readonly></el-input>
  25. </el-form-item>
  26. <el-form-item :label="'项目号'">
  27. <el-input v-model="dataForm.projectId" style="width: 130px" disabled></el-input>
  28. </el-form-item>
  29. <el-form-item :label="'物料描述'">
  30. <el-input v-model="dataForm.partDesc" style="width: 274px" disabled></el-input>
  31. </el-form-item>
  32. </el-form>
  33. <el-form :inline="true" label-position="top" label-width="100px" :rules="dataRole">
  34. <el-form-item :label="'BU'" >
  35. <el-input v-model="dataForm.buNo" disabled style="width: 130px" ></el-input>
  36. </el-form-item>
  37. <el-form-item :label="'参数卡编码'" >
  38. <el-input v-model="dataForm.oriCodeNo" disabled style="width: 130px" ></el-input>
  39. </el-form-item>
  40. <el-form-item :label="'版本号'" prop="revNo" :rules="dataRole.revNo">
  41. <el-input v-model="dataForm.revNo" style="width: 130px" :disabled="dataForm.id!=0" ></el-input>
  42. </el-form-item>
  43. </el-form>
  44. <el-form :inline="true" label-position="top" label-width="100px" :rules="dataRole">
  45. <el-form-item >
  46. <span slot="label" style="" @click="getUserList(1)"><a herf="#">CQC人员</a></span>
  47. <el-input v-model="dataForm.cqcOperatorName" ref="cqcOperatorName" placeholder="请选择人员" readonly style="width: 130px" ></el-input>
  48. </el-form-item>
  49. <el-form-item >
  50. <span slot="label" style="" @click="getUserList(2)"><a herf="#">FAI人员</a></span>
  51. <el-input v-model="dataForm.faiOperatorName" ref="faiOperatorName" placeholder="请选择人员" readonly style="width: 130px" ></el-input>
  52. </el-form-item>
  53. <!-- <el-form-item >-->
  54. <!-- <span slot="label" style="" @click="quotationOfficerChooseModal()"><a herf="#">报价员</a></span>-->
  55. <!-- <el-input v-model="dataForm.quotationOfficer" readonly style="width: 274px" @focus="quotationOfficerChooseModal()"></el-input>-->
  56. <!-- </el-form-item>-->
  57. <!-- </el-form>-->
  58. <!-- <el-form :inline="true" label-position="top" label-width="100px" >-->
  59. <el-form-item >
  60. <span slot="label" style="" @click="getUserList(7)"><a herf="#">Select Engineer</a></span>
  61. <el-input v-model="dataForm.engineer" readonly style="width: 130px" placeholder="请选择人员" ></el-input>
  62. </el-form-item>
  63. <el-form-item >
  64. <span slot="label" style="" @click="getUserList(8)"><a herf="#">Select Artwork</a></span>
  65. <el-input v-model="dataForm.technician" readonly style="width: 130px" placeholder="请选择人员" ></el-input>
  66. </el-form-item>
  67. <!-- <el-form-item >-->
  68. <!-- <span slot="label" style="" @click="engineerChooseModal()"><a herf="#">Select PE Engineer</a></span>-->
  69. <!-- <el-input v-model="dataForm.engineer" readonly style="width: 130px" @focus="engineerChooseModal()"></el-input>-->
  70. <!-- </el-form-item>-->
  71. <!-- 274px-->
  72. <!-- <el-form-item >-->
  73. <!-- <span slot="label" style="" @click="technicianModal()"><a herf="#">Select Artwork</a></span>-->
  74. <!-- <el-input v-model="dataForm.technician" readonly style="width: 130px" @focus="technicianModal()"></el-input>-->
  75. <!-- </el-form-item>-->
  76. <el-form-item >
  77. <span slot="label" style="" @click="getUserList(3)"><a herf="#">PE人员</a></span>
  78. <el-input v-model="dataForm.peOperaterName" ref="peOperaterName" placeholder="请选择人员" readonly style="width: 130px" ></el-input>
  79. </el-form-item>
  80. <el-form-item >
  81. <span slot="label" style="" @click="getUserList(4)"><a herf="#">CS人员</a></span>
  82. <el-input v-model="dataForm.csOperaterName" ref="csOperaterName" placeholder="请选择人员" readonly style="width: 130px" ></el-input>
  83. </el-form-item>
  84. <!-- <el-form-item >-->
  85. <!-- <span slot="label" style="" @click="getUserList(5)"><a herf="#">DCC人员</a></span>-->
  86. <!-- <el-input v-model="dataForm.dccOperaterName" ref="dccOperaterName" placeholder="请选择人员" readonly style="width: 130px" ></el-input>-->
  87. <!-- </el-form-item>-->
  88. <el-form-item >
  89. <span slot="label" style="" @click="dccChooseModal()"><a herf="#">DCC人员</a></span>
  90. <el-input v-model="dataForm.dcc" ref="dcc" readonly style="" @focus="dccChooseModal()" style="width: 130px"></el-input>
  91. </el-form-item>
  92. <el-form-item >
  93. <span slot="label" style="" @click="getUserList(6)"><a herf="#">Select Technical</a></span>
  94. <el-input v-model="dataForm.mpOperatorName" ref="mpOperatorName" placeholder="请选择人员" readonly style="width: 130px" ></el-input>
  95. </el-form-item>
  96. </el-form>
  97. <el-form :inline="true" label-position="top" label-width="100px" >
  98. <el-form-item :label="'备注'">
  99. <el-input
  100. type="textarea"
  101. v-model="dataForm.remark "
  102. :rows="3"
  103. resize='none'
  104. maxlength="120"
  105. show-word-limit
  106. style="width: 562px;height: 60px">
  107. </el-input>
  108. </el-form-item>
  109. </el-form>
  110. <el-form label-position="top" style="margin-top: 60px; margin-left: 0px;text-align:center">
  111. <el-button type="primary" @click="dataFormSubmit()">{{'确定'}}</el-button>
  112. <el-button type="primary" @click="visible = false">{{'关闭'}}</el-button>
  113. </el-form>
  114. </el-dialog>
  115. <el-dialog
  116. width="530px"
  117. title="报价员"
  118. :close-on-click-modal="false"
  119. :visible.sync="quotationOfficerFlag">
  120. <el-transfer v-model="quotationOfficerList" class="rq" filterable :props="{
  121. key: 'operatorId',
  122. label: 'operatorName'
  123. }" :data="operatorList" :titles="['未选择', '已选择']"></el-transfer>
  124. <span slot="footer" class="dialog-footer">
  125. <div style="margin-top: 5px">
  126. <el-button type="primary" @click="saveQuotationOfficerList()">确定</el-button>
  127. <el-button @click="quotationOfficerFlag = false" type="primary">取消</el-button>
  128. </div>
  129. </span>
  130. </el-dialog>
  131. <el-dialog
  132. width="530px"
  133. title="工程师"
  134. :close-on-click-modal="false"
  135. :visible.sync="engineerFlag">
  136. <el-transfer v-model="engineerList" class="rq" filterable :props="{
  137. key: 'operatorId',
  138. label: 'operatorName'
  139. }" :data="operatorList" :titles="['未选择', '已选择']"></el-transfer>
  140. <span slot="footer" class="dialog-footer">
  141. <div style="margin-top: 5px">
  142. <el-button type="primary" @click="saveEngineerList()">确定</el-button>
  143. <el-button @click="engineerFlag = false" type="primary">取消</el-button>
  144. </div>
  145. </span>
  146. </el-dialog>
  147. <el-dialog
  148. width="530px"
  149. title="项目负责人"
  150. :close-on-click-modal="false"
  151. :visible.sync="ownerFlag">
  152. <el-transfer v-model="technicianList" class="rq" filterable :props="{
  153. key: 'operatorId',
  154. label: 'operatorName'
  155. }" :data="operatorList" :titles="['未选择', '已选择']"></el-transfer>
  156. <span slot="footer" class="dialog-footer">
  157. <div style="margin-top: 5px">
  158. <el-button type="primary" @click="savetechnicianList()">确定</el-button>
  159. <el-button @click="ownerFlag = false" type="primary">取消</el-button>
  160. </div>
  161. </span>
  162. </el-dialog>
  163. <el-dialog
  164. width="950px"
  165. title="选择打样单"
  166. :close-on-click-modal="false"
  167. :visible.sync="proofingModelFlag">
  168. <el-form :inline="true" label-position="top" label-width="100px" >
  169. <el-form-item style="margin-left: 0px">
  170. <span slot="label" style="" @click="getBaseList(104,2)" ><a herf="#">项目号</a></span>
  171. <el-input v-model="proofingSearch.projectId" style="width: 130px" ></el-input>
  172. </el-form-item>
  173. <el-form-item style="margin-left: 0px">
  174. <span slot="label" style="" @click="getBaseList(501,2)" ><a herf="#">打样单</a></span>
  175. <el-input v-model="proofingSearch.proofingNo" style="width: 130px" ></el-input>
  176. </el-form-item>
  177. <el-form-item style="margin-left: 0px">
  178. <span slot="label" style="" @click="getBaseList(102,2)" ><a herf="#">直接客户</a></span>
  179. <el-input v-model="proofingSearch.customerId" style="width: 130px" ></el-input>
  180. </el-form-item>
  181. <el-form-item style="margin-left: 0px">
  182. <span slot="label" style="" @click="getBaseList(102,3)" ><a herf="#">最终客户</a></span>
  183. <el-input v-model="proofingSearch.finalCustomerId" style="width: 130px" ></el-input>
  184. </el-form-item>
  185. <el-form-item label=" ">
  186. <el-button type="primary" @click="refreshProofingList()">{{'查询'}}</el-button>
  187. </el-form-item>
  188. </el-form>
  189. <el-table
  190. height="450"
  191. :data="proofingList"
  192. border
  193. @row-dblclick="chooseProofingNo"
  194. style="width: 100%;">
  195. <el-table-column
  196. prop="proofingNo"
  197. header-align="center"
  198. align="left"
  199. min-width="120"
  200. style="font-size: 20px"
  201. label="打样单">
  202. </el-table-column>
  203. <el-table-column
  204. prop="projectId"
  205. header-align="center"
  206. align="left"
  207. min-width="120"
  208. style="font-size: 20px"
  209. label="项目号">
  210. </el-table-column>
  211. <el-table-column
  212. prop="projectName"
  213. header-align="center"
  214. align="left"
  215. min-width="120"
  216. style="font-size: 20px"
  217. label="项目名称">
  218. </el-table-column>
  219. <el-table-column
  220. prop="testPartNo"
  221. header-align="center"
  222. align="left"
  223. min-width="120"
  224. label="测试料号">
  225. </el-table-column>
  226. <el-table-column
  227. prop="partDesc"
  228. header-align="center"
  229. align="left"
  230. min-width="120"
  231. label="物料名称">
  232. </el-table-column>
  233. <el-table-column
  234. prop="buNo"
  235. header-align="center"
  236. align="left"
  237. min-width="80"
  238. label="BU">
  239. </el-table-column>
  240. <el-table-column
  241. prop="customerDesc"
  242. header-align="center"
  243. align="left"
  244. min-width="120"
  245. label="直接客户">
  246. </el-table-column>
  247. <el-table-column
  248. prop="finalCustomerDesc"
  249. header-align="center"
  250. align="left"
  251. min-width="120"
  252. label="最终客户">
  253. </el-table-column>
  254. </el-table>
  255. </el-dialog>
  256. <el-dialog
  257. width="750px"
  258. title="选择物料"
  259. :close-on-click-modal="false"
  260. :visible.sync="partModelFlag">
  261. <el-form :inline="true" label-position="top" label-width="100px" >
  262. <el-form-item style="margin-left: 0px" label="项目编码">
  263. <el-input v-model="partSearch.projectId" style="width: 130px" ></el-input>
  264. </el-form-item>
  265. <el-form-item style="margin-left: 0px" label="IFS料号">
  266. <el-input v-model="partSearch.finalPartNo" style="width: 130px" ></el-input>
  267. </el-form-item>
  268. <el-form-item style="margin-left: 0px" label="物料编码">
  269. <el-input v-model="partSearch.testPartNo" style="width: 130px" ></el-input>
  270. </el-form-item>
  271. <!-- <el-form-item style="margin-left: 0px" label="物料名称">-->
  272. <!-- <el-input v-model="partSearch.partDesc" style="width: 130px" ></el-input>-->
  273. <!-- </el-form-item>-->
  274. <el-form-item style="margin-left: 0px" label="客户料号">
  275. <el-input v-model="partSearch.customerPartNo" style="width: 130px" ></el-input>
  276. </el-form-item>
  277. <el-form-item label=" ">
  278. <el-button type="primary" @click="refreshPartList()">{{'查询'}}</el-button>
  279. </el-form-item>
  280. </el-form>
  281. <el-table
  282. height="450"
  283. :data="partList"
  284. border
  285. @row-dblclick="choosePartNo"
  286. style="width: 100%;">
  287. <el-table-column
  288. prop="finalPartNo"
  289. header-align="center"
  290. align="left"
  291. min-width="120"
  292. style="font-size: 20px"
  293. label="IFS料号">
  294. </el-table-column>
  295. <el-table-column
  296. prop="testPartNo"
  297. header-align="center"
  298. align="left"
  299. min-width="120"
  300. style="font-size: 20px"
  301. label="物料编码">
  302. </el-table-column>
  303. <el-table-column
  304. prop="projectId"
  305. header-align="center"
  306. align="left"
  307. min-width="120"
  308. style="font-size: 20px"
  309. label="项目编码">
  310. </el-table-column>
  311. <el-table-column
  312. prop="customerPartNo"
  313. header-align="center"
  314. align="left"
  315. min-width="120"
  316. label="客户料号">
  317. </el-table-column>
  318. <el-table-column
  319. prop="partDesc"
  320. header-align="center"
  321. align="left"
  322. min-width="120"
  323. label="物料名称">
  324. </el-table-column>
  325. <el-table-column
  326. prop="buNo"
  327. header-align="center"
  328. align="left"
  329. min-width="70"
  330. label="BU">
  331. </el-table-column>
  332. </el-table>
  333. <el-pagination
  334. @size-change="sizeChangeHandle"
  335. @current-change="currentChangeHandle"
  336. :current-page="pageIndex"
  337. :page-sizes="[20, 50, 100, 1000]"
  338. :page-size="pageSize"
  339. :total="totalPage"
  340. layout="total, sizes, prev, pager, next, jumper">
  341. </el-pagination>
  342. </el-dialog>
  343. <el-dialog
  344. width="530px"
  345. title="DCC人员"
  346. :close-on-click-modal="false"
  347. :visible.sync="dccFlag">
  348. <el-transfer v-model="dccList" class="rq" filterable :props="{
  349. key: 'operatorId',
  350. label: 'operatorName'
  351. }" :data="operatorList" :titles="['未选择', '已选择']"></el-transfer>
  352. <span slot="footer" class="dialog-footer">
  353. <div style="margin-top: 5px">
  354. <el-button type="primary" @click="savetDccList()">确定</el-button>
  355. <el-button @click="dccFlag = false" type="primary">取消</el-button>
  356. </div>
  357. </span>
  358. </el-dialog>
  359. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  360. <ChooseUser ref="userList" @getBaseData="getUserData"></ChooseUser>
  361. </div>
  362. </template>
  363. <script>
  364. import {
  365. searchOperatorWithSite,
  366. } from "@/api/project/project.js"
  367. import {technicalSpecificationListSearch,
  368. saveTechnicalSpecificationSheet,
  369. searchTechnicalSpecificationTeamStr,
  370. getTestPartChangeData,
  371. getProofingDataByUserRole,
  372. getFinalPartData,
  373. searchBMUser,
  374. } from "@/api/sampleManagement/technicalSpecificationList.js"
  375. import Chooselist from '@/views/modules/common/Chooselist'
  376. import ChooseUser from '@/views/modules/common/ChooseUser'
  377. export default {
  378. components: {
  379. Chooselist,ChooseUser
  380. },
  381. data () {
  382. return {
  383. jumpFlag:true,
  384. tagNo:'',
  385. tagNo1:'',
  386. visible: false,
  387. treeVisible: false,
  388. quotationOfficerFlag:false,
  389. engineerFlag:false,
  390. userRoleFlag:false,
  391. ownerFlag:false,
  392. operatorList:[],
  393. dataForm: {
  394. id: 0,
  395. finalPartNo:'',
  396. site:this.$store.state.user.site,
  397. proofingNo:'',
  398. projectId:'',
  399. codeNo:'',
  400. testPartNo:'',
  401. partDesc:'',
  402. status:'',
  403. revNo:'',
  404. remark:'',
  405. technician:'',
  406. quotationOfficer:'',
  407. engineer:'',
  408. quotationOfficerList:[],
  409. engineerList:[],
  410. technicianList:[],
  411. engineerNo:'',
  412. technicianNo:'',
  413. oriCodeNo:'',
  414. cqcOperator:'',
  415. faiOperator:'',
  416. cqcOperatorName:'',
  417. faiOperatorName:'',
  418. peOperater:'',
  419. peOperaterName:'',
  420. csOperater:'',
  421. csOperaterName:'',
  422. dccOperater:'',
  423. dccOperaterName:'',
  424. mpOperatorName:'',
  425. mpOperator:'',
  426. buNo:'',
  427. dcc:'',
  428. dccList:[],
  429. },
  430. dccList:'',
  431. dccFlag:false,
  432. proofingSearch:{
  433. projectId:'',
  434. proofingNo:'',
  435. customerId:'',
  436. finalCustomerId:'',
  437. site:this.$store.state.user.site,
  438. username:this.$store.state.user.name,
  439. },
  440. pageIndex: 1,
  441. pageSize: 100,
  442. totalPage: 0,
  443. partSearch:{
  444. projectId:'',
  445. finalPartNo:'',
  446. testPartNo:'',
  447. partDesc:'',
  448. site:this.$store.state.user.site,
  449. username:this.$store.state.user.name,
  450. customerPartNo:'',
  451. page: 1,
  452. limit: 100,
  453. },
  454. quotationOfficerList:[],
  455. engineerList:[],
  456. technicianList:[],
  457. dataRole: {
  458. testPartNo: [
  459. {
  460. required: true,
  461. message: ' ',
  462. trigger: 'change'
  463. }
  464. ],
  465. revNo: [
  466. {
  467. required: true,
  468. message: ' ',
  469. trigger: 'change'
  470. }
  471. ],
  472. quotationOfficer: [
  473. {
  474. required: true,
  475. message: ' ',
  476. trigger: 'change'
  477. }
  478. ],
  479. engineer: [
  480. {
  481. required: true,
  482. message: ' ',
  483. trigger: 'change'
  484. }
  485. ],
  486. technician: [
  487. {
  488. required: true,
  489. message: ' ',
  490. trigger: 'change'
  491. }
  492. ],
  493. },
  494. proofingList:[],
  495. proofingModelFlag:false,
  496. partList:[],
  497. partModelFlag:false,
  498. }
  499. },
  500. created () {
  501. },
  502. methods: {
  503. getUserList (type) {
  504. this.tagNo1 = type
  505. this.$nextTick(() => {
  506. let strVal = ''
  507. if(type==1) {
  508. strVal = this.dataForm.cqcOperator
  509. }
  510. if(type==2) {
  511. strVal = this.dataForm.faiOperator
  512. }
  513. if(type==3) {
  514. strVal = this.dataForm.peOperater
  515. }
  516. if(type==4) {
  517. strVal = this.dataForm.csOperater
  518. }
  519. if(type==5) {
  520. strVal = this.dataForm.dccOperater
  521. }
  522. if(type==6) {
  523. strVal = this.dataForm.mpOperator
  524. }
  525. if(type==7) {
  526. strVal = this.dataForm.engineerNo
  527. }
  528. if(type==8) {
  529. strVal = this.dataForm.technicianNo
  530. }
  531. this.$refs.userList.init(this.$store.state.user.site,this.dataForm.buNo!==''?this.dataForm.buNo:'%%', strVal)
  532. })
  533. },
  534. /* 列表方法的回调 */
  535. getUserData (val) {
  536. if(this.tagNo1==1) {
  537. this.dataForm.cqcOperator = val.username
  538. this.dataForm.cqcOperatorName = val.userDisplay
  539. // this.$nextTick(() => {
  540. // this.$triggerInputEvent(this.$refs.cqcOperatorName);
  541. // });
  542. }
  543. if(this.tagNo1==2) {
  544. this.dataForm.faiOperator = val.username
  545. this.dataForm.faiOperatorName = val.userDisplay
  546. // this.$nextTick(() => {
  547. // this.$triggerInputEvent(this.$refs.faiOperatorName);
  548. // });
  549. }
  550. if(this.tagNo1==3) {
  551. this.dataForm.peOperater = val.username
  552. this.dataForm.peOperaterName = val.userDisplay
  553. // this.$nextTick(() => {
  554. // this.$triggerInputEvent(this.$refs.peOperaterName);
  555. // });
  556. }
  557. if(this.tagNo1==4) {
  558. this.dataForm.csOperater = val.username
  559. this.dataForm.csOperaterName = val.userDisplay
  560. // this.$nextTick(() => {
  561. // this.$triggerInputEvent(this.$refs.csOperaterName);
  562. // });
  563. }
  564. if(this.tagNo1==5) {
  565. this.dataForm.dccOperater = val.username
  566. this.dataForm.dccOperaterName = val.userDisplay
  567. // this.$nextTick(() => {
  568. // this.$triggerInputEvent(this.$refs.dccOperaterName);
  569. // });
  570. }
  571. if(this.tagNo1==6) {
  572. this.dataForm.mpOperator = val.username
  573. this.dataForm.mpOperatorName = val.userDisplay
  574. // this.$nextTick(() => {
  575. // this.$triggerInputEvent(this.$refs.mpOperatorName);
  576. // });
  577. }
  578. if(this.tagNo1==7) {
  579. this.dataForm.engineerNo = val.username
  580. this.dataForm.engineer = val.userDisplay
  581. // this.$nextTick(() => {
  582. // this.$triggerInputEvent(this.$refs.mpOperatorName);
  583. // });
  584. }
  585. if(this.tagNo1==8) {
  586. this.dataForm.technicianNo = val.username
  587. this.dataForm.technician = val.userDisplay
  588. // this.$nextTick(() => {
  589. // this.$triggerInputEvent(this.$refs.mpOperatorName);
  590. // });
  591. }
  592. },
  593. // 获取基础数据列表S
  594. getBaseList (val, type) {
  595. this.tagNo = val
  596. this.tagNo1 = type
  597. this.$nextTick(() => {
  598. let strVal = ''
  599. if (val === 134) {
  600. if(type==1) {
  601. if(this.dataForm.id!=0){
  602. return false
  603. }
  604. strVal = this.dataForm.testPartNo
  605. }
  606. }
  607. if (val === 102) {
  608. if(type==1) {
  609. strVal = this.dataForm.customerId
  610. }
  611. if(type==2) {
  612. strVal = this.proofingSearch.customerId
  613. }
  614. if(type==3) {
  615. strVal = this.proofingSearch.finalCustomerId
  616. }
  617. }
  618. if (val === 104) {
  619. if(type==2) {
  620. strVal = this.proofingSearch.projectId
  621. }
  622. }
  623. if (val === 501) {
  624. if(type==2) {
  625. strVal = this.proofingSearch.proofingNo
  626. }
  627. }
  628. if (val === 1011) {
  629. if(type==1) {
  630. strVal = this.dataForm.projectSource
  631. }
  632. }
  633. if (val === 1012) {
  634. if(type==1) {
  635. strVal = this.dataForm.priority
  636. }
  637. }
  638. this.$refs.baseList.init(val, strVal)
  639. })
  640. },
  641. /* 列表方法的回调 */
  642. getBaseData (val) {
  643. if (this.tagNo === 134) {
  644. if(this.tagNo1==1) {
  645. this.dataForm.testPartNo = val.Test_part_no
  646. this.dataForm.proofingNo = ''
  647. this.changeTestDesc();
  648. }
  649. }
  650. if (this.tagNo === 102) {
  651. if(this.tagNo1==1) {
  652. this.dataForm.customerId = val.Customer_no
  653. this.dataForm.customerName = val.Customer_desc
  654. }
  655. if(this.tagNo1==2) {
  656. this.proofingSearch.customerId = val.Customer_no
  657. }
  658. if(this.tagNo1==3) {
  659. this.proofingSearch.finalCustomerId = val.Customer_no
  660. }
  661. }
  662. if (this.tagNo === 104) {
  663. if(this.tagNo1==2) {
  664. this.proofingSearch.projectId = val.project_id
  665. }
  666. }
  667. if (this.tagNo === 501) {
  668. if(this.tagNo1==2) {
  669. this.proofingSearch.proofingNo = val.Proofing_no
  670. }
  671. }
  672. if (this.tagNo === 1011) {
  673. if(this.tagNo1==1) {
  674. this.dataForm.projectSource = val.Base_id
  675. this.dataForm.projectSourceDesc = val.Base_desc
  676. }
  677. }
  678. if (this.tagNo === 1012) {
  679. if(this.tagNo1==1) {
  680. this.dataForm.priority = val.Base_id
  681. this.dataForm.priorityDesc = val.Base_desc
  682. }
  683. }
  684. },
  685. init (id) {
  686. this.jumpFlag=true
  687. this.dataForm.id = id || 0
  688. if(this.dataForm.id!=0){
  689. let inData={
  690. page: 1,
  691. limit: 10,
  692. id:id,
  693. userName:this.$store.state.user.name,
  694. site:this.$store.state.user.site,
  695. }
  696. technicalSpecificationListSearch(inData).then(({data}) => {
  697. if(data.page.list.length>0){
  698. this.dataForm= data.page.list[0];
  699. let inData={
  700. site:this.dataForm.site,
  701. codeNo:this.dataForm.codeNo,
  702. type:'quotationOfficer',
  703. }
  704. searchTechnicalSpecificationTeamStr(inData).then(({data}) => {
  705. this.dataForm.quotationOfficerList=data.rows
  706. })
  707. let inData2={
  708. site:this.dataForm.site,
  709. codeNo:this.dataForm.codeNo,
  710. type:'technician',
  711. }
  712. searchTechnicalSpecificationTeamStr(inData2).then(({data}) => {
  713. this.dataForm.technicianList=data.rows
  714. })
  715. let inData3={
  716. site:this.dataForm.site,
  717. codeNo:this.dataForm.codeNo,
  718. type:'engineer',
  719. }
  720. searchTechnicalSpecificationTeamStr(inData3).then(({data}) => {
  721. this.dataForm.engineerList=data.rows
  722. })
  723. let inData5 = {
  724. site: this.dataForm.site,
  725. codeNo: this.dataForm.codeNo,
  726. type: 'dcc',
  727. }
  728. searchTechnicalSpecificationTeamStr(inData5).then(({data}) => {
  729. this.dataForm.dccList = data.rows
  730. })
  731. this.visible = true
  732. }else {
  733. this.$message.error('技术参数卡数据有误!')
  734. }
  735. })
  736. }else {
  737. this.dataForm={
  738. id: 0,
  739. finalPartNo: '',
  740. site:this.$store.state.user.site,
  741. proofingNo:'',
  742. projectId:'',
  743. codeNo:'',
  744. testPartNo:'',
  745. partDesc:'',
  746. status:'',
  747. revNo:'',
  748. remark:'',
  749. technician:'',
  750. quotationOfficer:'',
  751. engineer:'',
  752. quotationOfficerList:[],
  753. engineerList:[],
  754. technicianList:[],
  755. cqcOperator:'',
  756. faiOperator:'',
  757. cqcOperatorName:'',
  758. faiOperatorName:'',
  759. peOperater:'',
  760. peOperaterName:'',
  761. csOperater:'',
  762. csOperaterName:'',
  763. dccOperater:'',
  764. dccOperaterName:'',
  765. mpOperatorName:'',
  766. mpOperator:'',
  767. oriCodeNo:'',
  768. engineerNo:'',
  769. technicianNo:'',
  770. buNo:'',
  771. dcc:'',
  772. dccList:[],
  773. }
  774. this.visible = true
  775. }
  776. },
  777. chooseProofingModel(){
  778. if(this.dataForm.id!=0){
  779. return false;
  780. }
  781. this.proofingSearch={
  782. projectId:'',
  783. proofingNo:'',
  784. customerId:'',
  785. finalCustomerId:'',
  786. site:this.$store.state.user.site,
  787. username:this.$store.state.user.name,
  788. }
  789. getProofingDataByUserRole(this.proofingSearch).then(({data}) => {
  790. this.proofingList=data.rows
  791. })
  792. this.proofingModelFlag=true
  793. },
  794. choosePartModel(){
  795. this.partSearch={
  796. projectId:'',
  797. finalPartNo:'',
  798. customerPartNo:'',
  799. partDesc:'',
  800. testPartNo:'',
  801. site:this.$store.state.user.site,
  802. username:this.$store.state.user.name,
  803. }
  804. this.pageIndex=1
  805. this.pageSize=100
  806. this.totalPage=0
  807. this.refreshPartList();
  808. this.partModelFlag=true
  809. },
  810. refreshPartList(){
  811. this.partSearch.limit = this.pageSize
  812. this.partSearch.page = this.pageIndex
  813. getFinalPartData(this.partSearch).then(({data}) => {
  814. this.partList=data.page.list
  815. this.pageIndex = data.page.currPage
  816. this.pageSize = data.page.pageSize
  817. this.totalPage = data.page.totalCount
  818. })
  819. },
  820. refreshProofingList(){
  821. getProofingDataByUserRole(this.proofingSearch).then(({data}) => {
  822. this.proofingList=data.rows
  823. })
  824. },
  825. changeProofingNoChange(){
  826. let inData={
  827. site:this.dataForm.site,
  828. username:this.$store.state.user.name,
  829. proofingNo:this.dataForm.proofingNo,
  830. }
  831. getProofingDataByUserRole(inData).then(({data}) => {
  832. let row={
  833. projectId:'',
  834. testPartNo:'',
  835. partDesc:'',
  836. }
  837. if(data.rows.length>0){
  838. row=data.rows[0]
  839. }
  840. this.changeProofingNo(row)
  841. })
  842. },
  843. choosePartNo(row){
  844. this.dataForm.projectId=row.projectId
  845. this.dataForm.testPartNo=row.testPartNo
  846. this.dataForm.partDesc=row.partDesc
  847. this.dataForm.finalPartNo=row.finalPartNo
  848. this.dataForm.buNo=row.buNo
  849. this.partModelFlag=false
  850. },
  851. chooseProofingNo(row){
  852. this.dataForm.proofingNo=row.proofingNo
  853. this.dataForm.projectId=row.projectId
  854. this.dataForm.testPartNo=row.testPartNo
  855. this.dataForm.partDesc=row.partDesc
  856. this.dataForm.buNo=row.buNo
  857. let inData={
  858. site:this.$store.state.user.site,
  859. testPartNo: row.testPartNo
  860. }
  861. getTestPartChangeData(inData).then(({data}) => {
  862. if (data && data.code === 0) {
  863. if(data.row!=null){
  864. this.dataForm.partDesc=data.row.partDesc
  865. this.dataForm.finalPartNo=data.row.finalPartNo
  866. }else {
  867. this.dataForm.partDesc=''
  868. }
  869. }
  870. })
  871. this.proofingModelFlag=false
  872. },
  873. changeProofingNo(row){
  874. this.dataForm.projectId=row.projectId
  875. this.dataForm.testPartNo=row.testPartNo
  876. this.dataForm.partDesc=row.partDesc
  877. this.proofingModelFlag=false
  878. },
  879. quotationOfficerChooseModal(){
  880. let inData={
  881. site:this.dataForm.site,
  882. }
  883. searchOperatorWithSite(inData).then(({data}) => {
  884. this.operatorList=data.rows
  885. })
  886. this.quotationOfficerList = JSON.parse(JSON.stringify(this.dataForm.quotationOfficerList));
  887. this.quotationOfficerFlag=true
  888. },
  889. saveQuotationOfficerList(){
  890. let quotationOfficerName='';
  891. for (let i = 0; i < this.quotationOfficerList.length; i++) {
  892. let select= this.operatorList.filter(item => item.operatorId === this.quotationOfficerList[i])
  893. if(select.length>0){
  894. quotationOfficerName+=select[0].operatorName+';'
  895. }
  896. }
  897. this.dataForm.quotationOfficer=quotationOfficerName
  898. this.dataForm.quotationOfficerList=JSON.parse(JSON.stringify(this.quotationOfficerList));
  899. this.quotationOfficerFlag=false
  900. },
  901. engineerChooseModal(){
  902. let inData={
  903. site:this.dataForm.site,
  904. }
  905. searchOperatorWithSite(inData).then(({data}) => {
  906. this.operatorList=data.rows
  907. })
  908. this.engineerList = JSON.parse(JSON.stringify(this.dataForm.engineerList));
  909. this.engineerFlag=true
  910. },
  911. saveEngineerList(){
  912. let engineerName='';
  913. for (let i = 0; i < this.engineerList.length; i++) {
  914. let select= this.operatorList.filter(item => item.operatorId === this.engineerList[i])
  915. if(select.length>0){
  916. engineerName+=select[0].operatorName+';'
  917. }
  918. }
  919. this.dataForm.engineer=engineerName
  920. this.dataForm.engineerList=JSON.parse(JSON.stringify(this.engineerList));
  921. this.engineerFlag=false
  922. },
  923. technicianModal(){
  924. let inData={
  925. site:this.dataForm.site,
  926. }
  927. searchOperatorWithSite(inData).then(({data}) => {
  928. this.operatorList=data.rows
  929. })
  930. this.technicianList = JSON.parse(JSON.stringify(this.dataForm.technicianList));
  931. this.ownerFlag=true
  932. },
  933. savetechnicianList(){
  934. let technicianName='';
  935. for (let i = 0; i < this.technicianList.length; i++) {
  936. let select= this.operatorList.filter(item => item.operatorId === this.technicianList[i])
  937. if(select.length>0){
  938. technicianName+=select[0].operatorName+';'
  939. }
  940. }
  941. this.dataForm.technician=technicianName
  942. this.dataForm.technicianList=JSON.parse(JSON.stringify(this.technicianList));
  943. this.ownerFlag=false
  944. },
  945. savetDccList(){
  946. let dccName='';
  947. for (let i = 0; i < this.dccList.length; i++) {
  948. let select= this.operatorList.filter(item => item.operatorId === this.dccList[i])
  949. if(select.length>0){
  950. dccName+=select[0].operatorName+';'
  951. }
  952. }
  953. this.dataForm.dcc=dccName
  954. this.dataForm.dccList=JSON.parse(JSON.stringify(this.dccList));
  955. this.dccFlag=false
  956. },
  957. // 表单提交
  958. dataFormSubmit () {
  959. if(this.dataForm.testPartNo===''){
  960. this.$message.error('请输入测试料号!')
  961. return false
  962. }
  963. if(this.dataForm.revNo===''){
  964. this.$message.error('请输入版本号!')
  965. return false
  966. }
  967. this.dataForm.engineerList = [];
  968. this.dataForm.engineerList.push(this.dataForm.engineerNo);
  969. this.dataForm.technicianList = [];
  970. this.dataForm.technicianList.push(this.dataForm.technicianNo);
  971. saveTechnicalSpecificationSheet(this.dataForm).then(({data}) => {
  972. if (data && data.code === 0) {
  973. this.$message.success( '操作成功')
  974. this.visible = false
  975. this.$emit('refreshDataList')
  976. if(this.jumpFlag){
  977. this.$nextTick(function () {
  978. setTimeout(() => {
  979. let inData = {
  980. site: this.$store.state.user.site,
  981. codeNo: data.row.codeNo,
  982. buNo: data.row.buNo,
  983. username: this.$store.state.user.name
  984. };
  985. localStorage.setItem('tsfData', JSON.stringify(inData))
  986. window.open('#/BMPage');
  987. },500)
  988. })
  989. }
  990. } else {
  991. this.$message.error(data.msg)
  992. }
  993. })
  994. },
  995. changeTestDesc(){
  996. this.dataForm.proofingNo="";
  997. let inData={
  998. site:this.$store.state.user.site,
  999. testPartNo: this.dataForm.testPartNo
  1000. }
  1001. getTestPartChangeData(inData).then(({data}) => {
  1002. if (data && data.code === 0) {
  1003. if(data.row!=null){
  1004. this.dataForm.projectId=data.row.projectId
  1005. this.dataForm.partDesc=data.row.partDesc
  1006. this.dataForm.finalPartNo=data.row.finalPartNo
  1007. }else {
  1008. this.dataForm.projectId=''
  1009. this.dataForm.partDesc=''
  1010. }
  1011. }
  1012. })
  1013. },
  1014. // 每页数
  1015. sizeChangeHandle (val) {
  1016. this.pageSize = val
  1017. this.pageIndex = 1
  1018. this.refreshPartList()
  1019. },
  1020. // 当前页
  1021. currentChangeHandle (val) {
  1022. this.pageIndex = val
  1023. this.refreshPartList()
  1024. },
  1025. dccChooseModal(){
  1026. let inData={
  1027. site:this.dataForm.site,
  1028. buNo:this.dataForm.buNo,
  1029. }
  1030. searchBMUser(inData).then(({data}) => {
  1031. this.operatorList=data.rows
  1032. })
  1033. this.dccList = JSON.parse(JSON.stringify(this.dataForm.dccList));
  1034. this.dccFlag=true
  1035. },
  1036. },
  1037. }
  1038. </script>
  1039. <style >
  1040. .el-transfer-panel {
  1041. border: 2px solid #17b3a3;
  1042. border-radius: 4px;
  1043. overflow: hidden;
  1044. background: #fff;
  1045. display: inline-block;
  1046. vertical-align: middle;
  1047. width: 200px;
  1048. max-height: 100%;
  1049. -webkit-box-sizing: border-box;
  1050. box-sizing: border-box;
  1051. position: relative;
  1052. }
  1053. .el-transfer-panel .el-transfer-panel__header {
  1054. height: 40px;
  1055. line-height: 40px;
  1056. background: #17b3a3;
  1057. margin: 0;
  1058. padding-left: 15px;
  1059. border-bottom: 1px solid #17b3a3;
  1060. -webkit-box-sizing: border-box;
  1061. box-sizing: border-box;
  1062. color: #000;
  1063. }
  1064. .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label {
  1065. font-size: 14px;
  1066. color: #303133;
  1067. font-weight: 400;
  1068. }
  1069. </style>