Commit 88cf8ad147a068cabf96084fbb5df23fc396deec

Authored by fengwotao
1 parent f27c8327

pref:命令记录新增响应类型 调整部分样式

1 1 <template>
  2 + <!-- 单向没有响应失败状态 -->
  3 + <!-- 响应类型 -->
2 4 <view class="command-record">
3 5 <view class="filter-button" @click="openSearchDialog">
4 6 <text>筛选</text>
5 7 <image src="../../../static/shaixuan.png" />
6 8 </view>
7 9
8   - <mescroll-uni ref="mescrollRef" @init="mescrollInit" :down="downOption" @down="downCallback" @up="upCallback" height="700px">
  10 + <mescroll-uni ref="mescrollRef" @init="mescrollInit" :down="downOption" @down="downCallback" @up="upCallback"
  11 + height="700px">
9 12 <view @click="openCommandDetail(item)" class="list-item" v-for="(item, index) in list" :key="index">
10 13 <view class="item">
11 14 <view class="item-first">
12 15 <text>{{ item.deviceName }}</text>
13   - <view class="item-right item-success" v-if="item.response">响应成功</view>
14   - <view class="item-right item-fail" v-else>响应失败</view>
  16 + <view v-if="!item.request.oneway">
  17 + <view class="item-right item-success" v-if="item.response">响应成功</view>
  18 + <view class="item-right item-fail" v-else>响应失败</view>
  19 + </view>
15 20 </view>
16 21 <view v-if="item.additionalInfo.cmdType">
17 22 命令类型:
... ... @@ -19,8 +24,7 @@
19 24 </view>
20 25 <view v-if="item.statusName">
21 26 命令状态:
22   - <text
23   - :style="{
  27 + <text :style="{
24 28 color:
25 29 item.status == 'EXPIRED'
26 30 ? 'red'
... ... @@ -33,271 +37,292 @@
33 37 : item.status == 'SENT'
34 38 ? '#00C9A7'
35 39 : ''
36   - }"
37   - style="margin-left: 16rpx;"
38   - >
  40 + }" style="margin-left: 16rpx;">
39 41 {{ item.statusName }}
40 42 </text>
41 43 </view>
42   - <view class="time">{{ format(item.createTime) }}</view>
  44 + <view class="item-first">
  45 + <view v-if="item.additionalInfo.cmdType">
  46 + 响应类型:
  47 + <text style="margin-left: 16rpx;">{{ !item.request.oneway?'双向':'单向' }}</text>
  48 + </view>
  49 + <view class="time">{{ format(item.createTime) }}</view>
  50 + </view>
43 51 </view>
44 52 </view>
45 53 </mescroll-uni>
46 54 <!-- 告警筛选 -->
47   - <u-popup @close="close" closeable bgColor="#fff" :show="show" mode="bottom" :round="20" @touchmove.stop.prevent="disabledScroll">
  55 + <u-popup @close="close" closeable bgColor="#fff" :show="show" mode="bottom" :round="20"
  56 + @touchmove.stop.prevent="disabledScroll">
48 57 <view class="filter" @touchmove.stop.prevent="disabledScroll">
49 58 <view class="filter-title"><text>筛选条件</text></view>
50   - <FilterItem :filterList="issueStatus" title="下发状态" @clickTag="currentIndex => handleClickTag(currentIndex, issueStatus)"></FilterItem>
  59 + <FilterItem :filterList="issueStatus" title="下发状态"
  60 + @clickTag="currentIndex => handleClickTag(currentIndex, issueStatus)"></FilterItem>
51 61 <view class="button-group">
52   - <view><u-button :customStyle="{ color: '#333' }" color="#e3e3e5" shape="circle" text="重置" @click="resetFilter"></u-button></view>
53   - <view><u-button color="#3388ff" shape="circle" text="确认" @click="confirmFilter"></u-button></view>
  62 + <view>
  63 + <u-button :customStyle="{ color: '#333' }" color="#e3e3e5" shape="circle" text="重置"
  64 + @click="resetFilter"></u-button>
  65 + </view>
  66 + <view>
  67 + <u-button color="#3388ff" shape="circle" text="确认" @click="confirmFilter"></u-button>
  68 + </view>
54 69 </view>
55 70 </view>
56 71 </u-popup>
57   - <u-calendar
58   - :show="showCalendar"
59   - mode="range"
60   - @confirm="calendarConfirm"
61   - @close="calendarClose"
62   - startText="开始时间"
63   - endText="结束时间"
64   - confirmDisabledText="请选择日期"
65   - :formatter="formatter"
66   - ></u-calendar>
  72 + <u-calendar :show="showCalendar" mode="range" @confirm="calendarConfirm" @close="calendarClose" startText="开始时间"
  73 + endText="结束时间" confirmDisabledText="请选择日期" :formatter="formatter"></u-calendar>
