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.

2097 lines
70 KiB

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