dailyDetails.vue 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185
  1. <template>
  2. <div class="dailyDetails">
  3. <div class="dailyDetailsBox" v-if="setDailyDetailsBoxFlag">
  4. <!-- 顶部条-->
  5. <div class="navBarTOP">
  6. <van-nav-bar class="navBar" title="日报详情" left-arrow @click-left="onClickLeft">
  7. <template #right>
  8. <div
  9. class="shareBtn"
  10. @click="clickShareFlag(-1)"
  11. v-if="reportTarget && source != 'share' && reportTarget.reportPostType == 'fx'">
  12. <van-icon name="share" />
  13. <div class="vedioLinks" @click.stop="shareVedioLinks">
  14. <span>一键分享日报,</span>
  15. <span class="linkSpan">点击查看操作视频</span><van-icon name="play" />
  16. </div>
  17. </div>
  18. </template>
  19. </van-nav-bar>
  20. </div>
  21. <div class="lineGrey"></div>
  22. <div class="lineGrey"></div>
  23. <div class="lineGrey"></div>
  24. <div class="lineGrey"></div>
  25. <div class="lineGrey"></div>
  26. <!-- 主体内容-->
  27. <div class="container linep">
  28. <van-collapse v-model="activeNames" v-if="!YFQuota">
  29. <!-- YFQuota:应用服务平台 不显示各项指标 -->
  30. <van-collapse-item v-if="!GZQuota" title="拜访数据(实时)" name="7">
  31. <visitedRealTime
  32. :reportTargetAll="reportTargetAll"
  33. :powerGrade="powerGrade"
  34. :JZQuota="JZQuota"></visitedRealTime>
  35. </van-collapse-item>
  36. <van-collapse-item title="建店布机" v-if="!JZQuota && !GZQuota" name="2">
  37. <createStoreBJ :reportTargetAll="reportTargetAll"></createStoreBJ>
  38. </van-collapse-item>
  39. <van-collapse-item v-if="!JZQuota && !GZQuota" name="33" title="下单点数">
  40. <placeOrder :reportTargetAll="reportTargetAll"></placeOrder>
  41. </van-collapse-item>
  42. <van-collapse-item name="16" v-if="!JZQuota && !GZQuota" title="专业时时丽分销店下单">
  43. <ZYPlaceOrder :reportTargetAll="reportTargetAll"></ZYPlaceOrder>
  44. </van-collapse-item>
  45. <van-collapse-item v-if="type != 3 && type != 4" name="1" :title="saptitle">
  46. <performanceSAP :reportTargetAll="reportTargetAll" :JZQuota="JZQuota"></performanceSAP>
  47. </van-collapse-item>
  48. <van-collapse-item v-if="GZQuota" name="43" title="纯态之家SAP(千元)">
  49. <van-row style="margin-top: -10px">
  50. <van-col span="12"><span class="leftTitle">本月</span></van-col
  51. ><van-col span="12"><span class="rightTitle">本季</span></van-col>
  52. <van-col span="12"
  53. ><p>
  54. 业绩实际:<span class="colorbalck">{{
  55. Micrometer(reportTargetAll.gzCtzjMonthAct)
  56. }}</span>
  57. </p></van-col
  58. >
  59. <van-col span="12"
  60. ><p>
  61. 业绩实际:<span class="colorbalck">{{
  62. Micrometer(reportTargetAll.gzCtzjQuarterAct)
  63. }}</span>
  64. </p></van-col
  65. >
  66. <van-col span="12"
  67. ><p>
  68. 业绩成长率:<span class="colorbalck"
  69. >{{ reportTargetAll.gzCtzjMonthGrowRate }}%</span
  70. >
  71. </p></van-col
  72. >
  73. <van-col span="12"
  74. ><p>
  75. 业绩成长率:<span class="colorbalck"
  76. >{{ reportTargetAll.gzCtzjQuarterGrowRate }}%</span
  77. >
  78. </p></van-col
  79. >
  80. </van-row>
  81. </van-collapse-item>
  82. <van-collapse-item v-if="GZQuota" name="42" title="商机关联的质感外墙业绩SAP(千元)">
  83. <van-row style="margin-top: -10px">
  84. <van-col span="12"><span class="leftTitle">本月</span></van-col
  85. ><van-col span="12"><span class="rightTitle">本季</span></van-col>
  86. <van-col span="12"
  87. ><p>
  88. 业绩实际:<span class="colorbalck">{{
  89. Micrometer(reportTargetAll.gzZgwqMonthAct)
  90. }}</span>
  91. </p></van-col
  92. >
  93. <van-col span="12"
  94. ><p>
  95. 业绩实际:<span class="colorbalck">{{
  96. Micrometer(reportTargetAll.gzZgwqQuarterAct)
  97. }}</span>
  98. </p></van-col
  99. >
  100. <van-col span="12"
  101. ><p>
  102. 业绩成长率:<span class="colorbalck"
  103. >{{ reportTargetAll.gzZgwqMonthGrowRate }}%</span
  104. >
  105. </p></van-col
  106. >
  107. <van-col span="12"
  108. ><p>
  109. 业绩成长率:<span class="colorbalck"
  110. >{{ reportTargetAll.gzZgwqQuarterGrowRate }}%</span
  111. >
  112. </p></van-col
  113. >
  114. </van-row>
  115. </van-collapse-item>
  116. <van-collapse-item v-if="GZQuota" name="41" title="累计出货有效客户">
  117. <van-row>
  118. <van-col span="12"
  119. ><p>
  120. 全年实际:<span class="colorbalck">{{
  121. Micrometer(reportTargetAll.gzKhljYearAct)
  122. }}</span>
  123. </p></van-col
  124. >
  125. <van-col span="12"
  126. ><p>
  127. 全年目标:<span class="colorbalck">{{
  128. Micrometer(reportTargetAll.gzKhljYearTarget)
  129. }}</span>
  130. </p></van-col
  131. >
  132. <van-col span="12"><p>&nbsp;</p></van-col>
  133. <van-col span="12"
  134. ><p>
  135. 目标达成率:<span class="colorbalck"
  136. >{{ Micrometer(reportTargetAll.gzKhljSuccessRate) }}%</span
  137. >
  138. </p></van-col
  139. >
  140. </van-row>
  141. </van-collapse-item>
  142. <van-collapse-item v-if="GZQuota" name="40" title="今日拜访">
  143. <van-row>
  144. <van-col span="12"
  145. ><p>
  146. 公装客户数:<span class="colorbalck">{{
  147. Micrometer(reportTargetAll.gzVisitCustomerNum)
  148. }}</span>
  149. </p></van-col
  150. >
  151. <van-col span="12"
  152. ><p>
  153. 工地数:<span class="colorbalck">{{
  154. Micrometer(reportTargetAll.gzVisitGdNum)
  155. }}</span>
  156. </p></van-col
  157. >
  158. <van-col span="12"
  159. ><p>
  160. 潜在客户数:<span class="colorbalck">{{
  161. Micrometer(reportTargetAll.gzVisitQzCustomerNum)
  162. }}</span>
  163. </p></van-col
  164. >
  165. </van-row>
  166. </van-collapse-item>
  167. <van-collapse-item v-if="!JZQuota && !GZQuota" name="11" title="专业时时丽SAP(千元)">
  168. <ZYSAP :reportTargetAll="reportTargetAll"></ZYSAP>
  169. </van-collapse-item>
  170. <van-collapse-item v-if="!JZQuota && !GZQuota" name="29" title="瓷砖胶SAP(千元)">
  171. <van-row>
  172. <van-col span="12"><span class="leftTitle">本月业绩</span></van-col
  173. ><van-col span="12"><span class="rightTitle">本季业绩</span></van-col>
  174. <van-col span="12"
  175. ><p>
  176. 实际:<span class="colorbalck">{{
  177. Micrometer(reportTargetAll.czjSapMonthAct)
  178. }}</span>
  179. </p></van-col
  180. >
  181. <van-col span="12"
  182. ><p>
  183. 实际:<span class="colorbalck">{{
  184. Micrometer(reportTargetAll.czjSapQuarterAct)
  185. }}</span>
  186. </p></van-col
  187. >
  188. <van-col span="12"
  189. ><p>
  190. 达成率:<span class="colorbalck"
  191. >{{ reportTargetAll.czjSapMonthSuccessRate }}%</span
  192. >
  193. </p></van-col
  194. >
  195. <van-col span="12"
  196. ><p>
  197. 达成率:<span class="colorbalck"
  198. >{{ reportTargetAll.czjSapQuarterSuccessRate }}%</span
  199. >
  200. </p></van-col
  201. >
  202. <van-col span="12"
  203. ><p>
  204. 成长率:<span class="colorbalck">{{ reportTargetAll.czjSapMonthGrowRate }}%</span>
  205. </p></van-col
  206. >
  207. <van-col span="12"
  208. ><p>
  209. 成长率:<span class="colorbalck"
  210. >{{ reportTargetAll.czjSapQuarterGrowRate }}%</span
  211. >
  212. </p></van-col
  213. >
  214. </van-row>
  215. </van-collapse-item>
  216. <van-collapse-item name="17" v-if="!JZQuota && !GZQuota" title="超好贴分销店下单">
  217. <veryGoodPlaceOrder :reportTargetAll="reportTargetAll"></veryGoodPlaceOrder>
  218. </van-collapse-item>
  219. <van-collapse-item v-if="JZQuota" name="23" title="展厅上样">
  220. <van-row>
  221. <van-col span="24"
  222. ><p>
  223. 当月新增店数:<span class="colorbalck">{{
  224. reportTargetAll.exhibitionHallMonthAct
  225. }}</span>
  226. </p></van-col
  227. >
  228. <van-col span="12"
  229. ><p>
  230. 全年实际店数:<span class="colorbalck"
  231. >{{ Micrometer(reportTargetAll.exhibitionHallYearAct) }}%</span
  232. >
  233. </p></van-col
  234. >
  235. <van-col span="12"
  236. ><p>
  237. 全年达成进度率:<span class="colorbalck"
  238. >{{ reportTargetAll.exhibitionHallYearRate }}%</span
  239. >
  240. </p></van-col
  241. >
  242. </van-row>
  243. </van-collapse-item>
  244. <van-collapse-item v-if="JZQuota" name="22" title="基材粉料过账(千元)">
  245. <van-row>
  246. <van-col span="12"><span class="leftTitle">本月实际</span></van-col>
  247. <van-col span="12"><span class="rightTitle">本季实际</span></van-col>
  248. <van-col span="12"
  249. ><p>
  250. 客户数:<span class="colorbalck">{{ reportTargetAll.jcPostCustomerMonth }}</span>
  251. </p>
  252. </van-col>
  253. <van-col span="12"
  254. ><p>
  255. 客户数:<span class="colorbalck">{{ reportTargetAll.jcPostCustomerQuarter }}</span>
  256. </p></van-col
  257. >
  258. <van-col span="12"
  259. ><p>
  260. 下单数(包):<span class="colorbalck">{{
  261. reportTargetAll.jcPostOrderNumMonth
  262. }}</span>
  263. </p>
  264. </van-col>
  265. <van-col span="12"
  266. ><p>
  267. 下单数(包):<span class="colorbalck">{{
  268. reportTargetAll.jcPostOrderNumQuarter
  269. }}</span>
  270. </p></van-col
  271. >
  272. <van-col span="12"
  273. ><p>
  274. 下单销售额:<span class="colorbalck">{{
  275. Micrometer(reportTargetAll.jcPostOrderPriceMonth)
  276. }}</span>
  277. </p></van-col
  278. >
  279. <van-col span="12"
  280. ><p>
  281. 下单销售额:<span class="colorbalck">{{
  282. Micrometer(reportTargetAll.jcPostOrderPriceQuarter)
  283. }}</span>
  284. </p></van-col
  285. >
  286. <van-col span="12"
  287. ><p>
  288. 下单率:<span class="colorbalck">{{ reportTargetAll.jcPostOrderRateMonth }}%</span>
  289. </p>
  290. </van-col>
  291. <van-col span="12"
  292. ><p>
  293. 下单率:<span class="colorbalck"
  294. >{{ reportTargetAll.jcPostOrderRateQuarter }}%</span
  295. >
  296. </p></van-col
  297. >
  298. <van-col span="24"><span class="leftTitle">年度累计实际</span></van-col>
  299. <van-col span="24"
  300. ><p>
  301. 客户数:<span class="colorbalck">{{ reportTargetAll.jcPostCustomerYear }}</span>
  302. </p>
  303. </van-col>
  304. <van-col span="24"
  305. ><p>
  306. 下单数(包):<span class="colorbalck">{{
  307. reportTargetAll.jcPostOrderNumYear
  308. }}</span>
  309. </p>
  310. </van-col>
  311. <van-col span="24"
  312. ><p>
  313. 下单销售额:<span class="colorbalck">{{
  314. Micrometer(reportTargetAll.jcPostOrderPriceYear)
  315. }}</span>
  316. </p></van-col
  317. >
  318. <van-col span="24"
  319. ><p>
  320. 下单率:<span class="colorbalck">{{ reportTargetAll.jcPostOrderRateYear }}%</span>
  321. </p>
  322. </van-col>
  323. </van-row>
  324. </van-collapse-item>
  325. <van-collapse-item v-if="JZQuota" name="21" title="魔术漆过账(千元)">
  326. <van-row>
  327. <van-col span="12"><span class="leftTitle">本月实际</span></van-col>
  328. <van-col span="12"><span class="rightTitle">本季实际</span></van-col>
  329. <van-col span="12"
  330. ><p>
  331. 客户数:<span class="colorbalck">{{ reportTargetAll.msqPostCustomerMonth }}</span>
  332. </p>
  333. </van-col>
  334. <van-col span="12"
  335. ><p>
  336. 客户数:<span class="colorbalck">{{
  337. reportTargetAll.msqPostCustomerQuarter
  338. }}</span>
  339. </p></van-col
  340. >
  341. <van-col span="12"
  342. ><p>
  343. 下单销售额:<span class="colorbalck">{{
  344. Micrometer(reportTargetAll.msqPostOrderPriceMonth)
  345. }}</span>
  346. </p></van-col
  347. >
  348. <van-col span="12"
  349. ><p>
  350. 下单销售额:<span class="colorbalck">{{
  351. Micrometer(reportTargetAll.msqPostOrderPriceQuarter)
  352. }}</span>
  353. </p></van-col
  354. >
  355. <van-col span="12"
  356. ><p>
  357. 下单率:<span class="colorbalck"
  358. >{{ reportTargetAll.msqPostOrderRateMonth }}%</span
  359. >
  360. </p>
  361. </van-col>
  362. <van-col span="12"
  363. ><p>
  364. 下单率:<span class="colorbalck"
  365. >{{ reportTargetAll.msqPostOrderRateQuarter }}%</span
  366. >
  367. </p></van-col
  368. >
  369. <van-col span="24"><span class="leftTitle">年度累计实际</span></van-col>
  370. <van-col span="24"
  371. ><p>
  372. 客户数:<span class="colorbalck">{{ reportTargetAll.msqPostCustomerYear }}</span>
  373. </p>
  374. </van-col>
  375. <van-col span="24"
  376. ><p>
  377. 下单销售额:<span class="colorbalck">{{
  378. Micrometer(reportTargetAll.msqPostOrderPriceYear)
  379. }}</span>
  380. </p></van-col
  381. >
  382. <van-col span="24"
  383. ><p>
  384. 下单率:<span class="colorbalck">{{ reportTargetAll.msqPostOrderRateYear }}%</span>
  385. </p>
  386. </van-col>
  387. </van-row>
  388. </van-collapse-item>
  389. <van-collapse-item title="今日拜访照片" name="10" v-if="reportTarget.photoSummary">
  390. <div
  391. class="visitIMG1"
  392. :style="{
  393. overflow: 'hidden',
  394. height: visitIMG1Flag ? 'auto' : '170px',
  395. }">
  396. <template v-for="(item, index) in reportTarget.photoSummary">
  397. <van-col span="6" style="padding: 5px" @click="pviewFn(index)" :key="index">
  398. <img :src="item.fileUrl" alt="" />
  399. </van-col>
  400. </template>
  401. </div>
  402. <div
  403. v-if="reportTarget.photoSummary.length > 8"
  404. class="arrowIcon"
  405. style="
  406. display: flex;
  407. align-items: center;
  408. justify-content: center;
  409. padding: 5px 0;
  410. font-size: 14px;
  411. color: #969799;
  412. "
  413. @click="visitIMG1Flag = !visitIMG1Flag">
  414. <template v-if="visitIMG1Flag">
  415. <span style="margin-right: 5px">折叠</span>
  416. <van-icon size="14" :name="require('@/assets/Icon/arrow-up.png')" />
  417. </template>
  418. <template v-else>
  419. <span style="margin-right: 5px">展开</span>
  420. <van-icon size="14" :name="require('@/assets/Icon/arrow-down.png')" />
  421. </template>
  422. </div>
  423. <!-- 生动化陈列 sku -->
  424. <template
  425. v-if="
  426. reportTarget.photoSkuImgSummaryeList && reportTarget.photoSkuImgSummaryeList.length
  427. ">
  428. <p style="padding-bottom: 10px; font-size: 14px; color: #1e5398; font-weight: 500">
  429. SKU陈列照识别结果
  430. </p>
  431. <p style="padding-bottom: 10px; font-size: 14px; font-weight: 500">
  432. 目前识别桶装和战略产品合计106个,后续会增加被识别产品数
  433. </p>
  434. <el-table
  435. :data="reportTarget.photoSkuImgSummaryeList"
  436. border
  437. class="table-headermd table-headermdhome"
  438. style="width: 100%">
  439. <el-table-column label="序号" type="index" width="50px" align="center" />
  440. <el-table-column label="门店名称(编号)" prop="name" align="center">
  441. <template slot-scope="scope">
  442. {{ scope.row.name }}({{ scope.row.code }})
  443. </template>
  444. </el-table-column>
  445. <el-table-column label="SKU数量" prop="count" width="80px" align="center" />
  446. </el-table>
  447. </template>
  448. </van-collapse-item>
  449. </van-collapse>
  450. <div class="contentContainer">
  451. <div v-if="GZQuota">
  452. <p class="contentContainerTitle">今日项目跟进数</p>
  453. <div style="padding: 10px 0">
  454. <van-field readonly v-model="projectFollowNum" type="digit" />
  455. </div>
  456. <p class="contentContainerTitle">今日TUC成功报备数量</p>
  457. <div style="padding: 10px 0">
  458. <van-field readonly v-model="tucReportingSuccessNum" type="digit" />
  459. </div>
  460. </div>
  461. <!-- 今日未拜访原因 如果不为空则展示,为空则不展示 -->
  462. <div v-if="reportTarget.notVisitReason && reportTarget.notVisitReason != ''">
  463. <p class="contentContainerTitle">截至日报提交时间,今日拜访0家店的原因</p>
  464. <div style="padding: 10px 0">
  465. <van-field
  466. readonly
  467. v-model="reportTarget.notVisitReason"
  468. rows="4"
  469. autosize
  470. type="textarea" />
  471. </div>
  472. </div>
  473. <p class="contentContainerTitle">今日机会与挑战总结</p>
  474. <div style="padding: 10px 0">
  475. <van-field v-model="Content" rows="4" autosize readonly type="textarea" />
  476. </div>
  477. <p class="contentContainerTitle">明日工作规划</p>
  478. <div style="padding: 10px 0">
  479. <van-field v-model="Content2" rows="4" autosize readonly type="textarea" />
  480. </div>
  481. </div>
  482. <div
  483. class="contentContainer"
  484. v-if="reportTarget.status > 1 || reportTarget.reportRemarks != null">
  485. <p class="texttitle texttitledaily">
  486. <span class="opint"></span>
  487. <span v-if="reportTarget.status == 1">待审批</span>
  488. <span v-if="reportTarget.status == 3">审批完成</span>
  489. <span v-if="reportTarget.status == 2">退回重写</span>
  490. <span v-if="reportTarget.status == -1">过期未汇报</span>
  491. <span v-if="reportTarget.status > 1"><{{ ptitle }}审批></span>
  492. </p>
  493. <div style="padding: 10px 0" v-if="reportTarget.status > 1">
  494. <van-rate
  495. v-model="reportTarget.number"
  496. :size="25"
  497. readonly
  498. color="#ffd21e"
  499. void-icon="star"
  500. void-color="#eee" /><span class="rateText"
  501. >&nbsp;&nbsp;&nbsp;&nbsp;{{ reportTarget.number }}分</span
  502. >
  503. </div>
  504. <p class="contentContainerTitle" v-if="reportTarget.status > 1">评语</p>
  505. <div style="padding: 10px 0" v-if="reportTarget.status > 1">
  506. <van-field v-model="successContent" rows="4" autosize readonly type="textarea" />
  507. </div>
  508. </div>
  509. <div class="contentContainer" v-if="reportTarget.reportRemarks != null">
  510. <div>
  511. <div v-for="(item, index) in reportTarget.reportRemarks" :key="index">
  512. <div class="contentContainerTitle redisplay">
  513. <div class="nameTitle">
  514. <template v-if="item.deptName">{{ item.deptName }}-</template
  515. >{{ item.postName }}-{{ item.nickName }}点评
  516. </div>
  517. <div
  518. class="shareBtn"
  519. @click="clickShareFlag(index)"
  520. v-if="reportTarget && source != 'share' && reportTarget.reportPostType == 'fx'">
  521. <van-icon name="share" />
  522. </div>
  523. </div>
  524. <div style="padding: 10px 0">
  525. <van-field
  526. v-model="item.remarkContent"
  527. rows="4"
  528. autosize
  529. readonly
  530. type="textarea" />
  531. </div>
  532. </div>
  533. </div>
  534. </div>
  535. <div class="contentContainer" v-if="reportTarget.reportRemarks != null">
  536. <p class="contentContainerTitle">点评</p>
  537. <div style="padding: 10px 0">
  538. <van-field
  539. v-model="managerRemarkContent"
  540. rows="4"
  541. autosize
  542. maxlength="800"
  543. show-word-limit
  544. type="textarea"
  545. :formatter="formatter" />
  546. </div>
  547. </div>
  548. </div>
  549. <br />
  550. <div class="contentborder" v-if="reportTarget.status == 2">
  551. <van-button type="info" size="small" plain class="Btn1" @click="submint"
  552. >重新填写</van-button
  553. >
  554. </div>
  555. <br />
  556. <div class="contentborder" v-if="reportTarget.reportRemarks != null">
  557. <van-button type="info" size="small" plain class="Btn1" @click="submintRemark"
  558. >提交点评</van-button
  559. >
  560. </div>
  561. <br />
  562. <br />
  563. </div>
  564. <share
  565. v-if="setShareFlag"
  566. :reportTarget="reportTarget"
  567. :reportId="$route.query.reportId"
  568. @setShareImg="setShareImg"
  569. @setDailyDetailsBox="setDailyDetailsBox"
  570. :urlList="urlList"
  571. :reportRemarksIndex="reportRemarksIndex"
  572. :checkedPlan="checkedPlan"></share>
  573. <!--分享图片列表 -->
  574. <el-dialog
  575. title="选择分享的内容"
  576. :visible.sync="shareImgFlag"
  577. width="90%"
  578. :append-to-body="true"
  579. :close-on-click-modal="false"
  580. @close="wuliaoTableClose"
  581. custom-class="shareImgFlag">
  582. <div v-if="reportTarget.photoSummary">
  583. <p style="margin-bottom: 10px; margin-top: 0; display: flex">
  584. 今日总结&明日规划的文本内容<van-checkbox
  585. v-model="checkedPlan"
  586. style="margin-left: 10px"></van-checkbox>
  587. </p>
  588. <p style="margin-top: 0">请点击勾选想要分享的今日拜访照片</p>
  589. <div class="shareVisitImg">
  590. <template v-for="(itemImg, indexImg) in reportTarget.photoSummary">
  591. <div>
  592. <img :src="itemImg.fileUrl" alt="" @click="selectImg(itemImg)" />
  593. <van-icon
  594. @click.stop
  595. name="success"
  596. class="activaImg"
  597. color="#fff"
  598. size="15"
  599. style="
  600. position: absolute;
  601. right: 0;
  602. bottom: 0;
  603. /* margin: -15px 0 0 -15px; */
  604. pointer-events: none;
  605. background: #2b73cf;
  606. border: 2px solid #fff;
  607. "
  608. v-if="itemImg.checked" />
  609. </div>
  610. </template>
  611. </div>
  612. </div>
  613. <span slot="footer" class="footer-btn">
  614. <van-button plain type="primary" @click="shareImgFlag = false">取 消</van-button>
  615. <van-button type="primary" @click="confirmShare">确 定</van-button>
  616. </span>
  617. </el-dialog>
  618. </div>
  619. </template>
  620. <script>
  621. import history from '@/assets/Icon/history.png';
  622. import {
  623. userTodayPlanNum,
  624. loginLog,
  625. getDetailById,
  626. getReportInfo,
  627. buryingPoint,
  628. insertRemark,
  629. } from '@/api/index';
  630. import { ImagePreview } from 'vant';
  631. import visitedRealTime from '@/views/componentsTarget/visitedRealTime';
  632. import createStoreBJ from '@/views/componentsTarget/createStoreBJ';
  633. import placeOrder from '@/views/componentsTarget/placeOrder';
  634. import ZYPlaceOrder from '@/views/componentsTarget/ZYPlaceOrder';
  635. import performanceSAP from '@/views/componentsTarget/performanceSAP';
  636. import ZYSAP from '@/views/componentsTarget/ZYSAP';
  637. import veryGoodPlaceOrder from '@/views/componentsTarget/veryGoodPlaceOrder';
  638. import share from '@/components/share';
  639. export default {
  640. name: 'daily',
  641. components: {
  642. visitedRealTime,
  643. createStoreBJ,
  644. placeOrder,
  645. ZYPlaceOrder,
  646. performanceSAP,
  647. ZYSAP,
  648. veryGoodPlaceOrder,
  649. share,
  650. },
  651. data() {
  652. return {
  653. show: true,
  654. num: 0,
  655. todayGoal: {},
  656. progressWidth: 0,
  657. history: history,
  658. imgArr: [],
  659. activeNames: [
  660. '1',
  661. '2',
  662. '3',
  663. '4',
  664. '5',
  665. '6',
  666. '7',
  667. '8',
  668. '10',
  669. '16',
  670. '17',
  671. '20',
  672. '21',
  673. '22',
  674. '23',
  675. '11',
  676. '29',
  677. '33',
  678. '40',
  679. '41',
  680. '42',
  681. '43',
  682. ],
  683. value: '2',
  684. message: '',
  685. powerGrade: '',
  686. Content: '',
  687. Content2: '',
  688. reportTargetAll: {},
  689. reportContents: [{ dayContent: '' }],
  690. reportTarget: {},
  691. successContent: '',
  692. projectFollowNum: '',
  693. tucReportingSuccessNum: '',
  694. tucUndertakingNum: '',
  695. imgList: [],
  696. type: '-1',
  697. JZQuota: false,
  698. GZQuota: false,
  699. YFQuota: false, //应用服务
  700. titlejz: '',
  701. saptitle: '业绩目标SAP(千元)',
  702. ptitle: '',
  703. setShareFlag: false,
  704. source: '',
  705. reportRemarksIndex: -1,
  706. shareImgFlag: false,
  707. urlList: [],
  708. setDailyDetailsBoxFlag: true,
  709. sourceType: '',
  710. checkedPlan: true, //今日总结&明日规划
  711. visitIMG1Flag: false,
  712. shareVisible: true,
  713. managerRemarkContent: '',
  714. };
  715. },
  716. created() {
  717. this.getDetailById();
  718. },
  719. watch: {
  720. $route(to, from) {
  721. this.powerGrade = localStorage.getItem('powerGrade');
  722. if (to.path == '/dailyDetails') {
  723. this.getDetailById();
  724. }
  725. // &&from.path=="/dailyApprovalList"
  726. // if(to.path=="/dailyDetails"&&from.path=="/myHistoricalDaily"){
  727. // this.getDetailById()
  728. // }
  729. },
  730. },
  731. activated() {
  732. this.source = this.$route.query.source || '';
  733. this.sourceType = this.$route.query.sourceType || '';
  734. this.powerGrade = localStorage.getItem('powerGrade');
  735. this.setDailyDetailsBoxFlag = true;
  736. this.shareImgFlag = false;
  737. this.num = 0;
  738. this.userTodayPlanNum();
  739. this.setShareFlag = false;
  740. },
  741. methods: {
  742. setVisitIMG1Flag(item) {
  743. // this.$set(item, 'visitIMG1Flag', !item.visitIMG1Flag);
  744. this.$forceUpdate();
  745. },
  746. setDailyDetailsBox(flag) {
  747. this.setDailyDetailsBoxFlag = flag;
  748. },
  749. setShareImg(flag) {
  750. this.setShareFlag = flag;
  751. },
  752. // 打开分享
  753. clickShareFlag(index = -1) {
  754. buryingPoint({
  755. systemModel: '日报审核',
  756. buryingPointType: 2,
  757. buryingPointValue: this.$route.query.reportId,
  758. buryingPointName: '日报详情分享',
  759. buryingPointPosition: '日报详情',
  760. });
  761. this.urlList = [];
  762. this.reportRemarksIndex = index;
  763. if (this.reportTarget.photoSummary && this.reportTarget.photoSummary.length) {
  764. // 重置分享图片状态
  765. this.reportTarget.photoSummary.forEach((item) => {
  766. // item.photos.forEach((val) => {
  767. this.$set(item, 'checked', false);
  768. // });
  769. });
  770. // 选择分享的图片
  771. this.shareImgFlag = true;
  772. } else {
  773. this.setShareFlag = true;
  774. }
  775. },
  776. // 确认分享
  777. confirmShare() {
  778. this.reportTarget.photoSummary.forEach((item) => {
  779. // item.photos.forEach((val) => {
  780. if (item.checked) this.urlList.push(item.fileUrl);
  781. // });
  782. });
  783. if (this.urlList.length == 0 && !this.checkedPlan) {
  784. this.$notify({ type: 'warning', message: '请选择分享内容!', className: 'notifyIndex' });
  785. return;
  786. }
  787. buryingPoint({
  788. systemModel: '日报审核',
  789. buryingPointType: 2,
  790. buryingPointValue: `文本${this.checkedPlan ? '是' : '否'},图片${this.urlList.length}`,
  791. buryingPointName: '日报分享确认',
  792. buryingPointPosition: '日报详情',
  793. });
  794. this.shareImgFlag = false;
  795. this.setShareFlag = true;
  796. },
  797. pviewFn(index) {
  798. var imgList = [];
  799. var photos = this.reportTarget.photoSummary;
  800. for (let i = 0; i < photos.length; i++) {
  801. imgList.push(photos[i].fileUrl);
  802. }
  803. ImagePreview({ images: imgList, startPosition: index });
  804. },
  805. submint() {
  806. this.$router.push({
  807. path: '/daily',
  808. query: { reportId: this.$route.query.reportId, temporaryShow: 'N' },
  809. });
  810. },
  811. submintRemark() {
  812. let loading1 = this.$toast.loading({
  813. duration: 0,
  814. message: '数据提交中...',
  815. forbidClick: true,
  816. });
  817. if (this.managerRemarkContent.trim() == '') {
  818. this.$toast('点评内容未填写');
  819. return false;
  820. }
  821. if (this.managerRemarkContent.length > 800) {
  822. this.$toast('点评内容超过800字');
  823. return false;
  824. }
  825. var remak = {
  826. remarkContent: this.managerRemarkContent,
  827. reportId: this.$route.query.reportId,
  828. };
  829. insertRemark(remak).then((res) => {
  830. loading1.clear();
  831. if (res.code == 200) {
  832. this.$dialog
  833. .alert({
  834. title: '系统提示',
  835. message: '提交成功',
  836. })
  837. .then(() => {
  838. this.managerRemarkContent = '';
  839. this.getDetailById();
  840. });
  841. } else {
  842. this.$toast.fail(res.msg);
  843. }
  844. });
  845. },
  846. formatter(value) {
  847. return value.replace(
  848. /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/gi,
  849. ''
  850. );
  851. },
  852. getDetailById() {
  853. let loading1 = this.$toast.loading({
  854. duration: 0,
  855. message: '加载中...',
  856. forbidClick: true,
  857. });
  858. getDetailById({ reportId: this.$route.query.reportId }).then((res) => {
  859. loading1.clear();
  860. this.reportTargetAll = res.data.reportTargetAll;
  861. this.reportTarget = res.data;
  862. this.JZQuota = false;
  863. this.GZQuota = false;
  864. this.YFQuota = res.data.postType == 'YF' ? true : false;
  865. this.ptitle = res.data.pdeptName + '-' + res.data.ppostName + '-' + res.data.pnickName;
  866. if (res.data.postType == 'JZ') {
  867. this.JZQuota = true;
  868. } else if (res.data.postType == 'GZ') {
  869. this.GZQuota = true;
  870. this.saptitle = '公裝业绩SAP(千元)';
  871. } else {
  872. this.saptitle = '业绩目标SAP(千元)';
  873. }
  874. this.type = res.data.userType;
  875. if (res.data.status == 3) {
  876. this.successContent = res.data.successContent;
  877. } else {
  878. this.successContent = res.data.failContent;
  879. }
  880. if (res.data.reportContents.length > 0) {
  881. this.Content = res.data.reportContents[0].dayContent;
  882. if (res.data.reportContents.length > 1) {
  883. this.Content2 = res.data.reportContents[1].dayContent;
  884. } else {
  885. this.Content2 = '';
  886. }
  887. if (res.data.reportContents.length > 2) {
  888. this.projectFollowNum = res.data.reportContents[2].projectFollowNum;
  889. this.tucReportingSuccessNum = res.data.reportContents[3].tucReportingSuccessNum;
  890. }
  891. } else {
  892. this.Content = '';
  893. this.Content2 = '';
  894. }
  895. this.reportContents = res.data.reportContents;
  896. var imgList = [];
  897. if (res.data.photoSummary != null) {
  898. for (var k = 0; k < res.data.photoSummary.length; k++) {
  899. imgList.push(res.data.photoSummary[k].fileUrl + '');
  900. }
  901. }
  902. console.log(res.data.photoSummary);
  903. this.imgList = imgList;
  904. if (this.sourceType == 'daily') {
  905. this.$nextTick(() => {
  906. this.clickShareFlag(-1);
  907. });
  908. }
  909. });
  910. },
  911. userTodayPlanNum() {
  912. userTodayPlanNum().then((res) => {
  913. if (res.code == 200) {
  914. this.todayGoal = res.data;
  915. this.progressWidth = (this.todayGoal.finishNum / this.todayGoal.planNum) * 100 + '%';
  916. localStorage.setItem('nickName', res.data.user.nickName);
  917. localStorage.setItem('storeType', res.data.user.type);
  918. } else {
  919. this.$toast.fail(res.msg);
  920. }
  921. });
  922. },
  923. onClickLeft() {
  924. this.$router.replace({
  925. path: 'myHistoricalDaily',
  926. });
  927. },
  928. wuliaoTableClose() {
  929. this.shareImgFlag = false;
  930. },
  931. // 选中的图片
  932. selectImg(item) {
  933. this.$set(item, 'checked', !item.checked);
  934. console.log(item);
  935. },
  936. },
  937. };
  938. </script>
  939. <style scoped lang="scss">
  940. .dailyDetails {
  941. position: relative;
  942. // background: #fff;
  943. width: 100%;
  944. height: 100%;
  945. .shareBtn {
  946. width: 22px;
  947. height: 22px;
  948. border-radius: 50%;
  949. background: #666;
  950. display: flex;
  951. align-items: center;
  952. justify-content: center;
  953. position: relative;
  954. .van-icon-share {
  955. color: #fff;
  956. }
  957. .vedioLinks {
  958. max-width: vw(205);
  959. position: absolute;
  960. bottom: -13px;
  961. background: #dae7f6;
  962. padding: 2px 7px;
  963. /* word-break: keep-all; */
  964. white-space: nowrap;
  965. /* text-overflow: ellipsis; */
  966. right: 0;
  967. border-radius: 5px;
  968. font-size: 10px;
  969. right: 28px;
  970. display: flex;
  971. flex-direction: column;
  972. justify-content: center;
  973. align-items: flex-start;
  974. z-index: 999999;
  975. span {
  976. line-height: 17px;
  977. }
  978. .linkSpan {
  979. text-decoration: underline;
  980. }
  981. .van-icon-play {
  982. position: absolute;
  983. top: 12px;
  984. /* transform: rotate(270deg); */
  985. right: -8px;
  986. color: #dae7f6;
  987. }
  988. }
  989. }
  990. }
  991. .container {
  992. margin: 10px;
  993. }
  994. .container .van-collapse-item {
  995. margin-bottom: 10px;
  996. border-radius: 6px;
  997. overflow: hidden;
  998. }
  999. .linep p {
  1000. margin: 6px 0 0 0;
  1001. font-size: 14px;
  1002. color: #666;
  1003. }
  1004. .linep .texttitle {
  1005. color: #0057ba;
  1006. position: relative;
  1007. padding-left: 10px;
  1008. }
  1009. .linep .texttitledaily {
  1010. color: #000;
  1011. position: relative;
  1012. padding-left: 10px;
  1013. }
  1014. .linep .texttitle2 {
  1015. padding-left: 0;
  1016. }
  1017. .linep .texttitledaily .opint {
  1018. position: absolute;
  1019. left: 0px;
  1020. top: 6px;
  1021. margin-right: 6px;
  1022. display: inline-block;
  1023. width: 6px;
  1024. height: 6px;
  1025. border-radius: 10px;
  1026. background-color: #0057ba;
  1027. }
  1028. .leftTitle {
  1029. background-color: #74a4d9;
  1030. color: #fff;
  1031. display: inline-block;
  1032. padding: 0 4px;
  1033. border-radius: 2px;
  1034. }
  1035. .rightTitle {
  1036. background-color: #e7b4bb;
  1037. color: #fff;
  1038. display: inline-block;
  1039. padding: 0 4px;
  1040. border-radius: 2px;
  1041. }
  1042. .redisplay {
  1043. display: flex;
  1044. align-items: center;
  1045. justify-content: space-between;
  1046. .nameTitle {
  1047. flex: 1;
  1048. }
  1049. }
  1050. </style>
  1051. <style lang="scss">
  1052. .linep .van-cell__title {
  1053. color: #1e5398;
  1054. font-weight: 500;
  1055. }
  1056. .linep .contentContainer {
  1057. background-color: white;
  1058. border-radius: 8px;
  1059. padding: 10px 16px;
  1060. margin-bottom: 10px;
  1061. }
  1062. .linep .contentContainer .contentContainerTitle {
  1063. color: #222;
  1064. }
  1065. .linep .contentContainer .contentContainerTitle span {
  1066. font-size: 12px;
  1067. color: #666;
  1068. }
  1069. .linep .contentContainer .van-field__control {
  1070. background-color: #ebf4ff;
  1071. padding: 10px;
  1072. border-radius: 8px;
  1073. }
  1074. .linep .contentContainer .van-cell {
  1075. padding: 0;
  1076. }
  1077. .colorbalck {
  1078. color: #333;
  1079. }
  1080. .visitIMG1 {
  1081. img {
  1082. display: block;
  1083. width: 100%;
  1084. height: 75px;
  1085. border-radius: 6px;
  1086. }
  1087. }
  1088. .table-headermd {
  1089. font-size: 12px;
  1090. text-align: center;
  1091. position: initial;
  1092. width: 98% !important;
  1093. margin: 0 auto;
  1094. border-right: 0;
  1095. border-radius: 10px;
  1096. .el-table__cell {
  1097. padding: 6px 0 !important;
  1098. }
  1099. }
  1100. .table-headermd th.el-table__cell {
  1101. background-color: #1989fa;
  1102. color: #fff;
  1103. }
  1104. .el-dialog__wrapper {
  1105. z-index: 9999 !important;
  1106. display: flex;
  1107. justify-content: center;
  1108. align-items: center;
  1109. background: rgba(0, 0, 0, 0.5) !important;
  1110. .shareImgFlag {
  1111. overflow: hidden;
  1112. display: flex;
  1113. flex-direction: column;
  1114. max-height: 70%;
  1115. margin-top: 0 !important;
  1116. .el-dialog__header {
  1117. height: 40px;
  1118. display: flex;
  1119. justify-content: right;
  1120. .el-dialog__headerbtn {
  1121. position: static !important;
  1122. }
  1123. }
  1124. .el-dialog__body {
  1125. padding: 30px 20px !important;
  1126. overflow-y: auto;
  1127. flex: 1;
  1128. }
  1129. .cell {
  1130. font-size: 12px;
  1131. }
  1132. .footer-btn {
  1133. display: flex;
  1134. justify-content: space-around;
  1135. }
  1136. }
  1137. }
  1138. .shareImgFlag {
  1139. .shareVisitImg {
  1140. display: flex;
  1141. flex-wrap: wrap;
  1142. div {
  1143. width: 22%;
  1144. height: 80px;
  1145. margin-right: 3%;
  1146. margin-top: 10px;
  1147. position: relative;
  1148. img {
  1149. width: 100%;
  1150. height: 100%;
  1151. }
  1152. }
  1153. }
  1154. .el-dialog__header {
  1155. display: flex;
  1156. .el-dialog__title {
  1157. flex: 1;
  1158. display: flex;
  1159. align-items: center;
  1160. justify-content: center;
  1161. }
  1162. }
  1163. }
  1164. .notifyIndex {
  1165. z-index: 999999 !important;
  1166. }
  1167. </style>