Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

newFollowup.vue 21 KiB

há 3 anos
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816
  1. <template>
  2. <view>
  3. <!-- 新增客户跟进 -->
  4. <view class="follow_up">
  5. <view class="follow_content_title tixingBox"
  6. v-if="orderRemindDate1=='' || orderRemindDate1 == null || overdue == true">
  7. <image src="https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/ld.png" class="tixing1">
  8. </image>
  9. 跟进提醒
  10. <view class="tixing" @tap="onClose">
  11. <text>设置</text>
  12. </view>
  13. </view>
  14. <view class="follow_content_title tixingBox" v-else>
  15. <image src="https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/ld.png" class="tixing1">
  16. </image>
  17. 跟进提醒
  18. <view class="tixing active1" @tap="onClose1">
  19. <text>已设置</text>
  20. </view>
  21. </view>
  22. <!-- 最新状态 -->
  23. <view class="follow_up_list">
  24. <view class="follow_up_list_title">
  25. <image src="https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/index/xh.png"></image>
  26. <label>最新状态</label>
  27. </view>
  28. <view class="follow_up_list_label">
  29. <view v-for="(item, i) in sortList" :key="i" :class="'taga-item ' + (state===i?'active':'')"
  30. :data-state="i" @tap="tagChoose">
  31. {{item.stageName}}
  32. </view>
  33. </view>
  34. </view>
  35. <!-- 意向级别 -->
  36. <view class="follow_up_list" style="padding-bottom: 10rpx;">
  37. <view class="follow_up_list_title">
  38. <image src="https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/index/xh.png"></image>
  39. <label>意向级别</label>
  40. </view>
  41. <view class="follow_level_selection">
  42. <view class="assess-star">
  43. <view class="star-wrap">
  44. <view v-for="(item, index) in stars" :key="index" class="star-item" :data-index="index"
  45. @tap="starClick">
  46. <image v-if="item.flag==1"
  47. src="https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/index/index12.png">
  48. </image>
  49. <image v-else
  50. src="https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/index/index13.png">
  51. </image>
  52. </view>
  53. </view>
  54. <view class="star-desc" v-if="level==1">A级</view>
  55. <view class="star-desc" v-if="level==2">B级</view>
  56. <view class="star-desc" v-if="level==3">C级</view>
  57. <view class="star-desc" v-if="level==4">D级</view>
  58. </view>
  59. </view>
  60. </view>
  61. <!-- 客户类型 -->
  62. <view class="follow_up_list">
  63. <view class="follow_up_list_title">
  64. <image src="https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/index/xh.png"></image>
  65. <label>客户类型</label>
  66. </view>
  67. <view class="total" style="font-size: 22rpx;">
  68. <u-icon style="margin-right:14rpx" name="checkmark-circle-fill" color="#FD6B18"></u-icon>
  69. 已选择<text style="color: #FD6B18;">{{chosedCustomer.length}}</text>个
  70. </view>
  71. <view class="list" @click="showList" :class="{chosed:chosedCustomer.length>0}">
  72. <view v-for="(item, i) in chosedCustomerType" :key="i" class="taga-item"
  73. :class="{active:chosedCustomer.includes(item.keywords)}">
  74. {{item.keywords}}
  75. </view>
  76. </view>
  77. <view class="more" @click="showList">
  78. 选择更多
  79. </view>
  80. </view>
  81. <!-- 跟进内容 -->
  82. <view class="follow_content">
  83. <view class="follow_content_title">
  84. 跟进内容
  85. <em>({{feedbackContent.length}}/50)</em>
  86. </view>
  87. <textarea v-show="!customerTypeShow" class="follow_content_textarea" v-if="show==false"
  88. :value="feedbackContent" maxlength="50" @input="note" placeholder="请输入跟进内容,按话筒按钮可以语音识别"
  89. placeholder-class="place"></textarea>
  90. <!-- <image class="voice" @click="changeVoiceShow" src="/static/images/yuyin.png" mode="widthFix"></image> -->
  91. </view>
  92. <view :class="'follow_btn ' + (value!=='' && state!== '' && level !=='' ?'follow_btn_active':'')"
  93. @tap="ok">
  94. 保存
  95. </view>
  96. </view>
  97. <!-- 提醒 -->
  98. <view class="mask" v-if="show==true" @tap="timeClose"></view>
  99. <view class="time-box" v-if="show==true">
  100. <view class="time-text">
  101. {{year}}-{{month}}-{{day}} {{hour}}:{{minute}}
  102. <view class="time-sure" @tap="timeSure">确定</view>
  103. <view class="time-sure" style="float:left" @tap="timeClose">取消</view>
  104. </view>
  105. <view class="time-title-box">
  106. <view class="time-title">年</view>
  107. <view class="time-title">月</view>
  108. <view class="time-title">日</view>
  109. <view class="time-title">时</view>
  110. <view class="time-title">分</view>
  111. </view>
  112. <picker-view indicator-style="height: 50px;"
  113. style="width: 100%; height: 300px;display: flex;background:#fff;" :value="value" @change="bindChange">
  114. <picker-view-column class="picker-text">
  115. <view v-for="(item, index) in years" :key="index" style="line-height: 50px">{{item}}</view>
  116. </picker-view-column>
  117. <picker-view-column class="picker-text">
  118. <view v-for="(item, index) in months" :key="index" style="line-height: 50px">{{item}}</view>
  119. </picker-view-column>
  120. <picker-view-column class="picker-text">
  121. <view v-for="(item, index) in days" :key="index" style="line-height: 50px">{{item}}</view>
  122. </picker-view-column>
  123. <picker-view-column class="picker-text">
  124. <view v-for="(item, index) in hours" :key="index" style="line-height: 50px">{{item}}</view>
  125. </picker-view-column>
  126. <picker-view-column class="picker-text">
  127. <view v-for="(item, index) in minutes" :key="index" style="line-height: 50px">{{item}}</view>
  128. </picker-view-column>
  129. </picker-view>
  130. </view>
  131. <cover-view class="voiceContent" v-if="voiceShow" @click="changeVoiceShow">
  132. <cover-view class="box" @click.stop="" @touchstart="voiceStart" @touchend="voiceEnd">
  133. <cover-view class="center">
  134. <cover-image class="voice" src="/static/images/voice.png" mode="widthFix"></cover-image>
  135. <cover-view class="text">
  136. {{isRecording?'正在输入':'长按语音输入'}}
  137. </cover-view>
  138. </cover-view>
  139. </cover-view>
  140. </cover-view>
  141. <u-popup v-model="customerTypeShow" mode="center" border-radius="22" width="690" height="785">
  142. <view class="customerTypePopup">
  143. <view class="search">
  144. <input class="input" type="text" v-model="customerTypeSearch" />
  145. </view>
  146. <scroll-view class="list" :scroll-y="true">
  147. <view v-for="(item,index) in filterCustomerList" :key="index"
  148. @click="choseCustomerName(item.keywords)" class="item"
  149. :class="{active:chosedCustomerTmp.includes(item.keywords)}">
  150. {{item.keywords}}
  151. </view>
  152. </scroll-view>
  153. <view class="save" @click="saveCustomerType">
  154. 保存
  155. </view>
  156. </view>
  157. </u-popup>
  158. </view>
  159. </template>
  160. <script>
  161. var util = require("../../../../utils/util.js");
  162. var config = require("../../../../config");
  163. var plugin = requirePlugin("WechatSI")
  164. let manager = plugin.getRecordRecognitionManager();
  165. var WXB_SESSION_LOGIN_DATA = 'weapp_session_login_data';
  166. var app = getApp(); // 定义年、月、日、时、分的数组都为空
  167. // 定义年、月、日、时、分的数组都为空
  168. const date = new Date();
  169. const years = [];
  170. const months = [];
  171. const days = [];
  172. const hours = [];
  173. const minutes = [];
  174. var thisMon = date.getMonth();
  175. var thisDay = date.getDate(); // 获取年
  176. // 获取日期
  177. var totalDay = mGetDate(date.getFullYear(), thisMon);
  178. // 获取年
  179. for (let i = 0; i <= date.getFullYear() + 1; i++) {
  180. years.push(i)
  181. }
  182. // 获取月份
  183. for (let i = 0; i <= 11; i++) {
  184. var k = i;
  185. if (0 <= i && i < 9) {
  186. k = "0" + (i + 1);
  187. } else {
  188. k = (i + 1);
  189. }
  190. months.push(k)
  191. }
  192. if (0 <= thisMon && thisMon < 9) {
  193. thisMon = "0" + (thisMon + 1);
  194. } else {
  195. thisMon = (thisMon + 1);
  196. }
  197. if (0 <= thisDay && thisDay < 10) {
  198. thisDay = "0" + thisDay;
  199. }
  200. // 获取日期
  201. var totalDay = mGetDate(date.getFullYear(), thisMon);
  202. for (let i = 1; i <= 31; i++) {
  203. var k = i;
  204. if (0 <= i && i < 10) {
  205. k = "0" + i
  206. }
  207. days.push(k)
  208. }
  209. // 获取小时
  210. for (let i = 0; i <= 23; i++) {
  211. var k = i;
  212. if (0 <= i && i < 10) {
  213. k = "0" + i
  214. }
  215. hours.push(k)
  216. }
  217. // 获取分钟
  218. for (let i = 0; i <= 59; i++) {
  219. var k = i;
  220. if (0 <= i && i < 10) {
  221. k = "0" + i
  222. }
  223. minutes.push(k)
  224. }
  225. // 给新的日期赋值
  226. function mGetDate(year, month) {
  227. var d = new Date(year, month, 0);
  228. return d.getDate();
  229. }
  230. export default {
  231. data() {
  232. return {
  233. isokColor: false,
  234. sortList: [],
  235. starDesc: '',
  236. stars: [{
  237. lightImg: 'https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/index/index12.png',
  238. blackImg: 'https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/index/index13.png',
  239. flag: 1,
  240. message: 'A',
  241. level: 1
  242. }, {
  243. lightImg: 'https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/index/index12.png',
  244. blackImg: 'https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/index/index13.png',
  245. flag: 1,
  246. message: 'B',
  247. level: 2
  248. }, {
  249. lightImg: 'https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/index/index12.png',
  250. blackImg: 'https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/index/index13.png',
  251. flag: 1,
  252. message: 'C',
  253. level: 3
  254. }, {
  255. lightImg: 'https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/index/index12.png',
  256. blackImg: 'https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/index/index13.png',
  257. flag: 1,
  258. message: 'D',
  259. level: 4
  260. }],
  261. state: null,
  262. feedbackContent: "",
  263. level: "",
  264. customerId: "",
  265. // 提醒
  266. years: years,
  267. year: date.getFullYear(),
  268. months: months,
  269. month: thisMon,
  270. days: days,
  271. day: thisDay,
  272. value: [date.getFullYear(), date.getMonth(), Number(date.getDate() - 1), Number(date.getHours()), Number(
  273. date.getMinutes())],
  274. hours: hours,
  275. hour: date.getHours(),
  276. minutes: minutes,
  277. minute: date.getMinutes(),
  278. show: false,
  279. overdue: false,
  280. code: "",
  281. orderRemindDate: "",
  282. orderRemindDate1: "",
  283. allItem: 0,
  284. item: 0,
  285. voiceShow: false,
  286. isRecording: false,
  287. customerType: [],
  288. customerTypeShow: false,
  289. customerTypeSearch: "",
  290. chosedCustomer: [],
  291. chosedCustomerTmp: [],
  292. };
  293. },
  294. onLoad(e) {
  295. // console.log(e,'123')
  296. const that = this;
  297. uni.login({
  298. success(res) {
  299. if (res.code) {
  300. // that.setData({
  301. // code: res.code
  302. // });
  303. } else {
  304. console.log('登录失败!' + res.errMsg);
  305. }
  306. }
  307. });
  308. var customerId = e.id;
  309. var day = Number(date.getDate()) < 10 ? '0' + date.getDate() : date.getDate();
  310. var moth = Number(date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1;
  311. var hour = Number(date.getHours()) < 10 ? '0' + date.getHours() : date.getHours();
  312. var min = Number(date.getMinutes()) < 10 ? '0' + date.getMinutes() : date.getMinutes();
  313. this.setData({
  314. customerId: customerId,
  315. orderRemindDate: date.getFullYear() + '-' + moth + '-' + day + ' ' + hour + ':' + min,
  316. orderRemindDate1: e.followRemindDate,
  317. hour: hour,
  318. minute: min
  319. });
  320. if (e.followRemindDate) {
  321. var setData = new Date(e.followRemindDate).getTime();
  322. var newData = new Date().getTime();
  323. if (setData < newData) {
  324. this.setData({
  325. overdue: true
  326. });
  327. } else {
  328. this.setData({
  329. overdue: false
  330. });
  331. }
  332. }
  333. this.getNewStatus();
  334. this.getCustomerType();
  335. },
  336. onShow() {
  337. this.initRecord();
  338. },
  339. methods: {
  340. setData: function(obj) {
  341. let that = this;
  342. let keys = [];
  343. let val, data;
  344. Object.keys(obj).forEach(function(key) {
  345. keys = key.split(".");
  346. val = obj[key];
  347. data = that.$data;
  348. keys.forEach(function(key2, index) {
  349. if (index + 1 == keys.length) {
  350. that.$set(data, key2, val);
  351. } else {
  352. if (!data[key2]) {
  353. that.$set(data, key2, {});
  354. }
  355. }
  356. data = data[key2];
  357. });
  358. });
  359. },
  360. getCustomerType() {
  361. this.$u.get("/customer/queryKeyWords").then(res => {
  362. this.customerType = res;
  363. })
  364. },
  365. showList() {
  366. this.chosedCustomerTmp = this.chosedCustomer;
  367. this.customerTypeShow = true;
  368. },
  369. choseCustomerName(name) {
  370. const tmp = new Set(this.chosedCustomerTmp);
  371. if (tmp.has(name)) {
  372. tmp.delete(name)
  373. } else {
  374. tmp.add(name)
  375. }
  376. this.chosedCustomerTmp = Array.from(tmp);
  377. },
  378. saveCustomerType() {
  379. this.chosedCustomer = this.chosedCustomerTmp;
  380. this.customerTypeShow = false;
  381. },
  382. changeVoiceShow() {
  383. this.voiceShow = !this.voiceShow;
  384. },
  385. voiceStart: function() {
  386. manager.start({
  387. lang: "zh_CN"
  388. });
  389. },
  390. voiceEnd: function() {
  391. if (this.isRecording) {
  392. uni.showLoading({
  393. title: "识别中"
  394. })
  395. }
  396. this.voiceShow = false;
  397. this.isRecording = false;
  398. manager.stop();
  399. },
  400. initRecord() {
  401. const that = this;
  402. manager.onStart = function(res) {
  403. console.log(res.msg);
  404. that.isRecording = true;
  405. // this.voiceState = "onStart:" + res.msg + "正在录音"
  406. };
  407. //有新的识别内容返回,则会调用此事件
  408. manager.onRecognize = (res) => {
  409. console.log('ing' + res.result);
  410. }
  411. // 识别结束事件
  412. manager.onStop = (res) => {
  413. uni.hideLoading();
  414. let newText = that.feedbackContent + res.result;
  415. if (newText.length > 50) {
  416. newText = newText.substring(0, 50)
  417. }
  418. that.feedbackContent = newText;
  419. }
  420. // 识别错误事件
  421. manager.onError = (res) => {
  422. uni.hideLoading();
  423. console.error(res.msg)
  424. // this.voiceState = "onError" + res.msg;
  425. }
  426. },
  427. // 关闭提醒
  428. timeClose() {
  429. this.setData({
  430. show: false,
  431. years: years,
  432. year: date.getFullYear(),
  433. months: months,
  434. month: thisMon,
  435. days: days,
  436. day: thisDay,
  437. value: [date.getFullYear(), date.getMonth(), date.getDate() - 1, date.getHours(), date
  438. .getMinutes()
  439. ],
  440. hours: hours,
  441. hour: date.getHours(),
  442. minutes: minutes,
  443. minute: date.getMinutes()
  444. });
  445. },
  446. // 打开提醒
  447. onClose() {
  448. const that = this; // 检测是否已经授权,有授权直接弹窗,没授权弹出授权
  449. uni.getSetting({
  450. withSubscriptions: true,
  451. success(res) {
  452. console.log(res);
  453. if (res && res.subscriptionsSetting && res.subscriptionsSetting.itemSettings && res
  454. .subscriptionsSetting
  455. .itemSettings['cBnJvhkMPHp0ReUiSdpM_Pd2usGeEEW6wx-5s6X4hEI'] == 'accept') {
  456. that.setData({
  457. show: true
  458. });
  459. } else {
  460. uni.requestSubscribeMessage({
  461. tmplIds: ['cBnJvhkMPHp0ReUiSdpM_Pd2usGeEEW6wx-5s6X4hEI'],
  462. success(res) {
  463. that.setData({
  464. show: true
  465. });
  466. },
  467. fail(res) {
  468. console.log(res);
  469. util.showNone("请授权");
  470. }
  471. });
  472. }
  473. },
  474. fail(res) {
  475. console.log(res);
  476. }
  477. });
  478. },
  479. onClose1() {
  480. util.showNone(this.orderRemindDate1);
  481. },
  482. timeSure() {
  483. var that = this;
  484. var params = {
  485. customerId: that.customerId,
  486. followRemindTime: that.orderRemindDate + ':00',
  487. code: that.code
  488. };
  489. util.getRequestPromise(config.service.updateByPrimaryKey, params).then(data => {
  490. uni.showToast({
  491. title: '操作成功'
  492. });
  493. var data = that.orderRemindDate + ':00';
  494. var setData = new Date(data).getTime();
  495. var newData = new Date().getTime();
  496. console.log(setData, newData);
  497. if (setData < newData) {
  498. this.setData({
  499. overdue: true
  500. });
  501. } else {
  502. this.setData({
  503. overdue: false
  504. });
  505. }
  506. this.setData({
  507. show: false,
  508. value: [this.year, Number(this.month) - 1, Number(this.day) - 1, this.hour, this
  509. .minute
  510. ],
  511. orderRemindDate1: that.orderRemindDate + ':00'
  512. });
  513. });
  514. },
  515. // 获取新的日期和时间
  516. bindChange: function(e) {
  517. const val = e.detail.value;
  518. this.setData({
  519. year: this.years[val[0]],
  520. month: this.months[val[1]],
  521. day: this.days[val[2]],
  522. hour: this.hours[val[3]],
  523. minute: this.minutes[val[4]],
  524. orderRemindDate: this.years[val[0]] + '-' + this.months[val[1]] + '-' + this.days[val[2]] +
  525. ' ' + this.hours[
  526. val[3]] + ':' + this.minutes[val[4]]
  527. });
  528. },
  529. // 最新状态
  530. tagChoose: function(options) {
  531. var that = this;
  532. var state = options.currentTarget.dataset.state;
  533. that.setData({
  534. 'state': state
  535. });
  536. },
  537. // 意向级别
  538. starClick: function(e) {
  539. var that = this;
  540. for (var i = 0; i < that.stars.length; i++) {
  541. var allItem = 'stars[' + i + '].flag';
  542. that.setData({
  543. [allItem]: 1
  544. });
  545. }
  546. var index = e.currentTarget.dataset.index;
  547. for (var i = 0; i <= index; i++) {
  548. var item = 'stars[' + i + '].flag';
  549. that.setData({
  550. [item]: 2
  551. });
  552. }
  553. this.setData({
  554. starDesc: this.stars[index].message,
  555. level: this.stars[3 - index].level
  556. });
  557. },
  558. // textarea
  559. note: function(e) {
  560. this.feedbackContent = e.detail.value
  561. },
  562. getNewStatus: function() {
  563. var that = this;
  564. let premo={
  565. houseId:uni.getStorageSync('buildingID').id
  566. }
  567. util.getRequestPromise(config.service.getStage, premo).then(data => {
  568. this.sortList = data;
  569. });
  570. },
  571. //提交
  572. ok(){
  573. var that = this;
  574. var state = that.state;
  575. var feedbackContent = that.feedbackContent;
  576. var level = that.level;
  577. var customerId = that.customerId;
  578. if (state === null || this.chosedCustomer.length == 0 || level === "") {
  579. uni.showModal({
  580. title: '提示',
  581. content: '请选择状态、级别、类型',
  582. showCancel: false
  583. });
  584. return;
  585. }
  586. uni.showLoading({
  587. title: "保存中~",
  588. mask: true
  589. })
  590. const chosedState = this.sortList[state];
  591. var param = {
  592. "stageCode": chosedState.stageCode,
  593. "stageName": chosedState.stageName,
  594. "remarks": feedbackContent,
  595. words: this.chosedCustomer,
  596. // "settingTime":"",
  597. "agentRelationPo": {
  598. "customerId": customerId,
  599. "level": level,
  600. "state": chosedState.id
  601. }
  602. }
  603. util.getRequestPromise(config.service.followRecord, param, true).then(data => {
  604. util.showSuccess("提交成功");
  605. uni.hideLoading();
  606. uni.navigateBack();
  607. });
  608. }
  609. },
  610. computed: {
  611. filterCustomerList() {
  612. return this.customerType.filter(item => {
  613. return item.keywords.includes(this.customerTypeSearch)
  614. });
  615. },
  616. chosedCustomerType() {
  617. if (this.chosedCustomer.length > 0) {
  618. return this.customerType.filter(item => {
  619. return this.chosedCustomer.includes(item.keywords)
  620. })
  621. } else {
  622. return this.customerType
  623. }
  624. }
  625. },
  626. };
  627. </script>
  628. <style lang="scss" scoped>
  629. @import "./newFollowup.css";
  630. .voiceContent {
  631. position: fixed;
  632. top: 0;
  633. bottom: 0;
  634. left: 0;
  635. right: 0;
  636. width: 100vw;
  637. height: 100vh;
  638. display: flex;
  639. justify-content: center;
  640. align-items: center;
  641. background: rgba(30, 30, 30, 0.4592);
  642. z-index: 10001;
  643. }
  644. .box {
  645. background: rgba(21, 144, 233, 0.299);
  646. width: 524upx;
  647. height: 524upx;
  648. border-radius: 50%;
  649. display: flex;
  650. align-items: center;
  651. justify-content: center;
  652. .center {
  653. width: 412upx;
  654. height: 412upx;
  655. background: #1590E9;
  656. border-radius: 50%;
  657. display: flex;
  658. align-items: center;
  659. justify-content: center;
  660. flex-direction: column;
  661. .voice {
  662. width: 110upx;
  663. height: 133upx;
  664. }
  665. .text {
  666. color: #FFFFFF;
  667. font-size: 36upx;
  668. margin-top: 24upx;
  669. }
  670. }
  671. }
  672. .follow_up_list {
  673. .total {
  674. font-size: 22rpx;
  675. margin-top: 20rpx;
  676. line-height: 1;
  677. }
  678. .list {
  679. display: flex;
  680. font-size: 22rpx;
  681. flex-wrap: wrap;
  682. margin: 0 -30rpx;
  683. padding: 0 15rpx;
  684. max-height: calc(3em + 90rpx + 66rpx);
  685. overflow: hidden;
  686. &.chosed {
  687. max-height: unset;
  688. }
  689. .taga-item {
  690. line-height: 1;
  691. padding: 11rpx 33rpx;
  692. color: #333333;
  693. background: rgba(136, 136, 136, 0.1);
  694. border: 1rpx solid rgba(232, 103, 17, 0);
  695. border-radius: 6rpx;
  696. margin: 15rpx;
  697. &.active {
  698. background: rgba(253, 84, 43, 0.1);
  699. border: 1rpx solid rgba(232, 103, 17, 0.5) !important;
  700. color: #FD6D2B !important;
  701. }
  702. }
  703. }
  704. .more {
  705. text-align: center;
  706. color: #999999;
  707. font-size: 22rpx;
  708. position: relative;
  709. top: 4rpx;
  710. }
  711. }
  712. .customerTypePopup {
  713. width: 100%;
  714. height: 100%;
  715. .search {
  716. padding: 25rpx;
  717. .input {
  718. box-sizing: border-box;
  719. }
  720. }
  721. .list {
  722. height: calc(100% - 200rpx);
  723. display: flex;
  724. flex-wrap: wrap;
  725. padding: 0 15rpx;
  726. overflow: hidden;
  727. .item {
  728. line-height: 1;
  729. padding: 11rpx 33rpx;
  730. color: #333333;
  731. background: rgba(136, 136, 136, 0.1);
  732. border: 1rpx solid rgba(232, 103, 17, 0) !important;
  733. border-radius: 6rpx;
  734. margin: 15rpx;
  735. display: inline-flex;
  736. &.active {
  737. background: rgba(253, 84, 43, 0.1) !important;
  738. border: 1rpx solid rgba(232, 103, 17, 0.5) !important;
  739. color: #FD6D2B !important;
  740. }
  741. }
  742. }
  743. .save {
  744. background: #2B6EFD;
  745. width: 600rpx;
  746. height: 78rpx;
  747. line-height: 78rpx;
  748. text-align: center;
  749. margin: 0 auto;
  750. border-radius: 17rpx;
  751. font-size: 36rpx;
  752. color: #FFFFFF;
  753. }
  754. }
  755. </style>