67 74 </view>
68 75 </template>
69 76 <script>
70   -import FilterItem from '@/pages/device/FilterItem.vue';
71   -import MescrollMixin from '@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js';
72   -import { formatToDate } from '@/plugins/utils.js';
73   -import { debounce } from '@/plugins/throttle.js';
74   -export default {
75   - mixins: [MescrollMixin],
76   - components: {
77   - FilterItem
78   - },
79   - props: {
80   - tbDeviceId: {
81   - type: String,
82   - default: ''
83   - }
84   - },
85   - data() {
86   - return {
87   - show: false,
88   - list: [],
89   - total: '',
90   - timeData: {
91   - selectTime: '',
92   - getTimeGap: ''
93   - },
94   - showCalendar: false,
95   - issueStatus: [
96   - {
97   - checked: true,
98   - name: '全部',
99   - type: ''
  77 + import FilterItem from '@/pages/device/FilterItem.vue';
  78 + import MescrollMixin from '@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js';
  79 + import {
  80 + formatToDate
  81 + } from '@/plugins/utils.js';
  82 + import {
  83 + debounce
  84 + } from '@/plugins/throttle.js';
  85 + export default {
  86 + mixins: [MescrollMixin],
  87 + components: {
  88 + FilterItem
  89 + },
  90 + props: {
  91 + tbDeviceId: {
  92 + type: String,
  93 + default: ''
  94 + }
  95 + },
  96 + data() {
  97 + return {
  98 + show: false,
  99 + list: [],
  100 + total: '',
  101 + timeData: {
  102 + selectTime: '',
  103 + getTimeGap: ''
100 104 },
101   - {
102   - checked: false,
103   - name: '成功',
104   - type: 'SUCCESSFUL'
  105 + showCalendar: false,
  106 + issueStatus: [{
  107 + checked: true,
  108 + name: '全部',
  109 + type: ''
  110 + },
  111 + {
  112 + checked: false,
  113 + name: '成功',
  114 + type: 'SUCCESSFUL'
  115 + },
  116 + {
  117 + checked: false,
  118 + name: '失败',
  119 + type: 'FAILED'
  120 + }
  121 + ],
  122 + downOption: {
  123 + auto: false //是否在初始化后,自动执行downCallback; 默认true
105 124 },
106   - {
107   - checked: false,
108   - name: '失败',
109   - type: 'FAILED'
  125 + page: {
  126 + num: 0,
  127 + size: 10
110 128 }
111   - ],
112   - downOption: {
113   - auto: false //是否在初始化后,自动执行downCallback; 默认true
114   - },
115   - page: {
116   - num: 0,
117   - size: 10
118   - }
119   - };
120   - },
121   - methods: {
122   - /*下拉刷新的回调 */
123   - downCallback() {
124   - //联网加载数据
125   - this.list = [];
126   - this.page.num = 1;
127   - this.loadData(this.page.num, {
128   - tbDeviceId: this.tbDeviceId
129   - });
130   - },
131   - format(date) {
132   - return formatToDate(date, 'YYYY-MM-DD HH:mm:ss');
133   - },
134   - disabledScroll() {
135   - return;
136   - },
137   - /*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
138   - upCallback() {
139   - //联网加载数据
140   - this.page.num += 1;
141   - this.loadData(this.page.num, {
142   - tbDeviceId: this.tbDeviceId
143   - });
144   - },
145   - //获取告警数据
146   - loadData(pageNo, params = {}) {
147   - let httpData = {
148   - ...params,
149   - page: pageNo,
150   - pageSize: 10
151 129 };
152   - uni.$u.http
153   - .get('/yt/rpc', {
154   - params: httpData,
155   - custom: {
156   - load: false
157   - }
158   - })
159   - .then(res => {
160   - this.total = res.total;
161   - uni.stopPullDownRefresh();
162   - //方法一(推荐): 后台接口有返回列表的总页数 totalPage
163   - this.mescroll.endByPage(res.items.length, res.total); //必传参数(当前页的数据个数, 总页数)
164   - if (pageNo == 1) {
165   - this.list = res.items;
166   - } else {
167   - this.list = this.list.concat(res.items);
168   - }
169   - })
170   - .catch(() => {
171   - //联网失败, 结束加载
172   - this.mescroll.endErr();
173   - });
174   - },
175   - handleClickTag(currentIndex, list) {
176   - list.map((item, index) => {
177   - item.checked = index === currentIndex;
178   - });
179   - },
180   - resetFilter() {
181   - const { issueStatus } = this;
182   - issueStatus.forEach(item => item.map((item, index) => (item.checked = index === 0)));
183 130 },
184   - close() {
185   - this.show = false;
186   - },
187   - openSearchDialog() {
188   - this.show = true;
189   - },
190   - hideKeyboard() {
191   - uni.hideKeyboard();
192   - },
193   - calendarConfirm(e) {
194   - this.showCalendar = false;
195   - this.timeData.selectTime = `${e[0]} / ${e[e.length - 1]}`;
196   - },
197   - confirmFilter() {
198   - const issueStatus = this.issueStatus.find(item => item.checked);
199   - this.loadData(1, {
200   - status: issueStatus.type ? issueStatus.type : undefined,
201   - tbDeviceId: this.tbDeviceId
202   - });
203   - this.show = false;
204   - },
205   - calendarClose() {
206   - this.showCalendar = false;
207   - },
208   - openCommandDetail(item) {
209   - uni.navigateTo({
210   - url: '/deviceSubPage/deviceDetailPage/tabDetail/CommandDetail?data=' + JSON.stringify(item)
211   - });
  131 + methods: {
  132 + /*下拉刷新的回调 */
  133 + downCallback() {
  134 + //联网加载数据
  135 + this.list = [];
  136 + this.page.num = 1;
  137 + this.loadData(this.page.num, {
  138 + tbDeviceId: this.tbDeviceId
  139 + });
  140 + },
  141 + format(date) {
  142 + return formatToDate(date, 'YYYY-MM-DD HH:mm:ss');
  143 + },
  144 + disabledScroll() {
  145 + return;
  146 + },
  147 + /*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
  148 + upCallback() {
  149 + //联网加载数据
  150 + this.page.num += 1;
  151 + this.loadData(this.page.num, {
  152 + tbDeviceId: this.tbDeviceId
  153 + });
  154 + },
  155 + //获取告警数据
  156 + loadData(pageNo, params = {}) {
  157 + let httpData = {
  158 + ...params,
  159 + page: pageNo,
  160 + pageSize: 10
  161 + };
  162 + uni.$u.http
  163 + .get('/yt/rpc', {
  164 + params: httpData,
  165 + custom: {
  166 + load: false
  167 + }
  168 + })
  169 + .then(res => {
  170 + this.total = res.total;
  171 + uni.stopPullDownRefresh();
  172 + //方法一(推荐): 后台接口有返回列表的总页数 totalPage
  173 + this.mescroll.endByPage(res.items.length, res.total); //必传参数(当前页的数据个数, 总页数)
  174 + if (pageNo == 1) {
  175 + this.list = res.items;
  176 + } else {
  177 + this.list = this.list.concat(res.items);
  178 + }
  179 + })
  180 + .catch(() => {
  181 + //联网失败, 结束加载
  182 + this.mescroll.endErr();
  183 + });
  184 + },
  185 + handleClickTag(currentIndex, list) {
  186 + list.map((item, index) => {
  187 + item.checked = index === currentIndex;
  188 + });
  189 + },
  190 + resetFilter() {
  191 + const {
  192 + issueStatus
  193 + } = this;
  194 + issueStatus.forEach(item => item.map((item, index) => (item.checked = index === 0)));
  195 + },
  196 + close() {
  197 + this.show = false;
  198 + },
  199 + openSearchDialog() {
  200 + this.show = true;
  201 + },
  202 + hideKeyboard() {
  203 + uni.hideKeyboard();
  204 + },
  205 + calendarConfirm(e) {
  206 + this.showCalendar = false;
  207 + this.timeData.selectTime = `${e[0]} / ${e[e.length - 1]}`;
  208 + },
  209 + confirmFilter() {
  210 + const issueStatus = this.issueStatus.find(item => item.checked);
  211 + this.loadData(1, {
  212 + status: issueStatus.type ? issueStatus.type : undefined,
  213 + tbDeviceId: this.tbDeviceId
  214 + });
  215 + this.show = false;
  216 + },
  217 + calendarClose() {
  218 + this.showCalendar = false;
  219 + },
  220 + openCommandDetail(item) {
  221 + uni.navigateTo({
  222 + url: '/deviceSubPage/deviceDetailPage/tabDetail/CommandDetail?data=' + JSON.stringify(item)
  223 + });
  224 + }
212 225 }
213   - }
214   -};
  226 + };
215 227 </script>
216 228
217 229 <style lang="scss" scoped>
218   -.command-record {
219   - padding: 0 30rpx;
220   - background: #f8f9fa;
221   - .filter-button {
222   - font-size: 12px;
223   - width: 160rpx;
224   - height: 64rpx;
225   - border-radius: 32rpx;
226   - display: flex;
227   - justify-content: center;
228   - align-items: center;
229   - background: #f0f1f2;
230   - color: #666;
231   - image {
232   - width: 28rpx;
233   - height: 28rpx;
234   - margin-left: 4rpx;
235   - }
236   - }
237   -}
  230 + .command-record {
  231 + padding: 0 30rpx;
  232 + background: #f8f9fa;
238 233
239   -.list-item {
240   - width: 690rpx;
241   - background-color: #fff;
242   - border-radius: 20rpx;
243   - margin: 20rpx auto;
244   - color: #333;
245   - .item {
246   - .delivered-color {
247   - color: blue;
248   - }
249   - padding: 30rpx;
250   - view {
251   - font-size: 14px;
252   - margin-bottom: 10rpx;
253   - }
254   - .time {
255   - margin-top: 20rpx;
256   - color: #999;
257   - }
258   - .item-first {
  234 + .filter-button {
  235 + font-size: 12px;
  236 + width: 160rpx;
  237 + height: 64rpx;
  238 + border-radius: 32rpx;
259 239 display: flex;
260   - justify-content: space-between;
  240 + justify-content: center;
261 241 align-items: center;
262   - font-size: 15px;
263   - font-weight: 500;
264   - align-items: center;
265   - .item-right {
266   - display: flex;
267   - justify-content: center;
268   - align-items: center;
269   - width: 104rpx;
270   - height: 36rpx;
271   - font-size: 10px;
272   - border-radius: 20rpx;
  242 + background: #f0f1f2;
  243 + color: #666;
  244 +
  245 + image {
  246 + width: 28rpx;
  247 + height: 28rpx;
  248 + margin-left: 4rpx;
  249 + }
  250 + }
  251 + }
  252 +
  253 + .list-item {
  254 + width: 690rpx;
  255 + background-color: #fff;
  256 + border-radius: 20rpx;
  257 + margin: 20rpx auto;
  258 + color: #333;
  259 +
  260 + .item {
  261 + .delivered-color {
  262 + color: blue;
  263 + }
  264 +
  265 + padding: 30rpx;
  266 +
  267 + view {
  268 + font-size: 14px;
  269 + margin-bottom: 10rpx;
273 270 }
274   - .item-fail {
275   - color: #848383;
276   - background-color: #84838325;
  271 +
  272 + .time {
  273 + margin-top: 20rpx;
  274 + color: #999;
277 275 }
278   - .item.success {
279   - color: #00c9a7;
280   - background-color: #00c9a725;
  276 +
  277 + .item-first {
  278 + display: flex;
  279 + justify-content: space-between;
  280 + align-items: center;
  281 + font-size: 15px;
  282 + font-weight: 500;
  283 + align-items: center;
  284 +
  285 + .item-right {
  286 + display: flex;
  287 + justify-content: center;
  288 + align-items: center;
  289 + width: 104rpx;
  290 + height: 36rpx;
  291 + font-size: 10px;
  292 + border-radius: 20rpx;
  293 + }
  294 +
  295 + .item-fail {
  296 + color: #848383;
  297 + background-color: #84838325;
  298 + }
  299 +
  300 + .item.success {
  301 + color: #00c9a7;
  302 + background-color: #00c9a725;
  303 + }
281 304 }
282 305 }
283 306 }
284   -}
285 307
286   -.filter {
287   - padding: 0 30rpx;
288   - .filter-title {
289   - text-align: center;
290   - margin-top: 14px;
291   - font-size: 16px;
292   - font-weight: 700;
293   - }
294   - .button-group {
295   - display: flex;
296   - margin-top: 40rpx;
297   - justify-content: space-between;
298   - view {
299   - width: 330rpx;
  308 + .filter {
  309 + padding: 0 30rpx;
  310 +
  311 + .filter-title {
  312 + text-align: center;
  313 + margin-top: 14px;
  314 + font-size: 16px;
  315 + font-weight: 700;
  316 + }
  317 +
  318 + .button-group {
  319 + display: flex;
  320 + margin-top: 40rpx;
  321 + justify-content: space-between;
  322 +
  323 + view {
  324 + width: 330rpx;
  325 + }
300 326 }
301 327 }
302   -}
303 328 </style>
... ...