salesTemplate.vue 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <template>
  2. <div>
  3. <div>
  4. <div class="div-inline" @click="onChange('订单')">
  5. <span class="title-font" style="color:#4F7BFD" v-if="title === '订单'">订单</span>
  6. <span class="title-font" style="color:#515151" v-else>订单</span>
  7. <img class="inline-16" width="12" height="12" src="../../../assets/icons/sortActivation.svg" alt="" v-if="title === '订单'">
  8. <img class="inline-16" width="12" height="12" src="../../../assets/icons/sort.svg" v-else alt="">
  9. </div>
  10. <div class="div-inline" @click="onChange('出货')">
  11. <span class="title-font" style="color:#4F7BFD" v-if="title === '出货'">出货</span>
  12. <span class="title-font" style="color:#515151" v-else>出货</span>
  13. <img class="inline-16" width="12" height="12" src="../../../assets/icons/sortActivation.svg" alt="" v-if="title === '出货'">
  14. <img class="inline-16" width="12" height="12" src="../../../assets/icons/sort.svg" v-else alt="">
  15. </div>
  16. <div class="div-inline" @click="onChange('开票')">
  17. <span class="title-font" style="color:#4F7BFD" v-if="title === '开票'">开票</span>
  18. <span class="title-font" style="color:#515151" v-else>开票</span>
  19. <img class="inline-16" width="12" height="12" src="../../../assets/icons/sortActivation.svg" alt="" v-if="title === '开票'">
  20. <img class="inline-16" width="12" height="12" src="../../../assets/icons/sort.svg" v-else alt="">
  21. </div>
  22. <div class="div-inline" @click="onChange('回款')">
  23. <span class="title-font" style="color:#4F7BFD" v-if="title === '回款'">回款</span>
  24. <span class="title-font" style="color:#515151" v-else>回款</span>
  25. <img class="inline-16" width="12" height="12" src="../../../assets/icons/sortActivation.svg" alt="" v-if="title === '回款'">
  26. <img class="inline-16" width="12" height="12" src="../../../assets/icons/sort.svg" v-else alt="">
  27. </div>
  28. <div class="div-inline" style="float: right">
  29. <el-button-group >
  30. <el-button size="small" :type="dateType === '本年'?'primary':''" @click="onChangeType('本年')">本年</el-button>
  31. <el-button size="small" :type="dateType === '本季'?'primary':''" @click="onChangeType('本季')">本季</el-button>
  32. <el-button size="small" :type="dateType === '本月'?'primary':''" @click="onChangeType('本月')">本月</el-button>
  33. </el-button-group>
  34. <el-date-picker
  35. v-model="monthDate"
  36. type="monthrange"
  37. @change="changMonth"
  38. :clearable="false"
  39. style="margin-left:10px;margin-right: 10px"
  40. format="yyyy-MM"
  41. value-format="yyyy-MM"
  42. size="small"
  43. range-separator="至"
  44. start-placeholder="开始月份"
  45. end-placeholder="结束月份">
  46. </el-date-picker>
  47. <allSalesTemplate :tablecols="tablecols" :dataid="dataid" :monthDate="monthDate" :dateType="dateType" :type="type" :button-title="buttonTitle" :param="param"></allSalesTemplate>
  48. </div>
  49. </div>
  50. <div style="margin-top: 20px;margin-bottom: 10px">
  51. <tableTemplate ref="table" :layout="tablecols" :data="list" :opwidth="200" :custom="true" >
  52. <template v-slot:customcol="scope">
  53. <p v-if="scope.column.columnname === 'amount'" >
  54. <span class="highlight-color" v-if="title === '订单'"> ¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
  55. <span v-else> ¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
  56. </p>
  57. <p v-else-if="scope.column.columnname === 'outamount'">
  58. <span class="highlight-color" v-if="title === '出货'"> ¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
  59. <span v-else> ¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
  60. </p>
  61. <p v-else-if="scope.column.columnname === 'taxincludedamount'">
  62. <span class="highlight-color" v-if="title === '开票'"> ¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
  63. <span v-else> ¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
  64. </p>
  65. <p v-else-if="scope.column.columnname === 'writeoffamount'">
  66. <span class="highlight-color" v-if="title === '回款'"> ¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
  67. <span v-else> ¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}</span>
  68. </p>
  69. <p v-else-if="scope.column.columnname === 'customersqty'">
  70. <span> {{scope.column.data[scope.column.columnname] == 0?0:scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</span>
  71. </p>
  72. <p v-else-if="scope.column.columnname === 'outcustomer'">
  73. <span> {{scope.column.data[scope.column.columnname] == 0?0:scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</span>
  74. </p>
  75. <p v-else-if="scope.column.columnname === 'projectqty'">
  76. <span> {{scope.column.data[scope.column.columnname] == 0?0:scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</span>
  77. </p>
  78. <p v-else-if="scope.column.columnname === 'outproejct'">
  79. <span> {{scope.column.data[scope.column.columnname] == 0?0:scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</span>
  80. </p>
  81. <p v-else-if="scope.column.columnname === 'rowindex'">
  82. <span style="font-weight: bold">{{scope.column.data[scope.column.columnname]}}</span>
  83. </p>
  84. <p v-else>{{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</p>
  85. </template>
  86. </tableTemplate>
  87. </div>
  88. </div>
  89. </template>
  90. <script>
  91. import tableTemplate from './table';
  92. import allSalesTemplate from "@/views/salesData/components/allSalesTemplate";
  93. export default {
  94. name: "salesTemplate",
  95. props:['tablecols','dataid','type','param','buttonTitle'],
  96. components:{tableTemplate,allSalesTemplate},
  97. data(){
  98. return {
  99. title:'订单',
  100. tableHeight:'',
  101. dateType:'本年',
  102. monthDate:[new Date().getFullYear() + '-1',new Date().getFullYear() + '-' + (new Date().getMonth() + 1)],
  103. list:[],
  104. }
  105. },
  106. methods:{
  107. onChange(val){
  108. this.title = val
  109. this.param.content.sequence = val
  110. this.listData()
  111. },
  112. onChangeType(val){
  113. this.param.content.where.begdate = ''
  114. this.param.content.where.enddate = ''
  115. if (val === '本年'){
  116. this.monthDate = [new Date().getFullYear() + '-1',new Date().getFullYear() + '-' + (new Date().getMonth() + 1)]
  117. }else if(val === '本季'){
  118. let currentMonth = new Date().getMonth() + 1
  119. let begMonth = Math.ceil(currentMonth / 3) * 3 - 2
  120. let endMonth = begMonth + 2
  121. this.monthDate = [new Date().getFullYear() + '-' + begMonth,new Date().getFullYear() + '-' + endMonth]
  122. }else {
  123. this.monthDate[0] = new Date().getFullYear() + '-' + (new Date().getMonth() + 1)
  124. this.monthDate[1] = new Date().getFullYear() + '-' + (new Date().getMonth() + 1)
  125. this.monthDate = [new Date().getFullYear() + '-' + (new Date().getMonth() + 1),new Date().getFullYear() + '-' + (new Date().getMonth() + 1)]
  126. }
  127. this.dateType = val
  128. this.listData()
  129. },
  130. changMonth(){
  131. this.dateType = ''
  132. let begdate = new Date(this.monthDate[0])
  133. let enddate = new Date(this.monthDate[1])
  134. this.param.content.where.begdate = this.monthDate[0]
  135. this.param.content.where.enddate = this.monthDate[1]
  136. this.listData()
  137. },
  138. async listData(){
  139. this.param.content.dateType = this.dateType
  140. const res = await this.$api.requested(this.param)
  141. this.list = res.data
  142. }
  143. },
  144. mounted() {
  145. }
  146. }
  147. </script>
  148. <style scoped>
  149. .div-inline{
  150. display: inline-block;
  151. }
  152. .title-font{
  153. color: #515151;
  154. font-size: 15px;
  155. display: inline-block !important;
  156. margin-right: 5px;
  157. }
  158. .highlight-color{
  159. color:#4F7BFD
  160. }
  161. </style>