From 2c6ba3959f683939def2d3c5b674ca02dead387f Mon Sep 17 00:00:00 2001 From: weipengfei <2187978347@qq.com> Date: Tue, 23 Jan 2024 19:52:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/api.js | 7 + api/dict.js | 10 + api/index.js | 26 + config/app.js | 3 +- pages.json | 81 ++- pages/Login/login.vue | 822 ++++++++++++++------------- pages/Login/resgier.vue | 51 +- pages/addPlant/addPlant.vue | 288 +++++----- pages/addPlant/select_address_n.nvue | 647 +++++++++------------ pages/index/massif.vue | 162 ++++-- pages/live/live.nvue | 99 ---- pages/live/live.vue | 197 +++++++ pages/live/liveIos.nvue | 111 ++++ pages/live/loading.nvue | 20 + pages/plantAdmin/addBreed.vue | 8 +- pages/plantAdmin/addHouse.vue | 10 +- static/main/index/white_bg.png | Bin 0 -> 1136 bytes static/main/index/white_bg_r.png | Bin 0 -> 1068 bytes unpackage/dist/dev/.nvue/app.js | 11 +- 19 files changed, 1473 insertions(+), 1080 deletions(-) create mode 100644 api/dict.js create mode 100644 api/index.js delete mode 100644 pages/live/live.nvue create mode 100644 pages/live/live.vue create mode 100644 pages/live/liveIos.nvue create mode 100644 pages/live/loading.nvue create mode 100644 static/main/index/white_bg.png create mode 100644 static/main/index/white_bg_r.png diff --git a/api/api.js b/api/api.js index b5d682d..464e080 100644 --- a/api/api.js +++ b/api/api.js @@ -9,6 +9,8 @@ export const login = (data) => syhttp.post('/login/account', data) export const xinregister = (data) => syhttp.post('/index/code', data) //用户注册 export const logregister = (data) => syhttp.post('/login/register', data) +//用户注册验证码 +export const registerCode = (data) => syhttp.post('/sms/sendCode', data) //修改密码 export const changePassword = (data) => syhttp.post('/user/changePassword', data) //退出登录 @@ -64,4 +66,9 @@ export const villages = (data) => http.get('/common/geo/villages', data) //小组 export const groups = (data) => http.get('/common/geo/groups', data) +//视频推流 +export const videoPush = (data) => http.get('/video', data) +//上传视频封面 +export const videoCover = (data) => http.post('api/upload/uploadVideoCover', data) + diff --git a/api/dict.js b/api/dict.js new file mode 100644 index 0000000..fe1f64a --- /dev/null +++ b/api/dict.js @@ -0,0 +1,10 @@ +import syhttp from "@/utils/syhttp.js"; +import http from "@/utils/http.js"; + +// 通用字典 + +//养殖基地类型 +export const farmTypeLists = () => syhttp.get('/common/dict_data_lists_by_type_value', {type_value: 'farm_type'}); + +//养殖种类 +export const breedTypeLists = () => syhttp.get('/common/dict_data_lists_by_type_value', {type_value: 'breed_type'}); diff --git a/api/index.js b/api/index.js new file mode 100644 index 0000000..d9acebb --- /dev/null +++ b/api/index.js @@ -0,0 +1,26 @@ +import syhttp from "@/utils/syhttp.js"; +import http from "@/utils/http.js"; + + + +//登录 +export const login = (data) => syhttp.post('/login/account', data) +//验证码 +export const xinregister = (data) => syhttp.post('/index/code', data) +//用户注册 +export const logregister = (data) => syhttp.post('/login/register', data) +//修改密码 +export const changePassword = (data) => syhttp.post('/user/changePassword', data) +//退出登录 +export const logout = (data) => syhttp.get('/login/logout', data) + + + +//养殖基地列表 +export const farmLists = (data) => syhttp.get('/farm/list', data); + +//养殖基地类型 +export const farmTypeLists = (data) => syhttp.get('/farm_type', data); + +//新增养殖基地 +export const farmAdd = (data) => syhttp.post('/farm/add', data); diff --git a/config/app.js b/config/app.js index 7b8945f..04d072c 100644 --- a/config/app.js +++ b/config/app.js @@ -8,7 +8,8 @@ let env = "dev" let HTTP_REQUEST_URL let HEADER if (env == 'dev') { - BASE_URL = 'http://ceshi-suyuan.lihaink.cn/' + // BASE_URL = 'http://ceshi-suyuan.lihaink.cn/' + BASE_URL = 'http://192.168.1.6:8084/' } else if (env = 'prod') { BASE_URL = 'http://ceshi-suyuan.lihaink.cn/' } diff --git a/pages.json b/pages.json index 74223c7..28b1c43 100644 --- a/pages.json +++ b/pages.json @@ -99,32 +99,77 @@ } }, { - "path": "pages/live/live", + "path": "pages/live/live", + "style": { + "navigationBarTitleText": "苗情监测", + // "navigationStyle": "custom", + "enablePullDownRefresh": false, + "navigationBarBackgroundColor": "#35D190", + "navigationBarTextStyle": "white", + "app-plus": { + "subNVues": [{ + "path": "pages/live/loading", //路径地址 + "id": "subNvue", //唯一id,一个页面下最多三个最好,否则影响性能 + // "type": "popup" 如果是弹窗可开启 + //这个是初始样式,当然初始想隐藏的话,这个不重要 + "style": { + "width": "100%", + "height": "100%", + "position": "absolute" + + + } + }] + } + + + } + }, + { + "path": "pages/live/liveIos", + "style": { + "navigationBarTitleText": "苗情监测", + // "navigationStyle": "custom", + "enablePullDownRefresh": false, + "navigationBarBackgroundColor": "#35D190", + "navigationBarTextStyle": "white", + "app-plus": { + "subNVues": [{ + "path": "pages/live/loading", //路径地址 + "id": "subNvueIos", //唯一id,一个页面下最多三个最好,否则影响性能 + // "type": "popup" 如果是弹窗可开启 + //这个是初始样式,当然初始想隐藏的话,这个不重要 + "style": { + "width": "100%", + "height": "100%", + "position": "absolute" + + + } + }] + } + + + } + }, + { + "path": "pages/addPlant/addPlant", "style": { - "navigationBarTitleText": "栏舍监控", + "navigationBarTitleText": "添加养殖基地信息", "enablePullDownRefresh": false, "navigationBarBackgroundColor": "#feb048", "navigationBarTextStyle": "white" } }, { - "path": "pages/addPlant/addPlant", - "style": { - "navigationBarTitleText": "添加养殖场信息", - "enablePullDownRefresh": false, - "navigationBarBackgroundColor": "#feb048", - "navigationBarTextStyle": "white" - } + "path": "pages/addPlant/select_address_n", + "style": { + "navigationBarTitleText": "选择位置", + "enablePullDownRefresh": false, + "navigationBarBackgroundColor": "#feb048", + "navigationBarTextStyle": "white" + } }, - // { - // "path": "pages/addPlant/select_address_n", - // "style": { - // "navigationBarTitleText": "选择位置", - // "enablePullDownRefresh": false, - // "navigationBarBackgroundColor": "#feb048", - // "navigationBarTextStyle": "white" - // } - // }, { "path": "pages/equipment/index", "style": { diff --git a/pages/Login/login.vue b/pages/Login/login.vue index f1d2624..fd8c3c5 100644 --- a/pages/Login/login.vue +++ b/pages/Login/login.vue @@ -1,3 +1,435 @@ + + - - - + \ No newline at end of file diff --git a/pages/Login/resgier.vue b/pages/Login/resgier.vue index c9c4fa5..e6273b2 100644 --- a/pages/Login/resgier.vue +++ b/pages/Login/resgier.vue @@ -3,10 +3,10 @@ - + - + @@ -15,7 +15,7 @@ 您好! - 欢迎进入吟龙养殖溯源系统! + 欢迎进入吟龙土壤墒情监测溯系统! @@ -84,7 +84,8 @@ @@ -164,8 +178,7 @@ .box { width: 100vw; height: 100vh; - background-image: url('/static/main/login/bg.png'); - background-size: 100% 100%; + background-color: $theme-main-color; position: relative; } diff --git a/pages/addPlant/addPlant.vue b/pages/addPlant/addPlant.vue index 42d0fd3..9547d1d 100644 --- a/pages/addPlant/addPlant.vue +++ b/pages/addPlant/addPlant.vue @@ -3,56 +3,63 @@ - - - 养殖场信息 + 养殖基地信息 - - + + - - + + + - + + + + + + - - + + - - - - + + v-model="data.formData.master_contact"> 地址信息 - + - + - + - - + @@ -62,7 +69,7 @@ - 养殖场图片 + 养殖基地图片 - @@ -102,15 +108,12 @@ - - - - - - + + + + 提交 @@ -133,69 +136,77 @@ Uploads } from "@/api/upload.js" import { - addland, province, city, county, towns, villages, groups - } from '@/api/api.js' + } from '@/api/api.js'; + import { + farmAdd + } from '@/api/index.js'; + import { + breedTypeLists, + farmTypeLists + } from '@/api/dict.js'; const form1 = ref(null); const data = reactive({ formData: { - title: '', + farm_name: '', + farm_type: '', + breed_type: '', + form_scale: '', + master: '', + master_contact: '', + province: '', + city: '', area: '', - province_code: '', - city_code: '', - county_code: '', address: '', lat: "", lon: "", master_name: '', - master_phone: '', - pic: ['https://img0.baidu.com/it/u=1717510975,3258230326&fm=253&fmt=auto?w=120&h=80', - 'https://img0.baidu.com/it/u=1717510975,3258230326&fm=253&fmt=auto?w=120&h=80' - ] + pic: [] }, rules: { - // name: [{ - // required: true, - // message: '请输入姓名', - // // 可以单个或者同时写两个触发验证方式 - // trigger: ['change', 'blur'], - // }], - // intro: [{ - // min: 5, - // message: '简介不能少于5个字', - // trigger: 'change' - // }], - title: [{ + farm_name: [{ type: 'string', required: true, - message: '请填写养殖场名称', + message: '请填写养殖基地名称', trigger: ['blur', 'change'] }], - area: [{ + farm_type: [{ + type: 'string', + required: true, + message: '请填写养殖基地类型', + trigger: ['blur', 'change'] + }], + breed_type: [{ + type: 'string', + required: true, + message: '请填写养殖基地种类', + trigger: ['blur', 'change'] + }], + form_scale: [{ type: 'string', required: true, - message: '请填写养殖场面积', + message: '请填写养殖基地规模', trigger: ['blur', 'change'] }], - province_code: [{ + province: [{ type: 'string', required: true, message: '请请选择所在省份', trigger: 'change' }], - city_code: [{ + city: [{ type: 'string', required: true, message: '请选择所在城市', trigger: 'change' }], - county_code: [{ + area: [{ type: 'string', required: true, message: '请选择所在区县', @@ -204,16 +215,16 @@ address: [{ type: 'string', required: true, - message: '请输入养殖场详细地址', + message: '请输入养殖基地详细地址', trigger: ['blur', 'change'] }], - master_name: [{ + master: [{ type: 'string', required: true, - message: '请输入养殖场负责人名称', + message: '请输入养殖基地负责人姓名', trigger: ['blur', 'change'] }], - master_phone: [{ + master_contact: [{ required: true, message: '请输入手机号', trigger: ['change', 'blur'], @@ -235,14 +246,20 @@ const pic = reactive([]); const province_name = ref(null) const city_name = ref(null) - const county_name = ref(null) + const area_name = ref(null) + const farm_type_name = ref(null) + const breed_type_name = ref(null) const show = ref(false) const show1 = ref(false) const show2 = ref(false) + const showFarm = ref(false) + const showBreed = ref(false) const columns = reactive([]) const columns1 = reactive([]) const columns2 = reactive([]) + const farm_tpye_list = reactive([]) + const breed_tpye_list = reactive([]) const provincen = () => { @@ -262,7 +279,7 @@ city({ province_code: id }).then((res) => { - columns1.splice(0, columns.length, ...res.data.map((step, index) => { + columns1.splice(0, columns1.length, ...res.data.map((step, index) => { return { name: step.city_name, id: step.city_code, @@ -274,18 +291,52 @@ const countyn = (id) => { county({ city_code: id - }).then((res) => { - columns2.splice(0, columns.length, ...res.data.map((step, index) => { + columns2.splice(0, columns2.length, ...res.data.map((step, index) => { return { name: step.county_name, id: step.county_code, - }; })); }); } + + const farmTypeListsn = (id) => { + farmTypeLists().then((res) => { + farm_tpye_list.splice(0, farm_tpye_list.length, ...res.data.map((step, index) => { + return { + name: step.name, + value: step.value, + id: step.id + }; + })); + + }); + } + + const selectFarmType = (e)=>{ + farm_type_name.value = e.name; + data.formData.farm_type = e.value; + } + + const breedTypeListsn = (id) => { + breedTypeLists().then((res) => { + breed_tpye_list.splice(0, breed_tpye_list.length, ...res.data.map((step, index) => { + return { + name: step.name, + value: step.value, + id: step.id + }; + })); + + }); + } + + const selectBreedType = (e)=>{ + breed_type_name.value = e.name; + data.formData.breed_type = e.value; + } //图片删除 const delimg = (i) => { @@ -335,73 +386,52 @@ show.value = true } const isshow2 = () => { - show1.value = true } const isshow3 = () => { show2.value = true } - const isshow4 = () => { - show3.value = true - } - const isshow5 = () => { - show4.value = true - - } - const isshow6 = () => { - show5.value = true - } + + const isshowFarm = () =>{ + showFarm.value = true + } + + const isshowBreed = () =>{ + showBreed.value = true + } const leavaType1 = (e) => { - + console.log(e); province_name.value = e.name - data.formData.province_code = e.id + data.formData.province = e.id cityn(e.id) - } const leavaType2 = (e) => { city_name.value = e.name - data.formData.city_code = e.id + data.formData.city = e.id countyn(e.id) } const leavaType3 = (e) => { - county_name.value = e.name - data.formData.county_code = e.id - + area_name.value = e.name + data.formData.area = e.id } + + + const location = () => { - - uni.showLoading({ - title: '获取位置中' - }) - uni.getLocation({ - type: 'gcj02', - geocode: true, - isHighAccuracy: true, - success: async (res) => { - console.log(res) - - - data.formData.lat = res.latitude - data.formData.lon = res.longitude - - data.formData.address = res.address.street + res - .address.streetNum + res.address.poiName - - uni.hideLoading(); - - console.log(data.formData) - }, - fail: (err) => { - // uni.hideLoading(); - console.log(err) - console.log("erer") - } - }); - - - + uni.navigateTo({ + url: '/pages/addPlant/select_address_n', + success: (res)=>{ + uni.$once('setData', (e)=>{ + e = JSON.parse(e||'{}'); + console.log('选择地址', e); + data.formData.address = e.address; + data.formData.lat = e.lat; + data.formData.lon = e.lon; + }) + } + }) } @@ -420,15 +450,13 @@ if (valid) { // console.log('表单通过', data.formData); if (pic.length == 0) { - uni.$u.toast('请上传图片') return } data.formData.pic = JSON.stringify(pic) - // 表单验证通过,执行提交操作 - addland(data.formData).then((res) => { + farmAdd(data.formData).then((res) => { console.log(res) if (res.code == 1) { uni.navigateBack({ @@ -449,9 +477,9 @@ } onLoad((options) => { - - provincen() - + provincen(); + farmTypeListsn(); + breedTypeListsn(); }) diff --git a/pages/addPlant/select_address_n.nvue b/pages/addPlant/select_address_n.nvue index 2367908..60fadfe 100644 --- a/pages/addPlant/select_address_n.nvue +++ b/pages/addPlant/select_address_n.nvue @@ -1,418 +1,291 @@ \ No newline at end of file diff --git a/pages/index/massif.vue b/pages/index/massif.vue index 1c5ab31..338ae7d 100644 --- a/pages/index/massif.vue +++ b/pages/index/massif.vue @@ -6,11 +6,11 @@ - - - {{dataobj.title}} + @@ -48,19 +48,19 @@ - + - - 没有养殖场信息? + + 没有养殖基地信息? 去新增》 - 养殖场规模 + 养殖基地规模 - {{dataobj.total_area|| "--"}} + {{dataobj.form_scale|| "--"}} @@ -85,7 +85,7 @@ --> - 养殖场监控数据 + 养殖基地监控数据 刷新时间:{{getNowTimeFn()}} @@ -93,9 +93,21 @@ - + + + + + + + + + + @@ -126,7 +138,7 @@ - 你还没有养殖场信息 + 你还没有养殖基地信息 去添加 @@ -180,6 +192,8 @@ plantlist, landproduct } from '@/api/api.js' + import {farmLists} from "@/api/index.js" + import {farmTypeLists} from "@/api/dict.js" import store from "@/store/index.js" const showPicker = ref(false) const showPicker1 = ref(false) @@ -270,11 +284,29 @@ }); } + const goLive = () => { + let system = uni.getSystemInfoSync().platform; + uni.navigateTo({ + url: `/pages/live/${system == 'ios'?'liveIos':'live'}?url=${video_url.value }&user=${userInfo.value.master_phone}&device=${userInfo.value.device_id} ` + }) + } + const video_url = ref() + + + const testUser = () => { + if (uni.getStorageSync("SY_USER").mobile == '19130550023' || uni.getStorageSync("SY_USER").mobile == + '19330904744') { + video_url.value = + "http://rtsp.lihaink.cn/live/lihai_lot_walnutpi_dev_6.live.mp4" + userInfo.value.master_phone = "lihai_lot_land_1" + userInfo.value.device_id = "6" + // console.log("19130550023") + } + } const show = ref(false) const showLoading = ref(false) const columns = reactive([]); onShow(() => { - getlist1() getlist2() }) @@ -283,26 +315,6 @@ } - const getlist1 = () => { - landlist({ - page_no: 1, - page_size: 99995, - keyword: '' - }).then((res) => { - if (res.code == 1) { - if (res.data.length > 0) { - columns.splice(0, columns.length, ...res.data.map((step, index) => { - return { - name: step.title, - id: step.id, - }; - })); - } - } - }) - - } - const getlist2 = () => { landproduct().then((res) => { if (res.code == 1) { @@ -350,7 +362,85 @@ equipmentId.value = '' } - + const farm_lists = ref([]); + const farm_types_lists = ref([]); + const initFarmLists = ()=>{ + farmTypeLists().then(res=>{ + farm_types_lists.value = res.data + }) + farmLists().then(res=>{ + farm_lists.value = res.data; + columns.splice(0, columns.length, ...res.data.map((step, index) => { + return { + name: step.farm_name, + id: step.id, + }; + })); + if(res.data.length>0) dataobj.value = res.data[0]; + else dataobj.value = {}; + getlist(); + }).catch(err=>{ + console.log(err); + }) + } + initFarmLists(); + + //列表获取 + const getlist = () => { + // lindexist({ + // land_id: tdId.value + // }).then((res) => { + // if (res.code == 1) { + // userInfo.value = res.data + // video_url.value = res.data.video_url + // testUser() + // videoCover.value = userInfo.value.video_cover || "/static/main/index/videoCover.png" + // // uni.getStorageSync('SY_VIDEO_POSTS') || "/static/main/index/videoCover.png" + // threshold = res.data?.monitor?.threshold || "" + // if (Object.keys(res.data).length > 0) { + // getlist3(res.data.id) + // Object.assign(dataobj, res.data); + // if (res.data && res.data.monitor && res.data.monitor.soil_monitor_data) { + // soilList[0].num = res.data.monitor.soil_monitor_data.soil_temperature + // soilList[1].num = res.data.monitor.soil_monitor_data.soil_moisture + // soilList[2].num = res.data.monitor.soil_monitor_data.conductivity + // soilList[3].num = res.data.monitor.soil_monitor_data.ph + // soilList[4].num = res.data.monitor.soil_monitor_data.n_content + // soilList[5].num = res.data.monitor.soil_monitor_data.p_content + // soilList[6].num = res.data.monitor.soil_monitor_data.k_content + // thresholdFn(soilList[0], threshold.soil_temp_min, threshold.soil_temp_max) + // thresholdFn(soilList[1], threshold.soil_mois_min, threshold.soil_mois_max) + // thresholdFn(soilList[3], threshold.soil_ph_min, threshold.soil_ph_max) + // thresholdFn(soilList[4], threshold.soil_n_content_min, threshold.soil_n_content_max) + // thresholdFn(soilList[5], threshold.soil_p_content_min, threshold.soil_p_content_max) + // thresholdFn(soilList[6], threshold.soil_k_content_min, threshold.soil_k_content_max) + + // } + // if (res.data && res.data.monitor && res.data.monitor.air_monitor_data) { + // environmentList[0].num = res.data.monitor.air_monitor_data.wind_speed + // environmentList[1].num = res.data.monitor.air_monitor_data.wind_direction + // environmentList[2].num = res.data.monitor.air_monitor_data.air_temperature + // environmentList[3].num = res.data.monitor.air_monitor_data.air_moisture + // environmentList[4].num = res.data.monitor.air_monitor_data.co2_content + // environmentList[5].num = res.data.monitor.air_monitor_data.pressure + // environmentList[6].num = res.data.monitor.air_monitor_data.rainfall + // environmentList[7].num = res.data.monitor.air_monitor_data.light_intensity + // thresholdFn(environmentList[0], threshold.wind_speed_min, threshold.wind_speed_max) + // // thresholdFn(environmentList[1], threshold.wind_speed_min, threshold.wind_speed_max) + // thresholdFn(environmentList[2], threshold.air_temp_min, threshold.air_temp_max) + // thresholdFn(environmentList[3], threshold.air_mois_min, threshold.air_mois_max) + // thresholdFn(environmentList[4], threshold.air_co2_content_min, threshold + // .air_co2_content_max) + // thresholdFn(environmentList[5], threshold.ambient_air_pressure_min, threshold + // .ambient_air_pressure_max) + // // thresholdFn(environmentList[6], threshold.ambient_air_pressure_min, threshold.ambient_air_pressure_max) + // // thresholdFn(environmentList[6], threshold.ambient_air_pressure_min, threshold.ambient_air_pressure_max) + // } + // } + // } + // }) + + } //绑定产品 const biproduct = () => { @@ -391,8 +481,8 @@ } const confirm = (e) => { // console.log(e) - tdId.value = e.id - + tdId.value = e.id; + dataobj.value = farm_lists.value.find(item=>item.id==e.id); show.value = false showLoading.value = true setTimeout(() => { diff --git a/pages/live/live.nvue b/pages/live/live.nvue deleted file mode 100644 index 397002d..0000000 --- a/pages/live/live.nvue +++ /dev/null @@ -1,99 +0,0 @@ - - - \ No newline at end of file diff --git a/pages/live/live.vue b/pages/live/live.vue new file mode 100644 index 0000000..2e888c0 --- /dev/null +++ b/pages/live/live.vue @@ -0,0 +1,197 @@ + + + + + + + \ No newline at end of file diff --git a/pages/live/liveIos.nvue b/pages/live/liveIos.nvue new file mode 100644 index 0000000..dab4a76 --- /dev/null +++ b/pages/live/liveIos.nvue @@ -0,0 +1,111 @@ + + + + + \ No newline at end of file diff --git a/pages/live/loading.nvue b/pages/live/loading.nvue new file mode 100644 index 0000000..ca41596 --- /dev/null +++ b/pages/live/loading.nvue @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file diff --git a/pages/plantAdmin/addBreed.vue b/pages/plantAdmin/addBreed.vue index 021a058..f5f68dc 100644 --- a/pages/plantAdmin/addBreed.vue +++ b/pages/plantAdmin/addBreed.vue @@ -72,7 +72,7 @@ - 养殖场图片 + 养殖基地图片 - 养殖场图片 + 养殖基地图片 zz&uljWy!{MPH&YwIGq;gc68VujO8vQuE~0PdpF) zKS`W4e{#*_Czn<3{}aEzR#zimedp{avmP?or0w(jM5G$|k*88?ndhbiD~D)C(MjG3zW!Nv+0l66bIdDc`rD;7KnMj59R_< z`g=`_8=_>?c20Scaj^=hFe*p=X8f`+N6srLD{H+FluH0piNF*F*|OZK4L+-XoGCDz;!9 z6JOTw?|Nmvm?dlL#qyuJ8jZ8QW`R7Dw)dMRFbFosdFKO-O>2L;U9O>9i(LUIk1=fV17BBuI9*j!Em(*&{5%%tf~&j1r>n;f>YKRFwKcc+!M0S z#LsXsiwDpXXR7#{gdQ9@b8hl}nm$gi zhO+d{z^JI2NfxK{Ymc8U|9Sz23)z^U1`(`%@CG2|*BBVjYbCY6*XTSH(4E*;}mGR7%6yYiR zEA1JKZ8MraRljFXSoYgDpzh&chBIF(FQ3^tTB@V)8{ocmRFUOS`l-|y45a%O{t zmV#f>J~QuI{#@g|>dzC_OcurFC&M-O%a#24;55nKtBL8#o5L#a=U%g~GkzX8Y5Sx- zlb*Ocv#baxj`?);^xF3V*?Fszq dSw5fm?^&e{r9axeuc)I$ztaD0e0sxr?^N;`l literal 0 HcmV?d00001 diff --git a/static/main/index/white_bg_r.png b/static/main/index/white_bg_r.png new file mode 100644 index 0000000000000000000000000000000000000000..b2a41179f09df8e00fbca760e26598c284c0e5b9 GIT binary patch literal 1068 zcmeAS@N?(olHy`uVBq!ia0y~yVDtjAb2!+5B+u&KvltkdKYO}3hE&XXdv|Y_N~i?e zgYCx)H->L8y(P%(-WnQnCs2UpBNt1e;5COE)&fT|j$ZIMcEsiVffM_A_i&2}ALbP` z4Z3pVV&ak;m#u>R&c58wx$WF%hvj#_9Dn$9_2;WAXUWLQKAp2?#uK+m(e;%J|C*@DRqcy+zU-(@20K3Ug77I;aD4%@WGf(a3ADiY+S5@TIcb>n*@Gj}M z=RMD&8NBRIwLR^;i`HLd>^V^PQqNp$O25iay_3yh>;_8LC)e!Sy72$!brV?JUNozS zn_UdFoAPA&yVGlg5?bxc^k7mh%N2I~*(A!;bK~=Dj#IYUED{^r%{RLL%$_te zl&R|TXfkD}8pS|)L!tXnQDsNiJKAks# zC2B)n08`IBE62=wp^TDWRin+7_Zm#yAH-cs##`% zq?K0#mm_DuMz4T4uT6_L0Hry-?y6i6fr!njVD=T9!XSEDF7b`u<3H08dnd(~+K{x4ZEfkW#znP|Tw0aMbAVoOgdM_N&a))VeS!)#_BNBIlNjnF~s8@|t)8 zUC!av(3RSB$##mvWU;wb=T9A}PMXQEHge12Jz6S_VY*UNzNt5+L8+G-j9Oxn&vK@x z2l$B!XIxa0eVPh1Eob6_E%uxyxe&@1YG_ozyD9t*o3k8O&Ssev&V6e2T5*mAVpH;X znP#a2%{gav$U@g$e7mS%#?46Cr=p6S1!Vz1ubu5)z_LOZ=soAdb37|&-tb{;yvAEP zWw(>igT93eO8%=j7>WSh#MlMo9Fty9@RB#6@Ya>;FtvNaN0}}5F1{l?iQ&H_mlp#l z1Qmf6{W?77?I)g7D-SW=x%gf~pWCxx@-N4i|2!MyfC?`1d%24m3Yt*0?RNTne$HXtrY9z@++ zZ^zKgw`;+l$XW)rzc*N)hQDGqc=1|KV}F2rgX8vH$~|`rQ5g1sV?xmyXRTe%|4qs;tTEvo{RPQ6g4T^bDsC6$xoU}nS0K}rzU*%-O0RS i_Z2&fkMfiMFslUh { +Promise.resolve("./pages/live/liveIos.js").then((res) => { + res.length; +}); +Promise.resolve("./pages/addPlant/select_address_n.js").then((res) => { + res.length; +}); +Promise.resolve("./pages/live/loading.js").then((res) => { + res.length; +}); +Promise.resolve("./pages/live/loading.js").then((res) => { res.length; }); Promise.resolve("./app.css.js").then(() => {