incrementalList.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737
  1. <template>
  2. <div class="dataReport-container" id="dataReport-container">
  3. <div class="dataReport-top">
  4. <a :href="exportExcel" download>
  5. <button class="button-sty act">导出EXCEL</button>
  6. </a>
  7. <button
  8. :class="['button-sty',{'act':filterObj.month===item.label}]"
  9. v-for="item in monthLabel"
  10. @click="toggleMonth(item.label)"
  11. :key="item.label">
  12. {{item.label}}
  13. </button>
  14. <date-picker
  15. v-model="filterObj.date"
  16. type="date"
  17. range
  18. value-type="format"
  19. placeholder="自定义时间段"
  20. :clearable="false"
  21. :editable="false"
  22. @change="dateChange"/>
  23. <el-input
  24. placeholder="请输入客户名称"
  25. v-model="searchVal"
  26. style="maxWidth:400px;margin-left:auto"
  27. @input="handleSearch"
  28. clearable>
  29. <i slot="prefix" class="el-input__icon el-icon-search"></i>
  30. </el-input>
  31. </div>
  32. <div class="dataReport-main">
  33. <div class="main-top">
  34. <!-- <el-select
  35. v-model="filterObj.sale"
  36. placeholder="请选择销售"
  37. style="width:150px;marginRight:10px;marginBottom:8px;"
  38. v-if="Role=='admin'||Role=='ficc_admin'||Role=='rai_admin'||ManageType!=0"
  39. clearable
  40. @change="changeFilter"
  41. filterable>
  42. <el-option
  43. v-for="item in salesArr"
  44. :key="item"
  45. :label="item.RealName"
  46. :value="item.AdminId">
  47. </el-option>
  48. </el-select> -->
  49. <el-cascader
  50. v-if="Role=='finance'||Role=='admin'||Role=='ficc_admin'||Role=='rai_admin'||ManageType!=0"
  51. v-model="filterObj.sale"
  52. placeholder="请选择销售"
  53. style="min-width:250px;marginRight:10px;marginBottom:8px;"
  54. :options="salesArr"
  55. :props="defaultSalesProps"
  56. :show-all-levels="false"
  57. collapse-tags
  58. clearable
  59. filterable
  60. @change="changeFilter">
  61. </el-cascader>
  62. <el-select
  63. v-model="filterObj.type"
  64. placeholder="请选择客户类型"
  65. style="width:150px;marginRight:10px;marginBottom:8px;"
  66. v-if="Role=='finance'||Role=='admin'"
  67. clearable
  68. @change="changeFilter">
  69. <el-option
  70. v-for="item in typeArr"
  71. :key="item"
  72. :label="item.name"
  73. :value="item.name">
  74. </el-option>
  75. </el-select>
  76. <el-select
  77. v-model="filterObj.area"
  78. placeholder="请选择所属区域"
  79. style="width:150px;marginRight:10px;marginBottom:8px;"
  80. clearable
  81. @change="changeFilter">
  82. <el-option
  83. v-for="item in areaArr"
  84. :key="item"
  85. :label="item"
  86. :value="item">
  87. </el-option>
  88. </el-select>
  89. </div>
  90. <div class="main-section">
  91. <el-row :gutter="36">
  92. <el-col
  93. :span="6"
  94. v-for="item in data_typeArr"
  95. :key="item.label"
  96. >
  97. <el-card
  98. :class="['base-card',{'main-card':filterObj.data_type===item.label}]" shadow="hover"
  99. @click.native="toggleType(item.label)">
  100. <div slot="header" class="clearfix">
  101. <span>
  102. {{item.label}}数
  103. <el-tooltip
  104. class="item"
  105. effect="dark"
  106. :content="item.label === '新增试用客户'
  107. ? '新建试用客户的时间或跨部门领取的时间,包含在所选时间段内的客户数'
  108. : item.label === '新签客户'
  109. ? '新签合同的起始日期包含在所选时间段内的客户'
  110. : item.label === '续约客户'
  111. ? '续约合同的起始日期包含在所选时间段内且不包含在新签合同存续期内的客户'
  112. : '筛选时间段内有过正式转试用记录,且当前为非正式、非永续状态的客户'"
  113. placement="top">
  114. <i class="el-icon-info"></i>
  115. </el-tooltip>
  116. </span>
  117. </div>
  118. <div class="card-cont">
  119. {{
  120. item.label === '新增试用客户'
  121. ? TrialTotal
  122. : item.label === '新签客户'
  123. ? NewCompanyTotal
  124. : item.label === '续约客户'
  125. ? RenewalCompanyTotal
  126. : item.label === '未续约客户'
  127. ? NotRenewalCompanyTotal
  128. :""
  129. }}
  130. </div>
  131. </el-card>
  132. </el-col>
  133. </el-row>
  134. </div>
  135. <div class="tabs-box" v-if="filterObj.data_type=='未续约客户'">
  136. <el-radio-group v-model="isNotRenewedConfirm" class="tabs-box-confirm" @change="notRenewedConfirmChange">
  137. <el-radio-button :label="1">已确认</el-radio-button>
  138. <div class="center-line"></div>
  139. <el-radio-button :label="0">待确认</el-radio-button>
  140. </el-radio-group>
  141. <div class="tabs-box-status" v-show="isNotRenewedConfirm">
  142. <el-select v-model="noRenewalReasonId" placeholder="请选择不续约归因"
  143. clearable @change="getTableData" style="width: 240px;margin-right: 50px;">
  144. <el-option :label="item.AscribeContent" :value="item.CompanyAscribeId"
  145. v-for="item in noRenewalReasonList" :key="item.reasonId"></el-option>
  146. </el-select>
  147. <span @click="tabsHandler(item)" :class="tabsActiveName===item.value ? 'active':''"
  148. v-for="item in tabsList" :key="item">
  149. {{item.name}}({{item.name==='试用'?NotRenewalTryOut:NotRenewalNotTryOut}})
  150. </span>
  151. </div>
  152. </div>
  153. <el-table
  154. :data="tableData"
  155. border
  156. style="margin-top: 20px;min-height:400px"
  157. v-loading="isShowloadding"
  158. element-loading-text="数据加载中..."
  159. >
  160. <template v-for="item in incrementTableColums">
  161. <el-table-column
  162. :key="item.label"
  163. :label="item.label"
  164. :width="item.widthsty"
  165. align="center"
  166. v-if="controlTableColumnShow(item)">
  167. <template slot-scope="scope">
  168. <span
  169. :style="item.textsty"
  170. @click="jumpHandle(scope.row,item)"
  171. v-if="item.key==='CreateTime'||item.key==='StartDate'||item.key==='EndDate'">
  172. {{
  173. scope.row[item.key] |formatTime
  174. }}
  175. </span>
  176. <span v-else-if="item.label=='未续约说明'">
  177. <span style="display:block" v-if="scope.row[item.key]">最新情况:{{scope.row[item.key]}}</span>
  178. <span v-if="scope.row.RenewalTodo">To Do 事项:{{scope.row.RenewalTodo}}</span>
  179. <span v-if="scope.row[item.key]||scope.row.RenewalTodo" style="color:#409EFF;cursor:pointer;" @click="renewalReasonMore(scope.row)">&emsp;更多>></span>
  180. </span>
  181. <div v-else-if="item.key=='CompanyName'" style="padding:4px 0">
  182. <span
  183. :style="item.textsty"
  184. @click="jumpHandle(scope.row,item)" >
  185. {{
  186. scope.row[item.key]
  187. }}
  188. </span>
  189. <div class="package-difference" v-if="scope.row.PackageDifference">
  190. {{scope.row.PackageDifference}}
  191. </div>
  192. </div>
  193. <div v-else-if="item.key==='Remark' " class="remark-row">
  194. <span class="remark-text" @click="viewHistoryRemarkFun(scope.row)" v-if="scope.row.IsShowNoRenewedNote">...</span>
  195. <span class="operation-button" v-show="canConfirmNotRenewed && (!isNotRenewedConfirm)"
  196. style="margin-right: 0;" @click="addRemarkFun(scope.row)">添加</span>
  197. </div>
  198. <div v-else-if="item.key=='AscribeContent'">
  199. <span style="color: #409EFF;cursor: pointer;"
  200. @click="editReasonLabel(scope.row)" >
  201. {{scope.row[item.key]}}
  202. </span>
  203. </div>
  204. <span
  205. v-else
  206. :style="item.textsty"
  207. @click="jumpHandle(scope.row,item)" >
  208. {{
  209. scope.row[item.key]
  210. }}
  211. </span>
  212. </template>
  213. </el-table-column>
  214. </template>
  215. <el-table-column label="操作" width="180px" align="center"
  216. v-if="canConfirmNotRenewed && (!isNotRenewedConfirm) && filterObj.data_type =='未续约客户'" >
  217. <template slot-scope="scope">
  218. <div class="operation-row">
  219. <span class="operation-button" @click="confirmedNoRenewalFun(scope.row)">确认不续约</span>
  220. </div>
  221. </template>
  222. </el-table-column>
  223. <div slot="empty" style="lineHeight:44px;margin:60px 0;color:#999;">
  224. <img src="~@/assets/img/cus_m/nodata.png" alt="" style="display:block;width:160px;height:128px;margin: auto;">
  225. <span>暂无数据</span>
  226. </div>
  227. </el-table>
  228. <el-col :span="24" class="toolbar" v-if="total">
  229. <m-page
  230. :total="total"
  231. :page_no="page_no"
  232. @handleCurrentChange="handleCurrentChange"/>
  233. </el-col>
  234. </div>
  235. <!-- 未续约说明列表弹窗 -->
  236. <renewalListDia :isShow.sync="isRenewalShow" :rowInfo="rowInfo"/>
  237. <!-- 添加备注弹窗 -->
  238. <addRemark :isShow.sync="isAddRemarkShow" @saveRemark="saveRemark" />
  239. <!-- 历史备注弹窗 -->
  240. <viewRemark :isShow.sync="isViewRemarkShow" :tableData="historyRemarkList" />
  241. <!-- 确认不续约弹窗 -->
  242. <confirmedNoRenewal :isShow.sync="isConfirmNoRenewalShow" :dataForm="confirmNoRenewalForm"
  243. :noRenewalReasonList="noRenewalReasonList" @refreshReasonList="getNORenewalReasonList" @saveLabel="saveLabel" />
  244. </div>
  245. </template>
  246. <script>
  247. import { incrementTableColums } from './configdata.js'
  248. import { dataMainInterface,customInterence } from '@/api/api.js'
  249. import mPage from '@/components/mPage.vue'
  250. import renewalListDia from './components/renewalListDia.vue'
  251. import addRemark from './components/noRenewalReasonDia/addRemark.vue'
  252. import viewRemark from './components/noRenewalReasonDia/viewRemark.vue'
  253. import confirmedNoRenewal from './components/noRenewalReasonDia/confirmedNoRenewal.vue'
  254. var moment = require('moment');
  255. moment().format();
  256. export default {
  257. name:'',
  258. components: {mPage,renewalListDia,addRemark,viewRemark,confirmedNoRenewal},
  259. computed: {
  260. exportExcel() {
  261. let baseUrl = process.env.API_ROOT + "/statistic_report/incremental_company_list";
  262. let token = localStorage.getItem("auth") || "";
  263. let paramStr = "";
  264. // 处理销售筛选
  265. let salesArr=[]
  266. if(this.filterObj.sale.length){
  267. salesArr=this.filterObj.sale.map(item=>{
  268. return item[item.length-1]
  269. })
  270. }
  271. let obj = {
  272. CompanyType: this.filterObj.type,
  273. AdminId: salesArr.join(','),
  274. RegionType: this.filterObj.area,
  275. EndDate: this.end_date,
  276. StartDate: this.start_date,
  277. DataType: this.filterObj.data_type == '新增试用客户' ? '新增试用' : this.filterObj.data_type,
  278. Keyword:this.searchVal,
  279. IsExport:true,
  280. IsConfirm:this.filterObj.data_type=='未续约客户'?this.isNotRenewedConfirm:-1,
  281. CompanyAscribeId:this.noRenewalReasonId
  282. };
  283. for (let key in obj) {
  284. paramStr = `${paramStr}&${key}=${obj[key]}`;
  285. }
  286. return `${baseUrl}?${token}${paramStr}`;
  287. },
  288. incrementTableColums() {
  289. return incrementTableColums;
  290. },
  291. Role() {
  292. let role = localStorage.getItem('Role') || '';
  293. return role;
  294. },
  295. //管理权限
  296. ManageType() {
  297. return localStorage.getItem('ManageType') || '';
  298. },
  299. //确认未续约权限
  300. canConfirmNotRenewed(){
  301. return ['admin','rai_admin'].includes(this.Role)
  302. }
  303. },
  304. data () {
  305. return {
  306. searchVal:sessionStorage.getItem('incrementBack')?JSON.parse(sessionStorage.getItem('incrementBack')).searchVal:'',
  307. tableData:[],
  308. isShowloadding:false,
  309. start_date:'',
  310. end_date:'',
  311. /* 筛选条件 */
  312. filterObj: {
  313. month:'近1个月',
  314. date:[],
  315. type:'',
  316. sale: '',
  317. area: '',
  318. data_type:'新增试用客户'
  319. },
  320. monthLabel: [
  321. {
  322. label: "近1个月"
  323. },
  324. {
  325. label: "近2个月"
  326. },
  327. {
  328. label: "近3个月"
  329. }
  330. ],
  331. salesArr:[],//销售列表
  332. defaultSalesProps:{
  333. multiple: true,
  334. label:'RealName',
  335. children:'ChildrenList',
  336. value:'AdminId'
  337. },//销售级联配置
  338. typeArr:[
  339. {
  340. name:'ficc'
  341. },{
  342. name:'权益'
  343. }
  344. ],//类型
  345. areaArr:['国内','海外'],
  346. pageSize:10,
  347. page_no:sessionStorage.getItem('incrementBack')?JSON.parse(sessionStorage.getItem('incrementBack')).page_no:1,
  348. total:0,
  349. data_typeArr:[
  350. {
  351. label:'新增试用客户'
  352. },
  353. {
  354. label:'新签客户'
  355. },
  356. {
  357. label:'续约客户'
  358. },
  359. {
  360. label:'未续约客户'
  361. },
  362. ],//数据类型
  363. TrialTotal:0,//新增试用数
  364. NewCompanyTotal:0,//新签客户数
  365. NotRenewalCompanyTotal:0,//未续约客户数
  366. RenewalCompanyTotal:0,//续约客户数
  367. isRenewalShow:false, //未续约说明列表弹框是否显示
  368. rowInfo:null, // 未续约说明更多行信息
  369. tabsList:[{name:'试用',value:'试用'},{name:'冻结/流失',value:'非试用'}],
  370. tabsActiveName:'试用',
  371. NotRenewalNotTryOut:0,//冻结流失的人数
  372. NotRenewalTryOut:0,//试用的人数
  373. isNotRenewedConfirm:1,//未续约的是否已确认
  374. noRenewalReasonList:[],
  375. noRenewalReasonId:'',
  376. selectItemRow:{},// 当前选中的row
  377. // 添加备注
  378. isAddRemarkShow:false,
  379. //历史备注
  380. isViewRemarkShow:false,
  381. historyRemarkList:[],
  382. //确认不续约
  383. isConfirmNoRenewalShow:false,
  384. confirmNoRenewalForm:{
  385. reason:"",
  386. detailReason:""
  387. }
  388. };
  389. },
  390. /* 页面跳转前记录参数 */
  391. beforeRouteLeave(to, form, next) {
  392. let backData = {
  393. page_no: this.page_no,
  394. end_date: this.end_date,
  395. start_date: this.start_date,
  396. filterObj: this.filterObj
  397. }
  398. sessionStorage.setItem('incrementBack',JSON.stringify(backData))
  399. next()
  400. },
  401. /* 页面进入前是否清除参数 */
  402. beforeRouteEnter(to,from,next) {
  403. if(from.path!='/customDetail') {
  404. sessionStorage.removeItem('incrementBack')
  405. }
  406. next()
  407. },
  408. methods: {
  409. controlTableColumnShow(item){
  410. return !item.dataType ||
  411. (item.dataType === this.filterObj.data_type &&
  412. (!item.notRenewedConfirm || item.notRenewedConfirm==this.isNotRenewedConfirm)) // 已确认和待确认
  413. },
  414. // 搜索
  415. handleSearch(){
  416. if(!this.searchVal){
  417. this.page_no=1
  418. this.filterObj= {
  419. month:'近1个月',
  420. date:[],
  421. type:'',
  422. sale: '',
  423. area: '',
  424. data_type:this.filterObj.data_type
  425. }
  426. let date_before = moment().subtract(1,'M').format("YYYY-MM-DD");
  427. let date_now = moment().format("YYYY-MM-DD");
  428. let date = [date_before,date_now]
  429. this.start_date = date_before;
  430. this.end_date = date_now;
  431. this.filterObj.date = date;
  432. this.getTableData()
  433. return
  434. }
  435. this.page_no=1
  436. this.filterObj= {
  437. month:'',
  438. date:[],
  439. type:'',
  440. sale: '',
  441. area: '',
  442. data_type:this.filterObj.data_type
  443. }
  444. this.start_date = '';
  445. this.end_date = '';
  446. this.getTableData()
  447. },
  448. //tabs 的点击事件
  449. tabsHandler(item) {
  450. this.tabsActiveName = item.value;
  451. this.noRenewalReasonId=''
  452. this.page_no = 1;
  453. this.getTableData()
  454. },
  455. notRenewedConfirmChange(){
  456. this.noRenewalReasonId=''
  457. this.page_no = 1;
  458. this.getTableData()
  459. },
  460. /* 获取表格 */
  461. getTableData() {
  462. this.isShowloadding = true;
  463. // 处理销售筛选
  464. let salesArr=[]
  465. if(this.filterObj.sale.length){
  466. salesArr=this.filterObj.sale.map(item=>{
  467. return item[item.length-1]
  468. })
  469. }
  470. let params = {
  471. Keyword:this.searchVal,
  472. PageSize:this.pageSize,
  473. CurrentIndex:this.page_no,
  474. CompanyType: this.filterObj.type,
  475. AdminId: salesArr.join(','),
  476. RegionType: this.filterObj.area,
  477. EndDate: this.end_date,
  478. StartDate: this.start_date,
  479. DataType: this.filterObj.data_type == '新增试用客户' ? '新增试用' : this.filterObj.data_type,
  480. TryOutType:this.filterObj.data_type=='未续约客户'? this.tabsActiveName : '',
  481. IsConfirm:this.filterObj.data_type=='未续约客户'?this.isNotRenewedConfirm:-1,
  482. CompanyAscribeId:this.noRenewalReasonId
  483. }
  484. dataMainInterface.incrementalList(params).then(res => {
  485. if(res.Ret === 200) {
  486. this.tableData = res.Data.List || [];
  487. this.total = res.Data.Paging.Totals;
  488. this.TrialTotal = res.Data.TrialTotal;
  489. this.NewCompanyTotal = res.Data.NewCompanyTotal;
  490. this.RenewalCompanyTotal = res.Data.RenewalCompanyTotal;
  491. this.NotRenewalCompanyTotal = res.Data.NotRenewalCompanyTotal;
  492. this.NotRenewalTryOut = res.Data.NotRenewalTryOut
  493. this.NotRenewalNotTryOut = res.Data.NotRenewalNotTryOut
  494. this.isShowloadding = false;
  495. }
  496. })
  497. },
  498. /* 获取销售 */
  499. getSale() {
  500. customInterence.getSale().then(res => {
  501. if(res.Ret === 200) {
  502. this.salesArr = res.Data.List;
  503. }
  504. })
  505. },
  506. /* 切换月份 */
  507. toggleMonth(label) {
  508. this.filterObj.month = label;
  509. let days = label=='近1个月' ? 1 : label=='近2个月' ? 2 : label=='近3个月' ? 3 : 0;
  510. this.filterDate(days)
  511. },
  512. /* 选择服务日期 */
  513. dateChange(e) {
  514. if(e[0]) {
  515. this.start_date = e[0];
  516. this.end_date = e[1];
  517. }else {
  518. this.start_date = '';
  519. this.end_date = '';
  520. }
  521. this.filterObj.month = '';
  522. this.page_no = 1;
  523. this.searchVal=''
  524. this.getTableData();
  525. },
  526. /* 切换数据类型 */
  527. toggleType(label) {
  528. this.filterObj.data_type = label;
  529. this.noRenewalReasonId=''
  530. if(label == "未续约客户"){
  531. this.getNORenewalReasonList()
  532. }
  533. this.tabsActiveName = '试用';
  534. this.page_no = 1;
  535. this.getTableData()
  536. },
  537. /* 筛选改变时 */
  538. changeFilter() {
  539. this.page_no = 1;
  540. this.searchVal=''
  541. this.getTableData()
  542. },
  543. /* 切换页码 */
  544. handleCurrentChange(page) {
  545. this.page_no = page;
  546. this.getTableData()
  547. },
  548. /* 获取近几个月的日期范围 */
  549. filterDate(month) {
  550. if(month) {
  551. let date_before = moment().subtract(month,'M').format("YYYY-MM-DD");
  552. let date_now = moment().format("YYYY-MM-DD");
  553. let date = [date_before,date_now]
  554. this.start_date = date_before;
  555. this.end_date = date_now;
  556. this.filterObj.date = date;
  557. this.page_no = 1;
  558. this.searchVal=''
  559. this.getTableData();
  560. }
  561. },
  562. /* 跳转 */
  563. jumpHandle(row,item) {
  564. if(item.link) {
  565. this.$router.push({
  566. path: '/customDetail',
  567. query: {
  568. id:row.CompanyId
  569. }
  570. })
  571. }
  572. },
  573. getNORenewalReasonList(){
  574. dataMainInterface.getAscribList().then(res=>{
  575. if(res.Ret == 200){
  576. this.noRenewalReasonList=res.Data.List||[]
  577. }
  578. })
  579. },
  580. // 未续约说明更多按钮
  581. renewalReasonMore(row){
  582. this.rowInfo={
  583. CompanyId:row.CompanyId,
  584. ProductId:row.ProductId
  585. }
  586. this.isRenewalShow=true
  587. },
  588. // 添加备注
  589. addRemarkFun(row){
  590. this.selectItemRow=row
  591. this.isAddRemarkShow=true
  592. },
  593. // 添加备注 保存
  594. saveRemark(remark){
  595. // console.log(remark);
  596. let params={
  597. CompanyId:this.selectItemRow.CompanyId,
  598. ProductId:this.selectItemRow.ProductId,
  599. Content:remark
  600. }
  601. dataMainInterface.addNotRenewedRemark(params).then(res=>{
  602. if(res.Ret == 200){
  603. this.$message.success("添加成功")
  604. this.isAddRemarkShow=false
  605. this.selectItemRow={}
  606. }
  607. })
  608. },
  609. // 查看历史备注
  610. viewHistoryRemarkFun(row){
  611. dataMainInterface.getNotRenewedRemarkList({CompanyId:row.CompanyId,ProductId:row.ProductId})
  612. .then(res=>{
  613. if(res.Ret == 200){
  614. this.historyRemarkList=res.Data.List || []
  615. this.isViewRemarkShow=true
  616. }
  617. })
  618. },
  619. confirmedNoRenewalFun(row){
  620. this.confirmNoRenewalForm.reason = ""
  621. this.confirmNoRenewalForm.detailReason = ""
  622. this.selectItemRow = row
  623. this.isConfirmNoRenewalShow=true
  624. },
  625. editReasonLabel(row){
  626. dataMainInterface.infoNoRenewedAscribe({CompanyId:row.CompanyId,ProductId:row.ProductId})
  627. .then(res=>{
  628. if(res.Ret == 200){
  629. this.confirmNoRenewalForm.reason = res.Data.Detail?res.Data.Detail.CompanyAscribeId||"":""
  630. this.confirmNoRenewalForm.detailReason = res.Data.Detail?res.Data.Detail.Content||"":""
  631. this.selectItemRow=row
  632. this.isConfirmNoRenewalShow=true
  633. }
  634. })
  635. },
  636. saveLabel(item){
  637. let params={
  638. CompanyId:this.selectItemRow.CompanyId,
  639. ProductId:this.selectItemRow.ProductId,
  640. CompanyAscribeId:item.CompanyAscribeId,
  641. Content:item.Content
  642. }
  643. dataMainInterface.addNoRenewedAscribe(params).then(res=>{
  644. if(res.Ret == 200){
  645. this.$message.success("确认成功")
  646. this.isConfirmNoRenewalShow=false
  647. this.selectItemRow={}
  648. this.getTableData()
  649. }
  650. })
  651. }
  652. },
  653. created() {},
  654. mounted() {
  655. this.getSale();
  656. if(sessionStorage.getItem('incrementBack')) {
  657. let backData = JSON.parse(sessionStorage.getItem('incrementBack'));
  658. this.page_no = backData.page_no
  659. this.end_date = backData.end_date
  660. this.start_date = backData.start_date
  661. this.filterObj = backData.filterObj
  662. this.searchVal=backData.searchVal
  663. }
  664. /* 默认选中近1个月 */
  665. this.filterDate(this.filterObj.month === '近1个月' ? 1 : this.filterObj.month ==='近2个月' ? 2 : this.filterObj.month ==='近3个月' ? 3 : 0);
  666. },
  667. }
  668. </script>
  669. <style lang='scss' scoped>
  670. @import './index.scss';
  671. .tabs-box{
  672. flex-direction: column;
  673. .tabs-box-confirm{
  674. display: flex;
  675. align-items: center;
  676. margin-bottom: 20px;
  677. .center-line{
  678. width: 1px;
  679. height: 21px;
  680. background-color: #333333;
  681. margin: 0 20px;
  682. }
  683. }
  684. }
  685. .operation-button{
  686. color:#409EFF;
  687. cursor: pointer;
  688. font-size: 14px;
  689. margin-right: 10px;
  690. }
  691. .remark-row{
  692. display: flex;
  693. justify-content: center;
  694. .remark-text{
  695. width:18px ;
  696. height: 18px;
  697. margin-right: 8px;
  698. font-size: 18px;
  699. color: #409EFF;
  700. cursor: pointer;
  701. }
  702. }
  703. .operation-row{
  704. display: flex;
  705. align-items: center;
  706. justify-content: center;
  707. flex-wrap: wrap;
  708. .operation-button{
  709. &:last-child{
  710. margin-right:0;
  711. }
  712. }
  713. }
  714. </style>
  715. <style lang="scss">
  716. #dataReport-container{
  717. .tabs-box{
  718. .el-radio-button{
  719. margin-right: 0;
  720. }
  721. .el-radio-button .el-radio-button__inner{
  722. border: none;
  723. width: 120px;
  724. height: 40px;
  725. border-radius: 4px;
  726. }
  727. }
  728. }
  729. </style>