longPosterContent2.vue 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <template>
  2. <!-- 日报信息 -->
  3. <view>
  4. <view class="form-input">
  5. <view class="input-label">标题</view>
  6. <view class="input-box ddflex">
  7. <input v-model="title" class="fflex" placeholder="请填写"/>
  8. </view>
  9. </view>
  10. <view class="form-input">
  11. <view class="input-label">报表类型</view>
  12. <picker :range="formList" range-key="name" :value="formIndex" @change="formTypeChange">
  13. <view class="input-box ddflex">
  14. <view class="fflex">{{formIndex>-1?formList[formIndex].name:'请选择'}}</view>
  15. <image class="rico" src="../../static/pages/images/more.png"></image>
  16. </view>
  17. </picker>
  18. </view>
  19. <view class="form-input">
  20. <view class="input-label">统计时间</view>
  21. <picker mode="date" :fields="formType==1?'year':formType==2?'month':'day'" :value="time" @change="timeChange">
  22. <view class="input-box ddflex">
  23. <view class="fflex">{{time?time:'请选择'}}</view>
  24. <image class="rico" src="../../static/pages/images/more.png"></image>
  25. </view>
  26. </picker>
  27. </view>
  28. <view class="form-input">
  29. <view class="input-label">文本一</view>
  30. <picker :range="text1List" range-key="name" :value="text1Index" @change="(e)=>{textChange(e,1)}">
  31. <view class="input-box ddflex">
  32. <view class="fflex">{{text1Index>-1?text1List[text1Index].name:'请选择'}}</view>
  33. <image class="rico" src="../../static/pages/images/more.png"></image>
  34. </view>
  35. </picker>
  36. </view>
  37. <view class="form-input">
  38. <view class="input-label">文本二</view>
  39. <picker :range="text2List" range-key="name" :value="text2Index" @change="(e)=>{textChange(e,2)}">
  40. <view class="input-box ddflex">
  41. <view class="fflex">{{text2Index>-1?text2List[text2Index].name:'请选择'}}</view>
  42. <image class="rico" src="../../static/pages/images/more.png"></image>
  43. </view>
  44. </picker>
  45. </view>
  46. <view class="form-input">
  47. <view class="input-label">文本三</view>
  48. <picker :range="text3List" range-key="name" :value="text3Index" @change="(e)=>{textChange(e,3)}">
  49. <view class="input-box ddflex">
  50. <view class="fflex">{{text3Index>-1?text3List[text3Index].name:'请选择'}}</view>
  51. <image class="rico" src="../../static/pages/images/more.png"></image>
  52. </view>
  53. </picker>
  54. </view>
  55. <view class="form-input">
  56. <view class="input-label">文本四</view>
  57. <picker :range="text4List" range-key="name" :value="text4Index" @change="(e)=>{textChange(e,4)}">
  58. <view class="input-box ddflex">
  59. <view class="fflex">{{text4Index>-1?text4List[text4Index].name:'请选择'}}</view>
  60. <image class="rico" src="../../static/pages/images/more.png"></image>
  61. </view>
  62. </picker>
  63. </view>
  64. <view style="height: 150rpx;"></view>
  65. <view class="share-btn">
  66. <view class="btn" @click="submit">保存</view>
  67. </view>
  68. </view>
  69. </template>
  70. <script>
  71. const app = getApp();
  72. const req = require("../../utils/request.js");
  73. export default {
  74. components: {},
  75. props: {},
  76. data() {
  77. return {
  78. formIndex:0,
  79. formList:[{name:'年报',value:1},{name:'月报',value:2},{name:'日报',value:3}],
  80. formType:1,
  81. time:'',
  82. title:'',
  83. text1Index:-1,
  84. text1List:[],
  85. text2Index:-1,
  86. text2List:[],
  87. text3Index:-1,
  88. text3List:[],
  89. text4Index:-1,
  90. text4List:[],
  91. codeDetail:[]
  92. }
  93. },
  94. onLoad(options) {
  95. this.getTextsList()
  96. },
  97. onShow() {
  98. },
  99. methods: {
  100. // 获取各下拉框的选项并初始化数据
  101. getTextsList(){
  102. let pages = getCurrentPages(); //获取所有页面栈实例列表
  103. let prevPage = pages[pages.length - 2]; //上一页页面实例
  104. this.codeDetail = prevPage.$vm.codeDetail
  105. this.formType = prevPage.$vm.formType
  106. this.formIndex = this.formList.findIndex(item=>item.value==prevPage.$vm.formType)
  107. this.time = prevPage.$vm.time
  108. this.title = prevPage.$vm.title
  109. this.codeDetail.map(item=>{
  110. if(item.chineseName == '文本一') {
  111. this.text1List = item.selectValues
  112. if(prevPage.$vm.dataForm[0].code){
  113. this.text1Index = this.text1List.findIndex(item=>item.code==prevPage.$vm.dataForm[0].code)
  114. }
  115. }
  116. if(item.chineseName == '文本二') {
  117. this.text2List = item.selectValues
  118. if(prevPage.$vm.dataForm[1].code){
  119. this.text2Index = this.text2List.findIndex(item=>item.code==prevPage.$vm.dataForm[1].code)
  120. }
  121. }
  122. if(item.chineseName == '文本三') {
  123. this.text3List = item.selectValues
  124. if(prevPage.$vm.dataForm[2].code){
  125. this.text3Index = this.text3List.findIndex(item=>item.code==prevPage.$vm.dataForm[2].code)
  126. }
  127. }
  128. if(item.chineseName == '文本四') {
  129. this.text4List = item.selectValues
  130. if(prevPage.$vm.dataForm[3].code){
  131. this.text4Index = this.text4List.findIndex(item=>item.code==prevPage.$vm.dataForm[3].code)
  132. }
  133. }
  134. })
  135. },
  136. formTypeChange(e){
  137. this.formIndex = e.detail.value
  138. this.formType = this.formList[this.formIndex].value
  139. this.time = ''
  140. },
  141. timeChange(e){
  142. this.time = e.detail.value
  143. },
  144. textChange(e,type){
  145. if(type==1){
  146. this.text1Index = e.detail.value
  147. }
  148. if(type==2){
  149. this.text2Index = e.detail.value
  150. }
  151. if(type==3){
  152. this.text3Index = e.detail.value
  153. }
  154. if(type==4){
  155. this.text4Index = e.detail.value
  156. }
  157. },
  158. async submit(){
  159. if(!this.title) return req.msg('请填写标题')
  160. if(!this.time) return req.msg('请选择统计时间')
  161. if(this.text1Index<0) return req.msg('请选择文本一')
  162. if(this.text2Index<0) return req.msg('请选择文本二')
  163. if(this.text3Index<0) return req.msg('请选择文本三')
  164. if(this.text4Index<0) return req.msg('请选择文本四')
  165. let pages = getCurrentPages(); //获取所有页面栈实例列表
  166. let prevPage = pages[pages.length - 2]; //上一页页面实例
  167. prevPage.$vm.formType = this.formType
  168. prevPage.$vm.time = this.time
  169. prevPage.$vm.title = this.title
  170. prevPage.$vm.dataForm = await this.getSubmitData()
  171. uni.navigateBack()
  172. },
  173. // 获取选择后的文本数据
  174. getSubmitData(){
  175. return new Promise(async (r,j)=>{
  176. let dataForm = []
  177. let textData = await this.getTextData(this.text1List[this.text1Index].code+','+this.text2List[this.text2Index].code+','+this.text3List[this.text3Index].code+','+this.text4List[this.text4Index].code)
  178. dataForm.push({
  179. chineseName:'文本一',
  180. title:this.text1List[this.text1Index].name,
  181. code:this.text1List[this.text1Index].code,
  182. data:JSON.parse(textData[this.text1List[this.text1Index].code])
  183. })
  184. dataForm.push({
  185. chineseName:'文本二',
  186. title:this.text2List[this.text2Index].name,
  187. code:this.text2List[this.text2Index].code,
  188. data:JSON.parse(textData[this.text2List[this.text2Index].code])
  189. })
  190. dataForm.push({
  191. chineseName:'文本三',
  192. title:this.text3List[this.text3Index].name,
  193. code:this.text3List[this.text3Index].code,
  194. data:JSON.parse(textData[this.text3List[this.text3Index].code])
  195. })
  196. dataForm.push({
  197. chineseName:'文本四',
  198. title:this.text4List[this.text4Index].name,
  199. code:this.text4List[this.text4Index].code,
  200. data:JSON.parse(textData[this.text4List[this.text4Index].code])
  201. })
  202. r(dataForm)
  203. })
  204. },
  205. getTextData(code){
  206. return new Promise(async (r,j)=>{
  207. let param = {
  208. startTime:'2023-01-01 00:00:00',
  209. endTime:'2023-12-31 23:59:59',
  210. code:code
  211. }
  212. if(this.formType==1){
  213. param.startTime = this.time+'-01-01 00:00:00'
  214. param.endTime = this.time+'12-31 23:59:59'
  215. }else if(this.formType==2) {
  216. //获取当月最后一天的日期
  217. let date = new Date()
  218. var year = date.getFullYear(); //获取年份
  219. var month = date.getMonth() + 1; //获取月份
  220. var lastDate = new Date(year, month , 0).getDate(); //获取当月最后一日
  221. month = month < 10 ? '0' + month : month ; //月份补 0
  222. param.startTime = this.time+'-01 00:00:00'
  223. param.endTime = [year,month ,lastDate ].join("-")+' 23:59:59'
  224. }else if(this.formType==3){
  225. param.startTime = this.time+' 00:00:00'
  226. param.endTime = this.time+' 23:59:59'
  227. }
  228. req.getRequest('/api/material/longPoster/data',param,res=>{
  229. r(res)
  230. })
  231. })
  232. }
  233. },
  234. mounted() {
  235. }
  236. }
  237. </script>
  238. <style>
  239. @import "./longPosterContent.css";
  240. </style>