addActivityCellDia.vue 28 KB

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