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.

3345 lines
112 KiB

1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 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
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
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
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
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
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
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
  1. <template>
  2. <div class="mod-config">
  3. <!-- 查询条件 -->
  4. <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList">
  5. <el-form-item :label="'客户代码'">
  6. <el-input v-model="searchData.customerNo" clearable style="width: 120px"></el-input>
  7. </el-form-item>
  8. <el-form-item :label="'客户名称'">
  9. <el-input v-model="searchData.customerDesc" clearable style="width: 120px"></el-input>
  10. </el-form-item>
  11. <el-form-item :label="'客户状态'">
  12. <el-select v-model="searchData.customerStatus" style="width: 120px">
  13. <el-option label="全部" value=""></el-option>
  14. <el-option label="启用" value="Y"></el-option>
  15. <el-option label="停用" value="N"></el-option>
  16. </el-select>
  17. </el-form-item>
  18. <el-form-item :label="' '">
  19. <el-button @click="getDataList">查询</el-button>
  20. <el-button type="primary" @click="addModal">新增</el-button>
  21. <el-button type="primary" @click="delModal">删除</el-button>
  22. <download-excel
  23. :fields="fields()"
  24. :data="exportData"
  25. type="xls"
  26. :name="exportName"
  27. :header="exportHeader"
  28. :footer="exportFooter"
  29. :fetch="createExportData"
  30. :before-generate="startDownload"
  31. :before-finish="finishDownload"
  32. worksheet="导出信息"
  33. class="el-button el-button--primary el-button--medium">
  34. {{ "导出" }}
  35. </download-excel>
  36. </el-form-item>
  37. </el-form>
  38. <!-- 客户列表 -->
  39. <el-table
  40. :height="height - 15"
  41. :data="dataList"
  42. border
  43. ref="customerTable"
  44. :row-style="rowStyle"
  45. @row-click="customerClickRow"
  46. @selection-change="selectionCustomer"
  47. @current-change="changeCurrentRow"
  48. style="width: 100%;">
  49. <el-table-column
  50. type="selection"
  51. header-align="center"
  52. align="center"
  53. width="50">
  54. </el-table-column>
  55. <el-table-column
  56. v-for="(item,index) in columnList" :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-column
  72. fixed="right"
  73. header-align="center"
  74. align="center"
  75. width="100"
  76. label="操作">
  77. <template slot-scope="scope">
  78. <el-link style="cursor: pointer" @click="updateModal(scope.row)">编辑</el-link>
  79. <el-link style="cursor: pointer" @click="detailModal(scope.row)">详情</el-link>
  80. </template>
  81. </el-table-column>
  82. </el-table>
  83. <!-- 分页插件 -->
  84. <el-pagination
  85. @size-change="sizeChangeHandle"
  86. @current-change="currentChangeHandle"
  87. :current-page="pageIndex"
  88. :page-sizes="[20, 50, 100, 200, 500]"
  89. :page-size="pageSize"
  90. :total="totalPage"
  91. layout="total, sizes, prev, pager, next, jumper">
  92. </el-pagination>
  93. <!-- 客户模态框 -->
  94. <el-dialog :title="modalData.title" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="500px">
  95. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules"
  96. style="margin-left: 7px;margin-top: -5px;">
  97. <el-form-item label="客户代码" prop="customerNo" :rules="rules.customerNo">
  98. <el-input v-model="modalData.customerNo" :disabled="modalDisableFlag" style="width: 222px"></el-input>
  99. </el-form-item>
  100. <el-form-item label="客户名称" prop="customerDesc" :rules="rules.customerDesc">
  101. <el-input v-model="modalData.customerDesc" :readonly="detailModalFlag" style="width: 222px"></el-input>
  102. </el-form-item>
  103. </el-form>
  104. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
  105. <el-form-item label="年营业额">
  106. <el-input class="inlineNumber numInput" v-model="modalData.turnoverOfYear" :readonly="detailModalFlag"
  107. type="number" style="width: 222px"></el-input>
  108. </el-form-item>
  109. <el-form-item label="年预估投入">
  110. <el-input class="inlineNumber numInput" v-model="modalData.potentialRevenueOfYear" :readonly="detailModalFlag"
  111. type="number" style="width: 222px"></el-input>
  112. </el-form-item>
  113. </el-form>
  114. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules"
  115. style="margin-left: 7px;margin-top: -5px;">
  116. <el-form-item label="行业">
  117. <dict-data-select v-if="modalFlag" v-model="modalData.customerIndustry" :disabled="detailModalFlag"
  118. style="width: 222px"
  119. dict-type="plm_customer_information_customer_industry"></dict-data-select>
  120. </el-form-item>
  121. <el-form-item label="币种" prop="customerCurrency" :rules="rules.customerCurrency">
  122. <dict-data-select v-if="modalFlag" v-model="modalData.customerCurrency" :disabled="detailModalFlag"
  123. style="width: 222px"
  124. dict-type="plm_customer_information_customer_customer_currency"></dict-data-select>
  125. </el-form-item>
  126. </el-form>
  127. <!-- <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">-->
  128. <!-- <el-form-item label="联系人" prop="contactName" :rules="rules.contactName">-->
  129. <!-- <el-input v-model="modalData.contactName" :readonly="detailModalFlag" style="width: 222px"></el-input>-->
  130. <!-- </el-form-item>-->
  131. <!-- <el-form-item label="联系电话" prop="contactPhoneNumber1" :rules="rules.contactPhoneNumber1">-->
  132. <!-- <el-input v-model="modalData.contactPhoneNumber1" :readonly="detailModalFlag" style="width: 222px"></el-input>-->
  133. <!-- </el-form-item>-->
  134. <!-- </el-form>-->
  135. <!-- <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">-->
  136. <!-- <el-form-item label="公司名称">-->
  137. <!-- <el-input v-model="modalData.companyName" :readonly="detailModalFlag" style="width: 457px"></el-input>-->
  138. <!-- </el-form-item>-->
  139. <!-- </el-form>-->
  140. <!-- <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">-->
  141. <!-- <el-form-item label="岗位描述">-->
  142. <!-- <el-input v-model="modalData.jobDescription" :readonly="detailModalFlag" style="width: 457px"></el-input>-->
  143. <!-- </el-form-item>-->
  144. <!-- </el-form>-->
  145. <!-- <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">-->
  146. <!-- <el-form-item label="联系地址">-->
  147. <!-- <el-input v-model="modalData.addressName" :readonly="detailModalFlag" style="width: 457px"></el-input>-->
  148. <!-- </el-form-item>-->
  149. <!-- </el-form>-->
  150. <!-- <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">-->
  151. <!-- <el-form-item label="备注信息">-->
  152. <!-- <el-input v-model="modalData.remark" :readonly="detailModalFlag" style="width: 457px"></el-input>-->
  153. <!-- </el-form-item>-->
  154. <!-- </el-form>-->
  155. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
  156. <el-form-item>
  157. <span style="cursor: pointer" slot="label" @click="getBaseList(120)"><a herf="#">客户组1</a></span>
  158. <el-input v-model="modalData.customerGroupId1" @blur="customerGroupBlur(120)" style="width: 124px"></el-input>
  159. <el-input v-model="modalData.customerGroupName1" disabled style="width: 330px"></el-input>
  160. </el-form-item>
  161. <el-form-item>
  162. <span style="cursor: pointer" slot="label" @click="getBaseList(121)"><a herf="#">客户组2</a></span>
  163. <el-input v-model="modalData.customerGroupId2" @blur="customerGroupBlur2(121)"
  164. style="width: 124px"></el-input>
  165. <el-input v-model="modalData.customerGroupName2" disabled style="width: 330px"></el-input>
  166. </el-form-item>
  167. </el-form>
  168. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules"
  169. style="margin-left: 7px;margin-top: -5px;">
  170. <el-form-item label="重要程度" prop="importantCustomer" :rules="rules.importantCustomer">
  171. <dict-data-select v-if="modalFlag" v-model="modalData.importantCustomer" :disabled="detailModalFlag"
  172. style="width: 145px" dict-type="plm_customer_information_important_customer">
  173. </dict-data-select>
  174. </el-form-item>
  175. <el-form-item label="客户状态" prop="customerStatus" :rules="rules.customerStatus">
  176. <el-select v-model="modalData.customerStatus" :disabled="detailModalFlag" style="width: 140px">
  177. <el-option label="启用" value="Y"></el-option>
  178. <el-option label="停用" value="N"></el-option>
  179. </el-select>
  180. </el-form-item>
  181. <el-form-item label="客户类型" prop="customerStatus" :rules="rules.customerType">
  182. <el-select v-model="modalData.customerType" :disabled="detailModalFlag" style="width: 145px">
  183. <el-option label="潜在客户" value="潜在客户"></el-option>
  184. <el-option label="正式客户" value="正式客户"></el-option>
  185. </el-select>
  186. </el-form-item>
  187. </el-form>
  188. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
  189. <el-form-item label="客户描述">
  190. <el-input
  191. type="textarea"
  192. v-model="modalData.customerDescription"
  193. readonly
  194. :rows="2"
  195. resize='none'
  196. show-word-limit
  197. :readonly="detailModalFlag"
  198. style="width: 457px;height: 20px">
  199. </el-input>
  200. </el-form-item>
  201. </el-form>
  202. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -2px;">-->
  203. <el-form-item label="客户地址">
  204. <el-input v-model="modalData.addressName" :readonly="detailModalFlag" style="width: 457px"></el-input>
  205. </el-form-item>
  206. </el-form>
  207. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  208. <el-button v-if="modalData.flag !== '3'" type="primary" @click="saveData()">保存</el-button>
  209. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  210. </el-footer>
  211. </el-dialog>
  212. <!-- 客户联系人模态框 -->
  213. <el-dialog :title="contactModalData.title" :close-on-click-modal="false" v-drag :visible.sync="contactModalFlag"
  214. width="500px">
  215. <el-form :inline="true" label-position="top" :model="contactModalData" :rules="contactRules"
  216. style="margin-left: 7px;margin-top: -5px;">
  217. <el-form-item label="联系人" prop="contactName" :rules="contactRules.contactName">
  218. <el-input v-model="contactModalData.contactName" style="width: 222px"></el-input>
  219. </el-form-item>
  220. <el-form-item label="座机">
  221. <el-input v-model="contactModalData.contactLandlineNumber" :readonly="contactDetailModalFlag"
  222. style="width: 222px"></el-input>
  223. </el-form-item>
  224. </el-form>
  225. <el-form :inline="true" label-position="top" :model="contactModalData" :rules="contactRules"
  226. style="margin-left: 7px;margin-top: -5px;">
  227. <el-form-item label="联系电话(1)" prop="contactPhoneNumber1" :rules="contactRules.contactPhoneNumber1">
  228. <el-input v-model="contactModalData.contactPhoneNumber1" :readonly="contactDetailModalFlag"
  229. style="width: 222px"></el-input>
  230. </el-form-item>
  231. <el-form-item label="联系电话(2)">
  232. <el-input v-model="contactModalData.contactPhoneNumber2" :readonly="contactDetailModalFlag"
  233. style="width: 222px"></el-input>
  234. </el-form-item>
  235. </el-form>
  236. <el-form :inline="true" label-position="top" :model="contactModalData" :rules="contactRules"
  237. style="margin-left: 7px;margin-top: -5px;">
  238. <el-form-item label="联系电话(3)">
  239. <el-input v-model="contactModalData.contactPhoneNumber3" :readonly="contactDetailModalFlag"
  240. style="width: 222px"></el-input>
  241. </el-form-item>
  242. <el-form-item label="公司职务">
  243. <el-input v-model="contactModalData.position" :readonly="contactDetailModalFlag"
  244. style="width: 222px"></el-input>
  245. </el-form-item>
  246. </el-form>
  247. <el-form :inline="true" label-position="top" :model="contactModalData" :rules="contactRules"
  248. style="margin-left: 7px;margin-top: -5px;">
  249. <el-form-item label="部门">
  250. <el-input v-model="contactModalData.departmentName" :readonly="contactDetailModalFlag"
  251. style="width: 144px"></el-input>
  252. </el-form-item>
  253. <el-form-item label="默认联系人" prop="primaryContact" :rules="contactRules.primaryContact">
  254. <el-select v-model="contactModalData.primaryContact" :disabled="contactDetailModalFlag" style="width: 143px">
  255. <el-option label="是" value="Y"></el-option>
  256. <el-option label="否" value="N"></el-option>
  257. </el-select>
  258. </el-form-item>
  259. <el-form-item label="状态" prop="contactStatus" :rules="contactRules.contactStatus">
  260. <el-select v-model="contactModalData.contactStatus" :disabled="contactDetailModalFlag" style="width: 144px">
  261. <el-option label="启用" value="启用"></el-option>
  262. <el-option label="停用" value="停用"></el-option>
  263. </el-select>
  264. </el-form-item>
  265. </el-form>
  266. <el-form :inline="true" label-position="top" :model="contactModalData" style="margin-left: 7px;margin-top: -5px;">
  267. <el-form-item label="邮箱">
  268. <el-input v-model="contactModalData.mailbox" :readonly="contactDetailModalFlag"
  269. style="width: 457px"></el-input>
  270. </el-form-item>
  271. </el-form>
  272. <el-form :inline="true" label-position="top" :model="contactModalData" style="margin-left: 7px;margin-top: -5px;">
  273. <el-form-item label="备注信息">
  274. <el-input
  275. type="textarea"
  276. v-model="contactModalData.remark"
  277. readonly
  278. :rows="2"
  279. resize='none'
  280. show-word-limit
  281. :readonly="contactDetailModalFlag"
  282. style="width: 457px;height: 20px">
  283. </el-input>
  284. </el-form-item>
  285. </el-form>
  286. <!-- <el-form :inline="true" label-position="top" :model="contactModalData" style="margin-left: 7px;margin-top: -5px;">-->
  287. <!-- <el-form-item label="备注信息">-->
  288. <!-- <el-input v-model="contactModalData.remark" :readonly="contactDetailModalFlag" style="width: 457px"></el-input>-->
  289. <!-- </el-form-item>-->
  290. <!-- </el-form>-->
  291. <el-footer style="height:40px;margin-top: 34px;text-align:center">
  292. <el-button v-if="contactModalData.flag !== '3'" type="primary" @click="saveContactData()">保存</el-button>
  293. <el-button type="primary" @click="contactModalFlag = false">关闭</el-button>
  294. </el-footer>
  295. </el-dialog>
  296. <!-- 客户联系地址模态框 -->
  297. <el-dialog :title="addressModalData.title" :close-on-click-modal="false" v-drag :visible.sync="addressModalFlag" width="500px">
  298. <el-form label-position="top" :model="addressModalData" :rules="addressRules">
  299. <el-row :gutter="10">
  300. <el-col :span="8">
  301. <el-form-item label="地址类型" prop="addressType" :rules="addressRules.addressType">
  302. <dict-data-select v-if="addressModalFlag" v-model="addressModalData.addressType"
  303. :disabled="addressDetailModalFlag"
  304. dict-type="plm_customer_address_address_type"></dict-data-select>
  305. </el-form-item>
  306. </el-col>
  307. <el-col :span="16">
  308. <el-form-item label="公司名称">
  309. <el-input v-model="addressModalData.companyName" :readonly="addressDetailModalFlag"></el-input>
  310. </el-form-item>
  311. </el-col>
  312. <el-col :span="24">
  313. <el-form-item label="地址" prop="addressName" :rules="addressRules.addressName">
  314. <el-input v-model="addressModalData.addressName"></el-input>
  315. </el-form-item>
  316. </el-col>
  317. <el-col :span="8">
  318. <el-form-item label="状态" prop="addressStatus" :rules="addressRules.addressStatus">
  319. <el-select v-model="addressModalData.addressStatus" style="width: 100%" :disabled="addressDetailModalFlag">
  320. <el-option label="启用" value="启用"></el-option>
  321. <el-option label="停用" value="停用"></el-option>
  322. </el-select>
  323. </el-form-item>
  324. </el-col>
  325. <el-col :span="8">
  326. <el-form-item label=" " >
  327. <el-checkbox v-model="addressModalData.defaultAddress" false-label="N" true-label="Y"
  328. :disabled="addressDetailModalFlag">默认地址</el-checkbox>
  329. </el-form-item>
  330. </el-col>
  331. <el-col :span="24">
  332. <el-form-item label="备注信息">
  333. <el-input type="textarea" v-model="addressModalData.remark" :rows="3" :readonly="addressDetailModalFlag" resize='none' show-word-limit></el-input>
  334. </el-form-item>
  335. </el-col>
  336. </el-row>
  337. </el-form>
  338. <el-footer style="height:42px;margin-top: 53px;text-align:center">
  339. <el-button v-if="addressModalData.flag !== '3'" type="primary" @click="saveAddressData()">保存</el-button>
  340. <el-button type="primary" @click="addressModalFlag = false">关闭</el-button>
  341. </el-footer>
  342. </el-dialog>
  343. <!-- 客户项目信息模态框 -->
  344. <el-dialog :title="projectInformationModalData.title" :close-on-click-modal="false" v-drag
  345. :visible.sync="projectInformationModalFlag" width="40%">
  346. <el-form ref="saveForm" :model="projectInformationModalData" label-position="top" label-width="100px"
  347. :rules="projectInformationModalData">
  348. <el-row :gutter="25">
  349. <el-col :span="6">
  350. <el-form-item label="项目号">
  351. <el-input readonly v-model="projectInformationModalData.projectId" disabled></el-input>
  352. </el-form-item>
  353. </el-col>
  354. <el-col :span="12">
  355. <el-form-item label="项目名称" prop="projectName">
  356. <el-input readonly v-model="projectInformationModalData.projectName"></el-input>
  357. </el-form-item>
  358. </el-col>
  359. <el-col :span="6">
  360. <el-form-item prop="projectTypeDb" label="项目类型">
  361. <dict-data-select disabled dict-type="project_info_type_db" v-if="projectInformationModalFlag"
  362. v-model="projectInformationModalData.projectTypeDb"></dict-data-select>
  363. </el-form-item>
  364. </el-col>
  365. <el-col :span="6">
  366. <el-form-item prop="projectSource" :rules="projectInformationModalData.projectSourceDesc" label="项目来源">
  367. <dict-data-select disabled dict-type="project_info_source" v-if="projectInformationModalFlag"
  368. v-model="projectInformationModalData.projectSource"></dict-data-select>
  369. </el-form-item>
  370. </el-col>
  371. <el-col :span="6">
  372. <el-form-item prop="priority" label="优先级">
  373. <dict-data-select disabled dict-type="project_info_priority" v-if="projectInformationModalFlag"
  374. v-model="projectInformationModalData.priority"></dict-data-select>
  375. </el-form-item>
  376. </el-col>
  377. <el-col :span="6">
  378. <el-form-item label="要求日期:" prop="needDate">
  379. <el-date-picker
  380. style="width: 100%"
  381. readonly
  382. v-model="projectInformationModalData.needDate"
  383. type="date"
  384. value-format="yyyy-MM-dd"
  385. placeholder="选择日期">
  386. </el-date-picker>
  387. </el-form-item>
  388. </el-col>
  389. <el-col :span="6">
  390. <el-form-item prop="projectManagerName" :rules="projectInformationModalData.projectManagerName"
  391. label="项目经理">
  392. <el-input v-model="projectInformationModalData.projectManagerName" readonly></el-input>
  393. </el-form-item>
  394. </el-col>
  395. <el-col :span="6">
  396. <el-form-item prop="projectOwnerName" :rules="projectInformationModalData.projectOwnerName"
  397. label="项目负责人">
  398. <el-input v-model="projectInformationModalData.projectOwnerName" readonly></el-input>
  399. </el-form-item>
  400. </el-col>
  401. <el-col :span="6">
  402. <el-form-item label="直接客户">
  403. <el-input v-model="projectInformationModalData.customerId" readonly></el-input>
  404. </el-form-item>
  405. </el-col>
  406. <el-col :span="12">
  407. <el-form-item prop="customerName" label="直接客户名称:">
  408. <el-input v-model="projectInformationModalData.customerName" readonly ></el-input>
  409. </el-form-item>
  410. </el-col>
  411. <el-col :span="6">
  412. <el-form-item label="终端客户:">
  413. <el-input v-model="projectInformationModalData.finalCustomerId" readonly></el-input>
  414. </el-form-item>
  415. </el-col>
  416. <el-col :span="12">
  417. <el-form-item label="终端客户名称:">
  418. <el-input v-model="projectInformationModalData.finalCustomerName" readonly ></el-input>
  419. </el-form-item>
  420. </el-col>
  421. </el-row>
  422. <el-form-item label="项目描述" style="height: 70px">
  423. <el-input type="textarea" readonly resize="none" :autosize="{minRows: 2, maxRows: 2}"
  424. v-model="projectInformationModalData.projectDesc"></el-input>
  425. </el-form-item>
  426. <el-form-item label="客户应用/要求" style="height: 70px">
  427. <el-input type="textarea" readonly resize="none" :autosize="{minRows: 2, maxRows: 2}"
  428. v-model="projectInformationModalData.customerRemark"></el-input>
  429. </el-form-item>
  430. <el-form-item label="其他要求" style="height: 70px">
  431. <el-input type="textarea" readonly resize="none" :autosize="{minRows: 2, maxRows: 2}"
  432. v-model="projectInformationModalData.remark"></el-input>
  433. </el-form-item>
  434. <el-form-item prop="userRoleName" :rules="projectInformationRules.userRoleName" label="项目权限">
  435. <el-input readonly v-model="projectInformationModalData.userRoleName"></el-input>
  436. </el-form-item>
  437. </el-form>
  438. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  439. <el-button v-if="projectInformationModalData.flag !== '3'" type="primary" @click="saveProjectInformationData()">
  440. 保存
  441. </el-button>
  442. <el-button type="primary" @click="projectInformationModalFlag = false">关闭</el-button>
  443. </el-footer>
  444. </el-dialog>
  445. <!-- 页签 -->
  446. <el-tabs v-model="activeTable" style="margin-top: 0px; width: 100%; height: 100%;" type="border-card"
  447. @tab-click="tabClick" class="customer-tab">
  448. <!-- 联系人页签 -->
  449. <el-tab-pane label="联系人" name="customer_contact">
  450. <el-form label-position="top" style="margin-top: 5px; margin-left: 0px;">
  451. <el-form :inline="true" label-position="top" style="margin-top: 5px">
  452. <el-button type="primary" @click="contactSaveModal()">新增</el-button>
  453. <el-button type="primary" @click="contactDeleteModal()">删除</el-button>
  454. </el-form>
  455. </el-form>
  456. <el-table
  457. :data="contactList"
  458. :height="secondHeight"
  459. border
  460. ref="contactTable"
  461. @row-click="contactClickRow"
  462. @selection-change="selectionContact"
  463. style="width: 100%; ">
  464. <el-table-column
  465. type="selection"
  466. header-align="center"
  467. align="center"
  468. width="50">
  469. </el-table-column>
  470. <el-table-column
  471. v-for="(item,index) in customerContactArray" :key="index"
  472. :sortable="item.columnSortable"
  473. :prop="item.columnProp"
  474. :header-align="item.headerAlign"
  475. :show-overflow-tooltip="item.showOverflowTooltip"
  476. :align="item.align"
  477. :fixed="item.fixed === '' ? false : item.fixed"
  478. :min-width="item.columnWidth"
  479. :label="item.columnLabel">
  480. <template slot-scope="scope">
  481. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  482. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  483. </template>
  484. </el-table-column>
  485. <el-table-column
  486. fixed="right"
  487. header-align="center"
  488. align="center"
  489. width="100"
  490. label="操作">
  491. <template slot-scope="scope">
  492. <el-link style="cursor: pointer" @click="updateContactModal(scope.row)">编辑</el-link>
  493. <el-link style="cursor: pointer" @click="detailContactModal(scope.row)">详情</el-link>
  494. </template>
  495. </el-table-column>
  496. </el-table>
  497. </el-tab-pane>
  498. <!-- 联系地址页签 -->
  499. <el-tab-pane label="联系地址" name="customer_address">
  500. <el-form :inline="true" label-position="top" style="margin-top: 5px">
  501. <el-button type="primary" @click="addressSaveModal()">新增</el-button>
  502. <el-button type="primary" @click="addressDeleteModal()">删除</el-button>
  503. </el-form>
  504. <el-table
  505. :data="addressList"
  506. :height="secondHeight"
  507. border
  508. ref="addressTable"
  509. @row-click="addressClickRow"
  510. @selection-change="selectionAddress"
  511. style="width: 100%;">
  512. <el-table-column
  513. type="selection"
  514. header-align="center"
  515. align="center"
  516. width="50">
  517. </el-table-column>
  518. <el-table-column
  519. v-for="(item,index) in customerAddressArray" :key="index"
  520. :sortable="item.columnSortable"
  521. :prop="item.columnProp"
  522. :header-align="item.headerAlign"
  523. :show-overflow-tooltip="item.showOverflowTooltip"
  524. :align="item.align"
  525. :fixed="item.fixed === '' ? false : item.fixed"
  526. :min-width="item.columnWidth"
  527. :label="item.columnLabel">
  528. <template slot-scope="scope">
  529. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  530. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  531. </template>
  532. </el-table-column>
  533. <el-table-column
  534. fixed="right"
  535. header-align="center"
  536. align="center"
  537. width="100"
  538. label="操作">
  539. <template slot-scope="scope">
  540. <el-link style="cursor: pointer" @click="updateAddressModal(scope.row)">编辑</el-link>
  541. <el-link style="cursor: pointer" @click="detailAddressModal(scope.row)">详情</el-link>
  542. </template>
  543. </el-table-column>
  544. </el-table>
  545. </el-tab-pane>
  546. <!-- 项目信息页签 -->
  547. <el-tab-pane label="项目信息" name="project_information">
  548. <el-form :inline="true" label-position="top" style="margin-top: 5px">
  549. <el-button type="primary" @click="projectInformationSaveModal()">新增</el-button>
  550. </el-form>
  551. <el-table
  552. :data="projectInformationList"
  553. :height="secondHeight"
  554. border
  555. ref="projectInformationTable"
  556. @row-click="projectInformationClickRow"
  557. @selection-change="selectionProjectInformation"
  558. style="width: 100%;">
  559. <el-table-column
  560. type="selection"
  561. header-align="center"
  562. align="center"
  563. width="50">
  564. </el-table-column>
  565. <el-table-column
  566. header-align="center"
  567. align="left"
  568. prop="projectId"
  569. width="160"
  570. label="项目号">
  571. <template slot-scope="{row,$index}">
  572. <el-link style="cursor: pointer" @click="clickProjectId(row.projectId)">{{ row.projectId }}</el-link>
  573. </template>
  574. </el-table-column>
  575. <el-table-column
  576. v-for="(item,index) in projectInformationArray" :key="index"
  577. :sortable="item.columnSortable"
  578. :prop="item.columnProp"
  579. :header-align="item.headerAlign"
  580. :show-overflow-tooltip="item.showOverflowTooltip"
  581. :align="item.align"
  582. :fixed="item.fixed === '' ? false : item.fixed"
  583. :min-width="item.columnWidth"
  584. :label="item.columnLabel">
  585. <template slot-scope="scope">
  586. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  587. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  588. </template>
  589. </el-table-column>
  590. <el-table-column
  591. fixed="right"
  592. header-align="center"
  593. align="center"
  594. width="100"
  595. label="操作">
  596. <template slot-scope="scope">
  597. <el-link style="cursor: pointer" @click="updateProjectInformationModal(scope.row)">编辑</el-link>
  598. <el-link style="cursor: pointer" @click="detailProjectInformationModal(scope.row)">详情</el-link>
  599. </template>
  600. </el-table-column>
  601. </el-table>
  602. </el-tab-pane>
  603. </el-tabs>
  604. <!-- 项目经理选择模态框 -->
  605. <el-dialog
  606. width="620px"
  607. title="项目经理"
  608. :close-on-click-modal="false"
  609. :visible.sync="managerFlag">
  610. <el-transfer
  611. ref="managerTransfer"
  612. v-model="projectManagerList"
  613. :props="{key: 'operatorId',label: 'operatorName'}"
  614. :data="operatorList"
  615. :titles="['未选择', '已选择']">
  616. </el-transfer>
  617. <span slot="footer" class="dialog-footer">
  618. <div style="margin-top: 5px">
  619. <el-button type="primary" @click="saveManagerList()">确定</el-button>
  620. <el-button type="primary" @click="managerFlag=false">取消</el-button>
  621. </div>
  622. </span>
  623. </el-dialog>
  624. <!-- 项目负责人选择模态框 -->
  625. <el-dialog
  626. width="620px"
  627. title="项目负责人"
  628. :close-on-click-modal="false"
  629. :visible.sync="ownerFlag">
  630. <el-transfer
  631. ref="ownerTransfer"
  632. v-model="projectOwnerList"
  633. :props="{key: 'operatorId',label: 'operatorName'}"
  634. :data="operatorList"
  635. :titles="['未选择', '已选择']">
  636. </el-transfer>
  637. <span slot="footer" class="dialog-footer">
  638. <div style="margin-top: 5px">
  639. <el-button type="primary" @click="saveOwnerList()">确定</el-button>
  640. <el-button type="primary" @click="ownerFlag=false">取消</el-button>
  641. </div>
  642. </span>
  643. </el-dialog>
  644. <!-- 项目权限选择模态框 -->
  645. <el-dialog
  646. width="530px"
  647. title="权限"
  648. :close-on-click-modal="false"
  649. :visible.sync="userRoleFlag">
  650. <el-table
  651. :data="userRoleList"
  652. border
  653. :height="300"
  654. v-loading="false"
  655. style="width: 100%;">
  656. <el-table-column
  657. prop="username"
  658. header-align="center"
  659. align="center"
  660. min-width="35"
  661. label="账号">
  662. </el-table-column>
  663. <el-table-column
  664. prop="userDisplay"
  665. header-align="center"
  666. align="center"
  667. min-width="35"
  668. label="姓名">
  669. </el-table-column>
  670. <el-table-column
  671. prop=""
  672. header-align="center"
  673. align="center"
  674. min-width="30"
  675. label="">
  676. <template slot-scope="scope">
  677. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  678. <el-checkbox v-model="scope.row.checkAll" @change="changeAll(scope.row)"></el-checkbox>
  679. </template>
  680. </el-table-column>
  681. <el-table-column
  682. prop=""
  683. header-align="center"
  684. align="center"
  685. min-width="30"
  686. label="查询">
  687. <template slot-scope="scope">
  688. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  689. <el-checkbox v-model="scope.row.searchCheck" @change="changeCheck(scope.row,1)"></el-checkbox>
  690. </template>
  691. </el-table-column>
  692. <el-table-column
  693. prop=""
  694. header-align="center"
  695. align="center"
  696. min-width="30"
  697. label="修改">
  698. <template slot-scope="scope">
  699. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  700. <el-checkbox v-model="scope.row.updateCheck" @change="changeCheck(scope.row,2)"></el-checkbox>
  701. </template>
  702. </el-table-column>
  703. <el-table-column
  704. prop=""
  705. header-align="center"
  706. align="center"
  707. min-width="30"
  708. label="下载">
  709. <template slot-scope="scope">
  710. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  711. <el-checkbox v-model="scope.row.downCheck" @change="changeCheck(scope.row,3)"></el-checkbox>
  712. </template>
  713. </el-table-column>
  714. <el-table-column
  715. prop=""
  716. header-align="center"
  717. align="center"
  718. min-width="30"
  719. label="删除">
  720. <template slot-scope="scope">
  721. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  722. <el-checkbox v-model="scope.row.deleteCheck" @change="changeCheck(scope.row,4)"></el-checkbox>
  723. </template>
  724. </el-table-column>
  725. </el-table>
  726. <span slot="footer" class="dialog-footer">
  727. <div style="margin-top: 5px">
  728. <el-button type="primary" @click="saveUserList()">确定</el-button>
  729. <el-button type="primary" @click="userRoleFlag = false">取消</el-button>
  730. </div>
  731. </span>
  732. </el-dialog>
  733. <add-or-update v-if="addOrUpdateVisible" v-model="addOrUpdate" ref="addOrUpdate" @refreshDataList="getDataList"
  734. v-drag></add-or-update>
  735. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  736. </div>
  737. </template>
  738. <script>
  739. import {
  740. customerInformationSearch, // 客户信息列表查询
  741. customerInformationSave, // 客户信息新增
  742. customerInformationEdit, // 客户信息编辑
  743. customerInformationDelete, // 客户信息删除
  744. checkCustomerGroup, // 客户组ID输入校验
  745. } from '@/api/customer/customerInformation.js'
  746. import {
  747. customerContactSearch, // 客户联系人列表查询
  748. customerContactSave, // 客户联系人新增
  749. customerContactEdit, // 客户联系人编辑
  750. customerContactDelete, // 客户联系人删除
  751. } from '@/api/customer/customerContact.js'
  752. import {
  753. customerAddressSearch, // 客户联系地址列表查询
  754. customerAddressSave, // 客户联系地址新增
  755. customerAddressEdit, // 客户联系地址编辑
  756. customerAddressDelete, // 客户联系地址删除
  757. } from '@/api/customer/customerAddress.js'
  758. import {
  759. projectInformationSearch, // 客户项目信息列表查询
  760. projectInformationSave, // 客户项目信息新增
  761. projectInformationEdit, // 客户项目信息编辑
  762. projectInformationDelete, // 客户项目信息删除
  763. } from '@/api/customer/projectInformation.js'
  764. import {
  765. searchOperatorWithSite,
  766. searchProjectTeamStr,
  767. searchUserRoll,
  768. saveProjectInfo
  769. } from "@/api/project/project.js"
  770. import Chooselist from '@/views/modules/common/Chooselist'
  771. import {verifyData} from "@/api/chooselist/chooselist.js"
  772. import DictDataSelect from '../sys/dict-data-select.vue'
  773. import saveOrUpdate from '../project/projectInfo/com_projectInfo-add-or-update.vue'
  774. import partUploadFile from '../part/part_upload_file.vue'
  775. import AddOrUpdate from "../project/projectInfo/com_projectInfo-add-or-update.vue";
  776. export default {
  777. components: {
  778. AddOrUpdate,
  779. DictDataSelect,
  780. Chooselist,
  781. saveOrUpdate
  782. },
  783. watch: {
  784. searchData: {
  785. deep: true,
  786. handler: function (newV, oldV) {
  787. this.searchData.customerNo = this.searchData.customerNo.toUpperCase()
  788. }
  789. },
  790. modalData: {
  791. deep: true,
  792. handler: function (newV, oldV) {
  793. this.modalData.customerNo = this.modalData.customerNo.toUpperCase()
  794. this.modalData.customerGroupId1 = this.modalData.customerGroupId1.toUpperCase()
  795. this.modalData.customerGroupId2 = this.modalData.customerGroupId2.toUpperCase()
  796. if (this.modalData.customerGroupId1 == null || this.modalData.customerGroupId1 === '') {
  797. this.modalData.customerGroupName1 = ''
  798. }
  799. if (this.modalData.customerGroupId2 == null || this.modalData.customerGroupId2 === '') {
  800. this.modalData.customerGroupName2 = ''
  801. }
  802. }
  803. }
  804. },
  805. data() {
  806. return {
  807. // 新增 项目
  808. addOrUpdateVisible: false,
  809. // addOrUpdate
  810. addOrUpdate: '0',
  811. components: {
  812. DictDataSelect,
  813. Chooselist
  814. },
  815. // 导出
  816. exportData: [],
  817. exportName: '客户信息' + this.dayjs().format('YYYYMMDDHHmmss'),
  818. exportHeader: ['客户信息'],
  819. exportFooter: [],
  820. resultList: [],
  821. // ======== 行高 ========
  822. height: 200,
  823. secondHeight: 200,
  824. // ======== 分页 ========
  825. pageIndex: 1,
  826. pageSize: 20,
  827. totalPage: 0,
  828. // 条件查询
  829. searchData: {
  830. site: this.$store.state.user.site,
  831. customerNo: '',
  832. customerDesc: '',
  833. customerStatus: '',
  834. active: 'Y',
  835. page: 1,
  836. limit: 10
  837. },
  838. // 初始页签
  839. activeTable: 'customer_contact',
  840. // ======== 数据对象 ========
  841. modalData: {
  842. flag: '',
  843. title: '',
  844. site: this.$store.state.user.site,
  845. customerNo: '',
  846. customerDesc: '',
  847. customerDescription: '',
  848. customerIndustry: '',
  849. customerCurrency: '',
  850. turnoverOfYear: '',
  851. potentialRevenueOfYear: '',
  852. importantCustomer: '',
  853. customerType: '',
  854. customerStatus: '',
  855. companyName: '',
  856. jobDescription: '',
  857. remark: '',
  858. contactName: '',
  859. contactPhoneNumber1: '',
  860. createDate: '',
  861. createBy: '',
  862. updateDate: '',
  863. updateBy: '',
  864. primaryContact: '',
  865. contactStatus: '',
  866. addressName: '',
  867. customerAddress: '',
  868. customerGroupId1: '',
  869. customerGroupId2: '',
  870. customerGroupName1: '',
  871. customerGroupName2: '',
  872. type: ''
  873. },
  874. contactModalData: {
  875. flag: '',
  876. title: '',
  877. site: this.$store.state.user.site,
  878. customerNo: '',
  879. customerDesc: '',
  880. contactId: '',
  881. contactName: '',
  882. contactLandlineNumber: '',
  883. contactPhoneNumber1: '',
  884. contactPhoneNumber2: '',
  885. contactPhoneNumber3: '',
  886. position: '',
  887. departmentName: '',
  888. mailbox: '',
  889. primaryContact: '',
  890. contactStatus: '',
  891. remark: '',
  892. createDate: '',
  893. createBy: '',
  894. updateDate: '',
  895. updateBy: ''
  896. },
  897. addressModalData: {
  898. flag: '',
  899. title: '',
  900. site: this.$store.state.user.site,
  901. customerNo: '',
  902. customerDesc: '',
  903. addressId: '',
  904. addressName: '',
  905. companyName: '',
  906. defaultAddress: '',
  907. addressStatus: '',
  908. addressType: '',
  909. remark: '',
  910. createDate: '',
  911. createBy: '',
  912. updateDate: '',
  913. updateBy: ''
  914. },
  915. projectInformationModalData: {
  916. flag: '',
  917. title: '',
  918. site: this.$store.state.user.site,
  919. customerNo: '',
  920. customerDesc: '',
  921. addressId: '',
  922. addressName: '',
  923. companyName: '',
  924. defaultAddress: '',
  925. addressStatus: '',
  926. addressType: '',
  927. remark: '',
  928. createDate: '',
  929. createBy: '',
  930. updateDate: '',
  931. updateBy: '',
  932. projectManagerList: []
  933. },
  934. // ======== 数据列表 ========
  935. dataList: [],
  936. contactList: [],
  937. addressList: [],
  938. projectInformationList: [],
  939. // ======== 列表表头 ========
  940. columnList: [
  941. {
  942. userId: this.$store.state.user.name,
  943. functionId: 101001,
  944. serialNumber: '101001Table1CustomerDesc',
  945. tableId: '101001Table1',
  946. tableName: '客户信息表',
  947. columnProp: 'customerDesc',
  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: 160
  958. },
  959. {
  960. userId: this.$store.state.user.name,
  961. functionId: 101001,
  962. serialNumber: '101001Table1CustomerGroupName1',
  963. tableId: '101001Table1',
  964. tableName: '客户信息表',
  965. columnProp: 'customerGroupName1',
  966. headerAlign: 'center',
  967. align: 'left',
  968. columnLabel: '客户组1',
  969. columnHidden: false,
  970. columnImage: false,
  971. columnSortable: false,
  972. sortLv: 0,
  973. status: true,
  974. fixed: '',
  975. columnWidth: 160
  976. },
  977. {
  978. userId: this.$store.state.user.name,
  979. functionId: 101001,
  980. serialNumber: '101001Table1CustomerGroupName2',
  981. tableId: '101001Table1',
  982. tableName: '客户信息表',
  983. columnProp: 'customerGroupName2',
  984. headerAlign: 'center',
  985. align: 'left',
  986. columnLabel: '客户组2',
  987. columnHidden: false,
  988. columnImage: false,
  989. columnSortable: false,
  990. sortLv: 0,
  991. status: true,
  992. fixed: '',
  993. columnWidth: 160
  994. },
  995. {
  996. userId: this.$store.state.user.name,
  997. functionId: 101001,
  998. serialNumber: '101001Table1CustomerCurrency',
  999. tableId: '101001Table1',
  1000. tableName: '客户信息表',
  1001. columnProp: 'customerCurrency',
  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: 100
  1012. },
  1013. {
  1014. userId: this.$store.state.user.name,
  1015. functionId: 101001,
  1016. serialNumber: '101001Table1TurnoverOfYear',
  1017. tableId: '101001Table1',
  1018. tableName: '客户信息表',
  1019. columnProp: 'turnoverOfYear',
  1020. headerAlign: 'center',
  1021. align: 'right',
  1022. columnLabel: '年营业额',
  1023. columnHidden: false,
  1024. columnImage: false,
  1025. columnSortable: false,
  1026. sortLv: 0,
  1027. status: true,
  1028. fixed: '',
  1029. columnWidth: 100
  1030. },
  1031. {
  1032. userId: this.$store.state.user.name,
  1033. functionId: 101001,
  1034. serialNumber: '101001Table1PotentialRevenueOfYear',
  1035. tableId: '101001Table1',
  1036. tableName: '客户信息表',
  1037. columnProp: 'potentialRevenueOfYear',
  1038. headerAlign: 'center',
  1039. align: 'right',
  1040. columnLabel: '年潜在投入',
  1041. columnHidden: false,
  1042. columnImage: false,
  1043. columnSortable: false,
  1044. sortLv: 0,
  1045. status: true,
  1046. fixed: '',
  1047. columnWidth: 100
  1048. },
  1049. {
  1050. userId: this.$store.state.user.name,
  1051. functionId: 101001,
  1052. serialNumber: '101001Table1ImportantCustomer',
  1053. tableId: '101001Table1',
  1054. tableName: '客户信息表',
  1055. columnProp: 'importantCustomer',
  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: 100
  1066. },
  1067. {
  1068. userId: this.$store.state.user.name,
  1069. functionId: 101001,
  1070. serialNumber: '101001Table1CustomerStatus',
  1071. tableId: '101001Table1',
  1072. tableName: '客户信息表',
  1073. columnProp: 'customerStatusDesc',
  1074. headerAlign: 'center',
  1075. align: 'center',
  1076. columnLabel: '客户状态',
  1077. columnHidden: false,
  1078. columnImage: false,
  1079. columnSortable: false,
  1080. sortLv: 0,
  1081. status: true,
  1082. fixed: '',
  1083. columnWidth: 100
  1084. },
  1085. {
  1086. userId: this.$store.state.user.name,
  1087. functionId: 101001,
  1088. serialNumber: '101001Table1CustomerType',
  1089. tableId: '101001Table1',
  1090. tableName: '客户信息表',
  1091. columnProp: 'customerType',
  1092. headerAlign: 'center',
  1093. align: 'center',
  1094. columnLabel: '客户类型',
  1095. columnHidden: false,
  1096. columnImage: false,
  1097. columnSortable: false,
  1098. sortLv: 0,
  1099. status: true,
  1100. fixed: '',
  1101. columnWidth: 100
  1102. },
  1103. {
  1104. userId: this.$store.state.user.name,
  1105. functionId: 101001,
  1106. serialNumber: '101001Table1CreateDate',
  1107. tableId: '101001Table1',
  1108. tableName: '客户信息表',
  1109. columnProp: 'createDate',
  1110. headerAlign: 'center',
  1111. align: 'center',
  1112. columnLabel: '创建时间',
  1113. columnHidden: false,
  1114. columnImage: false,
  1115. columnSortable: false,
  1116. sortLv: 0,
  1117. status: true,
  1118. fixed: '',
  1119. columnWidth: 170
  1120. },
  1121. {
  1122. userId: this.$store.state.user.name,
  1123. functionId: 101001,
  1124. serialNumber: '101001Table1CreateBy',
  1125. tableId: '101001Table1',
  1126. tableName: '客户信息表',
  1127. columnProp: 'createBy',
  1128. headerAlign: 'center',
  1129. align: 'center',
  1130. columnLabel: '创建人',
  1131. columnHidden: false,
  1132. columnImage: false,
  1133. columnSortable: false,
  1134. sortLv: 0,
  1135. status: true,
  1136. fixed: '',
  1137. columnWidth: 100
  1138. },
  1139. {
  1140. userId: this.$store.state.user.name,
  1141. functionId: 101001,
  1142. serialNumber: '101001Table1UpdateDate',
  1143. tableId: '101001Table1',
  1144. tableName: '客户信息表',
  1145. columnProp: 'updateDate',
  1146. headerAlign: 'center',
  1147. align: 'center',
  1148. columnLabel: '更新时间',
  1149. columnHidden: false,
  1150. columnImage: false,
  1151. columnSortable: false,
  1152. sortLv: 0,
  1153. status: true,
  1154. fixed: '',
  1155. columnWidth: 170
  1156. },
  1157. {
  1158. userId: this.$store.state.user.name,
  1159. functionId: 101001,
  1160. serialNumber: '101001Table1UpdateBy',
  1161. tableId: '101001Table1',
  1162. tableName: '客户信息表',
  1163. columnProp: 'updateBy',
  1164. headerAlign: 'center',
  1165. align: 'center',
  1166. columnLabel: '更新人',
  1167. columnHidden: false,
  1168. columnImage: false,
  1169. columnSortable: false,
  1170. sortLv: 0,
  1171. status: true,
  1172. fixed: '',
  1173. columnWidth: 100
  1174. }
  1175. ],
  1176. customerContactArray: [
  1177. {
  1178. userId: this.$store.state.user.name,
  1179. functionId: 101001,
  1180. serialNumber: '101001Table2ContactName',
  1181. tableId: '101001Table2',
  1182. tableName: '客户联系人表',
  1183. columnProp: 'contactName',
  1184. headerAlign: 'center',
  1185. align: 'left',
  1186. columnLabel: '联系人',
  1187. columnHidden: false,
  1188. columnImage: false,
  1189. columnSortable: false,
  1190. sortLv: 0,
  1191. status: true,
  1192. fixed: '',
  1193. columnWidth: 120
  1194. },
  1195. {
  1196. userId: this.$store.state.user.name,
  1197. functionId: 101001,
  1198. serialNumber: '101001Table2ContactPhoneNumber1',
  1199. tableId: '101001Table2',
  1200. tableName: '客户联系人表',
  1201. columnProp: 'contactPhoneNumber1',
  1202. headerAlign: 'center',
  1203. align: 'left',
  1204. columnLabel: '联系电话',
  1205. columnHidden: false,
  1206. columnImage: false,
  1207. columnSortable: false,
  1208. sortLv: 0,
  1209. status: true,
  1210. fixed: '',
  1211. columnWidth: 160
  1212. },
  1213. {
  1214. userId: this.$store.state.user.name,
  1215. functionId: 101001,
  1216. serialNumber: '101001Table2ContactLandlineNumber',
  1217. tableId: '101001Table2',
  1218. tableName: '客户联系人表',
  1219. columnProp: 'contactLandlineNumber',
  1220. headerAlign: 'center',
  1221. align: 'left',
  1222. columnLabel: '座机',
  1223. columnHidden: false,
  1224. columnImage: false,
  1225. columnSortable: false,
  1226. sortLv: 0,
  1227. status: true,
  1228. fixed: '',
  1229. columnWidth: 160
  1230. },
  1231. {
  1232. userId: this.$store.state.user.name,
  1233. functionId: 101001,
  1234. serialNumber: '101001Table2Position',
  1235. tableId: '101001Table2',
  1236. tableName: '客户联系人表',
  1237. columnProp: 'position',
  1238. headerAlign: 'center',
  1239. align: 'left',
  1240. columnLabel: '公司职务',
  1241. columnHidden: false,
  1242. columnImage: false,
  1243. columnSortable: false,
  1244. sortLv: 0,
  1245. status: true,
  1246. fixed: '',
  1247. columnWidth: 100
  1248. },
  1249. {
  1250. userId: this.$store.state.user.name,
  1251. functionId: 101001,
  1252. serialNumber: '101001Table2DepartmentName',
  1253. tableId: '101001Table2',
  1254. tableName: '客户联系人表',
  1255. columnProp: 'departmentName',
  1256. headerAlign: 'center',
  1257. align: 'left',
  1258. columnLabel: '部门',
  1259. columnHidden: false,
  1260. columnImage: false,
  1261. columnSortable: false,
  1262. sortLv: 0,
  1263. status: true,
  1264. fixed: '',
  1265. columnWidth: 100
  1266. },
  1267. {
  1268. userId: this.$store.state.user.name,
  1269. functionId: 101001,
  1270. serialNumber: '101001Table2Mailbox',
  1271. tableId: '101001Table2',
  1272. tableName: '客户联系人表',
  1273. columnProp: 'mailbox',
  1274. headerAlign: 'center',
  1275. align: 'left',
  1276. columnLabel: '邮箱',
  1277. columnHidden: false,
  1278. columnImage: false,
  1279. columnSortable: false,
  1280. sortLv: 0,
  1281. status: true,
  1282. fixed: '',
  1283. columnWidth: 160
  1284. },
  1285. {
  1286. userId: this.$store.state.user.name,
  1287. functionId: 101001,
  1288. serialNumber: '101001Table2PrimaryContact',
  1289. tableId: '101001Table2',
  1290. tableName: '客户联系人表',
  1291. columnProp: 'primaryContact',
  1292. headerAlign: 'center',
  1293. align: 'center',
  1294. columnLabel: '默认联系人',
  1295. columnHidden: false,
  1296. columnImage: false,
  1297. columnSortable: false,
  1298. sortLv: 0,
  1299. status: true,
  1300. fixed: '',
  1301. columnWidth: 100
  1302. },
  1303. {
  1304. userId: this.$store.state.user.name,
  1305. functionId: 101001,
  1306. serialNumber: '101001Table2ContactStatus',
  1307. tableId: '101001Table2',
  1308. tableName: '客户联系人表',
  1309. columnProp: 'contactStatus',
  1310. headerAlign: 'center',
  1311. align: 'center',
  1312. columnLabel: '状态',
  1313. columnHidden: false,
  1314. columnImage: false,
  1315. columnSortable: false,
  1316. sortLv: 0,
  1317. status: true,
  1318. fixed: '',
  1319. columnWidth: 100
  1320. },
  1321. {
  1322. userId: this.$store.state.user.name,
  1323. functionId: 101001,
  1324. serialNumber: '101001Table2CreateDate',
  1325. tableId: '101001Table2',
  1326. tableName: '客户联系人表',
  1327. columnProp: 'createDate',
  1328. headerAlign: 'center',
  1329. align: 'center',
  1330. columnLabel: '创建时间',
  1331. columnHidden: false,
  1332. columnImage: false,
  1333. columnSortable: false,
  1334. sortLv: 0,
  1335. status: true,
  1336. fixed: '',
  1337. columnWidth: 170
  1338. },
  1339. {
  1340. userId: this.$store.state.user.name,
  1341. functionId: 101001,
  1342. serialNumber: '101001Table2CreateBy',
  1343. tableId: '101001Table2',
  1344. tableName: '客户联系人表',
  1345. columnProp: 'createBy',
  1346. headerAlign: 'center',
  1347. align: 'center',
  1348. columnLabel: '创建人',
  1349. columnHidden: false,
  1350. columnImage: false,
  1351. columnSortable: false,
  1352. sortLv: 0,
  1353. status: true,
  1354. fixed: '',
  1355. columnWidth: 100
  1356. },
  1357. {
  1358. userId: this.$store.state.user.name,
  1359. functionId: 101001,
  1360. serialNumber: '101001Table2UpdateDate',
  1361. tableId: '101001Table2',
  1362. tableName: '客户联系人表',
  1363. columnProp: 'updateDate',
  1364. headerAlign: 'center',
  1365. align: 'center',
  1366. columnLabel: '更新时间',
  1367. columnHidden: false,
  1368. columnImage: false,
  1369. columnSortable: false,
  1370. sortLv: 0,
  1371. status: true,
  1372. fixed: '',
  1373. columnWidth: 170
  1374. },
  1375. {
  1376. userId: this.$store.state.user.name,
  1377. functionId: 101001,
  1378. serialNumber: '101001Table2UpdateBy',
  1379. tableId: '101001Table2',
  1380. tableName: '客户联系人表',
  1381. columnProp: 'updateBy',
  1382. headerAlign: 'center',
  1383. align: 'center',
  1384. columnLabel: '更新人',
  1385. columnHidden: false,
  1386. columnImage: false,
  1387. columnSortable: false,
  1388. sortLv: 0,
  1389. status: true,
  1390. fixed: '',
  1391. columnWidth: 100
  1392. }
  1393. ],
  1394. customerAddressArray: [
  1395. {
  1396. userId: this.$store.state.user.name,
  1397. functionId: 101001,
  1398. serialNumber: '101001Table3AddressType',
  1399. tableId: '101001Table3',
  1400. tableName: '客户联系地址表',
  1401. columnProp: 'addressTypeName',
  1402. headerAlign: 'center',
  1403. align: 'center',
  1404. columnLabel: '地址类型',
  1405. columnHidden: false,
  1406. columnImage: false,
  1407. columnSortable: false,
  1408. sortLv: 0,
  1409. status: true,
  1410. fixed: '',
  1411. columnWidth: 100
  1412. },
  1413. {
  1414. userId: this.$store.state.user.name,
  1415. functionId: 101001,
  1416. serialNumber: '101001Table3CompanyName',
  1417. tableId: '101001Table3',
  1418. tableName: '客户联系地址表',
  1419. columnProp: 'companyName',
  1420. headerAlign: 'center',
  1421. align: 'left',
  1422. columnLabel: '公司名称',
  1423. columnHidden: false,
  1424. columnImage: false,
  1425. columnSortable: false,
  1426. sortLv: 0,
  1427. status: true,
  1428. fixed: '',
  1429. columnWidth: 160
  1430. },
  1431. {
  1432. userId: this.$store.state.user.name,
  1433. functionId: 101001,
  1434. serialNumber: '101001Table3AddressName',
  1435. tableId: '101001Table3',
  1436. tableName: '客户联系地址表',
  1437. columnProp: 'addressName',
  1438. headerAlign: 'center',
  1439. align: 'left',
  1440. columnLabel: '地址',
  1441. columnHidden: false,
  1442. columnImage: false,
  1443. columnSortable: false,
  1444. sortLv: 0,
  1445. status: true,
  1446. fixed: '',
  1447. columnWidth: 160
  1448. },
  1449. {
  1450. userId: this.$store.state.user.name,
  1451. functionId: 101001,
  1452. serialNumber: '101001Table3DefaultAddress',
  1453. tableId: '101001Table3',
  1454. tableName: '客户联系地址表',
  1455. columnProp: 'defaultAddress',
  1456. headerAlign: 'center',
  1457. align: 'center',
  1458. columnLabel: '默认地址',
  1459. columnHidden: false,
  1460. columnImage: false,
  1461. columnSortable: false,
  1462. sortLv: 0,
  1463. status: true,
  1464. fixed: '',
  1465. columnWidth: 100
  1466. },
  1467. {
  1468. userId: this.$store.state.user.name,
  1469. functionId: 101001,
  1470. serialNumber: '101001Table3AddressStatus',
  1471. tableId: '101001Table3',
  1472. tableName: '客户联系地址表',
  1473. columnProp: 'addressStatus',
  1474. headerAlign: 'center',
  1475. align: 'center',
  1476. columnLabel: '状态',
  1477. columnHidden: false,
  1478. columnImage: false,
  1479. columnSortable: false,
  1480. sortLv: 0,
  1481. status: true,
  1482. fixed: '',
  1483. columnWidth: 100
  1484. },
  1485. {
  1486. userId: this.$store.state.user.name,
  1487. functionId: 101001,
  1488. serialNumber: '101001Table3CreateDate',
  1489. tableId: '101001Table3',
  1490. tableName: '客户联系地址表',
  1491. columnProp: 'createDate',
  1492. headerAlign: 'center',
  1493. align: 'center',
  1494. columnLabel: '创建时间',
  1495. columnHidden: false,
  1496. columnImage: false,
  1497. columnSortable: false,
  1498. sortLv: 0,
  1499. status: true,
  1500. fixed: '',
  1501. columnWidth: 170
  1502. },
  1503. {
  1504. userId: this.$store.state.user.name,
  1505. functionId: 101001,
  1506. serialNumber: '101001Table3CreateBy',
  1507. tableId: '101001Table3',
  1508. tableName: '客户联系地址表',
  1509. columnProp: 'createBy',
  1510. headerAlign: 'center',
  1511. align: 'center',
  1512. columnLabel: '创建人',
  1513. columnHidden: false,
  1514. columnImage: false,
  1515. columnSortable: false,
  1516. sortLv: 0,
  1517. status: true,
  1518. fixed: '',
  1519. columnWidth: 100
  1520. },
  1521. {
  1522. userId: this.$store.state.user.name,
  1523. functionId: 101001,
  1524. serialNumber: '101001Table3UpdateDate',
  1525. tableId: '101001Table3',
  1526. tableName: '客户联系地址表',
  1527. columnProp: 'updateDate',
  1528. headerAlign: 'center',
  1529. align: 'center',
  1530. columnLabel: '更新时间',
  1531. columnHidden: false,
  1532. columnImage: false,
  1533. columnSortable: false,
  1534. sortLv: 0,
  1535. status: true,
  1536. fixed: '',
  1537. columnWidth: 170
  1538. },
  1539. {
  1540. userId: this.$store.state.user.name,
  1541. functionId: 101001,
  1542. serialNumber: '101001Table3UpdateBy',
  1543. tableId: '101001Table3',
  1544. tableName: '客户联系地址表',
  1545. columnProp: 'updateBy',
  1546. headerAlign: 'center',
  1547. align: 'center',
  1548. columnLabel: '更新人',
  1549. columnHidden: false,
  1550. columnImage: false,
  1551. columnSortable: false,
  1552. sortLv: 0,
  1553. status: true,
  1554. fixed: '',
  1555. columnWidth: 100
  1556. }
  1557. ],
  1558. projectInformationArray: [
  1559. {
  1560. userId: this.$store.state.user.name,
  1561. functionId: 101001,
  1562. serialNumber: '101001Table4ProjectName',
  1563. tableId: '101001Table4',
  1564. tableName: '客户项目信息表',
  1565. columnProp: 'projectName',
  1566. headerAlign: 'center',
  1567. align: 'left',
  1568. columnLabel: '项目名称',
  1569. columnHidden: false,
  1570. columnImage: false,
  1571. columnSortable: false,
  1572. sortLv: 0,
  1573. status: true,
  1574. fixed: '',
  1575. columnWidth: 160
  1576. },
  1577. {
  1578. userId: this.$store.state.user.name,
  1579. functionId: 101001,
  1580. serialNumber: '101001Table4ProjectType',
  1581. tableId: '101001Table4',
  1582. tableName: '客户项目信息表',
  1583. columnProp: 'projectType',
  1584. headerAlign: 'center',
  1585. align: 'center',
  1586. columnLabel: '项目类型',
  1587. columnHidden: false,
  1588. columnImage: false,
  1589. columnSortable: false,
  1590. sortLv: 0,
  1591. status: true,
  1592. fixed: '',
  1593. columnWidth: 100
  1594. },
  1595. {
  1596. userId: this.$store.state.user.name,
  1597. functionId: 101001,
  1598. serialNumber: '101001Table4ProjectDesc',
  1599. tableId: '101001Table4',
  1600. tableName: '客户项目信息表',
  1601. columnProp: 'projectDesc',
  1602. headerAlign: 'center',
  1603. align: 'left',
  1604. columnLabel: '项目描述',
  1605. columnHidden: false,
  1606. columnImage: false,
  1607. columnSortable: false,
  1608. sortLv: 0,
  1609. status: true,
  1610. fixed: '',
  1611. columnWidth: 160
  1612. },
  1613. {
  1614. userId: this.$store.state.user.name,
  1615. functionId: 101001,
  1616. serialNumber: '101001Table4Status',
  1617. tableId: '101001Table4',
  1618. tableName: '客户项目信息表',
  1619. columnProp: 'status',
  1620. headerAlign: 'center',
  1621. align: 'center',
  1622. columnLabel: '项目状态',
  1623. columnHidden: false,
  1624. columnImage: false,
  1625. columnSortable: false,
  1626. sortLv: 0,
  1627. status: true,
  1628. fixed: '',
  1629. columnWidth: 100
  1630. },
  1631. {
  1632. userId: this.$store.state.user.name,
  1633. functionId: 101001,
  1634. serialNumber: '101001Table4ProjectOwnerName',
  1635. tableId: '101001Table4',
  1636. tableName: '客户项目信息表',
  1637. columnProp: 'projectOwnerName',
  1638. headerAlign: 'center',
  1639. align: 'left',
  1640. columnLabel: '项目负责人',
  1641. columnHidden: false,
  1642. columnImage: false,
  1643. columnSortable: false,
  1644. sortLv: 0,
  1645. status: true,
  1646. fixed: '',
  1647. columnWidth: 130
  1648. },
  1649. {
  1650. userId: this.$store.state.user.name,
  1651. functionId: 101001,
  1652. serialNumber: '101001Table4CreateDate',
  1653. tableId: '101001Table4',
  1654. tableName: '客户项目信息表',
  1655. columnProp: 'createDate',
  1656. headerAlign: 'center',
  1657. align: 'center',
  1658. columnLabel: '创建时间',
  1659. columnHidden: false,
  1660. columnImage: false,
  1661. columnSortable: false,
  1662. sortLv: 0,
  1663. status: true,
  1664. fixed: '',
  1665. columnWidth: 170
  1666. },
  1667. {
  1668. userId: this.$store.state.user.name,
  1669. functionId: 101001,
  1670. serialNumber: '101001Table4CreateBy',
  1671. tableId: '101001Table4',
  1672. tableName: '客户项目信息表',
  1673. columnProp: 'createBy',
  1674. headerAlign: 'center',
  1675. align: 'center',
  1676. columnLabel: '创建人',
  1677. columnHidden: false,
  1678. columnImage: false,
  1679. columnSortable: false,
  1680. sortLv: 0,
  1681. status: true,
  1682. fixed: '',
  1683. columnWidth: 100
  1684. },
  1685. {
  1686. userId: this.$store.state.user.name,
  1687. functionId: 101001,
  1688. serialNumber: '101001Table4UpdateDate',
  1689. tableId: '101001Table4',
  1690. tableName: '客户项目信息表',
  1691. columnProp: 'updateDate',
  1692. headerAlign: 'center',
  1693. align: 'center',
  1694. columnLabel: '更新时间',
  1695. columnHidden: false,
  1696. columnImage: false,
  1697. columnSortable: false,
  1698. sortLv: 0,
  1699. status: true,
  1700. fixed: '',
  1701. columnWidth: 170
  1702. },
  1703. {
  1704. userId: this.$store.state.user.name,
  1705. functionId: 101001,
  1706. serialNumber: '101001Table4UpdateBy',
  1707. tableId: '101001Table4',
  1708. tableName: '客户项目信息表',
  1709. columnProp: 'updateBy',
  1710. headerAlign: 'center',
  1711. align: 'center',
  1712. columnLabel: '更新人',
  1713. columnHidden: false,
  1714. columnImage: false,
  1715. columnSortable: false,
  1716. sortLv: 0,
  1717. status: true,
  1718. fixed: '',
  1719. columnWidth: 100
  1720. }
  1721. ],
  1722. // ======== 必填规则 ========
  1723. rules: {
  1724. customerNo: [
  1725. {
  1726. required: true,
  1727. message: ' ',
  1728. trigger: ['blur', 'change']
  1729. }
  1730. ],
  1731. customerDesc: [
  1732. {
  1733. required: true,
  1734. message: ' ',
  1735. trigger: ['blur', 'change']
  1736. }
  1737. ],
  1738. customerCurrency: [
  1739. {
  1740. required: true,
  1741. message: ' ',
  1742. trigger: ['blur', 'change']
  1743. }
  1744. ],
  1745. contactName: [
  1746. {
  1747. required: true,
  1748. message: ' ',
  1749. trigger: ['blur', 'change']
  1750. }
  1751. ],
  1752. contactPhoneNumber1: [
  1753. {
  1754. required: true,
  1755. message: ' ',
  1756. trigger: ['blur', 'change']
  1757. }
  1758. ],
  1759. importantCustomer: [
  1760. {
  1761. required: true,
  1762. message: ' ',
  1763. trigger: ['blur', 'change']
  1764. }
  1765. ],
  1766. customerStatus: [
  1767. {
  1768. required: true,
  1769. message: ' ',
  1770. trigger: ['blur', 'change']
  1771. }
  1772. ],
  1773. customerType: [
  1774. {
  1775. required: true,
  1776. message: ' ',
  1777. trigger: ['blur', 'change']
  1778. }
  1779. ],
  1780. },
  1781. contactRules: {
  1782. contactName: [
  1783. {
  1784. required: true,
  1785. message: ' ',
  1786. trigger: ['blur', 'change']
  1787. }
  1788. ],
  1789. position: [
  1790. {
  1791. required: true,
  1792. message: ' ',
  1793. trigger: ['blur', 'change']
  1794. }
  1795. ],
  1796. primaryContact: [
  1797. {
  1798. required: true,
  1799. message: ' ',
  1800. trigger: ['blur', 'change']
  1801. }
  1802. ],
  1803. contactStatus: [
  1804. {
  1805. required: true,
  1806. message: ' ',
  1807. trigger: ['blur', 'change']
  1808. }
  1809. ],
  1810. contactPhoneNumber1: [
  1811. {
  1812. required: true,
  1813. message: ' ',
  1814. trigger: ['blur', 'change']
  1815. }
  1816. ]
  1817. },
  1818. addressRules: {
  1819. addressName: [
  1820. {
  1821. required: true,
  1822. message: ' ',
  1823. trigger: ['blur', 'change']
  1824. }
  1825. ],
  1826. defaultAddress: [
  1827. {
  1828. required: true,
  1829. message: ' ',
  1830. trigger: ['blur', 'change']
  1831. }
  1832. ],
  1833. addressStatus: [
  1834. {
  1835. required: true,
  1836. message: ' ',
  1837. trigger: ['blur', 'change']
  1838. }
  1839. ],
  1840. addressType: [
  1841. {
  1842. required: true,
  1843. message: ' ',
  1844. trigger: ['blur', 'change']
  1845. }
  1846. ]
  1847. },
  1848. projectInformationRules: {
  1849. projectType: [
  1850. {
  1851. required: true,
  1852. message: ' ',
  1853. trigger: ['blur', 'change']
  1854. }
  1855. ],
  1856. projectName: [
  1857. {
  1858. required: true,
  1859. message: ' ',
  1860. trigger: ['blur', 'change']
  1861. }
  1862. ],
  1863. projectSourceDesc: [
  1864. {
  1865. required: true,
  1866. message: ' ',
  1867. trigger: ['blur', 'change']
  1868. }
  1869. ],
  1870. priorityDesc: [
  1871. {
  1872. required: true,
  1873. message: ' ',
  1874. trigger: ['blur', 'change']
  1875. }
  1876. ],
  1877. needDate: [
  1878. {
  1879. required: true,
  1880. message: ' ',
  1881. trigger: ['blur', 'change']
  1882. }
  1883. ],
  1884. projectManagerName: [
  1885. {
  1886. required: true,
  1887. message: ' ',
  1888. trigger: ['blur', 'change']
  1889. }
  1890. ],
  1891. projectOwnerName: [
  1892. {
  1893. required: true,
  1894. message: ' ',
  1895. trigger: ['blur', 'change']
  1896. }
  1897. ],
  1898. userRoleName: [
  1899. {
  1900. required: true,
  1901. message: ' ',
  1902. trigger: ['blur', 'change']
  1903. }
  1904. ]
  1905. },
  1906. // ======== 复选数据集 ========
  1907. customerSelections: [],
  1908. contactSelections: [],
  1909. addressSelections: [],
  1910. projectInformationSelections: [],
  1911. // ======== 选中的当前行数据 ========
  1912. customerCurrentRow: {},
  1913. contactCurrentRow: {},
  1914. addressCurrentRow: {},
  1915. projectInformationCurrentRow: {},
  1916. // ======== 模态框开关控制 ========
  1917. modalFlag: false,
  1918. modalDisableFlag: false,
  1919. detailModalFlag: false,
  1920. contactModalFlag: false,
  1921. contactDetailModalFlag: false,
  1922. addressModalFlag: false,
  1923. addressDetailModalFlag: false,
  1924. projectInformationModalFlag: false,
  1925. projectInformationDetailModalFlag: false,
  1926. // ======== 客户项目相关 ========
  1927. operatorList: [],
  1928. projectManagerList: [],
  1929. projectOwnerList: [],
  1930. userRoleList: [],
  1931. managerFlag: false,
  1932. ownerFlag: false,
  1933. userRoleFlag: false,
  1934. }
  1935. },
  1936. mounted() {
  1937. this.$nextTick(() => {
  1938. this.height = window.innerHeight / 2 - 30
  1939. /*第二个表格高度的动态调整*/
  1940. this.secondHeight = window.innerHeight / 2 - 206
  1941. })
  1942. },
  1943. created() {
  1944. this.getDataList()
  1945. },
  1946. methods: {
  1947. // ======== 分页相关方法 ========
  1948. /**
  1949. * 每页数
  1950. * @param val
  1951. */
  1952. sizeChangeHandle(val) {
  1953. this.pageSize = val
  1954. this.pageIndex = 1
  1955. this.getDataList()
  1956. },
  1957. /**
  1958. * 当前页
  1959. * @param val
  1960. */
  1961. currentChangeHandle(val) {
  1962. this.pageIndex = val
  1963. this.getDataList()
  1964. },
  1965. // ======== 页签切换相关方法 ========
  1966. /**
  1967. * 列表表格选择替换
  1968. * @param tab
  1969. * @param event
  1970. */
  1971. tabClick(tab, event) {
  1972. // 刷新列表数据
  1973. this.refreshCurrentTabTable()
  1974. },
  1975. /**
  1976. * 当前值发生变化的时候修改
  1977. * @param row
  1978. * @param oldRow
  1979. */
  1980. changeCurrentRow(row, oldRow) {
  1981. // 判断是否是获取焦点的事件
  1982. if (row) {
  1983. this.customerCurrentRow = JSON.parse(JSON.stringify(row))
  1984. //刷新当前页表
  1985. this.refreshCurrentTabTable()
  1986. }
  1987. },
  1988. /**
  1989. * 刷新页签的table数据
  1990. */
  1991. refreshCurrentTabTable() {
  1992. if (this.activeTable === 'customer_contact') {
  1993. this.getCustomerContactList()
  1994. } else if (this.activeTable === 'customer_address') {
  1995. this.getCustomerAddressList()
  1996. } else if (this.activeTable === 'project_information') {
  1997. this.getProjectInformationList()
  1998. }
  1999. },
  2000. // ======== 列表数据刷新方法 ========
  2001. /**
  2002. * 获取数据列表
  2003. */
  2004. getDataList() {
  2005. this.searchData.limit = this.pageSize
  2006. this.searchData.page = this.pageIndex
  2007. customerInformationSearch(this.searchData).then(({data}) => {
  2008. if (data.code === 0) {
  2009. this.dataList = data.page.list
  2010. this.pageIndex = data.page.currPage
  2011. this.pageSize = data.page.pageSize
  2012. this.totalPage = data.page.totalCount
  2013. // 判断是否全部存在数据
  2014. if (this.totalPage > 0) {
  2015. // 设置选中行
  2016. this.$refs.customerTable.setCurrentRow(this.dataList[0])
  2017. // 加载当前的页签的table
  2018. this.refreshCurrentTabTable()
  2019. }
  2020. }
  2021. })
  2022. },
  2023. /**
  2024. * 刷新客户联系人的列表
  2025. */
  2026. getCustomerContactList() {
  2027. let tempData = {
  2028. site: this.$store.state.user.site,
  2029. customerNo: this.customerCurrentRow.customerNo
  2030. }
  2031. customerContactSearch(tempData).then(({data}) => {
  2032. if (data && data.code === 0) {
  2033. this.contactList = data.rows
  2034. } else {
  2035. this.contactList = []
  2036. }
  2037. });
  2038. },
  2039. /**
  2040. * 刷新客户联系地址的列表
  2041. */
  2042. getCustomerAddressList() {
  2043. let tempData = {
  2044. site: this.$store.state.user.site,
  2045. customerNo: this.customerCurrentRow.customerNo,
  2046. customerDesc: this.customerCurrentRow.customerDesc
  2047. }
  2048. customerAddressSearch(tempData).then(({data}) => {
  2049. if (data && data.code === 0) {
  2050. this.addressList = data.rows
  2051. } else {
  2052. this.addressList = []
  2053. }
  2054. });
  2055. },
  2056. /**
  2057. * 刷新客户项目信息的列表
  2058. */
  2059. getProjectInformationList() {
  2060. let tempData = {
  2061. site: this.$store.state.user.site,
  2062. customerId: this.customerCurrentRow.customerNo
  2063. }
  2064. projectInformationSearch(tempData).then(({data}) => {
  2065. if (data && data.code === 0) {
  2066. this.projectInformationList = data.rows
  2067. } else {
  2068. this.projectInformationList = []
  2069. }
  2070. });
  2071. },
  2072. // ======== 新增模态框 ========
  2073. /**
  2074. * 客户信息新增模态框
  2075. */
  2076. addModal() {
  2077. this.modalData = {
  2078. flag: '1',
  2079. title: '客户新增',
  2080. site: this.$store.state.user.site,
  2081. customerNo: '',
  2082. customerDesc: '',
  2083. customerDescription: '',
  2084. customerIndustry: '',
  2085. customerCurrency: '',
  2086. turnoverOfYear: '',
  2087. potentialRevenueOfYear: '',
  2088. importantCustomer: '',
  2089. customerGroupId1: '',
  2090. customerGroupId2: '',
  2091. customerGroupName1: '',
  2092. customerGroupName2: '',
  2093. customerStatus: 'Y',
  2094. customerType: '潜在客户',
  2095. addressName: '',
  2096. defaultAddress: '',
  2097. addressStatus: '启用',
  2098. addressType: '类型一',
  2099. createBy: this.$store.state.user.name,
  2100. type: ''
  2101. }
  2102. this.modalDisableFlag = false
  2103. this.detailModalFlag = false
  2104. this.modalFlag = true
  2105. },
  2106. /**
  2107. * 客户联系人新增模态框
  2108. */
  2109. contactSaveModal() {
  2110. this.contactModalData = {
  2111. flag: '1',
  2112. title: '联系人新增',
  2113. site: this.$store.state.user.site,
  2114. customerNo: this.customerCurrentRow.customerNo,
  2115. contactId: '',
  2116. contactName: '',
  2117. contactLandlineNumber: '',
  2118. contactPhoneNumber1: '',
  2119. contactPhoneNumber2: '',
  2120. contactPhoneNumber3: '',
  2121. position: '',
  2122. departmentName: '',
  2123. mailbox: '',
  2124. primaryContact: 'N',
  2125. contactStatus: '启用',
  2126. remark: '',
  2127. createDate: '',
  2128. createBy: this.$store.state.user.name,
  2129. }
  2130. if (this.contactList.length === 0) {
  2131. this.contactModalData.primaryContact = 'Y'
  2132. }
  2133. this.contactDetailModalFlag = false
  2134. this.contactModalFlag = true
  2135. },
  2136. /**
  2137. * 客户联系地址新增模态框
  2138. */
  2139. addressSaveModal() {
  2140. this.addressModalData = {
  2141. flag: '1',
  2142. title: '联系地址新增',
  2143. site: this.$store.state.user.site,
  2144. customerNo: this.customerCurrentRow.customerNo,
  2145. addressId: '',
  2146. addressName: '',
  2147. companyName: this.customerCurrentRow.customerDesc,
  2148. defaultAddress: 'N',
  2149. addressStatus: '启用',
  2150. addressType: '',
  2151. remark: '',
  2152. createDate: '',
  2153. createBy: this.$store.state.user.name,
  2154. }
  2155. if (this.addressList.length === 0) {
  2156. this.addressModalData.defaultAddress = 'Y'
  2157. }
  2158. this.addressDetailModalFlag = false
  2159. this.addressModalFlag = true
  2160. },
  2161. /**
  2162. * 客户项目信息新增模态框
  2163. */
  2164. projectInformationSaveModal() {
  2165. this.projectInformationModalData = {
  2166. flag: '1',
  2167. title: '项目信息新增',
  2168. site: this.$store.state.user.site,
  2169. id: 0,
  2170. projectLevel: '',
  2171. projectId: '',
  2172. projectType: '',
  2173. projectTypeDb: '',
  2174. customerId: this.customerCurrentRow.customerNo,
  2175. customerName: this.customerCurrentRow.customerDesc,
  2176. projectName: '',
  2177. projectDesc: '',
  2178. projectSource: '',
  2179. projectSourceDesc: '',
  2180. priority: '',
  2181. priorityDesc: '',
  2182. needDate: '',
  2183. projectManagerName: '',
  2184. projectOwnerName: '',
  2185. customerRemark: '',
  2186. remark: '',
  2187. status: '',
  2188. userRoleName: '',
  2189. projectManagerList: [],
  2190. projectOwnerList: [],
  2191. userRoleList: [],
  2192. createDate: '',
  2193. createBy: this.$store.state.user.name
  2194. }
  2195. this.projectInformationDetailModalFlag = false
  2196. // this.projectInformationModalFlag = true
  2197. this.addOrUpdateVisible = true;
  2198. this.addOrUpdate = "save";
  2199. this.$nextTick(() => {
  2200. this.$refs.addOrUpdate.initCustomer(this.projectInformationModalData);
  2201. this.$refs.addOrUpdate.init();
  2202. })
  2203. },
  2204. // ======== 编辑模态框 ========
  2205. /**
  2206. * 客户信息编辑模态框
  2207. * @param row
  2208. */
  2209. updateModal(row) {
  2210. this.modalData = {
  2211. flag: '2',
  2212. title: '客户编辑',
  2213. site: row.site,
  2214. customerNo: row.customerNo,
  2215. customerDesc: row.customerDesc,
  2216. customerDescription: row.customerDescription,
  2217. customerIndustry: row.customerIndustry,
  2218. customerCurrency: row.customerCurrency,
  2219. turnoverOfYear: row.turnoverOfYear,
  2220. potentialRevenueOfYear: row.potentialRevenueOfYear,
  2221. customerGroupId1: row.customerGroupId1,
  2222. customerGroupId2: row.customerGroupId2,
  2223. customerGroupName1: row.customerGroupName1,
  2224. customerGroupName2: row.customerGroupName2,
  2225. importantCustomer: row.importantCustomer,
  2226. customerStatus: row.customerStatus,
  2227. customerType: row.customerType,
  2228. companyName: row.companyName,
  2229. jobDescription: row.jobDescription,
  2230. contactStatus: row.contactStatus,
  2231. addressName: row.addressName,
  2232. defaultAddress: 'Y',
  2233. updateBy: this.$store.state.user.name,
  2234. type: ''
  2235. }
  2236. this.modalDisableFlag = true
  2237. this.detailModalFlag = false
  2238. this.modalFlag = true
  2239. },
  2240. /**
  2241. * 客户联系人编辑模态框
  2242. * @param row
  2243. */
  2244. updateContactModal(row) {
  2245. this.contactModalData = {
  2246. flag: '2',
  2247. title: '联系人编辑',
  2248. site: row.site,
  2249. customerNo: row.customerNo,
  2250. contactId: row.contactId,
  2251. contactName: row.contactName,
  2252. contactLandlineNumber: row.contactLandlineNumber,
  2253. contactPhoneNumber1: row.contactPhoneNumber1,
  2254. contactPhoneNumber2: row.contactPhoneNumber2,
  2255. contactPhoneNumber3: row.contactPhoneNumber3,
  2256. position: row.position,
  2257. departmentName: row.departmentName,
  2258. mailbox: row.mailbox,
  2259. primaryContact: row.primaryContact,
  2260. contactStatus: row.contactStatus,
  2261. remark: row.remark,
  2262. updateDate: '',
  2263. updateBy: this.$store.state.user.name
  2264. }
  2265. this.contactDetailModalFlag = false
  2266. this.contactModalFlag = true
  2267. },
  2268. /**
  2269. * 客户联系地址编辑模态框
  2270. * @param row
  2271. */
  2272. updateAddressModal(row) {
  2273. this.addressModalData = {
  2274. flag: '2',
  2275. title: '联系地址编辑',
  2276. site: row.site,
  2277. customerNo: row.customerNo,
  2278. addressId: row.addressId,
  2279. addressName: row.addressName,
  2280. companyName: row.companyName,
  2281. defaultAddress: row.defaultAddress,
  2282. addressStatus: row.addressStatus,
  2283. addressType: row.addressType,
  2284. remark: row.remark,
  2285. updateDate: '',
  2286. updateBy: this.$store.state.user.name
  2287. }
  2288. this.addressDetailModalFlag = false
  2289. this.addressModalFlag = true
  2290. },
  2291. /**
  2292. * 客户项目信息编辑模态框
  2293. * @param row
  2294. */
  2295. updateProjectInformationModal(row) {
  2296. this.projectInformationModalData = {
  2297. flag: '2',
  2298. title: '项目信息编辑',
  2299. site: row.site,
  2300. id: row.id,
  2301. projectLevel: row.projectLevel,
  2302. projectId: row.projectId,
  2303. projectType: row.projectType,
  2304. projectTypeDb: row.projectTypeDb,
  2305. customerId: row.customerId,
  2306. customerName: row.customerName,
  2307. projectName: row.projectName,
  2308. projectDesc: row.projectDesc,
  2309. projectSource: row.projectSource,
  2310. projectSourceDesc: row.projectSourceDesc,
  2311. priority: row.priority,
  2312. priorityDesc: row.priorityDesc,
  2313. needDate: row.needDate,
  2314. projectManagerName: row.projectManagerName,
  2315. projectOwnerName: row.projectOwnerName,
  2316. customerRemark: row.customerRemark,
  2317. remark: row.remark,
  2318. status: row.status,
  2319. userRoleName: row.userRoleName,
  2320. projectManagerList: [],
  2321. projectOwnerList: [],
  2322. userRoleList: [],
  2323. updateDate: '',
  2324. updateBy: this.$store.state.user.name
  2325. }
  2326. // 查询项目经理、负责人、权限列表
  2327. let inData = {
  2328. site: this.projectInformationModalData.site,
  2329. projectId: this.projectInformationModalData.projectId,
  2330. type: 'manager'
  2331. }
  2332. searchProjectTeamStr(inData).then(({data}) => {
  2333. this.projectInformationModalData.projectManagerList = data.rows
  2334. })
  2335. let inData2 = {
  2336. site: this.projectInformationModalData.site,
  2337. projectId: this.projectInformationModalData.projectId,
  2338. type: 'owner'
  2339. }
  2340. searchProjectTeamStr(inData2).then(({data}) => {
  2341. this.projectInformationModalData.projectOwnerList = data.rows
  2342. })
  2343. let inData3 = {
  2344. site: this.projectInformationModalData.site,
  2345. projectId: this.projectInformationModalData.projectId
  2346. }
  2347. searchUserRoll(inData3).then(({data}) => {
  2348. this.projectInformationModalData.userRoleList = data.rows
  2349. })
  2350. this.projectInformationDetailModalFlag = false
  2351. // this.projectInformationModalFlag = true
  2352. this.addOrUpdateVisible = true
  2353. this.addOrUpdate = "update";
  2354. this.$nextTick(() => {
  2355. this.$refs.addOrUpdate.init(row.id)
  2356. })
  2357. },
  2358. // ======== 详情模态框 ========
  2359. /**
  2360. * 客户信息详情模态框
  2361. * @param row
  2362. */
  2363. detailModal(row) {
  2364. this.modalData = {
  2365. flag: '3',
  2366. title: '客户详情',
  2367. site: row.site,
  2368. customerNo: row.customerNo,
  2369. customerDesc: row.customerDesc,
  2370. customerDescription: row.customerDescription,
  2371. customerIndustry: row.customerIndustry,
  2372. customerCurrency: row.customerCurrency,
  2373. turnoverOfYear: row.turnoverOfYear,
  2374. potentialRevenueOfYear: row.potentialRevenueOfYear,
  2375. customerGroupId1: row.customerGroupId1,
  2376. customerGroupId2: row.customerGroupId2,
  2377. customerGroupName1: row.customerGroupName1,
  2378. customerGroupName2: row.customerGroupName2,
  2379. importantCustomer: row.importantCustomer,
  2380. customerStatus: row.customerStatus,
  2381. customerType: row.customerType,
  2382. companyName: row.companyName,
  2383. jobDescription: row.jobDescription,
  2384. contactStatus: row.contactStatus,
  2385. addressName: row.addressName,
  2386. type: ''
  2387. }
  2388. this.modalDisableFlag = true
  2389. this.detailModalFlag = true
  2390. this.modalFlag = true
  2391. },
  2392. /**
  2393. * 客户联系人详情模态框
  2394. * @param row
  2395. */
  2396. detailContactModal(row) {
  2397. this.contactModalData = {
  2398. flag: '3',
  2399. title: '联系人详情',
  2400. site: row.site,
  2401. customerNo: row.customerNo,
  2402. contactId: row.contactId,
  2403. contactName: row.contactName,
  2404. contactLandlineNumber: row.contactLandlineNumber,
  2405. contactPhoneNumber1: row.contactPhoneNumber1,
  2406. contactPhoneNumber2: row.contactPhoneNumber2,
  2407. contactPhoneNumber3: row.contactPhoneNumber3,
  2408. position: row.position,
  2409. departmentName: row.departmentName,
  2410. mailbox: row.mailbox,
  2411. primaryContact: row.primaryContact,
  2412. contactStatus: row.contactStatus,
  2413. remark: row.remark
  2414. }
  2415. this.contactDetailModalFlag = true
  2416. this.contactModalFlag = true
  2417. },
  2418. /**
  2419. * 客户联系地址详情模态框
  2420. * @param row
  2421. */
  2422. detailAddressModal(row) {
  2423. this.addressModalData = {
  2424. flag: '3',
  2425. title: '联系地址详情',
  2426. site: row.site,
  2427. customerNo: row.customerNo,
  2428. addressId: row.addressId,
  2429. addressName: row.addressName,
  2430. companyName: row.companyName,
  2431. defaultAddress: row.defaultAddress,
  2432. addressStatus: row.addressStatus,
  2433. addressType: row.addressType,
  2434. remark: row.remark,
  2435. }
  2436. this.addressDetailModalFlag = true
  2437. this.addressModalFlag = true
  2438. },
  2439. /**
  2440. * 客户项目信息详情模态框
  2441. * @param row
  2442. */
  2443. detailProjectInformationModal(row) {
  2444. this.projectInformationModalData = {
  2445. flag: '3',
  2446. title: '项目信息详情',
  2447. site: row.site,
  2448. projectId: row.projectId,
  2449. projectType: row.projectType,
  2450. projectTypeDb: row.projectTypeDb,
  2451. customerId: row.customerId,
  2452. customerName: row.customerName,
  2453. projectName: row.projectName,
  2454. projectDesc: row.projectDesc,
  2455. projectSource: row.projectSource,
  2456. projectSourceDesc: row.projectSourceDesc,
  2457. priority: row.priority,
  2458. priorityDesc: row.priorityDesc,
  2459. needDate: row.needDate,
  2460. projectManagerName: row.projectManagerName,
  2461. projectOwnerName: row.projectOwnerName,
  2462. customerRemark: row.customerRemark,
  2463. remark: row.remark,
  2464. status: row.status,
  2465. userRoleName: row.userRoleName,
  2466. buNo: row.buNo,
  2467. buDesc: row.buDesc
  2468. }
  2469. this.projectInformationDetailModalFlag = true
  2470. this.projectInformationModalFlag = true
  2471. },
  2472. // ======== 删除方法 ========
  2473. /**
  2474. * 客户信息删除
  2475. */
  2476. delModal() {
  2477. if (this.customerSelections.length === 0) {
  2478. this.$message.warning('请勾选要删除的客户!')
  2479. return
  2480. }
  2481. this.$confirm(`是否删除这 ` + this.customerSelections.length + ` 条客户信息?`, '提示', {
  2482. confirmButtonText: '确定',
  2483. cancelButtonText: '取消',
  2484. type: 'warning'
  2485. }).then(() => {
  2486. let tempData = {
  2487. informationList: this.customerSelections
  2488. }
  2489. customerInformationDelete(tempData).then(({data}) => {
  2490. if (data && data.code === 0) {
  2491. this.getDataList()
  2492. this.customerSelections = []
  2493. this.$message({
  2494. message: '操作成功',
  2495. type: 'success',
  2496. duration: 1500,
  2497. onClose: () => {
  2498. }
  2499. })
  2500. } else {
  2501. this.$alert(data.msg, '错误', {
  2502. confirmButtonText: '确定'
  2503. })
  2504. }
  2505. })
  2506. }).catch(() => {
  2507. })
  2508. },
  2509. /**
  2510. * 客户联系人删除
  2511. */
  2512. contactDeleteModal() {
  2513. if (this.contactSelections.length === 0) {
  2514. this.$message.warning('请勾选要删除的联系人!')
  2515. return
  2516. }
  2517. this.$confirm(`是否删除这 ` + this.contactSelections.length + ` 条联系人信息?`, '提示', {
  2518. confirmButtonText: '确定',
  2519. cancelButtonText: '取消',
  2520. type: 'warning'
  2521. }).then(() => {
  2522. let tempContactName = null
  2523. for (let i = 0; i < this.contactSelections.length; i++) {
  2524. // 判断是否有默认联系人
  2525. if (this.contactSelections[i].primaryContact === 'Y') {
  2526. tempContactName = this.contactSelections[i].contactName
  2527. }
  2528. }
  2529. if (tempContactName !== '' || tempContactName != null) {
  2530. this.$confirm(tempContactName + ` 为默认联系人,是否确认删除?`, '提示', {
  2531. confirmButtonText: '确定',
  2532. cancelButtonText: '取消',
  2533. type: 'warning'
  2534. }).then(() => {
  2535. let tempData = {
  2536. contactList: this.contactSelections
  2537. }
  2538. customerContactDelete(tempData).then(({data}) => {
  2539. if (data && data.code === 0) {
  2540. this.getCustomerContactList()
  2541. this.contactSelections = []
  2542. this.$message({
  2543. message: '操作成功',
  2544. type: 'success',
  2545. duration: 1500,
  2546. onClose: () => {
  2547. }
  2548. })
  2549. } else {
  2550. this.$alert(data.msg, '错误', {
  2551. confirmButtonText: '确定'
  2552. })
  2553. }
  2554. })
  2555. }).catch(() => {
  2556. })
  2557. } else {
  2558. let tempData = {
  2559. contactList: this.contactSelections
  2560. }
  2561. customerContactDelete(tempData).then(({data}) => {
  2562. if (data && data.code === 0) {
  2563. this.getCustomerContactList()
  2564. this.contactSelections = []
  2565. this.$message({
  2566. message: '操作成功',
  2567. type: 'success',
  2568. duration: 1500,
  2569. onClose: () => {
  2570. }
  2571. })
  2572. } else {
  2573. this.$alert(data.msg, '错误', {
  2574. confirmButtonText: '确定'
  2575. })
  2576. }
  2577. })
  2578. }
  2579. }).catch(() => {
  2580. })
  2581. },
  2582. /**
  2583. * 客户联系地址删除
  2584. */
  2585. addressDeleteModal() {
  2586. if (this.addressSelections.length === 0) {
  2587. this.$message.warning('请勾选要删除的地址!')
  2588. return
  2589. }
  2590. this.$confirm(`是否删除这 ` + this.addressSelections.length + ` 条地址?`, '提示', {
  2591. confirmButtonText: '确定',
  2592. cancelButtonText: '取消',
  2593. type: 'warning'
  2594. }).then(() => {
  2595. let tempAddressName = null
  2596. for (let i = 0; i < this.addressSelections.length; i++) {
  2597. // 判断是否有主联系地址
  2598. if (this.addressSelections[i].defaultAddress === 'Y') {
  2599. tempAddressName = this.addressSelections[i].addressName
  2600. }
  2601. }
  2602. if (tempAddressName !== '' || tempAddressName != null) {
  2603. this.$confirm(tempAddressName + ` 为主联系地址,是否确认删除?`, '提示', {
  2604. confirmButtonText: '确定',
  2605. cancelButtonText: '取消',
  2606. type: 'warning'
  2607. }).then(() => {
  2608. let tempData = {
  2609. addressList: this.addressSelections
  2610. }
  2611. customerAddressDelete(tempData).then(({data}) => {
  2612. if (data && data.code === 0) {
  2613. this.getCustomerAddressList()
  2614. this.addressSelections = []
  2615. this.$message({
  2616. message: '操作成功',
  2617. type: 'success',
  2618. duration: 1500,
  2619. onClose: () => {
  2620. }
  2621. })
  2622. } else {
  2623. this.$alert(data.msg, '错误', {
  2624. confirmButtonText: '确定'
  2625. })
  2626. }
  2627. })
  2628. }).catch(() => {
  2629. })
  2630. } else {
  2631. let tempData = {
  2632. addressList: this.addressSelections
  2633. }
  2634. customerAddressDelete(tempData).then(({data}) => {
  2635. if (data && data.code === 0) {
  2636. this.getCustomerAddressList()
  2637. this.addressSelections = []
  2638. this.$message({
  2639. message: '操作成功',
  2640. type: 'success',
  2641. duration: 1500,
  2642. onClose: () => {
  2643. }
  2644. })
  2645. } else {
  2646. this.$alert(data.msg, '错误', {
  2647. confirmButtonText: '确定'
  2648. })
  2649. }
  2650. })
  2651. }
  2652. }).catch(() => {
  2653. })
  2654. },
  2655. // ======== 新增/编辑方法 ========
  2656. /**
  2657. * 客户信息新增/编辑
  2658. */
  2659. saveData() {
  2660. if (this.modalData.customerNo === '' || this.modalData.customerNo == null) {
  2661. this.$message.warning('请输入客户代码!')
  2662. return
  2663. }
  2664. if (this.modalData.customerDesc === '' || this.modalData.customerDesc == null) {
  2665. this.$message.warning('请输入客户名称!')
  2666. return
  2667. }
  2668. // if (this.modalData.customerIndustry === '' || this.modalData.customerIndustry == null) {
  2669. // this.$message.warning('请输入行业!')
  2670. // return
  2671. // }
  2672. if (this.modalData.customerCurrency === '' || this.modalData.customerCurrency == null) {
  2673. this.$message.warning('请输入币种!')
  2674. return
  2675. }
  2676. if (this.modalData.importantCustomer === '' || this.modalData.importantCustomer == null) {
  2677. this.$message.warning('请选择重要程度!')
  2678. return
  2679. }
  2680. if (this.modalData.customerStatus === '' || this.modalData.customerStatus == null) {
  2681. this.$message.warning('请选择客户状态!')
  2682. return
  2683. }
  2684. if (this.modalData.customerType === '' || this.modalData.customerType == null) {
  2685. this.$message.warning('请选择客户类型!')
  2686. return
  2687. }
  2688. if (this.modalData.flag === '1') {
  2689. // this.modalData.primaryContact = 'Y'
  2690. // this.modalData.contactStatus = '启用'
  2691. customerInformationSave(this.modalData).then(({data}) => {
  2692. if (data && data.code === 0) {
  2693. this.getDataList()
  2694. this.modalFlag = false
  2695. this.$message({
  2696. message: '操作成功',
  2697. type: 'success',
  2698. duration: 1500,
  2699. onClose: () => {
  2700. }
  2701. })
  2702. } else {
  2703. this.$alert(data.msg, '错误', {
  2704. confirmButtonText: '确定'
  2705. })
  2706. }
  2707. })
  2708. } else {
  2709. customerInformationEdit(this.modalData).then(({data}) => {
  2710. if (data && data.code === 0) {
  2711. this.getDataList()
  2712. this.modalFlag = false
  2713. this.$message({
  2714. message: '操作成功',
  2715. type: 'success',
  2716. duration: 1500,
  2717. onClose: () => {
  2718. }
  2719. })
  2720. } else {
  2721. this.$alert(data.msg, '错误', {
  2722. confirmButtonText: '确定'
  2723. })
  2724. }
  2725. })
  2726. }
  2727. },
  2728. /**
  2729. * 客户联系人新增/编辑
  2730. */
  2731. saveContactData() {
  2732. if (this.contactModalData.contactName === '' || this.contactModalData.contactName == null) {
  2733. this.$message.warning('请输入联系人!')
  2734. return
  2735. }
  2736. if (this.contactModalData.contactPhoneNumber1 === '' || this.contactModalData.contactPhoneNumber1 == null) {
  2737. this.$message.warning('请输入联系人电话(1)!')
  2738. return
  2739. }
  2740. if (this.contactModalData.primaryContact === '' || this.contactModalData.primaryContact == null) {
  2741. this.$message.warning('请选择是否为默认联系人!')
  2742. return
  2743. }
  2744. if (this.contactModalData.contactStatus === '' || this.contactModalData.contactStatus == null) {
  2745. this.$message.warning('请选择状态!')
  2746. return
  2747. }
  2748. if (this.contactModalData.flag === '1') {
  2749. customerContactSave(this.contactModalData).then(({data}) => {
  2750. if (data && data.code === 0) {
  2751. this.getCustomerContactList()
  2752. this.contactModalFlag = false
  2753. this.$message({
  2754. message: '操作成功',
  2755. type: 'success',
  2756. duration: 1500,
  2757. onClose: () => {
  2758. }
  2759. })
  2760. } else {
  2761. this.$alert(data.msg, '错误', {
  2762. confirmButtonText: '确定'
  2763. })
  2764. }
  2765. })
  2766. } else {
  2767. customerContactEdit(this.contactModalData).then(({data}) => {
  2768. if (data && data.code === 0) {
  2769. this.getCustomerContactList()
  2770. this.contactModalFlag = false
  2771. this.$message({
  2772. message: '操作成功',
  2773. type: 'success',
  2774. duration: 1500,
  2775. onClose: () => {
  2776. }
  2777. })
  2778. } else {
  2779. this.$alert(data.msg, '错误', {
  2780. confirmButtonText: '确定'
  2781. })
  2782. }
  2783. })
  2784. }
  2785. },
  2786. /**
  2787. * 客户联系地址新增/编辑
  2788. */
  2789. saveAddressData() {
  2790. if (this.addressModalData.addressName === '' || this.addressModalData.addressName == null) {
  2791. this.$message.warning('请输入地址!')
  2792. return
  2793. }
  2794. if (this.addressModalData.defaultAddress === '' || this.addressModalData.defaultAddress == null) {
  2795. this.$message.warning('请选择是否为主要地址!')
  2796. return
  2797. }
  2798. if (this.addressModalData.addressStatus === '' || this.addressModalData.addressStatus == null) {
  2799. this.$message.warning('请选择状态!')
  2800. return
  2801. }
  2802. if (this.addressModalData.addressType === '' || this.addressModalData.addressType == null) {
  2803. this.$message.warning('请选择地址类型!')
  2804. return
  2805. }
  2806. if (this.addressModalData.flag === '1') {
  2807. customerAddressSave(this.addressModalData).then(({data}) => {
  2808. if (data && data.code === 0) {
  2809. this.getCustomerAddressList()
  2810. this.addressModalFlag = false
  2811. this.$message({
  2812. message: '操作成功',
  2813. type: 'success',
  2814. duration: 1500,
  2815. onClose: () => {
  2816. }
  2817. })
  2818. } else {
  2819. this.$alert(data.msg, '错误', {
  2820. confirmButtonText: '确定'
  2821. })
  2822. }
  2823. })
  2824. } else {
  2825. customerAddressEdit(this.addressModalData).then(({data}) => {
  2826. if (data && data.code === 0) {
  2827. this.getCustomerAddressList()
  2828. this.addressModalFlag = false
  2829. this.$message({
  2830. message: '操作成功',
  2831. type: 'success',
  2832. duration: 1500,
  2833. onClose: () => {
  2834. }
  2835. })
  2836. } else {
  2837. this.$alert(data.msg, '错误', {
  2838. confirmButtonText: '确定'
  2839. })
  2840. }
  2841. })
  2842. }
  2843. },
  2844. /**
  2845. * 客户项目信息新增/编辑
  2846. */
  2847. saveProjectInformationData() {
  2848. if (this.projectInformationModalData.projectTypeDb === '' || this.projectInformationModalData.projectTypeDb == null) {
  2849. this.$message.warning('请选择项目类型!')
  2850. return
  2851. }
  2852. if (this.projectInformationModalData.projectName === '' || this.projectInformationModalData.projectName == null) {
  2853. this.$message.warning('请输入项目名称!')
  2854. return
  2855. }
  2856. if (this.projectInformationModalData.projectSource === '' || this.projectInformationModalData.projectSource == null) {
  2857. this.$message.warning('请选择项目来源!')
  2858. return
  2859. }
  2860. if (this.projectInformationModalData.priority === '' || this.projectInformationModalData.priority == null) {
  2861. this.$message.warning('请选择优先级!')
  2862. return
  2863. }
  2864. if (this.projectInformationModalData.needDate === '' || this.projectInformationModalData.needDate == null) {
  2865. this.$message.warning('请选择要求日期!')
  2866. return
  2867. }
  2868. if (this.projectInformationModalData.projectManagerName === '' || this.projectInformationModalData.projectManagerName == null) {
  2869. this.$message.warning('请选择项目经理!')
  2870. return
  2871. }
  2872. if (this.projectInformationModalData.projectOwnerName === '' || this.projectInformationModalData.projectOwnerName == null) {
  2873. this.$message.warning('请选择项目负责人!')
  2874. return
  2875. }
  2876. if (this.projectInformationModalData.userRoleName === '' || this.projectInformationModalData.userRoleName == null) {
  2877. this.$message.warning('请选择权限!')
  2878. return
  2879. }
  2880. saveProjectInfo(this.projectInformationModalData).then(({data}) => {
  2881. if (data && data.code === 0) {
  2882. this.getProjectInformationList()
  2883. this.projectInformationModalFlag = false
  2884. this.$message({
  2885. message: '操作成功',
  2886. type: 'success',
  2887. duration: 1500,
  2888. onClose: () => {
  2889. }
  2890. })
  2891. } else {
  2892. this.$alert(data.msg, '错误', {
  2893. confirmButtonText: '确定'
  2894. })
  2895. }
  2896. })
  2897. },
  2898. // ======== 列表单机选中方法 ========
  2899. /**
  2900. * 单机选中客户信息
  2901. * @param row
  2902. */
  2903. customerClickRow(row) {
  2904. this.customerCurrentRow = JSON.parse(JSON.stringify(row))
  2905. },
  2906. /**
  2907. * 单机选中客户联系人
  2908. * @param row
  2909. */
  2910. contactClickRow(row) {
  2911. this.$refs.contactTable.toggleRowSelection(row)
  2912. this.contactCurrentRow = JSON.parse(JSON.stringify(row))
  2913. },
  2914. /**
  2915. * 单机选中客户联系地址
  2916. * @param row
  2917. */
  2918. addressClickRow(row) {
  2919. this.$refs.addressTable.toggleRowSelection(row)
  2920. this.addressCurrentRow = JSON.parse(JSON.stringify(row))
  2921. },
  2922. /**
  2923. * 单机选中客户项目信息
  2924. * @param row
  2925. */
  2926. projectInformationClickRow(row, column) {
  2927. if (column.label !== '项目号') {
  2928. this.$refs.projectInformationTable.toggleRowSelection(row)
  2929. this.projectInformationCurrentRow = JSON.parse(JSON.stringify(row))
  2930. }
  2931. },
  2932. // ======== 列表复选方法 ========
  2933. /**
  2934. * 复选客户信息
  2935. * @param val
  2936. */
  2937. selectionCustomer(val) {
  2938. this.customerSelections = val
  2939. },
  2940. /**
  2941. * 复选客户联系人
  2942. * @param val
  2943. */
  2944. selectionContact(val) {
  2945. this.contactSelections = val
  2946. },
  2947. /**
  2948. * 复选客户联系人
  2949. * @param val
  2950. */
  2951. selectionAddress(val) {
  2952. this.addressSelections = val
  2953. },
  2954. /**
  2955. * 复选客户项目信息
  2956. * @param val
  2957. */
  2958. selectionProjectInformation(val) {
  2959. this.projectInformationSelections = val
  2960. },
  2961. // 客户组1输入校验
  2962. customerGroupBlur(tagNo) {
  2963. if (this.modalData.customerGroupId1 != null && this.modalData.customerGroupId1 !== '') {
  2964. let tempData = {
  2965. tagno: tagNo,
  2966. conditionSql: " and customer_group_id = '" + this.modalData.customerGroupId1 + "'" + " and site = '" + this.modalData.site + "'"
  2967. }
  2968. verifyData(tempData).then(({data}) => {
  2969. if (data && data.code === 0) {
  2970. if (data.baseListData.length > 0) {
  2971. this.modalData.customerGroupId1 = data.baseListData[0].customer_group_id
  2972. this.modalData.customerGroupName1 = data.baseListData[0].customer_group_name
  2973. return
  2974. }
  2975. }
  2976. })
  2977. }
  2978. this.modalData.customerGroupName1 = ''
  2979. },
  2980. // 客户组2输入校验
  2981. customerGroupBlur2(tagNo) {
  2982. if (this.modalData.customerGroupId2 != null && this.modalData.customerGroupId2 !== '') {
  2983. let tempData = {
  2984. tagno: tagNo,
  2985. conditionSql: " and customer_group_id = '" + this.modalData.customerGroupId2 + "'" + " and site = '" + this.modalData.site + "'"
  2986. }
  2987. verifyData(tempData).then(({data}) => {
  2988. if (data && data.code === 0) {
  2989. if (data.baseListData.length > 0) {
  2990. this.modalData.customerGroupId2 = data.baseListData[0].customer_group_id
  2991. this.modalData.customerGroupName2 = data.baseListData[0].customer_group_name
  2992. return
  2993. }
  2994. }
  2995. })
  2996. }
  2997. this.modalData.customerGroupName2 = ''
  2998. },
  2999. // ======== chooseList相关方法 ========
  3000. /**
  3001. * 获取基础数据列表S
  3002. * @param val
  3003. * @param type
  3004. */
  3005. getBaseList(val, type) {
  3006. this.tagNo = val
  3007. this.tagNo1 = type
  3008. this.$nextTick(() => {
  3009. let strVal = ''
  3010. if (val === 1010) {
  3011. if (type === 1) {
  3012. strVal = this.projectInformationModalData.projectTypeDb
  3013. }
  3014. }
  3015. if (val === 102) {
  3016. if (type === 1) {
  3017. strVal = this.projectInformationModalData.customerId
  3018. }
  3019. }
  3020. if (val === 1011) {
  3021. if (type === 1) {
  3022. strVal = this.projectInformationModalData.projectSource
  3023. }
  3024. }
  3025. if (val === 1012) {
  3026. if (type === 1) {
  3027. strVal = this.projectInformationModalData.priority
  3028. }
  3029. }
  3030. if (val === 120) {
  3031. strVal = this.modalData.customerGroupId1
  3032. } else if (val === 121) {
  3033. strVal = this.modalData.customerGroupId2
  3034. }
  3035. this.$refs.baseList.init(val, strVal)
  3036. })
  3037. },
  3038. /**
  3039. * 列表方法的回调
  3040. * @param val
  3041. */
  3042. getBaseData(val) {
  3043. if (this.tagNo === 1010) {
  3044. if (this.tagNo1 === 1) {
  3045. this.projectInformationModalData.projectTypeDb = val.Base_id
  3046. this.projectInformationModalData.projectType = val.Base_desc
  3047. }
  3048. }
  3049. if (this.tagNo === 102) {
  3050. if (this.tagNo1 === 1) {
  3051. this.projectInformationModalData.customerId = val.Customer_no
  3052. this.projectInformationModalData.customerName = val.Customer_desc
  3053. }
  3054. }
  3055. if (this.tagNo === 1011) {
  3056. if (this.tagNo1 === 1) {
  3057. this.projectInformationModalData.projectSource = val.Base_id
  3058. this.projectInformationModalData.projectSourceDesc = val.Base_desc
  3059. }
  3060. }
  3061. if (this.tagNo === 1012) {
  3062. if (this.tagNo1 === 1) {
  3063. this.projectInformationModalData.priority = val.Base_id
  3064. this.projectInformationModalData.priorityDesc = val.Base_desc
  3065. }
  3066. }
  3067. if (this.tagNo === 120) {
  3068. this.modalData.customerGroupId1 = val.customer_group_id
  3069. this.modalData.customerGroupName1 = val.customer_group_name
  3070. } else if (this.tagNo === 121) {
  3071. this.modalData.customerGroupId2 = val.customer_group_id
  3072. this.modalData.customerGroupName2 = val.customer_group_name
  3073. }
  3074. },
  3075. /**
  3076. * 项目经理选择模态框
  3077. */
  3078. managerChooseModal() {
  3079. // 清空穿梭框的选中值
  3080. this.$nextTick(() => {
  3081. this.$refs.managerTransfer.$refs.leftPanel.checked = []
  3082. this.$refs.managerTransfer.$refs.rightPanel.checked = []
  3083. })
  3084. let inData = {
  3085. site: this.projectInformationModalData.site,
  3086. projectId: this.projectInformationModalData.projectId,
  3087. }
  3088. searchOperatorWithSite(inData).then(({data}) => {
  3089. this.operatorList = data.rows
  3090. })
  3091. this.projectManagerList = JSON.parse(JSON.stringify(this.projectInformationModalData.projectManagerList))
  3092. this.managerFlag = true
  3093. },
  3094. /**
  3095. * 项目经理选择
  3096. */
  3097. saveManagerList() {
  3098. let projectManagerName = ''
  3099. for (let i = 0; i < this.projectManagerList.length; i++) {
  3100. let select = this.operatorList.filter(item => item.operatorId === this.projectManagerList[i])
  3101. if (select.length > 0) {
  3102. projectManagerName += select[0].operatorName + ';'
  3103. }
  3104. }
  3105. this.projectInformationModalData.projectManagerName = projectManagerName
  3106. this.projectInformationModalData.projectManagerList = JSON.parse(JSON.stringify(this.projectManagerList))
  3107. this.managerFlag = false
  3108. },
  3109. /**
  3110. * 项目负责人选择模态框
  3111. */
  3112. ownerChooseModal() {
  3113. // 清空穿梭框的选中值
  3114. this.$nextTick(() => {
  3115. this.$refs.ownerTransfer.$refs.leftPanel.checked = []
  3116. this.$refs.ownerTransfer.$refs.rightPanel.checked = []
  3117. })
  3118. let inData = {
  3119. site: this.projectInformationModalData.site,
  3120. projectId: this.projectInformationModalData.projectId,
  3121. }
  3122. searchOperatorWithSite(inData).then(({data}) => {
  3123. this.operatorList = data.rows
  3124. })
  3125. this.projectOwnerList = JSON.parse(JSON.stringify(this.projectInformationModalData.projectOwnerList))
  3126. this.ownerFlag = true
  3127. },
  3128. /**
  3129. * 项目负责人选择
  3130. */
  3131. saveOwnerList() {
  3132. let projectOwnerName = ''
  3133. for (let i = 0; i < this.projectOwnerList.length; i++) {
  3134. let select = this.operatorList.filter(item => item.operatorId === this.projectOwnerList[i])
  3135. if (select.length > 0) {
  3136. projectOwnerName += select[0].operatorName + ';'
  3137. }
  3138. }
  3139. this.projectInformationModalData.projectOwnerName = projectOwnerName
  3140. this.projectInformationModalData.projectOwnerList = JSON.parse(JSON.stringify(this.projectOwnerList))
  3141. this.ownerFlag = false
  3142. },
  3143. /**
  3144. * 项目权限模态框
  3145. */
  3146. userRollModal() {
  3147. this.userRoleList = JSON.parse(JSON.stringify(this.projectInformationModalData.userRoleList))
  3148. this.userRoleFlag = true
  3149. },
  3150. changeAll(row) {
  3151. if (row.checkAll) {
  3152. row.searchCheck = true
  3153. row.updateCheck = true
  3154. row.downCheck = true
  3155. row.deleteCheck = true
  3156. row.searchFlag = 'Y'
  3157. row.updateFlag = 'Y'
  3158. row.downFlag = 'Y'
  3159. row.deleteFlag = 'Y'
  3160. } else {
  3161. row.searchCheck = false
  3162. row.updateCheck = false
  3163. row.downCheck = false
  3164. row.deleteCheck = false
  3165. row.searchFlag = 'N'
  3166. row.updateFlag = 'N'
  3167. row.downFlag = 'N'
  3168. row.deleteFlag = 'N'
  3169. }
  3170. },
  3171. changeCheck(row, type) {
  3172. if (type === 1) {
  3173. if (row.searchCheck) {
  3174. row.searchFlag = 'Y'
  3175. } else {
  3176. row.searchFlag = 'N'
  3177. }
  3178. }
  3179. if (type === 2) {
  3180. if (row.updateCheck) {
  3181. row.updateFlag = 'Y'
  3182. } else {
  3183. row.updateFlag = 'N'
  3184. }
  3185. }
  3186. if (type === 3) {
  3187. if (row.downCheck) {
  3188. row.downFlag = 'Y'
  3189. } else {
  3190. row.downFlag = 'N'
  3191. }
  3192. }
  3193. if (type === 4) {
  3194. if (row.deleteCheck) {
  3195. row.deleteFlag = 'Y'
  3196. } else {
  3197. row.deleteFlag = 'N'
  3198. }
  3199. }
  3200. if (row.searchCheck && row.updateCheck && row.downCheck && row.deleteCheck) {
  3201. row.checkAll = true
  3202. } else {
  3203. row.checkAll = false
  3204. }
  3205. this.$forceUpdate();
  3206. },
  3207. saveUserList() {
  3208. let name = ''
  3209. for (let i = 0; i < this.userRoleList.length; i++) {
  3210. if (this.userRoleList[i].searchCheck || this.userRoleList[i].updateCheck || this.userRoleList[i].downCheck || this.userRoleList[i].deleteCheck) {
  3211. name += this.userRoleList[i].userDisplay + ';'
  3212. }
  3213. }
  3214. this.projectInformationModalData.userRoleName = name
  3215. this.projectInformationModalData.userRoleList = JSON.parse(JSON.stringify(this.userRoleList))
  3216. this.userRoleFlag = false
  3217. },
  3218. // ======== 导出相关方法 ========
  3219. /**
  3220. * 导出excel
  3221. */
  3222. async createExportData() {
  3223. this.searchData.limit = -1
  3224. this.searchData.page = 1
  3225. await customerInformationSearch(this.searchData).then(({data}) => {
  3226. this.resultList = data.page.list
  3227. })
  3228. return this.resultList
  3229. },
  3230. startDownload() {
  3231. },
  3232. finishDownload() {
  3233. },
  3234. fields() {
  3235. let json = '{'
  3236. this.columnList.forEach((item, index) => {
  3237. if (index == this.columnList.length - 1) {
  3238. json += '"' + item.columnLabel + '"' + ':' + '"' + item.columnProp + '"'
  3239. } else {
  3240. json += '"' + item.columnLabel + '"' + ':' + '"' + item.columnProp + '"' + ','
  3241. }
  3242. })
  3243. json += '}'
  3244. let s = eval('(' + json + ')')
  3245. return s
  3246. },
  3247. clickProjectId(projectId) {
  3248. if (this.$router.resolve('project-projectInfo/projectInfo').resolved.name === '404') {
  3249. this.$alert('权限不足,访问失败', '警告', {confirmButtonText: '确定',});
  3250. } else {
  3251. this.$router.push({name: "project-projectInfo/projectInfo", params: {projectId: projectId},})
  3252. }
  3253. },
  3254. rowStyle({row}) {
  3255. if (this.customerCurrentRow.customerNo === row.customerNo) {
  3256. return {'background-color': '#E8F7F6', cursor: 'pointer'};
  3257. }
  3258. },
  3259. }
  3260. }
  3261. </script>
  3262. <style scoped lang="scss">
  3263. /deep/ .customer-tab .el-tabs__content {
  3264. padding: 0px !important;
  3265. }
  3266. .el-transfer-panel {
  3267. border: 2px solid #17b3a3;
  3268. border-radius: 4px;
  3269. overflow: hidden;
  3270. background: #fff;
  3271. display: inline-block;
  3272. vertical-align: middle;
  3273. width: 200px;
  3274. max-height: 100%;
  3275. -webkit-box-sizing: border-box;
  3276. box-sizing: border-box;
  3277. position: relative;
  3278. }
  3279. .el-transfer-panel .el-transfer-panel__header {
  3280. height: 40px;
  3281. line-height: 40px;
  3282. background: #17b3a3;
  3283. margin: 0;
  3284. padding-left: 15px;
  3285. border-bottom: 1px solid #17b3a3;
  3286. -webkit-box-sizing: border-box;
  3287. box-sizing: border-box;
  3288. color: #000;
  3289. }
  3290. .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label {
  3291. font-size: 14px;
  3292. color: #303133;
  3293. font-weight: 400;
  3294. }
  3295. .numInput /deep/ .el-input__inner {
  3296. text-align: right;
  3297. }
  3298. /deep/ .inlineNumber input::-webkit-outer-spin-button,
  3299. /deep/ .inlineNumber input::-webkit-inner-spin-button {
  3300. -webkit-appearance: none;
  3301. }
  3302. /deep/ .inlineNumber input[type="number"] {
  3303. -moz-appearance: textfield;
  3304. padding-right: 5px !important;
  3305. }
  3306. </style>