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.

2071 lines
70 KiB

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
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 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
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
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 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
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 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
3 years ago
3 years ago
2 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
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 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
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 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
2 years ago
3 years ago
3 years ago
2 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
2 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
2 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
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 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
2 years ago
3 years ago
2 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
  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. <el-input v-model="searchData.projectId" style="width: 160px"></el-input>
  6. </el-form-item>
  7. <el-form-item label="项目类型">
  8. <!-- <span slot="label" style="" @click="getBaseList(1010,1)"><a herf="#">项目类型</a></span>-->
  9. <!-- <el-input v-model="searchData.projectType" style="width: 120px"></el-input>-->
  10. <dict-data-select dict-type="project_info_type_db" filterable clearable :use-default-value="false" v-model="searchData.projectType"></dict-data-select>
  11. </el-form-item>
  12. <el-form-item :label="'项目责任人'">
  13. <el-input v-model="searchData.projectOwnerName" style="width: 130px"></el-input>
  14. </el-form-item>
  15. <el-form-item label=" ">
  16. <el-button @click="search()" type="primary" style="margin-left: 2px;margin-top:0px">查询</el-button>
  17. <el-button @click="addOrUpdateHandle('save')" type="primary" style="margin-left: 2px;margin-top: 0px">新增</el-button>
  18. <download-excel
  19. :fields="fields()"
  20. :data="exportData"
  21. type="xls"
  22. :name="exportName"
  23. :header="exportHeader"
  24. :footer="exportFooter"
  25. :fetch="createExportData"
  26. :before-generate="startDownload"
  27. :before-finish="finishDownload"
  28. worksheet="导出信息"
  29. class="el-button el-button--primary el-button--medium">
  30. {{ '导出' }}
  31. </download-excel>
  32. </el-form-item>
  33. </el-form>
  34. <el-table
  35. :height="height"
  36. :data="dataList1"
  37. border
  38. ref="mainTable"
  39. @row-click="changeData"
  40. highlight-current-row
  41. v-loading="dataListLoading"
  42. style="width: 100%;">
  43. <el-table-column
  44. header-align="center"
  45. align="center"
  46. width="150"
  47. fixed="right"
  48. label="操作">
  49. <template slot-scope="scope">
  50. <a type="text" size="small" @click="addOrUpdateHandle(scope.row.projectId)">新增</a>
  51. <a type="text" size="small" @click="UpdateHandle(scope.row)">修改</a>
  52. <a type="text" size="small" @click="deleteProjectInfo(scope.row)">删除</a>
  53. </template>
  54. </el-table-column>
  55. <el-table-column
  56. v-for="(item,index) in columnList1" :key="index"
  57. :sortable="item.columnSortable"
  58. :prop="item.columnProp"
  59. :header-align="item.headerAlign"
  60. :show-overflow-tooltip="item.showOverflowTooltip"
  61. :align="item.align"
  62. :fixed="item.fixed==''?false:item.fixed"
  63. :min-width="item.columnWidth"
  64. :label="item.columnLabel">
  65. <template slot-scope="scope">
  66. <span v-if="!item.columnHidden"> {{scope.row[item.columnProp]}}</span>
  67. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  68. style="width: 100px; height: 80px"/></span>
  69. </template>
  70. </el-table-column>
  71. </el-table>
  72. <el-pagination
  73. @size-change="sizeChangeHandle"
  74. @current-change="currentChangeHandle"
  75. :current-page="pageIndex"
  76. :page-sizes="[20, 50, 100, 1000]"
  77. :page-size="pageSize"
  78. :total="totalPage"
  79. layout="total, sizes, prev, pager, next, jumper">
  80. </el-pagination>
  81. <el-tabs style="font-size: 12px;min-height: 330px" class="customer-tab" v-model="activeName" type="border-card" @tab-click="tabClick">
  82. <el-tab-pane label="项目信息" name="info">
  83. <el-form label-position="top" style="margin-top: 0px; margin-left: 0px;">
  84. <el-row :gutter="20">
  85. <el-col :span="5"><div class="grid-content bg-purple">
  86. <el-form-item :label="'项目号'">
  87. <el-input v-model="projectData.projectId" readonly ></el-input>
  88. </el-form-item>
  89. </div></el-col>
  90. <el-col :span="5"><div class="grid-content bg-purple">
  91. <el-form-item :label="'项目类型'">
  92. <el-input v-model="projectData.projectType" readonly ></el-input>
  93. </el-form-item>
  94. </div></el-col>
  95. <el-col :span="5"><div class="grid-content bg-purple">
  96. <el-form-item :label="'项目来源'">
  97. <el-input v-model="projectData.projectSourceDesc" readonly ></el-input>
  98. </el-form-item>
  99. </div></el-col>
  100. <el-col :span="5"><div class="grid-content bg-purple">
  101. <el-form-item :label="'优先级'">
  102. <el-input v-model="projectData.priorityDesc" readonly></el-input>
  103. </el-form-item>
  104. </div></el-col>
  105. <el-col :span="4"><div class="grid-content bg-purple">
  106. <el-form-item :label="'需求日期'">
  107. <el-input v-model="projectData.needDate" readonly ></el-input>
  108. </el-form-item>
  109. </div></el-col>
  110. </el-row>
  111. <el-row :gutter="20">
  112. <el-col :span="5"><div class="grid-content bg-purple">
  113. <el-form-item :label="'BU'">
  114. <el-input v-model="projectData.buDesc" readonly style="" ></el-input>
  115. </el-form-item>
  116. </div></el-col>
  117. <el-col :span="5"><div class="grid-content bg-purple">
  118. <el-form-item :label="'项目名称'">
  119. <el-input v-model="projectData.projectName" readonly style="" ></el-input>
  120. </el-form-item>
  121. </div></el-col>
  122. <el-col :span="14"><div class="grid-content bg-purple">
  123. <el-form-item :label="'项目描述'">
  124. <el-input v-model="projectData.projectDesc" readonly style="" ></el-input>
  125. </el-form-item>
  126. </div></el-col>
  127. </el-row>
  128. <el-row :gutter="20">
  129. <el-col :span="8"><div class="grid-content bg-purple">
  130. <el-form-item :label="'项目经理'">
  131. <el-input v-model="projectData.projectManagerName" readonly style="" ></el-input>
  132. </el-form-item>
  133. </div></el-col>
  134. <el-col :span="8"><div class="grid-content bg-purple">
  135. <el-form-item :label="'项目责任人'">
  136. <el-input v-model="projectData.projectOwnerName" readonly style="" ></el-input>
  137. </el-form-item>
  138. </div></el-col>
  139. <el-col :span="8"><div class="grid-content bg-purple">
  140. <el-form-item :label="'项目权限'">
  141. <el-input v-model="projectData.userRoleName" readonly style="" ></el-input>
  142. </el-form-item>
  143. </div></el-col>
  144. </el-row>
  145. <el-row :gutter="20">
  146. <el-col :span="24"><div class="grid-content bg-purple">
  147. <el-form-item :label="'客户应用/要求'">
  148. <el-input v-model="projectData.customerRemark" readonly style="" ></el-input>
  149. </el-form-item>
  150. </div></el-col>
  151. </el-row>
  152. <el-row :gutter="20">
  153. <el-col :span="24"><div class="grid-content bg-purple">
  154. <el-form-item :label="'其他特殊要求'">
  155. <el-input v-model="projectData.remark" readonly style="" ></el-input>
  156. </el-form-item>
  157. </div></el-col>
  158. </el-row>
  159. </el-form>
  160. </el-tab-pane>
  161. <el-tab-pane label="客户信息" name="customer">
  162. <el-form label-position="top" label-width="100px" >
  163. <el-row :gutter="20">
  164. <el-col :span="4"><div class="grid-content bg-purple">
  165. <el-form-item :label="'客户代码'">
  166. <el-input v-model="customerData.customerNo" readonly ></el-input>
  167. </el-form-item>
  168. </div></el-col>
  169. <el-col :span="8"><div class="grid-content bg-purple">
  170. <el-form-item :label="'客户名称'">
  171. <el-input v-model="customerData.customerDesc" readonly ></el-input>
  172. </el-form-item>
  173. </div></el-col>
  174. <el-col :span="4"><div class="grid-content bg-purple">
  175. <el-form-item :label="'客户币种'">
  176. <el-input v-model="customerData.customerCurrency" readonly ></el-input>
  177. </el-form-item>
  178. </div></el-col>
  179. <el-col :span="4"><div class="grid-content bg-purple">
  180. <el-form-item :label="'年营业额'">
  181. <el-input v-model="customerData.turnoverOfYear" readonly ></el-input>
  182. </el-form-item>
  183. </div></el-col>
  184. <el-col :span="4"><div class="grid-content bg-purple">
  185. <el-form-item :label="'年潜在投入'">
  186. <el-input v-model="customerData.potentialRevenueOfYear" readonly ></el-input>
  187. </el-form-item>
  188. </div></el-col>
  189. </el-row>
  190. <el-row :gutter="20">
  191. <el-col :span="4"><div class="grid-content bg-purple">
  192. <el-form-item :label="'重要程度'">
  193. <el-input v-model="customerData.importantCustomer" readonly ></el-input>
  194. </el-form-item>
  195. </div></el-col>
  196. <el-col :span="4"><div class="grid-content bg-purple">
  197. <el-form-item :label="'客户状态'">
  198. <el-input v-model="customerData.customerStatus" readonly ></el-input>
  199. </el-form-item>
  200. </div></el-col>
  201. <el-col :span="16"><div class="grid-content bg-purple">
  202. <el-form-item :label="'客户描述'">
  203. <el-input v-model="customerData.customerDescription" readonly ></el-input>
  204. </el-form-item>
  205. </div></el-col>
  206. </el-row>
  207. <el-row :gutter="20">
  208. <el-col :span="4"><div class="grid-content bg-purple">
  209. <el-form-item :label="'终端客户代码'">
  210. <el-input v-model="finalCustomerData.customerNo" readonly ></el-input>
  211. </el-form-item>
  212. </div></el-col>
  213. <el-col :span="8"><div class="grid-content bg-purple">
  214. <el-form-item :label="'终端客户名称'">
  215. <el-input v-model="finalCustomerData.customerDesc" readonly ></el-input>
  216. </el-form-item>
  217. </div></el-col>
  218. <el-col :span="4"><div class="grid-content bg-purple">
  219. <el-form-item :label="'客户币种'">
  220. <el-input v-model="finalCustomerData.customerCurrency" readonly ></el-input>
  221. </el-form-item>
  222. </div></el-col>
  223. <el-col :span="4"><div class="grid-content bg-purple">
  224. <el-form-item :label="'年营业额'">
  225. <el-input v-model="finalCustomerData.turnoverOfYear" readonly ></el-input>
  226. </el-form-item>
  227. </div></el-col>
  228. <el-col :span="4"><div class="grid-content bg-purple">
  229. <el-form-item :label="'年潜在投入'">
  230. <el-input v-model="finalCustomerData.potentialRevenueOfYear" readonly ></el-input>
  231. </el-form-item>
  232. </div></el-col>
  233. </el-row>
  234. <el-row :gutter="20">
  235. <el-col :span="4"><div class="grid-content bg-purple">
  236. <el-form-item :label="'重要程度'">
  237. <el-input v-model="finalCustomerData.importantCustomer" readonly ></el-input>
  238. </el-form-item>
  239. </div></el-col>
  240. <el-col :span="4"><div class="grid-content bg-purple">
  241. <el-form-item :label="'客户状态'">
  242. <el-input v-model="finalCustomerData.customerStatus" readonly ></el-input>
  243. </el-form-item>
  244. </div></el-col>
  245. <el-col :span="16"><div class="grid-content bg-purple">
  246. <el-form-item :label="'客户描述'">
  247. <el-input v-model="finalCustomerData.customerDescription" readonly ></el-input>
  248. </el-form-item>
  249. </div></el-col>
  250. </el-row>
  251. </el-form>
  252. </el-tab-pane>
  253. <el-tab-pane label="客户联系人" name="customer_contact">
  254. <el-form label-position="top" style="margin-top: 1px; margin-left: 0px;">
  255. <el-form :inline="true" label-position="top" style="margin-top: 0px">
  256. <el-button type="primary" @click="contactChooseModal()">编辑</el-button>
  257. <download-excel
  258. :fields="fields2()"
  259. :data="exportData2"
  260. type="xls"
  261. :name="exportName2"
  262. :header="exportHeader2"
  263. :footer="exportFooter2"
  264. :fetch="createExportData2"
  265. :before-generate="startDownload2"
  266. :before-finish="finishDownload2"
  267. worksheet="导出信息"
  268. class="el-button el-button--primary el-button--medium">
  269. {{ '导出' }}
  270. </download-excel>
  271. </el-form>
  272. </el-form>
  273. <el-table
  274. :data="contactList"
  275. height="240"
  276. border
  277. v-loading="dataListLoading"
  278. style="width: 100%; ">
  279. <el-table-column
  280. v-for="(item,index) in columnList2" :key="index"
  281. :sortable="item.columnSortable"
  282. :prop="item.columnProp"
  283. :header-align="item.headerAlign"
  284. :show-overflow-tooltip="item.showOverflowTooltip"
  285. :align="item.align"
  286. :fixed="item.fixed==''?false:item.fixed"
  287. :min-width="item.columnWidth"
  288. :label="item.columnLabel">
  289. <template slot-scope="scope">
  290. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  291. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  292. style="width: 100px; height: 80px"/></span>
  293. </template>
  294. </el-table-column>
  295. </el-table>
  296. </el-tab-pane>
  297. <el-tab-pane label="文档管理" name="down">
  298. <!--文件上传-->
  299. <el-form label-position="top" style="margin-top: 1px; margin-left: 0px;">
  300. <el-form :inline="true" label-position="top" style="margin-top: 0px">
  301. <el-button type="primary" @click="addUploadFileModal()">上传文件</el-button>
  302. </el-form>
  303. </el-form>
  304. <el-table
  305. :data="fileContentList"
  306. height="240"
  307. border
  308. v-loading="dataListLoading"
  309. style="width: 100%; ">
  310. <el-table-column
  311. v-for="(item,index) in columnFileContentArray" :key="index"
  312. :sortable="item.columnSortable"
  313. :prop="item.columnProp"
  314. :header-align="item.headerAlign"
  315. :show-overflow-tooltip="item.showOverflowTooltip"
  316. :align="item.align"
  317. :fixed="item.fixed==''?false:item.fixed"
  318. :min-width="item.columnWidth"
  319. :label="item.columnLabel">
  320. <template slot-scope="scope">
  321. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  322. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  323. style="width: 100px; height: 80px"/></span>
  324. </template>
  325. </el-table-column>
  326. <el-table-column
  327. fixed="right"
  328. header-align="center"
  329. align="center"
  330. width="100"
  331. label="操作">
  332. <template slot-scope="scope">
  333. <!-- <a :href="'http://192.168.1.130:80/file/'+scope.row.url" :download="scope.row.fileName">下载</a>-->
  334. <a @click="downloadFile(scope.row)" >下载</a>
  335. <a type="text" size="small" @click="deleteFile(scope.row)">删除</a>
  336. </template>
  337. </el-table-column>
  338. </el-table>
  339. </el-tab-pane>
  340. <el-tab-pane label="项目物料" name="part">
  341. <projectPart ref="projectPart"></projectPart>
  342. </el-tab-pane>
  343. <el-tab-pane label="询价信息" name="quotation">
  344. <projectQuotation ref="projectQuotation" ></projectQuotation>
  345. </el-tab-pane>
  346. <el-tab-pane label="报价信息" name="quotationHeader">
  347. <quotationHeader ref="quotationHeader"></quotationHeader>
  348. </el-tab-pane>
  349. <el-tab-pane label="打样信息" name="sample">
  350. <sample ref="sample"></sample>
  351. </el-tab-pane>
  352. <el-tab-pane label="测试记录" name="test">
  353. <test ref="test"></test>
  354. </el-tab-pane>
  355. <el-tab-pane label="刀模申请" name="purchase">
  356. <purchase ref="purchase"></purchase>
  357. </el-tab-pane>
  358. <el-tab-pane label="技术参数卡" name="technicalSpecification">
  359. <technicalSpecification ref="technicalSpecification"></technicalSpecification>
  360. </el-tab-pane>
  361. <el-tab-pane label="变更记录" name="changeRecord">
  362. <el-table
  363. :data="changeRecordList"
  364. height="260"
  365. border
  366. style="width: 100%;">
  367. <el-table-column
  368. v-for="(item,index) in columnChangeRecord" :key="index"
  369. :sortable="item.columnSortable"
  370. :prop="item.columnProp"
  371. :header-align="item.headerAlign"
  372. :show-overflow-tooltip="item.showOverflowTooltip"
  373. :align="item.align"
  374. :fixed="item.fixed==''?false:item.fixed"
  375. :min-width="item.columnWidth"
  376. :label="item.columnLabel">
  377. <template slot-scope="scope">
  378. <div v-if="item.columnProp === 'changeNo'">
  379. <el-link style="cursor:pointer;" v-if="!item.columnHidden" @click="toChangeMenu(scope.row.changeNo)"> {{ scope.row[item.columnProp] }}</el-link>
  380. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  381. </div>
  382. <div v-else>
  383. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  384. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  385. </div>
  386. </template>
  387. </el-table-column>
  388. <el-table-column
  389. fixed="right"
  390. header-align="center"
  391. align="center"
  392. width="100"
  393. label="操作">
  394. <template slot-scope="scope">
  395. </template>
  396. </el-table-column>
  397. </el-table>
  398. </el-tab-pane>
  399. </el-tabs>
  400. <!-- <el-dialog-->
  401. <!-- width="530px"-->
  402. <!-- title="项目联系人"-->
  403. <!-- :close-on-click-modal="false"-->
  404. <!-- :visible.sync="contactChooseFlag">-->
  405. <!-- <el-transfer v-model="contactChooseList1" :props="{-->
  406. <!-- key: 'contactId',-->
  407. <!-- label: 'contactName'-->
  408. <!-- }" :data="contactChooseList2" :titles="['未选择', '已选择']"></el-transfer>-->
  409. <!-- <span slot="footer" class="dialog-footer">-->
  410. <!-- <div style="margin-top: 5px">-->
  411. <!-- <el-button type="primary" @click="saveProjectContactList()">确定</el-button>-->
  412. <!-- <el-button @click="contactChooseFlag = false" type="primary">取消</el-button>-->
  413. <!-- </div>-->
  414. <!-- </span>-->
  415. <!-- </el-dialog>-->
  416. <!-- 客户联系人-> 快速新增 -->
  417. <el-dialog title="项目联系人" :close-on-click-modal="false" v-drag :visible.sync="contactChooseFlag" width="700px">
  418. <div style="font-size: 12px">
  419. <el-form :inline="true" label-position="top" :model="contactData">
  420. <el-form-item :label="'联系人名称'">
  421. <el-input v-model="contactData.contactName" clearable style="width: 150px"></el-input>
  422. </el-form-item>
  423. <el-form-item :label="' '">
  424. <el-button type="primary" @click="queryCustomerContact">查询</el-button>
  425. </el-form-item>
  426. </el-form>
  427. </div>
  428. <el-container>
  429. <el-main style="width: 200px;padding: 1px">
  430. <span style="font-size: 12px" >可选联系人</span>
  431. <el-table
  432. height="300px"
  433. :data="contactChooseList1"
  434. border
  435. ref="contactTable1"
  436. @row-click="contactClickRow1"
  437. @selection-change="selectionContact1"
  438. highlight-current-row
  439. style="width: 100%">
  440. <el-table-column
  441. type="selection"
  442. header-align="center"
  443. align="center"
  444. width="50">
  445. </el-table-column>
  446. <el-table-column
  447. prop="contactName"
  448. header-align="center"
  449. align="center"
  450. min-width="200"
  451. label="联系人名称">
  452. </el-table-column>
  453. </el-table>
  454. </el-main>
  455. <el-main style="width: 10px;padding: 1px">
  456. <div style="margin-top: 200px;margin-left: 18px">
  457. <el-button type="primary" @click="addContact">添加>></el-button>
  458. </div>
  459. <div style="margin-top: 15px;margin-left: 18px">
  460. <el-button type="primary" @click="deleteContact">删除<<</el-button>
  461. </div>
  462. </el-main>
  463. <el-main style="width: 200px;padding: 1px">
  464. <span style="font-size: 12px" >已有联系人</span>
  465. <el-table
  466. height="300px"
  467. :data="contactChooseList2"
  468. border
  469. ref="contactTable2"
  470. @row-click="contactClickRow2"
  471. @selection-change="selectionContact2"
  472. highlight-current-row
  473. style="width: 100%">
  474. <el-table-column
  475. type="selection"
  476. header-align="center"
  477. align="center"
  478. width="50">
  479. </el-table-column>
  480. <el-table-column
  481. prop="contactName"
  482. header-align="center"
  483. align="center"
  484. min-width="200"
  485. label="联系人名称">
  486. </el-table-column>
  487. </el-table>
  488. </el-main>
  489. </el-container>
  490. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  491. <el-button type="primary" @click="contactChooseFlag = false">关闭</el-button>
  492. </el-footer>
  493. </el-dialog>
  494. <!-- 上传文件的modal -->
  495. <projectUploadFile ref="projectUploadFile" @refreshPageTables="getFileContentData()" v-drag></projectUploadFile>
  496. <add-or-update v-if="addOrUpdateVisible" v-model="addOrUpdate" ref="addOrUpdate" @refreshDataList="search" v-drag></add-or-update>
  497. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  498. </div>
  499. </template>
  500. <script>
  501. import {
  502. customerInformationSearchForCheck, // 客户信息列表查询`
  503. } from '@/api/customer/customerInformation.js'
  504. import AddOrUpdate from './com_projectInfo-add-or-update'
  505. import {
  506. getTableDefaultListLanguage,
  507. getTableUserListLanguage,
  508. } from "@/api/table.js"
  509. import Chooselist from '@/views/modules/common/Chooselist'
  510. import {projectInfoSearch,
  511. deleteProjectFile,
  512. getFileContentList,
  513. downLoadProjectFile,
  514. getCustomerContactData,
  515. getContactChooseData,
  516. getContactChooseData2,
  517. saveProjectContactList,
  518. deleteProjectInfo,
  519. getProjectUserRole,
  520. addContact,
  521. deleteContact,
  522. queryCustomerContact
  523. } from "@/api/project/project.js"
  524. import {
  525. getChangeRecordByPartNo, // 查询变更记录
  526. } from '@/api/part/partInformation.js'
  527. import projectUploadFile from "./com_project_upload_file";/*上传文件的組件*/
  528. import projectPart from "./com_project_info_part.vue";/*組件*/
  529. import projectQuotation from "./com_project_puotation";/*組件*/
  530. import sample from "./com_project_sample";/*組件*/
  531. import test from "./com_project_test";/*組件*/
  532. import purchase from "./com_project_info_purchase_request";/*組件*/
  533. import technicalSpecification from "./com_project_technicalSpecification";
  534. import quotationHeader from "./com_project_info_quotation.vue";
  535. import DictDataSelect from "../../sys/dict-data-select.vue";
  536. /*組件*/
  537. export default {
  538. components: {
  539. DictDataSelect,
  540. Chooselist,
  541. AddOrUpdate,
  542. projectUploadFile,
  543. projectPart,
  544. projectQuotation,
  545. sample,
  546. test,
  547. purchase,
  548. technicalSpecification,
  549. quotationHeader,
  550. },
  551. name: "null",
  552. data() {
  553. return {
  554. // addOrUpdate
  555. addOrUpdate:'0',
  556. //项目已选联系人
  557. contactChooseList1:[],
  558. //客户可选联系人
  559. contactChooseList2:[],
  560. contactList: [],
  561. fileContentList: [],
  562. activeName: 'info',
  563. addOrUpdateVisible:false,
  564. searchData:{
  565. page: 1,
  566. limit: 100,
  567. site:this.$store.state.user.site,
  568. projectId:'',
  569. projectType:'',
  570. projectOwnerName:'',
  571. userName:this.$store.state.user.name,
  572. },
  573. contactChooseFlag:false,
  574. currentRow:'',
  575. height: 200,
  576. dataList1:[],
  577. dataListLoading: false,
  578. // 导出 start
  579. exportData: [],
  580. exportName: "项目清单" + this.dayjs().format('YYYYMMDDHHmmss'),
  581. exportHeader: ["项目清单"],
  582. exportFooter: [],
  583. exportList:[],
  584. // 导出 start
  585. exportData2: [],
  586. exportName2: "项目客户联系人" + this.dayjs().format('YYYYMMDDHHmmss'),
  587. exportHeader2: ["项目客户联系人"],
  588. exportFooter2: [],
  589. exportList2:[],
  590. tagNo:'',
  591. tagNo2:'',
  592. pageIndex: 1,
  593. pageSize: 100,
  594. totalPage: 0,
  595. // 导出 end
  596. columnList1: [
  597. {
  598. userId: this.$store.state.user.name,
  599. functionId: 101002001,
  600. serialNumber: '101002001Table1ProjectId',
  601. tableId: "101002001Table1",
  602. tableName: "项目信息主表",
  603. columnProp: "projectId",
  604. headerAlign: "center",
  605. align: "center",
  606. columnLabel: "项目号",
  607. columnHidden: false,
  608. columnImage: false,
  609. columnSortable: false,
  610. sortLv: 0,
  611. status: true,
  612. fixed: '',
  613. columnWidth: 100
  614. },
  615. {
  616. userId: this.$store.state.user.name,
  617. functionId: 101002001,
  618. serialNumber: '101002001Table1ProjectType',
  619. tableId: "101002001Table1",
  620. tableName: "项目信息主表",
  621. columnProp: "projectType",
  622. headerAlign: "center",
  623. align: "left",
  624. columnLabel: "项目类型",
  625. columnHidden: false,
  626. columnImage: false,
  627. columnSortable: false,
  628. sortLv: 0,
  629. status: true,
  630. fixed: '',
  631. columnWidth: 100
  632. },
  633. {
  634. userId: this.$store.state.user.name,
  635. functionId: 101002001,
  636. serialNumber: '101002001Table1ProjectName',
  637. tableId: "101002001Table1",
  638. tableName: "项目信息主表",
  639. columnProp: "projectName",
  640. headerAlign: "center",
  641. align: "left",
  642. columnLabel: "项目名称",
  643. columnHidden: false,
  644. columnImage: false,
  645. columnSortable: false,
  646. sortLv: 0,
  647. status: true,
  648. fixed: '',
  649. columnWidth: 200
  650. },
  651. {
  652. userId: this.$store.state.user.name,
  653. functionId: 101002001,
  654. serialNumber: '101002001Table1Status',
  655. tableId: "101002001Table1",
  656. tableName: "项目信息主表",
  657. columnProp: "status",
  658. headerAlign: "center",
  659. align: "left",
  660. columnLabel: "项目状态",
  661. columnHidden: false,
  662. columnImage: false,
  663. columnSortable: false,
  664. sortLv: 0,
  665. status: true,
  666. fixed: '',
  667. columnWidth: 100
  668. },
  669. {
  670. userId: this.$store.state.user.name,
  671. functionId: 101002001,
  672. serialNumber: '101002001Table1Priority',
  673. tableId: "101002001Table1",
  674. tableName: "项目信息主表",
  675. columnProp: "priorityDesc",
  676. headerAlign: "center",
  677. align: "left",
  678. columnLabel: "优先级",
  679. columnHidden: false,
  680. columnImage: false,
  681. columnSortable: false,
  682. sortLv: 0,
  683. status: true,
  684. fixed: '',
  685. columnWidth: 100
  686. },
  687. {
  688. userId: this.$store.state.user.name,
  689. functionId: 101002001,
  690. serialNumber: '101002001Table1BuNo',
  691. tableId: "101002001Table1",
  692. tableName: "项目信息主表",
  693. columnProp: "buNo",
  694. headerAlign: "center",
  695. align: "left",
  696. columnLabel: "BU编码",
  697. columnHidden: false,
  698. columnImage: false,
  699. columnSortable: false,
  700. sortLv: 0,
  701. status: true,
  702. fixed: '',
  703. columnWidth: 100
  704. },
  705. {
  706. userId: this.$store.state.user.name,
  707. functionId: 101002001,
  708. serialNumber: '101002001Table1BuDesc',
  709. tableId: "101002001Table1",
  710. tableName: "项目信息主表",
  711. columnProp: "buDesc",
  712. headerAlign: "center",
  713. align: "left",
  714. columnLabel: "BU名称",
  715. columnHidden: false,
  716. columnImage: false,
  717. columnSortable: false,
  718. sortLv: 0,
  719. status: true,
  720. fixed: '',
  721. columnWidth: 100
  722. },
  723. {
  724. userId: this.$store.state.user.name,
  725. functionId: 101002001,
  726. serialNumber: '101002001Table1ProjectOwnerName',
  727. tableId: "101002001Table1",
  728. tableName: "项目信息主表",
  729. columnProp: "projectOwnerName",
  730. headerAlign: "center",
  731. align: "left",
  732. columnLabel: "项目负责人",
  733. columnHidden: false,
  734. columnImage: false,
  735. columnSortable: false,
  736. sortLv: 0,
  737. status: true,
  738. fixed: '',
  739. columnWidth: 100
  740. },
  741. {
  742. userId: this.$store.state.user.name,
  743. functionId: 101002001,
  744. serialNumber: '101002001Table1ProjectSource',
  745. tableId: "101002001Table1",
  746. tableName: "项目信息主表",
  747. columnProp: "projectSourceDesc",
  748. headerAlign: "center",
  749. align: "left",
  750. columnLabel: "项目来源",
  751. columnHidden: false,
  752. columnImage: false,
  753. columnSortable: false,
  754. sortLv: 0,
  755. status: true,
  756. fixed: '',
  757. columnWidth: 100
  758. },
  759. {
  760. userId: this.$store.state.user.name,
  761. functionId: 101002001,
  762. serialNumber: '101002001Table1CustomerId',
  763. tableId: "101002001Table1",
  764. tableName: "项目信息主表",
  765. columnProp: "customerId",
  766. headerAlign: "center",
  767. align: "left",
  768. columnLabel: "客户代码",
  769. columnHidden: false,
  770. columnImage: false,
  771. columnSortable: false,
  772. sortLv: 0,
  773. status: true,
  774. fixed: '',
  775. columnWidth: 100
  776. },
  777. {
  778. userId: this.$store.state.user.name,
  779. functionId: 101002001,
  780. serialNumber: '101002001Table1CustomerName',
  781. tableId: "101002001Table1",
  782. tableName: "项目信息主表",
  783. columnProp: "customerName",
  784. headerAlign: "center",
  785. align: "left",
  786. columnLabel: "客户名称",
  787. columnHidden: false,
  788. columnImage: false,
  789. columnSortable: false,
  790. sortLv: 0,
  791. status: true,
  792. fixed: '',
  793. columnWidth: 150
  794. },
  795. {
  796. userId: this.$store.state.user.name,
  797. functionId: 101002001,
  798. serialNumber: '101002001Table1CreateDate',
  799. tableId: "101002001Table1",
  800. tableName: "项目信息主表",
  801. columnProp: "createDate",
  802. headerAlign: "center",
  803. align: "left",
  804. columnLabel: "创建时间",
  805. columnHidden: false,
  806. columnImage: false,
  807. columnSortable: false,
  808. sortLv: 0,
  809. status: true,
  810. fixed: '',
  811. columnWidth: 120
  812. },
  813. {
  814. userId: this.$store.state.user.name,
  815. functionId: 101002001,
  816. serialNumber: '101002001Table1CreateBy',
  817. tableId: "101002001Table1",
  818. tableName: "项目信息主表",
  819. columnProp: "createBy",
  820. headerAlign: "center",
  821. align: "left",
  822. columnLabel: "创建人",
  823. columnHidden: false,
  824. columnImage: false,
  825. columnSortable: false,
  826. sortLv: 0,
  827. status: true,
  828. fixed: '',
  829. columnWidth: 80
  830. },
  831. {
  832. userId: this.$store.state.user.name,
  833. functionId: 101002001,
  834. serialNumber: '101002001Table1UpdateDate',
  835. tableId: "101002001Table1",
  836. tableName: "项目信息主表",
  837. columnProp: "updateDate",
  838. headerAlign: "center",
  839. align: "left",
  840. columnLabel: "修改时间",
  841. columnHidden: false,
  842. columnImage: false,
  843. columnSortable: false,
  844. sortLv: 0,
  845. status: true,
  846. fixed: '',
  847. columnWidth: 120
  848. },
  849. {
  850. userId: this.$store.state.user.name,
  851. functionId: 101002001,
  852. serialNumber: '101002001Table1UpdateBy',
  853. tableId: "101002001Table1",
  854. tableName: "项目信息主表",
  855. columnProp: "updateBy",
  856. headerAlign: "center",
  857. align: "left",
  858. columnLabel: "修改人",
  859. columnHidden: false,
  860. columnImage: false,
  861. columnSortable: false,
  862. sortLv: 0,
  863. status: true,
  864. fixed: '',
  865. columnWidth: 80
  866. },
  867. ],
  868. columnList2: [
  869. {
  870. userId: this.$store.state.user.name,
  871. functionId: 101002001,
  872. serialNumber: '101002001Table2ContactName',
  873. tableId: '101002001Table2',
  874. tableName: '项目联系人表',
  875. columnProp: 'contactId',
  876. headerAlign: 'center',
  877. align: 'center',
  878. columnLabel: '联系人编码',
  879. columnHidden: false,
  880. columnImage: false,
  881. columnSortable: false,
  882. sortLv: 0,
  883. status: true,
  884. fixed: '',
  885. columnWidth: 100
  886. },
  887. {
  888. userId: this.$store.state.user.name,
  889. functionId: 101002001,
  890. serialNumber: '101002001Table2ContactName',
  891. tableId: '101002001Table2',
  892. tableName: '项目联系人表',
  893. columnProp: 'contactName',
  894. headerAlign: 'center',
  895. align: 'left',
  896. columnLabel: '联系人',
  897. columnHidden: false,
  898. columnImage: false,
  899. columnSortable: false,
  900. sortLv: 0,
  901. status: true,
  902. fixed: '',
  903. columnWidth: 100
  904. },
  905. {
  906. userId: this.$store.state.user.name,
  907. functionId: 101002001,
  908. serialNumber: '101002001Table2ContactPhoneNumber1',
  909. tableId: '101002001Table2',
  910. tableName: '项目联系人表',
  911. columnProp: 'contactPhoneNumber1',
  912. headerAlign: 'center',
  913. align: 'left',
  914. columnLabel: '联系电话',
  915. columnHidden: false,
  916. columnImage: false,
  917. columnSortable: false,
  918. sortLv: 0,
  919. status: true,
  920. fixed: '',
  921. columnWidth: 100
  922. },
  923. {
  924. userId: this.$store.state.user.name,
  925. functionId: 101002001,
  926. serialNumber: '101002001Table2ContactLandlineNumber',
  927. tableId: '101002001Table2',
  928. tableName: '项目联系人表',
  929. columnProp: 'contactLandlineNumber',
  930. headerAlign: 'center',
  931. align: 'left',
  932. columnLabel: '座机',
  933. columnHidden: false,
  934. columnImage: false,
  935. columnSortable: false,
  936. sortLv: 0,
  937. status: true,
  938. fixed: '',
  939. columnWidth: 100
  940. },
  941. {
  942. userId: this.$store.state.user.name,
  943. functionId: 101002001,
  944. serialNumber: '101002001Table2Position',
  945. tableId: '101002001Table2',
  946. tableName: '项目联系人表',
  947. columnProp: 'position',
  948. headerAlign: 'center',
  949. align: 'left',
  950. columnLabel: '公司职务',
  951. columnHidden: false,
  952. columnImage: false,
  953. columnSortable: false,
  954. sortLv: 0,
  955. status: true,
  956. fixed: '',
  957. columnWidth: 100
  958. },
  959. {
  960. userId: this.$store.state.user.name,
  961. functionId: 101002001,
  962. serialNumber: '101002001Table2Mailbox',
  963. tableId: '101002001Table2',
  964. tableName: '项目联系人表',
  965. columnProp: 'mailbox',
  966. headerAlign: 'center',
  967. align: 'left',
  968. columnLabel: '邮箱',
  969. columnHidden: false,
  970. columnImage: false,
  971. columnSortable: false,
  972. sortLv: 0,
  973. status: true,
  974. fixed: '',
  975. columnWidth: 100
  976. },
  977. {
  978. userId: this.$store.state.user.name,
  979. functionId: 101002001,
  980. serialNumber: '101002001Table2PrimaryContact',
  981. tableId: '101002001Table2',
  982. tableName: '项目联系人表',
  983. columnProp: 'primaryContact',
  984. headerAlign: 'center',
  985. align: 'center',
  986. columnLabel: '默认联系人',
  987. columnHidden: false,
  988. columnImage: false,
  989. columnSortable: false,
  990. sortLv: 0,
  991. status: true,
  992. fixed: '',
  993. columnWidth: 100
  994. },
  995. {
  996. userId: this.$store.state.user.name,
  997. functionId: 101002001,
  998. serialNumber: '101002001Table2ContactStatus',
  999. tableId: '101002001Table2',
  1000. tableName: '项目联系人表',
  1001. columnProp: 'contactStatus',
  1002. headerAlign: 'center',
  1003. align: 'center',
  1004. columnLabel: '状态',
  1005. columnHidden: false,
  1006. columnImage: false,
  1007. columnSortable: false,
  1008. sortLv: 0,
  1009. status: true,
  1010. fixed: '',
  1011. columnWidth: 60
  1012. },
  1013. {
  1014. userId: this.$store.state.user.name,
  1015. functionId: 101002001,
  1016. serialNumber: '101002001Table2CreateDate',
  1017. tableId: '101002001Table2',
  1018. tableName: '项目联系人表',
  1019. columnProp: 'createDate',
  1020. headerAlign: 'center',
  1021. align: 'center',
  1022. columnLabel: '创建时间',
  1023. columnHidden: false,
  1024. columnImage: false,
  1025. columnSortable: false,
  1026. sortLv: 0,
  1027. status: true,
  1028. fixed: '',
  1029. columnWidth: 120
  1030. },
  1031. {
  1032. userId: this.$store.state.user.name,
  1033. functionId: 101002001,
  1034. serialNumber: '101002001Table2CreateBy',
  1035. tableId: '101002001Table2',
  1036. tableName: '项目联系人表',
  1037. columnProp: 'createBy',
  1038. headerAlign: 'center',
  1039. align: 'center',
  1040. columnLabel: '创建人',
  1041. columnHidden: false,
  1042. columnImage: false,
  1043. columnSortable: false,
  1044. sortLv: 0,
  1045. status: true,
  1046. fixed: '',
  1047. columnWidth: 80
  1048. },
  1049. {
  1050. userId: this.$store.state.user.name,
  1051. functionId: 101002001,
  1052. serialNumber: '101002001Table2UpdateDate',
  1053. tableId: '101002001Table2',
  1054. tableName: '项目联系人表',
  1055. columnProp: 'updateDate',
  1056. headerAlign: 'center',
  1057. align: 'center',
  1058. columnLabel: '更新时间',
  1059. columnHidden: false,
  1060. columnImage: false,
  1061. columnSortable: false,
  1062. sortLv: 0,
  1063. status: true,
  1064. fixed: '',
  1065. columnWidth: 120
  1066. },
  1067. {
  1068. userId: this.$store.state.user.name,
  1069. functionId: 101002001,
  1070. serialNumber: '101002001Table2UpdateBy',
  1071. tableId: '101002001Table2',
  1072. tableName: '项目联系人表',
  1073. columnProp: 'updateBy',
  1074. headerAlign: 'center',
  1075. align: 'left',
  1076. columnLabel: '更新人',
  1077. columnHidden: false,
  1078. columnImage: false,
  1079. columnSortable: false,
  1080. sortLv: 0,
  1081. status: true,
  1082. fixed: '',
  1083. columnWidth: 80
  1084. }
  1085. ],
  1086. projectData: {
  1087. id: 0,
  1088. site:this.$store.state.user.site,
  1089. projectLevel:'',
  1090. projectId:'',
  1091. projectTypeDb:'',
  1092. projectType:'',
  1093. customerName:'',
  1094. customerId:'',
  1095. projectName:'',
  1096. projectDesc:'',
  1097. needDate:'',
  1098. priority:'',
  1099. projectSource:'',
  1100. priorityDesc:'',
  1101. projectSourceDesc:'',
  1102. projectManagerName:'',
  1103. projectOwnerName:'',
  1104. customerRemark:'',
  1105. remark:'',
  1106. userRoleName:'',
  1107. buDesc:'',
  1108. buNo:'',
  1109. },
  1110. customerData:{
  1111. site: '',
  1112. customerNo: '',
  1113. customerDesc: '',
  1114. customerDescription: '',
  1115. customerIndustry: '',
  1116. customerCurrency: '',
  1117. turnoverOfYear: '',
  1118. potentialRevenueOfYear: '',
  1119. importantCustomer: '',
  1120. customerStatus: '',
  1121. companyName: '',
  1122. jobDescription: '',
  1123. remark: '',
  1124. contactName: '',
  1125. contactPhoneNumber1: '',
  1126. primaryContact: '',
  1127. contactStatus: '',
  1128. addressName: ''
  1129. },
  1130. finalCustomerData:{
  1131. site: '',
  1132. customerNo: '',
  1133. customerDesc: '',
  1134. customerDescription: '',
  1135. customerIndustry: '',
  1136. customerCurrency: '',
  1137. turnoverOfYear: '',
  1138. potentialRevenueOfYear: '',
  1139. importantCustomer: '',
  1140. customerStatus: '',
  1141. companyName: '',
  1142. jobDescription: '',
  1143. remark: '',
  1144. contactName: '',
  1145. contactPhoneNumber1: '',
  1146. primaryContact: '',
  1147. contactStatus: '',
  1148. addressName: ''
  1149. },
  1150. columnFileContentArray: [
  1151. {
  1152. columnProp: 'fileName',
  1153. headeralign: 'left',
  1154. align: 'left',
  1155. columnLabel: '文件名称',
  1156. columnHidden: false,
  1157. columnImage: false,
  1158. columnSortable: false,
  1159. sortLv: 0,
  1160. status: true,
  1161. fixed: false
  1162. // }, {
  1163. // columnProp: 'createdBy',
  1164. // headeralign: 'left',
  1165. // align: 'left',
  1166. // columnLabel: '上传人',
  1167. // columnHidden: false,
  1168. // columnImage: false,
  1169. // columnSortable: true,
  1170. // sortLv: 0,
  1171. // status: true,
  1172. // fixed: false
  1173. }, {
  1174. columnProp: 'createDate',
  1175. headeralign: 'left',
  1176. align: 'left',
  1177. columnLabel: '上传时间',
  1178. columnHidden: false,
  1179. columnImage: false,
  1180. columnSortable: true,
  1181. sortLv: 0,
  1182. status: true,
  1183. fixed: false
  1184. }, {
  1185. columnProp: 'orderRef3',
  1186. headeralign: 'left',
  1187. align: 'left',
  1188. columnLabel: '类型',
  1189. columnHidden: false,
  1190. columnImage: false,
  1191. columnSortable: true,
  1192. sortLv: 0,
  1193. status: true,
  1194. fixed: false
  1195. },
  1196. ],
  1197. contactSelections1: [],
  1198. contactSelections2: [],
  1199. contactData: {
  1200. site: this.$store.state.user.site,
  1201. customerId: '',
  1202. projectId: '',
  1203. contactId: '',
  1204. contactName: '',
  1205. },
  1206. changeRecordList: [],
  1207. columnChangeRecord: [
  1208. {
  1209. columnProp: 'changeNo',
  1210. headerAlign: 'center',
  1211. align: 'center',
  1212. columnLabel: '申请编号',
  1213. columnHidden: false,
  1214. columnImage: false,
  1215. status: true,
  1216. fixed: '',
  1217. columnWidth: 120
  1218. },
  1219. {
  1220. columnProp: 'applicantName',
  1221. headerAlign: 'center',
  1222. align: 'center',
  1223. columnLabel: '申请人',
  1224. columnHidden: false,
  1225. columnImage: false,
  1226. status: true,
  1227. fixed: '',
  1228. columnWidth: 120
  1229. },
  1230. {
  1231. columnProp: 'applicationDepartmentName',
  1232. headerAlign: 'center',
  1233. align: 'center',
  1234. columnLabel: '申请部门',
  1235. columnHidden: false,
  1236. columnImage: false,
  1237. status: true,
  1238. fixed: '',
  1239. columnWidth: 120
  1240. },
  1241. {
  1242. columnProp: 'changeStatus',
  1243. headerAlign: 'center',
  1244. align: 'center',
  1245. columnLabel: '变更单状态',
  1246. columnHidden: false,
  1247. columnImage: false,
  1248. status: true,
  1249. fixed: '',
  1250. columnWidth: 100
  1251. },
  1252. {
  1253. columnProp: 'ecnStage',
  1254. headerAlign: 'center',
  1255. align: 'center',
  1256. columnLabel: 'ECN阶段',
  1257. columnHidden: false,
  1258. columnImage: false,
  1259. status: true,
  1260. fixed: '',
  1261. columnWidth: 100
  1262. },
  1263. {
  1264. columnProp: 'changeType',
  1265. headerAlign: 'center',
  1266. align: 'center',
  1267. columnLabel: '变更类别',
  1268. columnHidden: false,
  1269. columnImage: false,
  1270. status: true,
  1271. fixed: '',
  1272. columnWidth: 100
  1273. },
  1274. {
  1275. columnProp: 'ecnType',
  1276. headerAlign: 'center',
  1277. align: 'center',
  1278. columnLabel: 'ECN种类',
  1279. columnHidden: false,
  1280. columnImage: false,
  1281. status: true,
  1282. fixed: '',
  1283. columnWidth: 100
  1284. },
  1285. {
  1286. columnProp: 'applyDate',
  1287. headerAlign: 'center',
  1288. align: 'center',
  1289. columnLabel: '申请日期',
  1290. columnHidden: false,
  1291. columnImage: false,
  1292. status: true,
  1293. fixed: '',
  1294. columnWidth: 100
  1295. },
  1296. {
  1297. columnProp: 'changePhaseInDate',
  1298. headerAlign: 'center',
  1299. align: 'center',
  1300. columnLabel: '变更生效日期',
  1301. columnHidden: false,
  1302. columnImage: false,
  1303. status: true,
  1304. fixed: '',
  1305. columnWidth: 100
  1306. },
  1307. {
  1308. columnProp: 'xxx',
  1309. headerAlign: 'center',
  1310. align: 'center',
  1311. columnLabel: 'ECN执行日期',
  1312. columnHidden: false,
  1313. columnImage: false,
  1314. status: true,
  1315. fixed: '',
  1316. columnWidth: 100
  1317. }
  1318. ]
  1319. }
  1320. },
  1321. mounted() {
  1322. this.$nextTick(() => {
  1323. this.height = window.innerHeight - 520;
  1324. })
  1325. },
  1326. methods: {
  1327. // 获取基础数据列表S
  1328. getBaseList (val, type) {
  1329. this.tagNo = val
  1330. this.tagNo2 = type
  1331. this.$nextTick(() => {
  1332. let strVal = ''
  1333. if (val === 1010) {
  1334. if(type==1) {
  1335. strVal = this.searchData.projectType
  1336. }
  1337. }
  1338. this.$refs.baseList.init(val, strVal)
  1339. })
  1340. },
  1341. /* 列表方法的回调 */
  1342. getBaseData (val) {
  1343. if (this.tagNo === 1010) {
  1344. if(this.tagNo2==1) {
  1345. this.searchData.projectType = val.Base_desc
  1346. }
  1347. }
  1348. },
  1349. // 新增 / 修改
  1350. addOrUpdateHandle (id) {
  1351. this.addOrUpdateVisible = true
  1352. this.addOrUpdate = id;
  1353. this.$nextTick(() => {
  1354. this.$refs.addOrUpdate.init();
  1355. if (id && id !== 'save' && id !== 'update'){
  1356. this.$refs.addOrUpdate.updateDataForm(id);
  1357. }
  1358. })
  1359. },
  1360. UpdateHandle (row) {
  1361. let inData={
  1362. site:row.site,
  1363. username:this.$store.state.user.name,
  1364. projectId:row.projectId
  1365. }
  1366. getProjectUserRole(inData).then(({data}) => {
  1367. if(this.$store.state.user.name=='admin'||data.row.updateFlag=='Y') {
  1368. this.addOrUpdateVisible = true
  1369. this.addOrUpdate = 'update';
  1370. this.$nextTick(() => {
  1371. this.$refs.addOrUpdate.init(row.id)
  1372. })
  1373. }else {
  1374. this.$alert('没有权限修改这个项目信息!', '错误', {
  1375. confirmButtonText: '确定'
  1376. })
  1377. }
  1378. })
  1379. },
  1380. //导出excel
  1381. async createExportData() {
  1382. this.searchData.limit = -1
  1383. this.searchData.page = 1
  1384. await projectInfoSearch(this.searchData).then(({data}) => {
  1385. this.exportList= data.page.list;
  1386. })
  1387. return this.exportList;
  1388. },
  1389. startDownload() {
  1390. // this.exportData = this.dataList
  1391. },
  1392. finishDownload() {
  1393. },
  1394. fields() {
  1395. let json = "{"
  1396. this.columnList1.forEach((item, index) => {
  1397. if (index == this.columnList1.length - 1) {
  1398. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1399. } else {
  1400. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1401. }
  1402. })
  1403. json += "}"
  1404. let s = eval("(" + json + ")")
  1405. return s
  1406. },
  1407. //导出excel
  1408. async createExportData2() {
  1409. return this.contactList;
  1410. },
  1411. startDownload2() {
  1412. // this.exportData = this.dataList
  1413. },
  1414. finishDownload2() {
  1415. },
  1416. fields2() {
  1417. let json = "{"
  1418. this.columnList2.forEach((item, index) => {
  1419. if (index == this.columnList2.length - 1) {
  1420. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1421. } else {
  1422. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1423. }
  1424. })
  1425. json += "}"
  1426. let s = eval("(" + json + ")")
  1427. return s
  1428. },
  1429. // 导出 end
  1430. // 获取数据列表
  1431. search () {
  1432. this.searchData.limit = this.pageSize
  1433. this.searchData.page = this.pageIndex
  1434. projectInfoSearch(this.searchData).then(({data}) => {
  1435. if (data.code == 0) {
  1436. this.dataList1 = data.page.list
  1437. this.pageIndex = data.page.currPage
  1438. this.pageSize = data.page.pageSize
  1439. this.totalPage = data.page.totalCount
  1440. if(this.dataList1.length>0){
  1441. this.$refs.mainTable.setCurrentRow(this.dataList1[0]);
  1442. this.changeData(this.dataList1[0])
  1443. }
  1444. }
  1445. this.dataListLoading = false
  1446. })
  1447. },
  1448. //单击切换订单
  1449. changeData(row) {
  1450. this.currentRow = JSON.parse(JSON.stringify(row));
  1451. this.projectData=row;
  1452. let inData= {
  1453. site:row.site,
  1454. customerNo:row.customerId,
  1455. page: 1,
  1456. limit: 10,
  1457. }
  1458. this.refreshCurrentTabTable ();
  1459. customerInformationSearchForCheck(inData).then(({data}) => {
  1460. if (data.code == 0) {
  1461. if(data.page.list.length>0){
  1462. this.customerData=data.page.list[0]
  1463. }
  1464. }
  1465. })
  1466. let inData2= {
  1467. site:row.site,
  1468. customerNo:row.finalCustomerId,
  1469. page: 1,
  1470. limit: 10,
  1471. }
  1472. customerInformationSearchForCheck(inData2).then(({data}) => {
  1473. if (data.code == 0) {
  1474. if(data.page.list.length>0){
  1475. this.finalCustomerData=data.page.list[0]
  1476. }
  1477. }
  1478. })
  1479. },
  1480. addUploadFileModal(){
  1481. let currentData = {
  1482. site: this.currentRow.site,
  1483. createBy: this.$store.state.user.name,
  1484. projectId: this.currentRow.projectId,
  1485. projectName: this.currentRow.projectName,
  1486. remark: '',
  1487. };
  1488. //打开组件 去做新增业务
  1489. this.$nextTick(() => {
  1490. this.$refs.projectUploadFile.init(currentData);
  1491. })
  1492. },
  1493. deleteFile(row){
  1494. this.$confirm('确定要删除此文件?', '提示', {
  1495. confirmButtonText: '确定',
  1496. cancelButtonText: '取消',
  1497. type: 'warning'
  1498. }).then(() => {
  1499. deleteProjectFile(row).then(({data}) => {
  1500. if (data && data.code == 0) {
  1501. this.getFileContentData();
  1502. this.$message({
  1503. message: '操作成功',
  1504. type: 'success',
  1505. duration: 1500,
  1506. onClose: () => {
  1507. }
  1508. })
  1509. } else {
  1510. this.$alert(data.msg, '错误', {
  1511. confirmButtonText: '确定'
  1512. })
  1513. }
  1514. })
  1515. }).catch(() => {
  1516. })
  1517. },
  1518. // 刷新页签的table数据
  1519. refreshCurrentTabTable () {
  1520. if (this.activeName == 'down') {
  1521. this.getFileContentData();
  1522. }
  1523. if (this.activeName == 'customer_contact') {
  1524. this.getCustomerContactData();
  1525. }
  1526. if (this.activeName == 'part') {
  1527. this.refreshPartTable();
  1528. }
  1529. if (this.activeName == 'quotation') {
  1530. this.refreshQuotationTable();
  1531. }
  1532. if (this.activeName == 'quotationHeader') {
  1533. this.refreshQuotationHeaderTable();
  1534. }
  1535. if (this.activeName == 'sample') {
  1536. this.refreshSampleTable();
  1537. }
  1538. if (this.activeName == 'test') {
  1539. this.refreshTestTable();
  1540. }
  1541. if (this.activeName == 'purchase') {
  1542. this.refreshPurchaseTable();
  1543. }
  1544. if (this.activeName == 'technicalSpecification') {
  1545. this.refreshTechnicalSpecificationTable();
  1546. }
  1547. if (this.activeName === 'changeRecord') {
  1548. this.getChangeRecordList()
  1549. }
  1550. },
  1551. // 获取变更记录
  1552. getChangeRecordList () {
  1553. let tempData = {
  1554. site: this.$store.state.user.site,
  1555. projectId: this.currentRow.projectId
  1556. }
  1557. getChangeRecordByPartNo(tempData).then(({data}) => {
  1558. if (data && data.code === 0) {
  1559. this.changeRecordList = data.rows
  1560. } else {
  1561. this.changeRecordList = []
  1562. }
  1563. })
  1564. },
  1565. refreshPartTable(){
  1566. let inData = {
  1567. site: this.currentRow.site,
  1568. projectId: this.currentRow.projectId,
  1569. username: this.$store.state.user.name,
  1570. customerId: this.currentRow.customerId
  1571. }
  1572. this.$refs.projectPart.init(inData)
  1573. },
  1574. refreshTechnicalSpecificationTable(){
  1575. let inData={
  1576. site: this.currentRow.site,
  1577. projectId: this.currentRow.projectId,
  1578. page: 1,
  1579. limit: 1000
  1580. }
  1581. this.$refs.technicalSpecification.init(inData)
  1582. },
  1583. refreshQuotationHeaderTable(){
  1584. let inData={
  1585. site: this.currentRow.site,
  1586. projectId: this.currentRow.projectId,
  1587. username:this.$store.state.user.name,
  1588. no: 1,
  1589. size: 1000
  1590. }
  1591. this.$refs.quotationHeader.init(inData)
  1592. },
  1593. refreshQuotationTable(){
  1594. let inData={
  1595. site: this.currentRow.site,
  1596. projectId: this.currentRow.projectId,
  1597. username:this.$store.state.user.name,
  1598. page: 1,
  1599. limit: 1000
  1600. }
  1601. this.$refs.projectQuotation.init(inData)
  1602. },
  1603. refreshSampleTable(){
  1604. let inData={
  1605. site: this.currentRow.site,
  1606. projectId: this.currentRow.projectId,
  1607. // username:this.$store.state.user.name,
  1608. page: 1,
  1609. limit: 1000
  1610. }
  1611. this.$refs.sample.init(inData)
  1612. },
  1613. refreshTestTable(){
  1614. let inData={
  1615. site: this.currentRow.site,
  1616. projectId: this.currentRow.projectId,
  1617. username:this.$store.state.user.name,
  1618. page: 1,
  1619. limit: 1000
  1620. }
  1621. this.$refs.test.init(inData)
  1622. },
  1623. refreshPurchaseTable(){
  1624. let inData={
  1625. site: this.currentRow.site,
  1626. projectId: this.currentRow.projectId,
  1627. username:this.$store.state.user.name,
  1628. }
  1629. this.$refs.purchase.init(inData)
  1630. },
  1631. //刷新派设备文档的列表
  1632. getFileContentData() {
  1633. let currentData = {orderRef2: this.currentRow.projectId};
  1634. getFileContentList(currentData).then(({data}) => {
  1635. //区分请求成功和失败的状况
  1636. if (data && data.code == 200) {
  1637. this.fileContentList = data.rows;
  1638. } else {
  1639. this.fileContentList = [];
  1640. }
  1641. });
  1642. },
  1643. // 下载
  1644. downloadFile(row){
  1645. // axios.get('/proxyApi/pms/eamProject/downLoadProjectFile/' + row.id, {
  1646. // responseType: 'blob',
  1647. // headers: {
  1648. // 'Content-Type': 'application/json',
  1649. // 'token': Vue.cookie.get('token')
  1650. // }
  1651. // })
  1652. let inData={
  1653. site:this.currentRow.site,
  1654. username:this.$store.state.user.name,
  1655. projectId:this.currentRow.projectId
  1656. }
  1657. getProjectUserRole(inData).then(({data}) => {
  1658. if(this.$store.state.user.name=='admin'||data.row.downFlag=='Y') {
  1659. downLoadProjectFile(row)
  1660. .then(({data}) => {
  1661. // 不限制文件下载类型
  1662. const blob = new Blob([data], {type:'application/octet-stream;charset=utf-8'})
  1663. // 下载文件名称
  1664. const fileName = row.fileName
  1665. // a标签下载
  1666. const linkNode = document.createElement('a')
  1667. linkNode.download = fileName // a标签的download属性规定下载文件的名称
  1668. linkNode.style.display = 'none'
  1669. linkNode.href = URL.createObjectURL(blob) // 生成一个Blob URL
  1670. console.log(linkNode)
  1671. // if(val == 'Y'){
  1672. // this.pdfVisible = true
  1673. // this.pdfUrl = linkNode.href
  1674. // }else {
  1675. document.body.appendChild(linkNode)
  1676. linkNode.click() // 模拟在按钮上的一次鼠标单击
  1677. URL.revokeObjectURL(linkNode.href) // 释放URL 对象
  1678. document.body.removeChild(linkNode)
  1679. // }
  1680. })
  1681. }else {
  1682. this.$alert('没有权限下载这个项目的文件!', '错误', {
  1683. confirmButtonText: '确定'
  1684. })
  1685. }
  1686. })
  1687. },
  1688. // 每页数
  1689. sizeChangeHandle (val) {
  1690. this.pageSize = val
  1691. this.pageIndex = 1
  1692. this.search()
  1693. },
  1694. // 当前页
  1695. currentChangeHandle (val) {
  1696. this.pageIndex = val
  1697. this.search()
  1698. },
  1699. // 动态列开始 获取 用户保存的 格式列
  1700. async getTableUserColumn(tableId, columnId) {
  1701. let queryTableUser = {
  1702. userId: this.$store.state.user.name,
  1703. functionId: this.$route.meta.menuId,
  1704. tableId: tableId,
  1705. status: true,
  1706. languageCode: this.$i18n.locale
  1707. }
  1708. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  1709. if (data.rows.length > 0) {
  1710. //this.columnList = []
  1711. switch (columnId) {
  1712. case 1:
  1713. this.columnList1 = data.rows
  1714. this.checkField();
  1715. break;
  1716. // case 2:
  1717. // this.columnList1 = data.rows
  1718. // break;
  1719. // case 3:
  1720. // this.columnList2 = data.rows
  1721. // break;
  1722. // case 4:
  1723. // this.columnList3 = data.rows
  1724. // break;
  1725. }
  1726. } else {
  1727. this.getColumnList(tableId, columnId)
  1728. }
  1729. })
  1730. },
  1731. // 获取 tableDefault 列
  1732. async getColumnList(tableId, columnId) {
  1733. let queryTable= {
  1734. functionId: this.$route.meta.menuId,
  1735. tableId: tableId,
  1736. languageCode: this.$i18n.locale
  1737. }
  1738. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  1739. if (!data.rows.length == 0) {
  1740. switch (columnId) {
  1741. case 1:
  1742. this.columnList1 = data.rows
  1743. this.checkField();
  1744. break;
  1745. // case 2:
  1746. // this.columnList1 = data.rows
  1747. // break;
  1748. // case 3:
  1749. // this.columnList2 = data.rows
  1750. // break;
  1751. // case 4:
  1752. // this.columnList3 = data.rows
  1753. // break;
  1754. }
  1755. } else {
  1756. // this.showDefault = true.
  1757. }
  1758. })
  1759. },
  1760. //动态列结束
  1761. // 列表表格选择替换
  1762. tabClick (tab, event) {
  1763. // 刷新列表数据
  1764. this.refreshCurrentTabTable()
  1765. },
  1766. getCustomerContactData () {
  1767. let inData = {
  1768. site:this.currentRow.site,
  1769. customerId:this.currentRow.customerId,
  1770. projectId:this.currentRow.projectId,
  1771. }
  1772. getCustomerContactData(inData).then(({data}) => {
  1773. //区分请求成功和失败的状况
  1774. if (data && data.code == 0) {
  1775. this.contactList = data.rows;
  1776. } else {
  1777. this.contactList = [];
  1778. }
  1779. });
  1780. },
  1781. // contactChooseModal () {
  1782. // if (this.currentRow == null || this.currentRow === '') {
  1783. // this.$alert('请选择项目!', '错误', {
  1784. // confirmButtonText: '确定'
  1785. // })
  1786. // return false
  1787. // }
  1788. // let inData = {
  1789. // site:this.currentRow.site,
  1790. // customerId:this.currentRow.customerId,
  1791. // projectId:this.currentRow.projectId,
  1792. // }
  1793. // getContactChooseData(inData).then(({data}) => {
  1794. // //区分请求成功和失败的状况
  1795. // if (data && data.code == 0) {
  1796. // this.contactChooseList1 = data.rows1;
  1797. // this.contactChooseList2 = data.rows2;
  1798. //
  1799. // } else {
  1800. // this.contactChooseList1 = [];
  1801. // this.contactChooseList2 = [];
  1802. // }
  1803. // });
  1804. // this.contactChooseFlag=true;
  1805. // },
  1806. contactChooseModal () {
  1807. if (this.currentRow == null || this.currentRow === '') {
  1808. this.$alert('请选择项目!', '错误', {
  1809. confirmButtonText: '确定'
  1810. })
  1811. return false
  1812. }
  1813. let inData = {
  1814. site: this.currentRow.site,
  1815. customerId: this.currentRow.customerId,
  1816. projectId: this.currentRow.projectId
  1817. }
  1818. this.contactSelections1 = null
  1819. this.contactSelections2 = null
  1820. this.contactData.contactName = ''
  1821. getContactChooseData2(inData).then(({data}) => {
  1822. //区分请求成功和失败的状况
  1823. if (data && data.code === 0) {
  1824. this.contactChooseList1 = data.rows1
  1825. this.contactChooseList2 = data.rows2
  1826. }
  1827. })
  1828. this.contactChooseFlag = true
  1829. },
  1830. // 查询物料项目
  1831. queryCustomerContact () {
  1832. this.contactData.projectId = this.currentRow.projectId
  1833. this.contactData.customerId = this.currentRow.customerId
  1834. queryCustomerContact(this.contactData).then(({data}) => {
  1835. if (data && data.code === 0) {
  1836. this.contactChooseList1 = data.rows
  1837. } else {
  1838. this.contactChooseList1 = []
  1839. }
  1840. })
  1841. },
  1842. // 可选联系人
  1843. contactClickRow1 (row) {
  1844. this.$refs.contactTable1.toggleRowSelection(row)
  1845. },
  1846. // 已有联系人
  1847. contactClickRow2 (row) {
  1848. this.$refs.contactTable2.toggleRowSelection(row)
  1849. },
  1850. selectionContact1 (val) {
  1851. this.contactSelections1 = val
  1852. },
  1853. selectionContact2 (val) {
  1854. this.contactSelections2 = val
  1855. },
  1856. // 客户联系人新增
  1857. addContact () {
  1858. if (this.contactSelections1 == null || this.contactSelections1.length === 0) {
  1859. this.$message.warning('请选择可选联系人!')
  1860. return
  1861. }
  1862. let inData = {
  1863. site: this.currentRow.site,
  1864. customerId: this.currentRow.customerId,
  1865. projectId: this.currentRow.projectId,
  1866. contactList2: this.contactSelections1
  1867. }
  1868. addContact(inData).then(({data}) => {
  1869. if (data && data.code === 0) {
  1870. getContactChooseData2(inData).then(({data}) => {
  1871. //区分请求成功和失败的状况
  1872. if (data && data.code === 0) {
  1873. this.contactChooseList1 = data.rows1
  1874. this.contactChooseList2 = data.rows2
  1875. }
  1876. })
  1877. this.getCustomerContactData()
  1878. this.contactSelections1 = []
  1879. } else {
  1880. this.$alert(data.msg, '错误', {
  1881. confirmButtonText: '确定'
  1882. })
  1883. }
  1884. })
  1885. },
  1886. // 客户联系人删除
  1887. deleteContact () {
  1888. if (this.contactSelections2 == null || this.contactSelections2.length === 0) {
  1889. this.$message.warning('请选择已有联系人!')
  1890. return
  1891. }
  1892. let inData = {
  1893. site: this.currentRow.site,
  1894. customerId: this.currentRow.customerId,
  1895. projectId: this.currentRow.projectId,
  1896. contactList2: this.contactSelections2
  1897. }
  1898. deleteContact(inData).then(({data}) => {
  1899. if (data && data.code === 0) {
  1900. getContactChooseData2(inData).then(({data}) => {
  1901. //区分请求成功和失败的状况
  1902. if (data && data.code === 0) {
  1903. this.contactChooseList1 = data.rows1
  1904. this.contactChooseList2 = data.rows2
  1905. }
  1906. })
  1907. this.getCustomerContactData()
  1908. this.contactSelections2 = []
  1909. } else {
  1910. this.$alert(data.msg, '错误', {
  1911. confirmButtonText: '确定'
  1912. })
  1913. }
  1914. })
  1915. },
  1916. saveProjectContactList(){
  1917. let data={
  1918. site:this.currentRow.site,
  1919. customerId:this.currentRow.customerId,
  1920. projectId:this.currentRow.projectId,
  1921. contactList:this.contactChooseList1
  1922. }
  1923. saveProjectContactList(data).then(({data}) => {
  1924. if (data && data.code === 0) {
  1925. this.$message.success( '操作成功')
  1926. this.contactChooseFlag = false
  1927. this.refreshCurrentTabTable()
  1928. } else {
  1929. this.$message.error(data.msg)
  1930. }
  1931. })
  1932. },
  1933. deleteProjectInfo(row){
  1934. let inData={
  1935. site:row.site,
  1936. username:this.$store.state.user.name,
  1937. projectId:row.projectId
  1938. }
  1939. getProjectUserRole(inData).then(({data}) => {
  1940. if(this.$store.state.user.name=='admin'||data.row.deleteFlag=='Y') {
  1941. this.$confirm(`确定删除当前记录?`, '提示', {
  1942. confirmButtonText: '确定',
  1943. cancelButtonText: '取消',
  1944. type: 'warning'
  1945. }).then(() => {
  1946. deleteProjectInfo(row).then(({data}) => {
  1947. if (data && data.code === 0) {
  1948. this.$message.success( '操作成功')
  1949. this.contactChooseFlag = false
  1950. this.search()
  1951. } else {
  1952. this.$message.error(data.msg)
  1953. }
  1954. })
  1955. }).catch(() => {})
  1956. }else {
  1957. this.$alert('没有权限删除这个项目信息!', '错误', {
  1958. confirmButtonText: '确定'
  1959. })
  1960. }
  1961. })
  1962. },
  1963. checkField(){
  1964. if(!this.accessField('10202001')){
  1965. this.columnList1=this.columnList1.filter(item => item.columnProp !== 'customerId');
  1966. this.columnList1=this.columnList1.filter(item => item.columnProp !== 'customerName');
  1967. }
  1968. if(!this.accessField('10202002')){
  1969. this.columnList1=this.columnList1.filter(item => item.columnProp !== 'projectSource');
  1970. }
  1971. },
  1972. toChangeMenu(changeNo){
  1973. if (this.$router.resolve(`/changeManagement-changeRecord`).resolved.name === '404'){
  1974. this.$alert('权限不足,访问失败', '警告', {confirmButtonText: '确定',});
  1975. }else {
  1976. this.$router.push({name:`changeManagement-changeRecord`,params:{changeNo:changeNo},})
  1977. }
  1978. }
  1979. },
  1980. activated() {
  1981. if (this.$route.params.projectId){
  1982. this.searchData.projectId = this.$route.params.projectId
  1983. this.search();
  1984. }
  1985. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  1986. },
  1987. }
  1988. </script>
  1989. <style >
  1990. .el-transfer-panel {
  1991. border: 2px solid #17b3a3;
  1992. border-radius: 4px;
  1993. overflow: hidden;
  1994. background: #fff;
  1995. display: inline-block;
  1996. vertical-align: middle;
  1997. width: 200px;
  1998. max-height: 100%;
  1999. -webkit-box-sizing: border-box;
  2000. box-sizing: border-box;
  2001. position: relative;
  2002. }
  2003. .el-transfer-panel .el-transfer-panel__header {
  2004. height: 40px;
  2005. line-height: 40px;
  2006. background: #17b3a3;
  2007. margin: 0;
  2008. padding-left: 15px;
  2009. border-bottom: 1px solid #17b3a3;
  2010. -webkit-box-sizing: border-box;
  2011. box-sizing: border-box;
  2012. color: #000;
  2013. }
  2014. .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label {
  2015. font-size: 14px;
  2016. color: #303133;
  2017. font-weight: 400;
  2018. }
  2019. </style>