This commit is contained in:
weipengfei 2023-09-02 11:56:17 +08:00
parent 2db11acdba
commit caa6828681
8 changed files with 676 additions and 700 deletions

View File

@ -3,7 +3,7 @@
const jpushModule = uni.requireNativePlugin("JG-JPush"); const jpushModule = uni.requireNativePlugin("JG-JPush");
// #endif // #endif
export default { export default {
onLaunch: async function() { onLaunch: async function(info) {
// let noticeArr = [] // let noticeArr = []
// jpushModule.addNotificationListener(res => { // jpushModule.addNotificationListener(res => {
// if (!noticeArr.includes(res.messageID)) { // if (!noticeArr.includes(res.messageID)) {
@ -16,6 +16,10 @@
// console.log("app") // console.log("app")
// } // }
// }) // })
uni.showModal({
content: info
})
if(info.referrerInfo?.extraData?.uniMP) uni.setStorageSync('uniMP', info.referrerInfo?.extraData?.uniMP);
console.log('App Launch') console.log('App Launch')
this.$store.dispatch('initConfig'); this.$store.dispatch('initConfig');
try { try {

View File

@ -359,9 +359,9 @@
brigade: '' brigade: ''
} }
}, },
props: ['id', 'type'], props: ['cid', 'type'],
mounted() { mounted() {
this.initContract(this.$props.id, this.$props.type || null); this.initContract(this.$props.cid, this.$props.type || null);
}, },
computed: { computed: {
c_address() { c_address() {

View File

@ -4,7 +4,7 @@
<view class="title">常住人口</view> <view class="title">常住人口</view>
<u--form labelPosition="left" :model="residents" :rules="rules" ref="residentsForm"> <u--form labelPosition="left" :model="residents" :rules="rules" ref="residentsForm">
<block value="人口"> <block value="人口">
<block value="人员信息" v-for="(item, index) in residents.family" :key="'user'+index"> <block value="人员信息" v-for="(item, family_index) in residents.family" :key="'user'+family_index">
<u-form-item label="姓名" required prop="family.name" borderBottom> <u-form-item label="姓名" required prop="family.name" borderBottom>
<u--input v-model="item.name" :readonly="readonly" placeholder="请输入姓名"></u--input> <u--input v-model="item.name" :readonly="readonly" placeholder="请输入姓名"></u--input>
</u-form-item> </u-form-item>
@ -37,7 +37,7 @@
</u-radio> </u-radio>
</u-radio-group> </u-radio-group>
</u-form-item> </u-form-item>
<block value="是" v-if="residents.child>0" v-for="(item,index) in residents.child_arr" :key="'child'+index"> <block value="是" v-if="residents.child>0" v-for="(item,child_arr_index) in residents.child_arr" :key="'child'+child_arr_index">
<u-form-item label="年龄" required prop="child_arr.age" borderBottom> <u-form-item label="年龄" required prop="child_arr.age" borderBottom>
<u--input v-model="item.age" :readonly="readonly" placeholder="请输入年龄" type="number" maxlength="2"></u--input> <u--input v-model="item.age" :readonly="readonly" placeholder="请输入年龄" type="number" maxlength="2"></u--input>
</u-form-item> </u-form-item>

View File

@ -1,34 +1,28 @@
<template> <template>
<view class="oa_home" style="oaColor"> <view class="oa_home" style="oaColor">
<!-- <image class="header_bg" src="../../static/img/home/head-bg.png"></image> --> <!-- <image class="header_bg" src="../../static/img/home/head-bg.png"></image> -->
<u-navbar v-if="uniMP" @leftClick="leftClick" :autoBack="true" bgColor="rgba(0,0,0,0)"
<view leftIconColor=" #fff">
class="home_header" </u-navbar>
:class="!ApproveList.length > 0 ? 'home_header_no_data' : ''" <view class="home_header" :class="!ApproveList.length > 0 ? 'home_header_no_data' : ''">
> <view style="
<view
style="
position: absolute; position: absolute;
bottom: 0; bottom: 0;
left: 0; left: 0;
overflow: hidden; overflow: hidden;
border-radius: 0 0 30rpx 30rpx; border-radius: 0 0 30rpx 30rpx;
" ">
> <hx-lottie :options="options" ref="lottie" style="
<hx-lottie
:options="options"
ref="lottie"
style="
width: 100vw; width: 100vw;
height: 440rpx; height: 440rpx;
transform: scale(1.2); transform: scale(1.2);
background-color: #0122c7; background-color: #0122c7;
" " />
/>
</view> </view>
<!-- #ifdef APP-PLUS||H5 --> <!-- #ifdef APP-PLUS||H5 -->
<view style="height: var(--status-bar-height)"></view> <view v-if="!uniMP" style="height: var(--status-bar-height)"></view>
<view style="height: 30rpx"></view> <view style="height: 30rpx"></view>
<view v-if="uniMP" style="height: 44px"></view>
<!-- #endif --> <!-- #endif -->
<view class="my_info"> <view class="my_info">
<view v-if="!$store.state.app.token" @click="login" class="mesg_box"> <view v-if="!$store.state.app.token" @click="login" class="mesg_box">
@ -39,46 +33,30 @@
</view> </view>
<view class="head_img"> <view class="head_img">
<view class="img_box"> <view class="img_box">
<u--image <u--image :showLoading="true" width="131.43rpx" height="131.43rpx" class="img_box_img"
:showLoading="true" :src="myOaInfo.avatar || '../../static/img/public/avatar.png'" shape="circle"></u--image>
width="131.43rpx"
height="131.43rpx"
class="img_box_img"
:src="myOaInfo.avatar || '../../static/img/public/avatar.png'"
shape="circle"
></u--image>
</view> </view>
<text class="head_text">工作证: {{ myOaInfo.nickname }}</text> <text class="head_text">工作证: {{ myOaInfo.nickname }}</text>
<text class="head_text" style="flex-shrink: 0" <text class="head_text" style="flex-shrink: 0">身份: {{ myOaInfo.admin_id ? "管理员" : "普通用户" }}</text>
>身份: {{ myOaInfo.admin_id ? "管理员" : "普通用户" }}</text
>
</view> </view>
</view> </view>
<!-- 占位 --> <!-- 占位 -->
<view style="height: 150rpx"></view> <view style="height: 150rpx"></view>
<view <view class="backlog" :class="!ApproveList.length > 0 ? 'backlog_no_data' : ''">
class="backlog"
:class="!ApproveList.length > 0 ? 'backlog_no_data' : ''"
>
<view class="head_title flex_a_c_j_sb"> <view class="head_title flex_a_c_j_sb">
<view class="title">公告列表</view> <view class="title">公告列表</view>
<view class="flex_a_c" @click="navTo('/subpkg/noticeList/noticeList')" <view class="flex_a_c" @click="navTo('/subpkg/noticeList/noticeList')">更多
>更多
<view class="iconfont icon-you"> <view class="iconfont icon-you">
<uni-icons type="forward"></uni-icons> <uni-icons type="forward"></uni-icons>
</view> </view>
</view> </view>
</view> </view>
<block v-if="ApproveList.length > 0"> <block v-if="ApproveList.length > 0">
<view <view class="backlog_item flex_a_c_j_sb" v-for="(item, index) in ApproveList.slice(0, 2)" :key="index"
class="backlog_item flex_a_c_j_sb" @click="clickNotice(item.id)">
v-for="(item, index) in ApproveList.slice(0, 2)"
:key="index"
@click="clickNotice(item.id)"
>
<view class="text"> <view class="text">
<text class="text_time">{{ <text class="text_time">{{
item.create_time.substring(0, 10).replace(/-/g, ".") item.create_time.substring(0, 10).replace(/-/g, ".")
@ -86,16 +64,12 @@
{{ item.title }} {{ item.title }}
</view> </view>
<i class="iconfont icon-you" <i class="iconfont icon-you"><uni-icons type="forward"></uni-icons></i>
><uni-icons type="forward"></uni-icons
></i>
</view> </view>
</block> </block>
<view v-else class="backlog_no flex_a_c_j_sb"> <view v-else class="backlog_no flex_a_c_j_sb">
<view class="text">暂无更多消息</view> <view class="text">暂无更多消息</view>
<i class="iconfont icon-you" <i class="iconfont icon-you"><uni-icons type="forward"></uni-icons></i>
><uni-icons type="forward"></uni-icons
></i>
</view> </view>
</view> </view>
</view> </view>
@ -114,13 +88,7 @@
<view class="fast_track"> <view class="fast_track">
<block v-for="(item, index) in oaHomeData" :key="item.id"> <block v-for="(item, index) in oaHomeData" :key="item.id">
<view class="track_item" @click="navTwo(item.paths, index)"> <view class="track_item" @click="navTwo(item.paths, index)">
<u--image <u--image :showLoading="true" :src="item.icon" mode="widthFix" width="77.19rpx" height="77.19rpx"></u--image>
:showLoading="true"
:src="item.icon"
mode="widthFix"
width="77.19rpx"
height="77.19rpx"
></u--image>
<view class="title">{{ item.name }}</view> <view class="title">{{ item.name }}</view>
</view> </view>
</block> </block>
@ -129,8 +97,7 @@
<view class="my_task"> <view class="my_task">
<view class="task_title flex_a_c_j_sb"> <view class="task_title flex_a_c_j_sb">
<view class="title">配送信息</view> <view class="title">配送信息</view>
<view class="flex_a_c" @click="goOrderList" <view class="flex_a_c" @click="goOrderList">更多
>更多
<view class="iconfont icon-you"> <view class="iconfont icon-you">
<uni-icons type="forward"></uni-icons> <uni-icons type="forward"></uni-icons>
</view> </view>
@ -143,19 +110,13 @@
<!-- <button @click="test">按钮</button> --> <!-- <button @click="test">按钮</button> -->
<view v-if="orderList.length > 0"> <view v-if="orderList.length > 0">
<globalPopup ref="globalPopup"></globalPopup> <globalPopup ref="globalPopup"></globalPopup>
<logistiBriefCard <logistiBriefCard v-for="(item, index) in orderList" :key="index" :goodsInfo="item">
v-for="(item, index) in orderList"
:key="index"
:goodsInfo="item"
>
</logistiBriefCard> </logistiBriefCard>
</view> </view>
<view v-else class="no_task"> <view v-else class="no_task">
<view class="title">暂无配送信息</view> <view class="title">暂无配送信息</view>
<view class="tips" v-if="!$store.state.app.token" <view class="tips" v-if="!$store.state.app.token">登录后查看配送信息详情</view>
>登录后查看配送信息详情</view
>
</view> </view>
<!-- <view class="head_title flex_a_c_j_sb"> <!-- <view class="head_title flex_a_c_j_sb">
<view class="">我的任务</view> <view class="">我的任务</view>
@ -194,46 +155,47 @@
</template> </template>
<script> <script>
import logistiBriefCard from "@/components/logistiComptent/logistiCard/logistiBriefCard.vue"; import logistiBriefCard from "@/components/logistiComptent/logistiCard/logistiBriefCard.vue";
import globalPopup from "@/components/GlobalPopup/GlobalPopup.vue"; import globalPopup from "@/components/GlobalPopup/GlobalPopup.vue";
import { import {
getList getList
} from "@/api/logistics.js"; } from "@/api/logistics.js";
import { import {
Toast Toast
} from "@/libs/uniApi.js"; } from "@/libs/uniApi.js";
import { import {
oaHomeData oaHomeData
} from "@/static/server/server.js"; } from "@/static/server/server.js";
import { import {
noticeList noticeList
} from "@/api/notice.js"; } from "@/api/notice.js";
// import tabbar from '../components/tabbar' // import tabbar from '../components/tabbar'
import { import {
getIndexListAPI, getIndexListAPI,
getTaskListAPI, getTaskListAPI,
getMyTaskListAPI, getMyTaskListAPI,
getApproveListAPI, getApproveListAPI,
getUserIndexAPI, getUserIndexAPI,
} from "@/api/oaApi.js"; } from "@/api/oaApi.js";
import { import {
mapState mapState
} from 'vuex'; } from 'vuex';
import bj from "@/static/animation/home.json" import bj from "@/static/animation/home.json"
//#ifdef APP-PLUS //#ifdef APP-PLUS
var jpushModule = uni.requireNativePlugin("JG-JPush"); var jpushModule = uni.requireNativePlugin("JG-JPush");
// #endif // #endif
export default { export default {
components: { components: {
// tabbar // tabbar
logistiBriefCard, logistiBriefCard,
globalPopup, globalPopup,
}, },
data () { data() {
return { return {
options: { options: {
data: '', data: '',
}, },
uniMP: false,
is_captain: 0, is_captain: 0,
notArr: [], notArr: [],
orderList: [], orderList: [],
@ -273,12 +235,12 @@ export default {
showOaHomeData: false, // showOaHomeData: false, //
}; };
}, },
onLoad () { onLoad() {
this.is_captain = JSON.parse(uni.getStorageSync("USER_INFO")).is_captain this.is_captain = JSON.parse(uni.getStorageSync("USER_INFO")).is_captain
this.options.data = bj; this.options.data = bj;
//#ifdef APP-PLUS //#ifdef APP-PLUS
let that = this; let that = this;
jpushModule.addNotificationListener(function (result) { jpushModule.addNotificationListener(function(result) {
if (!that.notArr.includes(result.messageID)) { if (!that.notArr.includes(result.messageID)) {
that.$refs.globalPopup.showPopu(); that.$refs.globalPopup.showPopu();
that.getOrderList(); that.getOrderList();
@ -288,9 +250,10 @@ export default {
}); });
// #endif // #endif
}, },
onShow () { onShow() {
// this.getUserIndex() // this.getUserIndex()
// this.getIndexList() // this.getIndexList()
if(uni.getStorageSync('uniMP'))this.uniMP = true;
this.getApproveList(); this.getApproveList();
this.initUserInfo(); this.initUserInfo();
this.showToask(); this.showToask();
@ -307,7 +270,7 @@ export default {
} }
}, },
computed: { computed: {
oaHomeData () { oaHomeData() {
const route = '/pages/oaHome/oaHome'; const route = '/pages/oaHome/oaHome';
let arr = []; let arr = [];
this.$store.state.config?.config?.menu?.forEach((item) => { this.$store.state.config?.config?.menu?.forEach((item) => {
@ -326,7 +289,7 @@ export default {
}, },
methods: { methods: {
// //
noticeFn () { noticeFn() {
const audioContext = uni.createInnerAudioContext() const audioContext = uni.createInnerAudioContext()
audioContext.src = '/static/mp3/order.mp3' audioContext.src = '/static/mp3/order.mp3'
jpushModule.addNotificationListener(res => { jpushModule.addNotificationListener(res => {
@ -338,7 +301,13 @@ export default {
console.log("index的监听") console.log("index的监听")
}) })
}, },
async getOrderList () { leftClick(e) {
uni.sendHostEvent('closeApp', e, (ret) => {
//
console.log('关闭应用'+JSON.stringify(ret));
});
},
async getOrderList() {
let id = JSON.parse(uni.getStorageSync("USER_INFO")).id || ""; let id = JSON.parse(uni.getStorageSync("USER_INFO")).id || "";
let res = await getList({ let res = await getList({
user_id: id, user_id: id,
@ -347,17 +316,17 @@ export default {
}); });
this.orderList = res.data.data; this.orderList = res.data.data;
}, },
goOrderList () { goOrderList() {
uni.navigateTo({ uni.navigateTo({
url: "/pages/logistics/index", url: "/pages/logistics/index",
}); });
}, },
initUserInfo () { initUserInfo() {
this.$store.state.app.userInfo ? this.$store.state.app.userInfo ?
(this.myOaInfo = this.$store.state.app.userInfo) : (this.myOaInfo = this.$store.state.app.userInfo) :
(this.myOaInfo.avatar = ""); (this.myOaInfo.avatar = "");
}, },
initOaHomeDada () { initOaHomeDada() {
if (this.$store.state.app.userInfo.admin_id == 0) { if (this.$store.state.app.userInfo.admin_id == 0) {
// //
let arr = oaHomeData.filter((item) => !item.admin); // let arr = oaHomeData.filter((item) => !item.admin); //
@ -381,7 +350,7 @@ export default {
this.oaHomeData.splice(this.oaHomeData.length - 1, 1); this.oaHomeData.splice(this.oaHomeData.length - 1, 1);
} }
}, },
async getApproveList () { async getApproveList() {
const res = await noticeList({ const res = await noticeList({
keyword: "", keyword: "",
page_no: 1, page_no: 1,
@ -389,7 +358,7 @@ export default {
}); });
this.ApproveList = res.data.lists; this.ApproveList = res.data.lists;
}, },
async getIndexList () { async getIndexList() {
const { const {
project, project,
task task
@ -405,19 +374,19 @@ export default {
this.assessData[7].num = task.count_lv + "%"; this.assessData[7].num = task.count_lv + "%";
this.myTaskList = task.list; this.myTaskList = task.list;
}, },
async getMyTask () { async getMyTask() {
let data = { let data = {
page: this.page, page: this.page,
limit: 10, limit: 10,
}; };
const res = getMyTaskListAPI(data); const res = getMyTaskListAPI(data);
}, },
naviTaskDetails (id) { naviTaskDetails(id) {
uni.navigateTo({ uni.navigateTo({
url: `/pages/views/task_details?id=${id}`, url: `/pages/views/task_details?id=${id}`,
}); });
}, },
navTo (url) { navTo(url) {
if (url) { if (url) {
uni.showLoading({ uni.showLoading({
title: '加载中', title: '加载中',
@ -425,16 +394,16 @@ export default {
}); });
uni.navigateTo({ uni.navigateTo({
url: url, url: url,
success () { success() {
uni.hideLoading() uni.hideLoading()
}, },
fail () { fail() {
uni.switchTab({ uni.switchTab({
url: url, url: url,
success () { success() {
uni.hideLoading() uni.hideLoading()
}, },
fail () { fail() {
uni.hideLoading() uni.hideLoading()
} }
}); });
@ -442,7 +411,7 @@ export default {
}) })
} else Toast('暂未开放') } else Toast('暂未开放')
}, },
navTwo (url, key) { navTwo(url, key) {
// let role_id = this.$store.state.app?.userInfo?.admin?.role_id || null; // let role_id = this.$store.state.app?.userInfo?.admin?.role_id || null;
// var arr = [3, 6]; // var arr = [3, 6];
@ -455,13 +424,13 @@ export default {
this.navTo(url); this.navTo(url);
}, },
// //
clickNotice (e) { clickNotice(e) {
uni.navigateTo({ uni.navigateTo({
url: `/pages/oaNews/oaNews?id=${e}`, url: `/pages/oaNews/oaNews?id=${e}`,
}); });
}, },
// , // ,
showToask () { showToask() {
if (!this.$store.state.app.token) { if (!this.$store.state.app.token) {
this.assessData = this.assessData.map((item) => { this.assessData = this.assessData.map((item) => {
item.num = "*"; item.num = "*";
@ -475,37 +444,37 @@ export default {
}); });
} }
}, },
login () { login() {
uni.navigateTo({ uni.navigateTo({
url: "/pages/oaLogin/oaLogin", url: "/pages/oaLogin/oaLogin",
}); });
}, },
async getUserIndex () { async getUserIndex() {
const res = await getUserIndexAPI(); const res = await getUserIndexAPI();
this.myOaInfo = res; this.myOaInfo = res;
}, },
}, },
onPullDownRefresh () { onPullDownRefresh() {
this.getOrderList(); this.getOrderList();
this.$store.dispatch('initConfig'); this.$store.dispatch('initConfig');
// this.getIndexList() // this.getIndexList()
uni.stopPullDownRefresh(); uni.stopPullDownRefresh();
}, },
}; };
</script> </script>
<style lang="scss"> <style lang="scss">
.oa_home { .oa_home {
// padding-bottom: rpx; padding-bottom: 100rpx;
} }
.header_bg { .header_bg {
position: absolute; position: absolute;
width: 100%; width: 100%;
// z-index: -1; // z-index: -1;
} }
.home_header { .home_header {
position: relative; position: relative;
padding: 28rpx; padding: 28rpx;
// height: 607.02rpx; // height: 607.02rpx;
@ -677,13 +646,13 @@ export default {
.backlog_no_data { .backlog_no_data {
bottom: -70rpx; bottom: -70rpx;
} }
} }
.home_header_no_data { .home_header_no_data {
margin-bottom: 93.33rpx; margin-bottom: 93.33rpx;
} }
.fast_track { .fast_track {
width: 694rpx; width: 694rpx;
// height: 331rpx; // height: 331rpx;
display: flex; display: flex;
@ -707,9 +676,9 @@ export default {
margin-top: 14.04rpx; margin-top: 14.04rpx;
} }
} }
} }
.my_task { .my_task {
width: 694.74rpx; width: 694.74rpx;
margin: 0 auto; margin: 0 auto;
// margin-top: 31.58rpx; // margin-top: 31.58rpx;
@ -822,9 +791,9 @@ export default {
font-size: 24.56rpx; font-size: 24.56rpx;
} }
} }
} }
.no_login { .no_login {
position: fixed; position: fixed;
left: 0; left: 0;
bottom: 0; bottom: 0;
@ -862,5 +831,5 @@ export default {
align-items: center; align-items: center;
} }
} }
} }
</style> </style>

View File

@ -1,6 +1,9 @@
import Cache from '@/utils/cache'; import Cache from '@/utils/cache';
import { getConfig } from "@/api/config.js"; import { getConfig } from "@/api/config.js";
// #ifdef APP-PLUS
import Updater from '@/uni_modules/guyue-updater/index'; import Updater from '@/uni_modules/guyue-updater/index';
// #endif
function compareVersions(version1, version2) { function compareVersions(version1, version2) {

View File

@ -145,7 +145,7 @@
</view> </view>
<view class="cards" v-for="(item, index) in formData.family" :key="'user'+index"> <view class="cards" v-for="(item, family_index) in formData.family" :key="'user'+family_index">
<view class="card_head"> <view class="card_head">
<text>常住人口</text> <text>常住人口</text>
</view> </view>
@ -184,8 +184,8 @@
</view> </view>
<view class="cards" v-if="formData.child>0" v-for="(item,index) in formData.child_arr" <view class="cards" v-if="formData.child>0" v-for="(item,child_arr_index) in formData.child_arr"
:key="'child'+index"> :key="'child'+child_arr_index">
<view class="card_head"> <view class="card_head">
<text>婴幼儿信息</text> <text>婴幼儿信息</text>
</view> </view>

View File

@ -1,6 +1,6 @@
<template> <template>
<view class=""> <view class="">
<company :id="id" type="company"></company> <company :cid="cid" type="company"></company>
<view class="need_contract" v-if="!company.contract||!company.contract.status||!company.company.is_contract"> <view class="need_contract" v-if="!company.contract||!company.contract.status||!company.company.is_contract">
<!-- <view class="title">电子合同</view> --> <!-- <view class="title">电子合同</view> -->
<picker v-if="company.contract&&company.contract.check_status==0||!company.contract" <picker v-if="company.contract&&company.contract.check_status==0||!company.contract"

View File

@ -1,6 +1,6 @@
<template> <template>
<view class=""> <view class="">
<company :id="id" type="contract"></company> <company :cid="cid" type="contract"></company>
<!-- <button class="back_btn" @click="naviBack">返回</button> --> <!-- <button class="back_btn" @click="naviBack">返回</button> -->
<!-- <button class="stop_btn">终止合同</button> --> <!-- <button class="stop_btn">终止合同</button> -->
</view> </view>