dateMoveWaySection.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <template>
  2. <div class="date-change-ways">
  3. <div class="header date-item">
  4. <label class="el-form-item__label">{{$t('ETableChildren.date_change_label')}}</label>
  5. <el-select v-model="dateChangeSelect" :placeholder="$t('ETable.Msg.please_select')" style="width:110px">
  6. <el-option :label="$t('ETableChildren.date_displacement_label')" :value="1"/>
  7. <el-option :label="$t('ETableChildren.specified_frequency_tag')" :value="2"/>
  8. </el-select>
  9. <el-button type="text" style="margin: 0 10px;" @click="addDateChange">{{$t('ETable.Btn.add_btn')}}</el-button>
  10. </div>
  11. <ul v-if="dateChangeArr.length" class="date-change-list">
  12. <li v-for="(dateItem,index) in dateChangeArr" :key="dateItem.ChangeType" class="date-change-li">
  13. <div v-if="dateItem.ChangeType===1" class="date-item">
  14. <el-tag type="info" style="margin-right:15px">{{$t('ETableChildren.date_displacement_label')}}</el-tag>
  15. <div>
  16. <el-input
  17. v-model="dateItem.Day"
  18. type="number"
  19. style="margin-right:10px;width:80px"
  20. @change="e => {dateItem.Day=Number(e);}"
  21. />{{$t('ETable.Date.day')}}
  22. <el-input
  23. v-model="dateItem.Month"
  24. type="number"
  25. style="margin-right:10px;width:80px"
  26. @change="e => {dateItem.Month=Number(e);}"
  27. />{{$t('ETable.Date.month')}}
  28. <el-input
  29. v-model="dateItem.Year"
  30. type="number"
  31. style="margin-right:10px;width:80px"
  32. @change="e => {dateItem.Year=Number(e);}"
  33. />{{$t('ETable.Date.year')}}
  34. </div>
  35. <i class="el-icon-delete" @click="removeDateItem(index)"></i>
  36. </div>
  37. <div v-else-if="dateItem.ChangeType===2" class="date-item">
  38. <el-tag type="info" style="margin-right:15px">{{$t('ETableChildren.specified_frequency_tag')}}</el-tag>
  39. <el-select
  40. style="max-width: 120px;"
  41. v-model="dateItem.Frequency"
  42. :placeholder="$t('OnlineExcelPage.please_select_frequency')"
  43. @change="dateItem.FrequencyDay=frequencyDaysOptions[0].name;"
  44. >
  45. <el-option
  46. v-for="item in frequencyOptions"
  47. :key="item.value"
  48. :label="item.name"
  49. :value="item.value"
  50. />
  51. </el-select>
  52. <el-select
  53. style="max-width: 120px;margin:0 10px"
  54. v-model="dateItem.FrequencyDay"
  55. :placeholder="$t('ETable.Msg.please_select')"
  56. >
  57. <el-option
  58. v-for="item in frequencyDaysOptions"
  59. :key="item.name"
  60. :label="item.lable"
  61. :value="item.name"
  62. />
  63. </el-select>
  64. <i class="el-icon-delete" @click="removeDateItem(index)"></i>
  65. </div>
  66. </li>
  67. </ul>
  68. </div>
  69. </template>
  70. <script>
  71. export default {
  72. computed: {
  73. frequencyDaysOptions() {
  74. let typeMap = {
  75. '本周': [
  76. { name: '周一' ,lable: this.$t('ETable.Date.monday') },
  77. { name: '周二' ,lable: this.$t('ETable.Date.tuesday')},
  78. { name: '周三' ,lable: this.$t('ETable.Date.wednesday')},
  79. { name: '周四' ,lable: this.$t('ETable.Date.thursday')},
  80. { name: '周五' ,lable: this.$t('ETable.Date.friday')},
  81. { name: '周六' ,lable: this.$t('ETable.Date.saturday')},
  82. { name: '周日' ,lable: this.$t('ETable.Date.sunday')},
  83. ]
  84. }
  85. let obj = this.dateChangeArr.find(_ => _.ChangeType===2);
  86. if(!obj) return []
  87. return typeMap[obj.Frequency]
  88. ? typeMap[obj.Frequency]
  89. : [
  90. {name:'第一天',lable: this.$t('ETable.Date.first_day')},
  91. {name:'最后一天',lable: this.$t('ETable.Date.last_day')}
  92. ]
  93. },
  94. frequencyOptions(){
  95. return [
  96. { name: this.$t('ETable.Date.this_week'), value: '本周' },
  97. { name: this.$t('ETable.Date.this_ten_days'), value: '本旬' },
  98. { name: this.$t('ETable.Date.this_month'), value: '本月' },
  99. { name: this.$t('ETable.Date.this_season'), value: '本季' },
  100. { name: this.$t('ETable.Date.this_half_year'), value: '本半年' },
  101. { name: this.$t('ETable.Date.this_year'), value: '本年' },
  102. ]
  103. }
  104. },
  105. data() {
  106. return {
  107. dateChangeSelect: 1,
  108. dateChangeArr: [],
  109. }
  110. },
  111. methods:{
  112. /* 提加日期变换数组 */
  113. addDateChange() {
  114. let haveObj = this.dateChangeArr.find(_ => _.ChangeType===this.dateChangeSelect);
  115. if(haveObj) return this.$message.warning(this.dateChangeSelect===1?this.$t('ETableChildren.added_date_offset_msg') :this.$t('ETableChildren.added_frequency_offset_msg') )
  116. let item = {
  117. ChangeType: this.dateChangeSelect,
  118. Day: 0,
  119. Month: 0,
  120. Year: 0,
  121. Frequency: '本周',
  122. FrequencyDay: '周一'
  123. }
  124. this.dateChangeArr.push(item)
  125. },
  126. /* 参数更新时刷数据 */
  127. changeParams() {
  128. this.$emit('updateData')
  129. },
  130. initData(data=null) {
  131. if(data) {
  132. this.dateChangeArr = data || [];
  133. }else {
  134. this.dateChangeSelect = 1;
  135. this.dateChangeArr = []
  136. }
  137. },
  138. removeDateItem(index) {
  139. this.dateChangeArr.splice(index,1)
  140. }
  141. },
  142. }
  143. </script>
  144. <style scoped lang='scss'>
  145. .date-change-ways {
  146. padding-left: 20px;
  147. .date-change-list {
  148. padding-left: 68px;
  149. }
  150. .date-change-li {
  151. margin: 10px 0;
  152. }
  153. .date-item {
  154. display: flex;
  155. align-items: center;
  156. .el-icon-delete {
  157. color: #f00;
  158. font-size: 16px;
  159. margin:0 10px;
  160. cursor: pointer;
  161. }
  162. }
  163. }
  164. </style>