daily.vue 36 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061
  1. <template>
  2. <div class="daily">
  3. <!-- 顶部条-->
  4. <div class="navBarTOP">
  5. <van-nav-bar class="navBar" title="填写日报" left-arrow @click-left="onClickLeft">
  6. <template #right>
  7. <span
  8. v-if="temporaryShow != 'N'"
  9. @click="tsContentsFn"
  10. style="
  11. color: white;
  12. background: #74a4d9;
  13. display: block;
  14. padding: 6px 10px;
  15. border-radius: 6px;
  16. "
  17. >暂存</span
  18. >
  19. </template>
  20. </van-nav-bar>
  21. </div>
  22. <div class="lineGrey"></div>
  23. <div class="lineGrey"></div>
  24. <div class="lineGrey"></div>
  25. <div class="lineGrey"></div>
  26. <div style="height: 4px"></div>
  27. <!-- 主体内容-->
  28. <div class="container linepAdd">
  29. <van-collapse v-model="activeNames" v-if="!YFQuota">
  30. <!-- YFQuota:应用服务平台 不显示各项指标 -->
  31. <van-collapse-item v-if="!GZQuota" title="拜访数据(实时)" name="7">
  32. <visitedRealTime
  33. :reportTargetAll="reportTargetAll"
  34. :powerGrade="powerGrade"
  35. :JZQuota="JZQuota"></visitedRealTime>
  36. </van-collapse-item>
  37. <van-collapse-item title="建店布机" v-if="!JZQuota && !GZQuota" name="2">
  38. <createStoreBJ :reportTargetAll="reportTargetAll"></createStoreBJ>
  39. </van-collapse-item>
  40. <van-collapse-item v-if="!JZQuota && !GZQuota" name="33" title="下单点数">
  41. <placeOrder :reportTargetAll="reportTargetAll"></placeOrder>
  42. </van-collapse-item>
  43. <van-collapse-item name="16" v-if="!JZQuota && !GZQuota" title="专业时时丽分销店下单">
  44. <ZYPlaceOrder :reportTargetAll="reportTargetAll"></ZYPlaceOrder>
  45. </van-collapse-item>
  46. <van-collapse-item v-if="type != 3 && type != 4" name="1" :title="saptitle">
  47. <performanceSAP :reportTargetAll="reportTargetAll" :JZQuota="JZQuota"></performanceSAP>
  48. </van-collapse-item>
  49. <van-collapse-item v-if="GZQuota" name="43" title="纯态之家SAP(千元)">
  50. <van-row style="margin-top: -10px">
  51. <van-col span="12"><span class="leftTitle">本月</span></van-col
  52. ><van-col span="12"><span class="rightTitle">本季</span></van-col>
  53. <van-col span="12"
  54. ><p>
  55. 业绩实际:<span class="colorbalck">{{
  56. Micrometer(reportTargetAll.gzCtzjMonthAct)
  57. }}</span>
  58. </p></van-col
  59. >
  60. <van-col span="12"
  61. ><p>
  62. 业绩实际:<span class="colorbalck">{{
  63. Micrometer(reportTargetAll.gzCtzjQuarterAct)
  64. }}</span>
  65. </p></van-col
  66. >
  67. <!-- <van-col span="12" ><p>业绩达成率:<span class="colorbalck">{{ Micrometer(reportTargetAll.gzCtzjMonthSuccessRate) }}%</span></p></van-col>-->
  68. <!-- <van-col span="12" ><p>业绩达成率:<span class="colorbalck">{{ Micrometer(reportTargetAll.gzCtzjQuarterSuccessRate) }}%</span></p></van-col>-->
  69. <van-col span="12"
  70. ><p>
  71. 业绩成长率:<span class="colorbalck"
  72. >{{ reportTargetAll.gzCtzjMonthGrowRate }}%</span
  73. >
  74. </p></van-col
  75. >
  76. <van-col span="12"
  77. ><p>
  78. 业绩成长率:<span class="colorbalck"
  79. >{{ reportTargetAll.gzCtzjQuarterGrowRate }}%</span
  80. >
  81. </p></van-col
  82. >
  83. </van-row>
  84. </van-collapse-item>
  85. <van-collapse-item v-if="GZQuota" name="42" title="商机关联的质感外墙业绩SAP(千元)">
  86. <van-row style="margin-top: -10px">
  87. <van-col span="12"><span class="leftTitle">本月</span></van-col
  88. ><van-col span="12"><span class="rightTitle">本季</span></van-col>
  89. <van-col span="12"
  90. ><p>
  91. 业绩实际:<span class="colorbalck">{{
  92. Micrometer(reportTargetAll.gzZgwqMonthAct)
  93. }}</span>
  94. </p></van-col
  95. >
  96. <van-col span="12"
  97. ><p>
  98. 业绩实际:<span class="colorbalck">{{
  99. Micrometer(reportTargetAll.gzZgwqQuarterAct)
  100. }}</span>
  101. </p></van-col
  102. >
  103. <!-- <van-col span="12" ><p>业绩达成率:<span class="colorbalck">{{ Micrometer(reportTargetAll.gzZgwqMonthSuccessRate) }}%</span></p></van-col>-->
  104. <!-- <van-col span="12" ><p>业绩达成率:<span class="colorbalck">{{ Micrometer(reportTargetAll.gzZgwqQuarterSuccessRate) }}%</span></p></van-col>-->
  105. <van-col span="12"
  106. ><p>
  107. 业绩成长率:<span class="colorbalck"
  108. >{{ reportTargetAll.gzZgwqMonthGrowRate }}%</span
  109. >
  110. </p></van-col
  111. >
  112. <van-col span="12"
  113. ><p>
  114. 业绩成长率:<span class="colorbalck"
  115. >{{ reportTargetAll.gzZgwqQuarterGrowRate }}%</span
  116. >
  117. </p></van-col
  118. >
  119. </van-row>
  120. </van-collapse-item>
  121. <van-collapse-item v-if="GZQuota" name="41" title="累计出货有效客户">
  122. <van-row>
  123. <!-- <van-col span="12"><span class="leftTitle">全年开户</span></van-col><van-col span="12"><span class="rightTitle">本月报备</span></van-col>-->
  124. <van-col span="12"
  125. ><p>
  126. 全年实际:<span class="colorbalck">{{
  127. Micrometer(reportTargetAll.gzKhljYearAct)
  128. }}</span>
  129. </p></van-col
  130. >
  131. <!-- <van-col span="12" ><p>报备成功数:<span class="colorbalck">{{ Micrometer(reportTargetAll.gzBbMonthSuccessNum) }}</span></p></van-col>-->
  132. <!-- <van-col span="12"><p>&nbsp;</p></van-col>-->
  133. <van-col span="12"
  134. ><p>
  135. 全年目标:<span class="colorbalck">{{
  136. Micrometer(reportTargetAll.gzKhljYearTarget)
  137. }}</span>
  138. </p></van-col
  139. >
  140. <van-col span="12"><p>&nbsp;</p></van-col>
  141. <van-col span="12"
  142. ><p>
  143. 目标达成率:<span class="colorbalck"
  144. >{{ Micrometer(reportTargetAll.gzKhljSuccessRate) }}%</span
  145. >
  146. </p></van-col
  147. >
  148. </van-row>
  149. </van-collapse-item>
  150. <van-collapse-item v-if="GZQuota" name="40" title="今日拜访">
  151. <van-row>
  152. <van-col span="12"
  153. ><p>
  154. 公装客户数:<span class="colorbalck">{{
  155. Micrometer(reportTargetAll.gzVisitCustomerNum)
  156. }}</span>
  157. </p></van-col
  158. >
  159. <van-col span="12"
  160. ><p>
  161. 工地数:<span class="colorbalck">{{
  162. Micrometer(reportTargetAll.gzVisitGdNum)
  163. }}</span>
  164. </p></van-col
  165. >
  166. <van-col span="12"
  167. ><p>
  168. 潜在客户数:<span class="colorbalck">{{
  169. Micrometer(reportTargetAll.gzVisitQzCustomerNum)
  170. }}</span>
  171. </p></van-col
  172. >
  173. </van-row>
  174. </van-collapse-item>
  175. <van-collapse-item v-if="!JZQuota && !GZQuota" name="11" title="专业时时丽SAP(千元)">
  176. <ZYSAP :reportTargetAll="reportTargetAll"></ZYSAP>
  177. </van-collapse-item>
  178. <van-collapse-item v-if="!JZQuota && !GZQuota" name="29" title="瓷砖胶SAP(千元)">
  179. <van-row>
  180. <van-col span="12"><span class="leftTitle">本月业绩</span></van-col
  181. ><van-col span="12"><span class="rightTitle">本季业绩</span></van-col>
  182. <van-col span="12"
  183. ><p>
  184. 实际:<span class="colorbalck">{{
  185. Micrometer(reportTargetAll.czjSapMonthAct)
  186. }}</span>
  187. </p></van-col
  188. >
  189. <van-col span="12"
  190. ><p>
  191. 实际:<span class="colorbalck">{{
  192. Micrometer(reportTargetAll.czjSapQuarterAct)
  193. }}</span>
  194. </p></van-col
  195. >
  196. <van-col span="12"
  197. ><p>
  198. 达成率:<span class="colorbalck">{{ reportTargetAll.czjSapMonthSuccessRate }}%</span>
  199. </p></van-col
  200. >
  201. <van-col span="12"
  202. ><p>
  203. 达成率:<span class="colorbalck"
  204. >{{ reportTargetAll.czjSapQuarterSuccessRate }}%</span
  205. >
  206. </p></van-col
  207. >
  208. <van-col span="12"
  209. ><p>
  210. 成长率:<span class="colorbalck">{{ reportTargetAll.czjSapMonthGrowRate }}%</span>
  211. </p></van-col
  212. >
  213. <van-col span="12"
  214. ><p>
  215. 成长率:<span class="colorbalck">{{ reportTargetAll.czjSapQuarterGrowRate }}%</span>
  216. </p></van-col
  217. >
  218. </van-row>
  219. </van-collapse-item>
  220. <van-collapse-item name="17" v-if="!JZQuota && !GZQuota" title="超好贴分销店下单">
  221. <veryGoodPlaceOrder :reportTargetAll="reportTargetAll"></veryGoodPlaceOrder>
  222. </van-collapse-item>
  223. <van-collapse-item v-if="JZQuota" name="23" title="展厅上样">
  224. <van-row>
  225. <van-col span="24"
  226. ><p>
  227. 当月新增店数:<span class="colorbalck">{{
  228. reportTargetAll.exhibitionHallMonthAct
  229. }}</span>
  230. </p></van-col
  231. >
  232. <van-col span="12"
  233. ><p>
  234. 全年实际店数:<span class="colorbalck"
  235. >{{ Micrometer(reportTargetAll.exhibitionHallYearAct) }}%</span
  236. >
  237. </p></van-col
  238. >
  239. <van-col span="12"
  240. ><p>
  241. 全年达成进度率:<span class="colorbalck"
  242. >{{ reportTargetAll.exhibitionHallYearRate }}%</span
  243. >
  244. </p></van-col
  245. >
  246. </van-row>
  247. </van-collapse-item>
  248. <van-collapse-item v-if="JZQuota" name="22" title="基材粉料过账(千元)">
  249. <van-row>
  250. <van-col span="12"><span class="leftTitle">本月实际</span></van-col>
  251. <van-col span="12"><span class="rightTitle">本季实际</span></van-col>
  252. <van-col span="12"
  253. ><p>
  254. 客户数:<span class="colorbalck">{{ reportTargetAll.jcPostCustomerMonth }}</span>
  255. </p>
  256. </van-col>
  257. <van-col span="12"
  258. ><p>
  259. 客户数:<span class="colorbalck">{{ reportTargetAll.jcPostCustomerQuarter }}</span>
  260. </p></van-col
  261. >
  262. <van-col span="12"
  263. ><p>
  264. 下单数(包):<span class="colorbalck">{{ reportTargetAll.jcPostOrderNumMonth }}</span>
  265. </p>
  266. </van-col>
  267. <van-col span="12"
  268. ><p>
  269. 下单数(包):<span class="colorbalck">{{
  270. reportTargetAll.jcPostOrderNumQuarter
  271. }}</span>
  272. </p></van-col
  273. >
  274. <van-col span="12"
  275. ><p>
  276. 下单销售额:<span class="colorbalck">{{
  277. Micrometer(reportTargetAll.jcPostOrderPriceMonth)
  278. }}</span>
  279. </p></van-col
  280. >
  281. <van-col span="12"
  282. ><p>
  283. 下单销售额:<span class="colorbalck">{{
  284. Micrometer(reportTargetAll.jcPostOrderPriceQuarter)
  285. }}</span>
  286. </p></van-col
  287. >
  288. <van-col span="12"
  289. ><p>
  290. 下单率:<span class="colorbalck">{{ reportTargetAll.jcPostOrderRateMonth }}%</span>
  291. </p>
  292. </van-col>
  293. <van-col span="12"
  294. ><p>
  295. 下单率:<span class="colorbalck">{{ reportTargetAll.jcPostOrderRateQuarter }}%</span>
  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">{{ reportTargetAll.jcPostOrderNumYear }}</span>
  307. </p>
  308. </van-col>
  309. <van-col span="24"
  310. ><p>
  311. 下单销售额:<span class="colorbalck">{{
  312. Micrometer(reportTargetAll.jcPostOrderPriceYear)
  313. }}</span>
  314. </p></van-col
  315. >
  316. <van-col span="24"
  317. ><p>
  318. 下单率:<span class="colorbalck">{{ reportTargetAll.jcPostOrderRateYear }}%</span>
  319. </p>
  320. </van-col>
  321. </van-row>
  322. </van-collapse-item>
  323. <van-collapse-item v-if="JZQuota" name="21" title="魔术漆过账(千元)">
  324. <van-row>
  325. <van-col span="12"><span class="leftTitle">本月实际</span></van-col>
  326. <van-col span="12"><span class="rightTitle">本季实际</span></van-col>
  327. <van-col span="12"
  328. ><p>
  329. 客户数:<span class="colorbalck">{{ reportTargetAll.msqPostCustomerMonth }}</span>
  330. </p>
  331. </van-col>
  332. <van-col span="12"
  333. ><p>
  334. 客户数:<span class="colorbalck">{{ reportTargetAll.msqPostCustomerQuarter }}</span>
  335. </p></van-col
  336. >
  337. <van-col span="12"
  338. ><p>
  339. 下单销售额:<span class="colorbalck">{{
  340. Micrometer(reportTargetAll.msqPostOrderPriceMonth)
  341. }}</span>
  342. </p></van-col
  343. >
  344. <van-col span="12"
  345. ><p>
  346. 下单销售额:<span class="colorbalck">{{
  347. Micrometer(reportTargetAll.msqPostOrderPriceQuarter)
  348. }}</span>
  349. </p></van-col
  350. >
  351. <van-col span="12"
  352. ><p>
  353. 下单率:<span class="colorbalck">{{ reportTargetAll.msqPostOrderRateMonth }}%</span>
  354. </p>
  355. </van-col>
  356. <van-col span="12"
  357. ><p>
  358. 下单率:<span class="colorbalck"
  359. >{{ reportTargetAll.msqPostOrderRateQuarter }}%</span
  360. >
  361. </p></van-col
  362. >
  363. <van-col span="24"><span class="leftTitle">年度累计实际</span></van-col>
  364. <van-col span="24"
  365. ><p>
  366. 客户数:<span class="colorbalck">{{ reportTargetAll.msqPostCustomerYear }}</span>
  367. </p>
  368. </van-col>
  369. <van-col span="24"
  370. ><p>
  371. 下单销售额:<span class="colorbalck">{{
  372. Micrometer(reportTargetAll.msqPostOrderPriceYear)
  373. }}</span>
  374. </p></van-col
  375. >
  376. <van-col span="24"
  377. ><p>
  378. 下单率:<span class="colorbalck">{{ reportTargetAll.msqPostOrderRateYear }}%</span>
  379. </p>
  380. </van-col>
  381. </van-row>
  382. </van-collapse-item>
  383. <!-- 生动化陈列 sku -->
  384. <div v-if="photoSkuImgSummaryeList && photoSkuImgSummaryeList.length" class="SKUTable">
  385. <p style="padding-bottom: 10px; font-size: 14px; color: #1e5398; font-weight: 500">
  386. SKU陈列照识别结果
  387. </p>
  388. <p style="padding-bottom: 10px; font-size: 14px; font-weight: 500">
  389. 目前识别桶装和战略产品合计106个,后续会增加被识别产品数
  390. </p>
  391. <el-table
  392. :data="photoSkuImgSummaryeList"
  393. border
  394. class="table-headermd1"
  395. style="width: 100%">
  396. <el-table-column label="序号" type="index" width="50px" align="center" />
  397. <el-table-column label="门店名称(编号)" prop="name" align="center">
  398. <template slot-scope="scope">
  399. {{ scope.row.storeName }}({{ scope.row.storeCode }})
  400. </template>
  401. </el-table-column>
  402. <el-table-column label="SKU数量" prop="count" width="80px" align="center" />
  403. </el-table>
  404. </div>
  405. </van-collapse>
  406. <div class="contentContainer">
  407. <!-- isHistory 是否为历史汇报:0-新汇报 1-历史汇报 -->
  408. <reportCustom
  409. v-if="reportTarget.isHistory == '0'"
  410. :reportCustomData="reportTarget.customTaskList"></reportCustom>
  411. <template v-else>
  412. <div v-if="GZQuota">
  413. <p class="contentContainerTitle">今日项目跟进数<span class="colorRed">(必填)</span></p>
  414. <div style="padding: 10px 0">
  415. <van-field v-model="reportContents[2].projectFollowNum" type="digit" />
  416. </div>
  417. <p class="contentContainerTitle">
  418. 今日TUC成功报备数量<span class="colorRed">(必填)</span>
  419. </p>
  420. <div style="padding: 10px 0">
  421. <van-field v-model="reportContents[3].tucReportingSuccessNum" type="digit" />
  422. </div>
  423. </div>
  424. <div
  425. v-if="
  426. (this.$route.query.reportId && notVisitReason) || reportTarget.showNotVisitReason
  427. ">
  428. <p class="contentContainerTitle">
  429. 截至日报提交时间,今日拜访0家店的原因<span class="colorRed">(必填)</span>
  430. </p>
  431. <div style="padding: 10px 0">
  432. <van-field
  433. v-model="notVisitReason"
  434. rows="3"
  435. autosize
  436. maxlength="1000"
  437. show-word-limit
  438. type="textarea"
  439. :formatter="formatter" />
  440. </div>
  441. </div>
  442. <p class="contentContainerTitle">
  443. 今日机会与挑战总结<span class="colorRed">(必填)</span>
  444. </p>
  445. <div style="padding: 10px 0">
  446. <van-field
  447. v-model="reportContents[0].dayContent"
  448. rows="4"
  449. autosize
  450. maxlength="800"
  451. show-word-limit
  452. type="textarea"
  453. :formatter="formatter" />
  454. </div>
  455. <p class="contentContainerTitle">明日工作规划 <span class="colorRed">(必填)</span></p>
  456. <div style="padding: 10px 0">
  457. <van-field
  458. v-model="reportContents[1].dayContent"
  459. rows="4"
  460. autosize
  461. maxlength="800"
  462. show-word-limit
  463. type="textarea"
  464. :formatter="formatter" />
  465. </div>
  466. </template>
  467. </div>
  468. <br />
  469. </div>
  470. <div class="contentborder">
  471. <van-button type="info" size="small" plain class="Btn1" @click="submint">提交日报</van-button>
  472. </div>
  473. <div class="lineGrey"></div>
  474. <div class="lineGrey"></div>
  475. <div class="lineGrey"></div>
  476. <div class="lineGrey"></div>
  477. </div>
  478. </template>
  479. <script>
  480. import {
  481. userTodayPlanNum,
  482. updateReport,
  483. getReportInfo,
  484. getDetailById,
  485. tsContents,
  486. buryingPoint,
  487. getSkuDetailById,
  488. } from '@/api/index';
  489. import visitedRealTime from '@/views/componentsTarget/visitedRealTime';
  490. import createStoreBJ from '@/views/componentsTarget/createStoreBJ';
  491. import placeOrder from '@/views/componentsTarget/placeOrder';
  492. import ZYPlaceOrder from '@/views/componentsTarget/ZYPlaceOrder';
  493. import performanceSAP from '@/views/componentsTarget/performanceSAP';
  494. import ZYSAP from '@/views/componentsTarget/ZYSAP';
  495. import veryGoodPlaceOrder from '@/views/componentsTarget/veryGoodPlaceOrder';
  496. import reportCustom from './reportCustom';
  497. export default {
  498. name: 'daily',
  499. components: {
  500. visitedRealTime,
  501. createStoreBJ,
  502. placeOrder,
  503. ZYPlaceOrder,
  504. performanceSAP,
  505. ZYSAP,
  506. veryGoodPlaceOrder,
  507. reportCustom,
  508. },
  509. data() {
  510. return {
  511. show: true,
  512. num: 0,
  513. todayGoal: {},
  514. progressWidth: 0,
  515. activeNames: [
  516. '1',
  517. '2',
  518. '3',
  519. '4',
  520. '5',
  521. '6',
  522. '7',
  523. '8',
  524. '16',
  525. '17',
  526. '20',
  527. '21',
  528. '22',
  529. '23',
  530. '29',
  531. '11',
  532. '33',
  533. '40',
  534. '41',
  535. '42',
  536. '43',
  537. ],
  538. powerGrade: '',
  539. value: '2',
  540. message: '',
  541. isclick: true,
  542. saptitle: '业绩目标SAP(千元)',
  543. reportTargetAll: {},
  544. reportTarget: {},
  545. temporaryShow: '',
  546. projectFollowNum: '',
  547. reportingNum: '',
  548. tucReportingSuccessNum: '',
  549. reportContents: [
  550. {
  551. dayContent: '',
  552. contentTime: '',
  553. type: 2,
  554. status: '1',
  555. },
  556. {
  557. dayContent: '',
  558. contentTime: '',
  559. type: 3,
  560. status: '1',
  561. },
  562. {
  563. dayContent: '',
  564. contentTime: '',
  565. projectFollowNum: '',
  566. type: 3,
  567. status: '1',
  568. },
  569. {
  570. dayContent: '',
  571. contentTime: '',
  572. tucReportingSuccessNum: '',
  573. type: 3,
  574. status: '1',
  575. },
  576. ],
  577. type: '-1',
  578. JZQuota: false, //家装
  579. GZQuota: false, //工装
  580. YFQuota: false, //应用服务
  581. titlejz: '',
  582. notVisitReason: '', //今日拜访0家店的原因;
  583. photoSkuImgSummaryeList: null,
  584. };
  585. },
  586. created() {
  587. this.powerGrade = localStorage.getItem('powerGrade');
  588. this.temporaryShow = this.$route.query.temporaryShow;
  589. if (this.$route.query.reportId != undefined) {
  590. this.getDetailById();
  591. } else {
  592. this.getReportInfo();
  593. }
  594. },
  595. watch: {
  596. $route(to, from) {
  597. this.powerGrade = localStorage.getItem('powerGrade');
  598. if (to.path == '/daily') {
  599. this.temporaryShow = this.$route.query.temporaryShow;
  600. if (this.$route.query.reportId != undefined) {
  601. this.getDetailById();
  602. } else {
  603. this.notVisitReason = '';
  604. this.reportContents = [
  605. {
  606. dayContent: '',
  607. contentTime: '',
  608. type: 2,
  609. status: '1',
  610. },
  611. {
  612. dayContent: '',
  613. contentTime: '',
  614. type: 3,
  615. status: '1',
  616. },
  617. {
  618. dayContent: '',
  619. contentTime: '',
  620. projectFollowNum: '',
  621. type: 3,
  622. status: '1',
  623. },
  624. {
  625. dayContent: '',
  626. contentTime: '',
  627. tucReportingSuccessNum: '',
  628. type: 3,
  629. status: '1',
  630. },
  631. ];
  632. this.getReportInfo();
  633. }
  634. }
  635. },
  636. },
  637. methods: {
  638. // return value.replace(/[^\u4E00-\u9FA5|\d|\a-zA-Z|\r\n\s,.?!,。?!"…—()&_%【】{}:“”‘#~@;:;¥$=()-+-·——/*{}[\]]|\r\n\s/g, '');
  639. formatter(value) {
  640. return value.replace(
  641. /[\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,
  642. ''
  643. );
  644. },
  645. getDetailById() {
  646. let loading1 = this.$toast.loading({
  647. duration: 0,
  648. message: '加载中...',
  649. forbidClick: true,
  650. });
  651. this.reportContents[0].dayContent = '';
  652. getDetailById({ reportId: this.$route.query.reportId }).then((res) => {
  653. loading1.clear();
  654. if (res.code == 200) {
  655. if (res.data.status != '0' && res.data.status != '2') {
  656. this.$dialog
  657. .alert({
  658. title: '系统提示',
  659. message: '日报已提交或过期',
  660. })
  661. .then(() => {
  662. window.location.replace(window.location.origin + '/mobile/home');
  663. });
  664. } else {
  665. localStorage.setItem('powerGrade', res.data.positionId);
  666. localStorage.setItem('userDeptLevel', res.data.userDeptLevel);
  667. this.GZQuota = false;
  668. this.JZQuota = false;
  669. this.YFQuota = res.data.postType == 'YF' ? true : false;
  670. if (res.data.postType == 'JZ') {
  671. this.JZQuota = true;
  672. } else if (res.data.postType == 'GZ') {
  673. this.GZQuota = true;
  674. this.saptitle = '公裝业绩SAP(千元)';
  675. } else {
  676. this.saptitle = '业绩目标SAP(千元)';
  677. }
  678. if (this.reportTarget.projectFollowNum) {
  679. this.projectFollowNum = this.reportTarget.projectFollowNum;
  680. this.reportingNum = this.reportTarget.reportingNum;
  681. this.tucReportingSuccessNum = this.reportTarget.tucReportingSuccessNum;
  682. }
  683. this.type = res.data.userType;
  684. if (res.data.reportContents.length > 0) {
  685. this.reportContents = res.data.reportContents;
  686. if (res.data.reportContents.length < 2) {
  687. res.data.reportContents.push({
  688. dayContent: '',
  689. contentTime: '',
  690. type: 3,
  691. status: '1',
  692. });
  693. }
  694. if (res.data.reportContents.length > 2) {
  695. if (res.data.reportContents[2].projectFollowNum != null) {
  696. this.projectFollowNum = res.data.reportContents[2].projectFollowNum;
  697. } else {
  698. this.projectFollowNum = '';
  699. res.data.reportContents[2].projectFollowNum = '';
  700. }
  701. if (res.data.reportContents[3].tucReportingSuccessNum != null) {
  702. this.tucReportingSuccessNum = res.data.reportContents[3].tucReportingSuccessNum;
  703. } else {
  704. this.tucReportingSuccessNum = '';
  705. res.data.reportContents[3].tucReportingSuccessNum = '';
  706. }
  707. }
  708. }
  709. this.reportTargetAll = res.data.reportTargetAll;
  710. this.reportTarget = res.data;
  711. this.notVisitReason = this.reportTarget.notVisitReason;
  712. }
  713. this.getskuDetailByIdFun();
  714. } else {
  715. this.$toast(res.msg);
  716. }
  717. });
  718. },
  719. tsContentsFn() {
  720. let loading1 = this.$toast.loading({
  721. duration: 0,
  722. message: '数据提交中...',
  723. forbidClick: true,
  724. });
  725. if (this.isclick) {
  726. this.reportContents[0].contentTime = this.parseTime(new Date(), '{y}-{m}-{d}');
  727. this.reportContents[1].contentTime = this.parseTime(new Date(), '{y}-{m}-{d}');
  728. if (this.GZQuota) {
  729. this.reportContents[2].contentTime = this.parseTime(new Date(), '{y}-{m}-{d}');
  730. this.reportContents[3].contentTime = this.parseTime(new Date(), '{y}-{m}-{d}');
  731. }
  732. this.reportTarget.reportContents = this.reportContents;
  733. this.reportTarget.notVisitReason = this.notVisitReason;
  734. this.reportTarget.status = '1';
  735. this.isclick = false;
  736. tsContents(this.reportTarget).then((res) => {
  737. loading1.clear();
  738. this.isclick = true;
  739. if (res.code == 200) {
  740. this.$dialog
  741. .alert({
  742. title: '系统提示',
  743. message: '暂存成功',
  744. })
  745. .then(() => {
  746. // if(this.$route.query.reportId!=undefined){
  747. // window.location.replace(window.location.origin+"/mobile/myHistoricalDaily")
  748. // }else{
  749. // window.location.replace(window.location.origin+"/mobile/home")
  750. // }
  751. });
  752. } else {
  753. this.$toast.fail(res.msg);
  754. }
  755. });
  756. }
  757. },
  758. // 提交日报
  759. submint() {
  760. let loading1 = this.$toast.loading({
  761. duration: 0,
  762. message: '数据提交中...',
  763. forbidClick: true,
  764. });
  765. if (this.isclick) {
  766. if (this.GZQuota) {
  767. if (this.reportContents[2].projectFollowNum.trim() == '') {
  768. this.$toast('请输入今日项目跟进数量!');
  769. return false;
  770. }
  771. if (this.reportContents[3].tucReportingSuccessNum.trim() == '') {
  772. this.$toast('请输入今日TUC成功报备数量!');
  773. return false;
  774. }
  775. }
  776. if (
  777. (this.$route.query.reportId && this.notVisitReason) ||
  778. this.reportTarget.showNotVisitReason
  779. ) {
  780. if (this.notVisitReason.trim() == '') {
  781. this.$toast('请输入今日拜访0家店的原因!');
  782. return false;
  783. }
  784. this.reportTarget.notVisitReason = this.notVisitReason;
  785. }
  786. if (this.reportContents[0].dayContent.trim() == '') {
  787. this.$toast('请输入日报内容!');
  788. return false;
  789. } else if (this.reportContents[0].dayContent.length > 800) {
  790. this.$toast('日报内容太长!');
  791. return false;
  792. } else if (this.reportContents[1].dayContent.trim() == '') {
  793. this.$toast('请输入明日工作规划!');
  794. return false;
  795. } else if (this.reportContents[1].dayContent.length > 800) {
  796. this.$toast('明日工作规划内容太长!');
  797. return false;
  798. } else {
  799. this.reportContents[0].contentTime = this.parseTime(new Date(), '{y}-{m}-{d}');
  800. this.reportContents[1].contentTime = this.parseTime(new Date(), '{y}-{m}-{d}');
  801. if (this.GZQuota) {
  802. this.reportContents[2].contentTime = this.parseTime(new Date(), '{y}-{m}-{d}');
  803. this.reportContents[3].contentTime = this.parseTime(new Date(), '{y}-{m}-{d}');
  804. }
  805. // this.reportContents[4].contentTime = this.parseTime(new Date(), '{y}-{m}-{d}')
  806. this.reportTarget.reportContents = this.reportContents;
  807. this.reportTarget.status = '1';
  808. this.isclick = false;
  809. updateReport(this.reportTarget).then((res) => {
  810. loading1.clear();
  811. this.isclick = true;
  812. if (res.code == 200) {
  813. if (this.reportTarget.reportPostType == 'fx') {
  814. this.$dialog
  815. .alert({
  816. message: '已提交,是否分享',
  817. showCancelButton: true,
  818. confirmButtonText: '分享',
  819. cancelButtonText: '返回首页',
  820. className: 'dailyShareBtn',
  821. })
  822. .then(() => {
  823. buryingPoint({
  824. systemModel: '日报审核',
  825. buryingPointType: 2,
  826. buryingPointValue: this.$route.query.reportId,
  827. buryingPointName: '日报提交分享',
  828. buryingPointPosition: '日报提交',
  829. });
  830. // 跳转历史汇报详情 分享汇报
  831. this.$router.replace({
  832. path: 'dailyDetails',
  833. query: { reportId: res.data, sourceType: 'daily' },
  834. });
  835. })
  836. .catch(() => {
  837. if (this.$route.query.reportId != undefined) {
  838. window.location.replace(window.location.origin + '/mobile/home');
  839. } else {
  840. this.onClickLeft();
  841. }
  842. });
  843. } else {
  844. this.$dialog
  845. .alert({
  846. title: '系统提示',
  847. message: '提交成功',
  848. })
  849. .then(() => {
  850. if (this.$route.query.reportId != undefined) {
  851. window.location.replace(window.location.origin + '/mobile/myHistoricalDaily');
  852. } else {
  853. this.onClickLeft();
  854. }
  855. });
  856. }
  857. } else {
  858. this.$toast.fail(res.msg);
  859. }
  860. });
  861. }
  862. }
  863. },
  864. // 获取日报数据
  865. getReportInfo() {
  866. let loading1 = this.$toast.loading({
  867. duration: 0,
  868. message: '加载中...',
  869. forbidClick: true,
  870. });
  871. this.reportContents[0].dayContent = '';
  872. getReportInfo({ isContent: true }).then((res) => {
  873. loading1.clear();
  874. localStorage.setItem('powerGrade', res.data.positionId);
  875. localStorage.setItem('userDeptLevel', res.data.userDeptLevel);
  876. this.powerGrade = res.data.positionId;
  877. this.showButton = res.data.showButton;
  878. this.type = res.data.userType;
  879. this.reportTargetAll = res.data.reportTargetAll;
  880. this.reportTarget = res.data;
  881. this.GZQuota = false;
  882. this.JZQuota = false;
  883. this.YFQuota = res.data.postType == 'YF' ? true : false;
  884. if (res.data.postType == 'JZ') {
  885. this.JZQuota = true;
  886. } else if (res.data.postType == 'GZ') {
  887. this.GZQuota = true;
  888. this.saptitle = '公裝业绩SAP(千元)';
  889. } else {
  890. this.saptitle = '业绩目标SAP(千元)';
  891. }
  892. if (res.data.reportContents && res.data.reportContents.length > 0) {
  893. this.reportContents = res.data.reportContents;
  894. if (res.data.reportContents.length > 2) {
  895. this.projectFollowNum = res.data.reportContents[2].projectFollowNum;
  896. this.tucReportingSuccessNum = res.data.reportContents[3].tucReportingSuccessNum;
  897. }
  898. }
  899. this.notVisitReason = res.data.notVisitReason;
  900. this.getskuDetailByIdFun();
  901. });
  902. },
  903. getskuDetailByIdFun() {
  904. if (this.reportTarget.reportPostType != 'fx') return;
  905. getSkuDetailById({ reportId: this.reportTarget.id }).then((res) => {
  906. if (res.code == 200) {
  907. this.photoSkuImgSummaryeList = res.data;
  908. } else {
  909. this.photoSkuImgSummaryeList = null;
  910. }
  911. });
  912. },
  913. userTodayPlanNum() {
  914. userTodayPlanNum().then((res) => {
  915. if (res.code == 200) {
  916. this.todayGoal = res.data;
  917. this.progressWidth = (this.todayGoal.finishNum / this.todayGoal.planNum) * 100 + '%';
  918. localStorage.setItem('nickName', res.data.user.nickName);
  919. localStorage.setItem('storeType', res.data.user.type);
  920. } else {
  921. this.$toast.fail(res.msg);
  922. }
  923. });
  924. },
  925. onClickLeft() {
  926. this.$router.push('/home');
  927. },
  928. },
  929. };
  930. </script>
  931. <style scoped lang="scss">
  932. .container {
  933. margin: 10px;
  934. }
  935. .container .van-collapse-item {
  936. margin-bottom: 10px;
  937. border-radius: 6px;
  938. overflow: hidden;
  939. }
  940. .linepAdd p {
  941. margin: 6px 0 0 0;
  942. font-size: 14px;
  943. color: #666;
  944. }
  945. .linepAdd .texttitle {
  946. color: #0057ba;
  947. position: relative;
  948. padding-left: 10px;
  949. }
  950. .linepAdd .texttitle2 {
  951. padding-left: 0;
  952. }
  953. .linepAdd .texttitle .opint {
  954. position: absolute;
  955. left: 0px;
  956. top: 6px;
  957. margin-right: 6px;
  958. display: inline-block;
  959. width: 6px;
  960. height: 6px;
  961. border-radius: 10px;
  962. background-color: #004d8c;
  963. }
  964. .leftTitle {
  965. background-color: #74a4d9;
  966. color: #fff;
  967. display: inline-block;
  968. padding: 0 4px;
  969. border-radius: 2px;
  970. }
  971. .rightTitle {
  972. background-color: #e7b4bb;
  973. color: #fff;
  974. display: inline-block;
  975. padding: 0 4px;
  976. border-radius: 2px;
  977. }
  978. </style>
  979. <style lang="scss">
  980. .daily {
  981. .SKUTable {
  982. padding-bottom: 10px;
  983. .table-headermd1 {
  984. font-size: 12px;
  985. text-align: center;
  986. position: initial;
  987. width: 98% !important;
  988. margin: 0 auto;
  989. border-right: 0;
  990. border-radius: 10px;
  991. .el-table__cell {
  992. padding: 6px 0 !important;
  993. }
  994. thead {
  995. .el-table__cell {
  996. background-color: #1989fa;
  997. color: #fff;
  998. }
  999. }
  1000. }
  1001. }
  1002. }
  1003. .linepAdd .van-cell__title {
  1004. color: #1e5398;
  1005. font-weight: 500;
  1006. }
  1007. .linepAdd .contentContainer {
  1008. background-color: white;
  1009. border-radius: 8px;
  1010. padding: 10px 16px;
  1011. margin-bottom: 10px;
  1012. }
  1013. .linepAdd .contentContainer .contentContainerTitle {
  1014. color: #222;
  1015. }
  1016. .linepAdd .contentContainer .contentContainerTitle span {
  1017. font-size: 12px;
  1018. color: #666;
  1019. }
  1020. .linepAdd .contentContainer .van-field__control {
  1021. background-color: #f8f8f8;
  1022. padding: 10px;
  1023. border-radius: 8px;
  1024. }
  1025. .linepAdd .contentContainer .van-cell {
  1026. padding: 0;
  1027. }
  1028. .van-dialog__confirm,
  1029. .van-dialog__confirm:active {
  1030. color: #0057ba;
  1031. }
  1032. .linepAdd .contentContainer .contentContainerTitle .colorRed {
  1033. color: red;
  1034. }
  1035. .dailyShareBtn {
  1036. .van-dialog__confirm {
  1037. // border: 1px solid #ccc;
  1038. // border-bottom: none;
  1039. }
  1040. .van-hairline--left {
  1041. background: #0057ba;
  1042. color: #fff;
  1043. }
  1044. }
  1045. </style>