addActivityCellDia.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835
  1. <template>
  2. <div class="activity-cell-dia">
  3. <el-dialog
  4. v-dialogDrag
  5. :title="edit_id ? '修改活动' : '添加活动'"
  6. :visible.sync="isShow"
  7. :modal-append-to-body="false"
  8. @close="cancel"
  9. width="500px"
  10. >
  11. <el-form
  12. ref="form"
  13. :model="formData"
  14. :rules="rules"
  15. label-width="100px"
  16. label-position="left"
  17. >
  18. <!-- 第一个研究员 -->
  19. <el-form-item
  20. label="研究员"
  21. prop="selectResearchers[0].researcherId"
  22. v-if="formData.selectResearchers[0].researcherId"
  23. :rules="[
  24. { required: true, message: '请选择研究员', trigger: 'change' },
  25. ]"
  26. >
  27. <el-cascader
  28. v-model="formData.selectResearchers[0].researcherId"
  29. :options="researcherList"
  30. :show-all-levels="false"
  31. :disabled="isEditType !='RaiEdit'"
  32. :props="{
  33. expandTrigger: 'hover',
  34. children: 'ResearcherList',
  35. emitPath: false,
  36. multiple:true,
  37. }"
  38. clearable
  39. placeholder="请选择研究员"
  40. :key="cascaderIdx"
  41. />
  42. </el-form-item>
  43. <el-form-item
  44. label="开始时间"
  45. prop="selectResearchers[0].startTime"
  46. :rules="[
  47. { required: true, message: '请选择开始时间', trigger: 'blur' },
  48. ]"
  49. >
  50. <el-col :span="12">
  51. <date-picker
  52. format="MM.DD(ddd)"
  53. v-model="formData.selectResearchers[0].startDate"
  54. style="width: 100% !important"
  55. :clearable="false"
  56. :editable="false"
  57. >
  58. <template #icon-calendar>
  59. <i class="el-icon-date"></i>
  60. </template>
  61. </date-picker>
  62. </el-col>
  63. <el-col :span="12">
  64. <date-picker
  65. format="HH:mm"
  66. type="time"
  67. :show-second="false"
  68. v-model="formData.selectResearchers[0].startTime"
  69. style="width: 100% !important"
  70. :clearable="false"
  71. :editable="false"
  72. >
  73. <template #icon-calendar>
  74. <i class="el-icon-time"></i>
  75. </template>
  76. </date-picker>
  77. </el-col>
  78. </el-form-item>
  79. <el-form-item
  80. label="结束时间"
  81. prop="selectResearchers[0].endTime"
  82. :rules="[
  83. { required: true, message: '请选择结束时间', trigger: 'blur' },
  84. ]"
  85. >
  86. <el-col :span="12">
  87. <date-picker
  88. format="MM.DD(ddd)"
  89. v-model="formData.selectResearchers[0].endDate"
  90. style="width: 100% !important"
  91. :clearable="false"
  92. :editable="false"
  93. >
  94. <template #icon-calendar>
  95. <i class="el-icon-date"></i>
  96. </template>
  97. </date-picker>
  98. </el-col>
  99. <el-col :span="12">
  100. <date-picker
  101. format="HH:mm"
  102. type="time"
  103. :show-second="false"
  104. v-model="formData.selectResearchers[0].endTime"
  105. style="width: 100% !important"
  106. :clearable="false"
  107. :editable="false"
  108. >
  109. <template #icon-calendar>
  110. <i class="el-icon-time"></i>
  111. </template>
  112. </date-picker>
  113. </el-col>
  114. </el-form-item>
  115. <el-form-item label="活动类型" prop="activityType">
  116. <el-select
  117. v-model="formData.activityType"
  118. placeholder="请选择活动类型"
  119. :disabled="isEditType =='RaiEdit'"
  120. @change="activityTypeChange"
  121. >
  122. <el-option
  123. v-for="(type, index) in permission.activityTypeList"
  124. :key="index"
  125. :label="type"
  126. :value="type"
  127. ></el-option>
  128. </el-select>
  129. </el-form-item>
  130. <el-form-item
  131. :label="`${formData.activityType}形式`"
  132. v-if="formData.activityType === '路演' || formData.activityType === '沙龙'"
  133. prop="roadshowType"
  134. :rules="{ required: true, message: `请选择${formData.activityType}形式`, trigger: 'change' }"
  135. >
  136. <el-select
  137. v-model="formData.roadshowType"
  138. :placeholder="`请先选择${formData.activityType}形式`"
  139. >
  140. <el-option value="线上"></el-option>
  141. <el-option value="线下"></el-option>
  142. </el-select>
  143. </el-form-item>
  144. <el-form-item
  145. :label="`${formData.activityType}平台`"
  146. v-if="formData.roadshowType === '线上' && (formData.activityType === '路演' || formData.activityType === '沙龙')"
  147. prop="roadshowPlatform"
  148. :rules="{ required: true, message: `请选择${formData.activityType}平台`, trigger: blur }"
  149. >
  150. <el-input
  151. v-model="formData.roadshowPlatform"
  152. :placeholder="`请输入${formData.activityType}平台(eg:进门财经、腾讯会议)`"
  153. >
  154. </el-input>
  155. </el-form-item>
  156. <el-form-item
  157. :label="`${formData.activityType}城市`"
  158. v-if="formData.roadshowType === '线下' && (formData.activityType === '路演' || formData.activityType === '沙龙')"
  159. prop="roadshowCity"
  160. :rules="{ required: true, message: `请选择${formData.activityType}城市`, trigger: blur }"
  161. >
  162. <!-- <v-distpicker
  163. ref="roadshowCity"
  164. :province-source="province_sorce"
  165. :city-source="city_sorce"
  166. @selected="onChangeCity($event, 'roadshow')"
  167. hide-area
  168. ></v-distpicker> -->
  169. <search-dist-picker
  170. :provinceInfo="formData.roadshowCity[0]"
  171. :cityInfo="formData.roadshowCity[1]"
  172. :areaInfo="formData.District||''"
  173. :showArea="isRaiRole"
  174. @selected="onChangeCity($event,'roadshow')"/>
  175. </el-form-item>
  176. <el-form-item
  177. label="客户名称"
  178. v-if="formData.activityType === '路演'"
  179. prop="companyName"
  180. >
  181. <el-autocomplete
  182. v-model="formData.companyName"
  183. popper-class="company-autocomplete"
  184. :fetch-suggestions="companySearch"
  185. :trigger-on-focus="false"
  186. placeholder="请输入客户名称"
  187. @select="companySelect"
  188. clearable
  189. >
  190. <template slot-scope="{ item }">
  191. <div v-if="item.nodata" style="text-align: center">暂无数据</div>
  192. <div v-else>
  193. <div>{{ item.CompanyName }}</div>
  194. </div>
  195. </template>
  196. </el-autocomplete>
  197. </el-form-item>
  198. <!-- 客户信息 -->
  199. <div class="company-info" v-if="formData.activityType === '路演' && formData.companyId && companyInfo">
  200. <!-- ficc角色看ficc信息 -->
  201. <template v-if="!isRaiRole">
  202. <template v-if="companyInfo.EnglishCompany===1">
  203. <p>所属国家:{{companyInfo.EnglishCountry}}</p>
  204. <p>累计点击量:{{companyInfo.EnglishViewTotal}}</p>
  205. </template>
  206. <template v-else>
  207. <p>客户状态:{{ companyInfo.Status }}</p>
  208. <p>所属行业:{{ companyInfo.IndustryName }}</p>
  209. <p>开通品种:{{ companyInfo.PermissionName }}</p>
  210. <p>累计报告阅读次数:{{ companyInfo.ReportReadTotal }}</p>
  211. </template>
  212. </template>
  213. <!-- 权益角色看权益信息 -->
  214. <template v-else>
  215. <p>客户状态:{{companyInfo.Status}}</p>
  216. <p>所属行业:{{companyInfo.IndustryName}}</p>
  217. <p>行业权限:{{companyInfo.PermissionName}}</p>
  218. <p>累计互动次数:{{companyInfo.ReportReadTotal}}</p>
  219. </template>
  220. </div>
  221. <el-form-item
  222. label="会议形式"
  223. v-if="formData.activityType === '公开会议'"
  224. prop="meetingType"
  225. >
  226. <el-select
  227. v-model="formData.meetingType"
  228. placeholder="请先选择会议形式"
  229. >
  230. <el-option value="线上"></el-option>
  231. <el-option value="线下"></el-option>
  232. </el-select>
  233. </el-form-item>
  234. <el-form-item
  235. label="会议平台"
  236. v-if="formData.meetingType === '线上' && formData.activityType === '公开会议'"
  237. prop="meetingPlatform"
  238. >
  239. <el-input
  240. v-model="formData.meetingPlatform"
  241. placeholder="请输入会议平台(eg:进门财经、腾讯会议)"
  242. >
  243. </el-input>
  244. </el-form-item>
  245. <el-form-item
  246. label="会议城市"
  247. v-if="formData.meetingType === '线下' && formData.activityType === '公开会议'"
  248. prop="meetingCity"
  249. >
  250. <v-distpicker :province-source="province_sorce"
  251. :city-source="city_sorce"
  252. ref="meetingCity"
  253. @selected="onChangeCity($event, 'meeting')"
  254. hide-area
  255. ></v-distpicker>
  256. </el-form-item>
  257. <el-form-item
  258. label="会议主题"
  259. v-if="formData.activityType === '公开会议' || formData.activityType === '沙龙'"
  260. prop="meetingTheme"
  261. >
  262. <el-input
  263. v-model="formData.meetingTheme"
  264. placeholder="请输入会议主题"
  265. >
  266. </el-input>
  267. </el-form-item>
  268. <el-form-item
  269. label="合作方名称"
  270. v-if="formData.activityType === '公开会议'"
  271. prop="partnersName"
  272. >
  273. <el-input
  274. v-model="formData.partnersName"
  275. placeholder='请输入合作方名称(多个合作方用","隔开)'
  276. >
  277. </el-input>
  278. </el-form-item>
  279. <el-form-item
  280. label="活动类别"
  281. v-if="formData.activityType === '报告电话会'"
  282. prop="activityClass"
  283. >
  284. <!-- <el-select
  285. v-model="formData.activityClass"
  286. placeholder="请选择活动类别"
  287. >
  288. <el-option
  289. v-for="item in telTypeList"
  290. :key="item.ActivityTypeId"
  291. :label="item.ActivityTypeName"
  292. :value="item.ActivityTypeName"
  293. />
  294. </el-select> -->
  295. <el-cascader
  296. :props="activityClassProps"
  297. v-model="formData.activityClass"
  298. :options="telTypeList">
  299. </el-cascader>
  300. </el-form-item>
  301. <!-- 新增的研究员 -->
  302. <div
  303. v-for="researcherIdx in addResearchersIdx"
  304. :key="researcherIdx"
  305. class="add-researcher-box"
  306. >
  307. <el-form-item
  308. label="研究员"
  309. :prop="`selectResearchers[${researcherIdx}].researcherId`"
  310. :rules="[
  311. { required: true, message: '请选择研究员', trigger: 'change' },
  312. ]"
  313. >
  314. <el-cascader
  315. v-model="
  316. formData.selectResearchers[researcherIdx].researcherId
  317. "
  318. :options="researcherList"
  319. :show-all-levels="false"
  320. :props="{
  321. expandTrigger: 'hover',
  322. children: 'ResearcherList',
  323. emitPath: false,
  324. }"
  325. clearable
  326. placeholder="请选择研究员"
  327. :key="cascaderIdx"
  328. @change="addUserCheckHandler"
  329. />
  330. <i class="el-icon-remove-outline" @click="delResearcher(researcherIdx)"/>
  331. </el-form-item>
  332. <el-form-item label="开始时间"
  333. :prop="`selectResearchers[${researcherIdx}].startTime`"
  334. :rules="[
  335. { required: true, message: '请选择开始时间', trigger: 'change' },
  336. ]">
  337. <el-col :span="12">
  338. <date-picker
  339. format="MM.DD(ddd)"
  340. v-model="formData.selectResearchers[researcherIdx].startDate"
  341. style="width: 100% !important"
  342. :clearable="false"
  343. :editable="false"
  344. >
  345. <template #icon-calendar>
  346. <i class="el-icon-date"></i>
  347. </template>
  348. </date-picker>
  349. </el-col>
  350. <el-col :span="12">
  351. <date-picker
  352. format="HH:mm"
  353. type="time"
  354. :show-second="false"
  355. v-model="formData.selectResearchers[researcherIdx].startTime"
  356. style="width: 100% !important"
  357. :clearable="false"
  358. :editable="false"
  359. >
  360. <template #icon-calendar>
  361. <i class="el-icon-time"></i>
  362. </template>
  363. </date-picker>
  364. </el-col>
  365. </el-form-item>
  366. <el-form-item label="结束时间"
  367. :prop="`selectResearchers[${researcherIdx}].endTime`"
  368. :rules="[
  369. { required: true, message: '请选择结束时间', trigger: 'change' },
  370. ]">
  371. <el-col :span="12">
  372. <date-picker
  373. format="MM.DD(ddd)"
  374. v-model="formData.selectResearchers[researcherIdx].endDate"
  375. style="width: 100% !important"
  376. :clearable="false"
  377. :editable="false"
  378. >
  379. <template #icon-calendar>
  380. <i class="el-icon-date"></i>
  381. </template>
  382. </date-picker>
  383. </el-col>
  384. <el-col :span="12">
  385. <date-picker
  386. format="HH:mm"
  387. type="time"
  388. :show-second="false"
  389. v-model="formData.selectResearchers[researcherIdx].endTime"
  390. style="width: 100% !important"
  391. :clearable="false"
  392. :editable="false"
  393. >
  394. <template #icon-calendar>
  395. <i class="el-icon-time"></i>
  396. </template>
  397. </date-picker>
  398. </el-col>
  399. </el-form-item>
  400. </div>
  401. <!-- 添加研究员按钮 -->
  402. <div @click="addResearcher" class="add-box" v-if="['路演','公开会议'].includes(formData.activityType) && !edit_id ">
  403. <i class="el-icon-circle-plus-outline" style="font-size: 18px;margin-right: 5px;"/>
  404. <span>添加研究员</span>
  405. </div>
  406. </el-form>
  407. <div class="btn-group">
  408. <el-button type="primary" plain @click="cancel">取消</el-button>
  409. <el-button type="primary" @click="confirm">确定1111</el-button>
  410. </div>
  411. </el-dialog>
  412. </div>
  413. </template>
  414. <script>
  415. import { activityCellDiaConfig,confirmDiaLink,confirmDiaRai } from "../roleConfig";
  416. import { roadshowInterence,ficcManageInterface } from "@/api/api.js";
  417. import publicMixins from '../roleConfig/mixins';
  418. import { constrainPoint } from "@fullcalendar/common";
  419. //自定义省市数据
  420. //import{province_sorce,city_sorce} from '@/utils/distpicker';
  421. import searchDistPicker from '@/components/searchDistPicker.vue';
  422. // 定义初始表单数据
  423. let initFormData = {
  424. // 表单数据
  425. activityType: activityCellDiaConfig[localStorage.getItem("Role")].defaultActivityType, // 活动类型
  426. roadshowType: "", // 路演形式
  427. roadshowPlatform: "", // 路演平台
  428. roadshowCity: "", // 路演城市
  429. companyId: '', // 客户id
  430. companyName: "", // 客户名称
  431. meetingType: "", // 会议形式
  432. meetingPlatform: "", // 会议平台
  433. meetingCity: "", // 会议城市
  434. meetingTheme: "", // 会议主题
  435. partnersName: "", // 合作方名称
  436. activityClass: "", // 活动类别
  437. selectResearchers: [
  438. // 选择的研究员
  439. {
  440. researcherId: '',
  441. startDate: '',
  442. startTime: '',
  443. endDate: '',
  444. endTime: '',
  445. },
  446. ],
  447. };
  448. export default {
  449. props: {
  450. isShow: {
  451. type: Boolean,
  452. require: true,
  453. },
  454. initData:{
  455. type: Object,
  456. default: null,
  457. },
  458. edit_id: {
  459. type: Number,
  460. default: 0,
  461. },
  462. edit_rs_id: {
  463. type: Number,
  464. default: 0,
  465. },
  466. isEditType:{
  467. type: String,
  468. default: '',
  469. }
  470. },
  471. mixins: [publicMixins],
  472. components:{searchDistPicker},
  473. data() {
  474. return {
  475. formData: {
  476. ...initFormData,
  477. activityType: activityCellDiaConfig[localStorage.getItem("Role")].defaultActivityType,
  478. selectResearchers: [
  479. // 选择的研究员
  480. {
  481. researcherId: '',
  482. startDate: '',
  483. startTime: '',
  484. endDate: '',
  485. endTime: '',
  486. },
  487. ],
  488. },
  489. researcherList: [], // 研究员列表
  490. activityTypeList: [],//活动类型
  491. telTypeList: [],//电话会所有类别
  492. cascaderIdx: 0, // 解决报错
  493. permission: null, // 当前角色权限
  494. companyInfo: null,//选择的客户详情
  495. /* province_sorce:province_sorce,
  496. city_sorce:city_sorce */
  497. };
  498. },
  499. computed: {
  500. // 除去第一个研究员的其他研究员索引
  501. addResearchersIdx() {
  502. return this.formData.selectResearchers
  503. .map((item, index) => index)
  504. .slice(1);
  505. },
  506. // 将研究员列表中的研究员提取出来组成新数组
  507. allResearcher() {
  508. return [].concat.apply([], this.researcherList.map(item=>item.ResearcherList))
  509. },
  510. },
  511. methods: {
  512. // 获取研究员列表
  513. async getResearcherList() {
  514. // 发送请求
  515. const res = await roadshowInterence.getResearcherList();
  516. if (res.Ret === 200) {
  517. /* this.researcherList = res.Data && res.Data.filter(item => item.GroupName !== 'ficc全体').map(group => ({
  518. ...group,
  519. label: group.GroupName,
  520. ResearcherList: group.ResearcherList ? group.ResearcherList.map(child => ({
  521. ...child,
  522. label: child.RealName,
  523. value: child.AdminId
  524. })) : []
  525. })) */
  526. const ficcList = this.formatResearcherList(res.Data.find(i=>i.GroupName==='ficc').ResearcherList||[]);
  527. const raiList = this.formatResearcherList(res.Data.find(i=>i.GroupName==='权益').ResearcherList||[]);
  528. this.researcherList = [{
  529. label:'ficc',
  530. ResearcherList:ficcList
  531. },{
  532. label:'权益',
  533. ResearcherList:raiList
  534. }]
  535. }
  536. },
  537. // 对获取到的研究员列表做处理
  538. formatResearcherList(list) {
  539. /* this.researcherList = list && list.filter(item => item.GroupName !== 'ficc全体').map(group => ({
  540. ...group,
  541. label:group.GroupName,
  542. ResearcherList: group.ResearcherList && group.ResearcherList.map(child => ({
  543. ...child,
  544. label: child.RealName,
  545. value: child.AdminId
  546. }))
  547. })) */
  548. list.forEach((group) => {
  549. // 对组做处理
  550. group.label = group.GroupName;
  551. // 如果有列表
  552. if (group.ResearcherList) {
  553. group.ResearcherList.forEach((item) => {
  554. // 对研究员做处理
  555. item.label = item.RealName;
  556. item.value = item.AdminId;
  557. });
  558. } else {
  559. // 没有列表
  560. group.value = group.GroupId;
  561. }
  562. });
  563. return list.filter((group) => group.GroupName !== "ficc全体");
  564. },
  565. // 取消按钮
  566. cancel() {
  567. this.formData = {
  568. ...initFormData,
  569. activityType: activityCellDiaConfig[localStorage.getItem("Role")].defaultActivityType
  570. };
  571. this.researcherList = [];
  572. this.cascaderIdx++;
  573. this.$refs.form.resetFields();
  574. this.$emit("update:isShow", false);
  575. },
  576. // 确认按钮
  577. async confirm() {
  578. // 校验表单
  579. await this.$refs.form.validate();
  580. if(this.formData.companyName && !this.formData.companyId) return this.$message.warning('请选择客户');
  581. if(this.isRaiRole&&this.formData.roadshowType==='线下'&&!this.formData.District) return this.$message.warning('请选择路演城市')
  582. // 设置参数
  583. let parmas = null;
  584. const param_research = this.formData.selectResearchers.map(item=>({
  585. ResearcherId: item.researcherId,
  586. ResearcherName: this.findResearcherName(item.researcherId),
  587. StartDate:this.$moment(item.startDate).format('YYYY-MM-DD'),
  588. EndDate: this.$moment(item.endDate).format('YYYY-MM-DD'),
  589. StartTime: this.$moment(item.startTime).format('HH:mm:ss'),
  590. EndTime: this.$moment(item.endTime).format('HH:mm:ss'),
  591. StartWeek: this.$moment(item.startDate).format('ddd'),
  592. EndWeek: this.$moment(item.endDate).format('ddd'),
  593. }));
  594. const dynaic_city_param = {
  595. '公开会议': this.formData.meetingCity,
  596. '路演': this.formData.roadshowCity,
  597. '沙龙': this.formData.roadshowCity,
  598. }
  599. parmas = {
  600. ActivityType: this.formData.activityType,
  601. ActivityCategory: this.formData.activityClass[this.formData.activityClass.length-1],
  602. City: ['公开会议','路演','沙龙'].includes(this.formData.activityType) ? dynaic_city_param[this.formData.activityType][1] : '',
  603. Province: ['公开会议','路演','沙龙'].includes(this.formData.activityType) ? dynaic_city_param[this.formData.activityType][0] : '',
  604. District:this.formData.District||'',
  605. CooperationName: this.formData.partnersName,
  606. Theme: this.formData.meetingTheme,
  607. RoadshowType: ['路演','沙龙'].includes(this.formData.activityType) ? this.formData.roadshowType : this.formData.meetingType,
  608. RoadshowPlatform: ['路演','沙龙'].includes(this.formData.activityType) ? this.formData.roadshowPlatform : this.formData.meetingPlatform,
  609. CompanyId: this.formData.companyId || 0,
  610. CompanyName: this.formData.companyName || '',
  611. ResearcherList: param_research,
  612. EnglishCompany:this.formData.englishCompany
  613. };
  614. // 发送请求
  615. const res = this.edit_id
  616. ? await roadshowInterence.editRoadshow({
  617. ...parmas,
  618. RsCalendarId: this.edit_id,
  619. RsCalendarResearcherId: this.edit_rs_id,
  620. EditType: ['公开会议', '路演'].includes(this.formData.activityType) ? 2 : 1
  621. }) : await roadshowInterence.addRoadshow(parmas);
  622. if (res.Ret !== 200) return
  623. const { text,content,query } = this.setDynamicLink(this.formData.activityType);
  624. //this.edit_id ? this.$message.warning('提交成功') : confirmDiaLink(text, content, query);
  625. if(this.edit_id){
  626. this.$message.warning('提交成功')
  627. }else{
  628. if(this.formData.activityType!=='路演' && this.formData.activityType!=='沙龙'){
  629. confirmDiaLink(text, content, query)
  630. this.$emit('ensureCallback');
  631. this.cancel();
  632. return
  633. }
  634. //判断所选研究员是否有权益
  635. const ResearcherIds = this.formData.selectResearchers.map(i=>i.researcherId)
  636. const ResearcherTypes = ResearcherIds.map(i=>this.findType(i))
  637. //既有权益研究员的路演,又有ficc研究员路演时,提示弹窗
  638. if(ResearcherTypes.includes('rai')&&ResearcherTypes.includes('ficc')){
  639. const { text, content, query } = this.setDynamicLink(
  640. 'ficc&rai路演'
  641. );
  642. confirmDiaLink(text, content, query)
  643. //只提交权益研究员的路演时,提示弹窗:
  644. }else if(ResearcherTypes.includes('rai')){
  645. confirmDiaRai()
  646. //只提交ficc研究员的路演时,提示弹窗:(维持原来的不变)
  647. }else{
  648. confirmDiaLink(text, content, query)
  649. }
  650. }
  651. this.$emit('ensureCallback');
  652. this.cancel();
  653. },
  654. // 添加研究员点击
  655. addResearcher() {
  656. const { startDate,startTime,endDate,endTime } = this.formData.selectResearchers[0];//默认添加时间同步
  657. this.formData.selectResearchers.push({
  658. researcherId: null,
  659. startDate,
  660. startTime,
  661. endDate,
  662. endTime,
  663. });
  664. },
  665. // 删除研究员点击
  666. delResearcher(index) {
  667. this.formData.selectResearchers.splice(index, 1);
  668. },
  669. // 活动类型改变
  670. activityTypeChange() {
  671. // 清空部分表单内容
  672. this.formData.roadshowType = "";
  673. this.formData.roadshowPlatform = "";
  674. this.formData.roadshowCity = "";
  675. this.formData.companyId = '';
  676. this.formData.companyName = "";
  677. this.formData.meetingType = "";
  678. this.formData.meetingPlatform = "";
  679. this.formData.meetingCity = "";
  680. this.formData.meetingTheme = "";
  681. this.formData.partnersName = "";
  682. this.formData.activityClass = "";
  683. this.formData.selectResearchers = this.formData.selectResearchers.splice(0,1);
  684. this.$refs.form.clearValidate();
  685. },
  686. //获取电话会所有类别
  687. async getTypeList() {
  688. const res = await roadshowInterence.getTelList();
  689. if (res.Ret !== 200) return
  690. this.telTypeList=res.Data;
  691. },
  692. // 客户名称搜索
  693. async companySearch(query, cb) {
  694. cb([]);
  695. if (!query) return;
  696. const res = await roadshowInterence.searchRoadshowCompany({
  697. KeyWord: query,
  698. });
  699. if (res.Ret === 200) {
  700. let arr = res.Data || [];
  701. if (!arr.length) {
  702. cb([{ nodata: true }]);
  703. } else {
  704. cb(arr);
  705. }
  706. }
  707. },
  708. // 选择客户
  709. async companySelect(e) {
  710. if (e.nodata) return;
  711. this.formData.companyId = e.CompanyId;
  712. this.formData.companyName = e.CompanyName;
  713. this.formData.englishCompany = e.EnglishCompany
  714. const { Data } = await roadshowInterence.componyDetail({
  715. CompanyId: this.formData.companyId,
  716. EnglishCompany:e.EnglishCompany
  717. });
  718. this.companyInfo = Data;
  719. },
  720. /* // 研究员id查找研究员名
  721. findResearcherById(id){
  722. return this.allResearcher.find(researcher => researcher.AdminId===id).RealName
  723. } */
  724. },
  725. created() {
  726. this.permission = activityCellDiaConfig[localStorage.getItem("Role")];
  727. },
  728. watch: {
  729. // 解决研究员列表,直接赋值时报错(原因:组件没有重新渲染)
  730. "formData.selectResearchers"() {
  731. this.cascaderIdx++;
  732. },
  733. // 默认数据改变时,重新赋值
  734. initData(val){
  735. this.formData={...this.formData,...val}
  736. console.log(this.formData);
  737. },
  738. isShow(newval) {
  739. newval && this.getResearcherList();
  740. newval && this.getTypeList();
  741. }
  742. },
  743. };
  744. </script>
  745. <style lang="scss">
  746. .activity-cell-dia {
  747. .el-form {
  748. .el-cascader,
  749. .el-select,
  750. .el-autocomplete,
  751. .el-input {
  752. width: 100%;
  753. }
  754. .company-info {
  755. border: 1px solid #b3d8ff;
  756. background: #ecf5ff;
  757. padding: 10px;
  758. margin-bottom: 20px;
  759. p {
  760. margin: 6px 0;
  761. text-indent: -70px;
  762. margin-left: 70px;
  763. }
  764. }
  765. .distpicker-address-wrapper {
  766. display: flex;
  767. label:nth-child(-n + 2) {
  768. padding: 0 5px;
  769. flex: 50%;
  770. select {
  771. width: 100%;
  772. }
  773. }
  774. }
  775. .add-researcher-box .el-form-item .el-form-item__content {
  776. display: flex;
  777. justify-content: space-between;
  778. align-items: center;
  779. .el-cascader {
  780. padding-right: 20px;
  781. }
  782. .el-icon-remove-outline {
  783. font-size: 20px;
  784. cursor: pointer;
  785. color: #f00;
  786. }
  787. }
  788. .el-col {
  789. padding: 0 5px;
  790. }
  791. }
  792. .add-box {
  793. width: 100px;
  794. display: flex;
  795. align-items: center;
  796. color: #5882ef;
  797. cursor: pointer;
  798. img {
  799. width: 16px;
  800. height: 16px;
  801. margin-right: 10px;
  802. }
  803. }
  804. .btn-group {
  805. margin: 20px 0;
  806. text-align: center;
  807. .el-button {
  808. width: 140px;
  809. }
  810. }
  811. }
  812. </style>