From 09a4dffa44acc386ab66b4e01af473068586e4fb Mon Sep 17 00:00:00 2001
From: Mr.Shi <1878285526@qq.com>
Date: 星期一, 04 九月 2023 10:38:55 +0800
Subject: [PATCH] 小程序
---
minipro_standard/store/index.js | 8
minipro_standard/pages.json | 14
minipro_standard/util/api/index.js | 12
minipro_standard/pages_adjust/components/user.vue | 127 ++++
minipro_standard/util/request/index.js | 2
minipro_standard/util/request/requestInterceptors.js | 22
minipro_standard/util/request/responseInterceptors.js | 47 +
minipro_standard/pages/workbench/workbench.vue | 17
minipro_standard/pages_adjust/pages/processPlan/processPlan.vue | 404 +++++++++++++
minipro_standard/common/config.js | 3
minipro_standard/pages/login/login.vue | 57 +
minipro_standard/pages_adjust/pages/reportingForWork/reportingForWork.vue | 1071 +++++++++++++++++++++++++++++++++++
12 files changed, 1,728 insertions(+), 56 deletions(-)
diff --git a/minipro_standard/common/config.js b/minipro_standard/common/config.js
index d0ead09..7c8d271 100644
--- a/minipro_standard/common/config.js
+++ b/minipro_standard/common/config.js
@@ -1,7 +1,8 @@
module.exports = {
// baseUrl: 'http://106.14.20.42/test_hfznzz/',
// baseUrl: 'https://hefei.dtkey.cn/test_hfznzz/',
- baseUrl: 'https://dmtest.ahapp.net/doumeeplant_api',
+ baseUrl: 'http://192.168.0.15:10021/',
+ // baseUrl: 'https://dmtest.ahapp.net/doumeeplant_api',
phoneRegular: /^1[3456789]\d{9}$/,
mailboxRegular: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
positiveInteger: /^[0-9]*[1-9][0-9]*$/,
diff --git a/minipro_standard/pages.json b/minipro_standard/pages.json
index 2b2d939..5fa16be 100644
--- a/minipro_standard/pages.json
+++ b/minipro_standard/pages.json
@@ -202,6 +202,20 @@
"navigationBarTitleText": "搴撳瓨閲忔煡璇�",
"enablePullDownRefresh": false
}
+ },
+ {
+ "path": "pages/reportingForWork/reportingForWork",
+ "style": {
+ "navigationBarTitleText": "涓�閿姤宸�",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/processPlan/processPlan",
+ "style": {
+ "navigationBarTitleText": "閫夋嫨宸ュ簭璁″垝",
+ "enablePullDownRefresh": false
+ }
}
]
},
diff --git a/minipro_standard/pages/login/login.vue b/minipro_standard/pages/login/login.vue
index 1632dbc..8446015 100644
--- a/minipro_standard/pages/login/login.vue
+++ b/minipro_standard/pages/login/login.vue
@@ -7,50 +7,77 @@
</view>
<view class="bg_w rd8 ptb30 pl40 bbox com-input flex input-height">
<image src="@/static/login_ic_code@2x.png" mode="" class="img40 mr25"></image>
- <u--input placeholder="浼佷笟浠g爜" border="none" v-model="loginForm.companyId"></u--input>
+ <u--input placeholder="浼佷笟浠g爜" border="none" v-model="from.companyId"></u--input>
</view>
<view class="bg_w rd8 ptb30 pl40 bbox mt40 flex input-height">
<image src="@/static/login_ic_phone@2x.png" mode="" class="img40 mr25"></image>
- <u--input placeholder="鎵嬫満鍙�" border="none" v-model="loginForm.username"></u--input>
+ <u--input placeholder="鎵嬫満鍙�" border="none" v-model="from.username"></u--input>
</view>
<view class="bg_w rd8 ptb30 pl40 bbox mt40 flex input-height">
<image src="@/static/login_ic_password@2x.png" mode="" class="img40 mr25"></image>
- <u--input placeholder="瀵嗙爜" border="none" v-model="loginForm.password"></u--input>
+ <u--input placeholder="瀵嗙爜" border="none" v-model="from.password"></u--input>
</view>
<view class="login-btn mt80" @click="loginAction">绔嬪嵆鐧诲綍</view>
</view>
</template>
<script>
- import { wxAccountLogin, getUserInfo } from '@/util/api/index.js'
+ import { wxLogin, wxAccountLogin, getUserInfo, wxProgramLogin } from '@/util/api/index.js';
export default {
data() {
return {
- loginForm: {
+ from: {
+ openid: '',
+ unionid: '',
companyId: '',
username: '',
password: ''
}
};
},
+ onLoad() {
+ var that = this
+ uni.login({
+ provider: 'weixin',
+ success: function (loginRes) {
+ wxProgramLogin({ code: loginRes.code })
+ .then(async (res) => {
+ if (res.code === 200) {
+ // 鍏嶇櫥褰曪紝鐩存帴璺抽椤�
+ if (res.data.loginStatus == 0) {
+ that.$store.commit('SETSESSION', res.data.session)
+ let info = await getUserInfo()
+ if (info.code === 200) {
+ await that.$store.commit('setEntrance', 'WX')
+ await that.$store.commit('setUserInfo', info.data)
+ await that.$store.dispatch('getMenuList', 2)
+ uni.switchTab({
+ url: '/pages/workbench/workbench'
+ });
+ }
+ } else {
+ that.from.openid = res.data.openid
+ that.from.unionid = res.data.unionid
+ }
+ }
+ })
+ }
+ });
+ },
methods: {
async loginAction() {
- if (!this.loginForm.companyId) return uni.showToast({ title: '浼佷笟浠g爜涓嶈兘涓虹┖', icon:"error", duration: 2000 });
- if (!this.loginForm.username) return uni.showToast({ title: '鎵嬫満鍙蜂笉鑳戒负绌�', icon:"error", duration: 2000 });
- if (!this.loginForm.password) return uni.showToast({ title: '瀵嗙爜涓嶈兘涓虹┖', icon:"error", duration: 2000 });
- let res = await wxAccountLogin({
- companyId: this.loginForm.companyId,
- username: this.loginForm.username,
- password: this.loginForm.password
- })
+ if (!this.from.companyId) return uni.showToast({ title: '浼佷笟浠g爜涓嶈兘涓虹┖', icon:"error", duration: 2000 });
+ if (!this.from.username) return uni.showToast({ title: '鎵嬫満鍙蜂笉鑳戒负绌�', icon:"error", duration: 2000 });
+ if (!this.from.password) return uni.showToast({ title: '瀵嗙爜涓嶈兘涓虹┖', icon:"error", duration: 2000 });
+ let res = await wxAccountLogin(this.from)
if (res.code === 200) {
let user = await getUserInfo({})
if (user.code === 200) {
await this.$store.commit('SETUSERINFO', user.data)
await this.$store.dispatch('getMenuList', 2)
- uni.reLaunch({
+ uni.switchTab({
url: '/pages/workbench/workbench'
- })
+ });
}
}
}
diff --git a/minipro_standard/pages/workbench/workbench.vue b/minipro_standard/pages/workbench/workbench.vue
index 01a623e..089312b 100644
--- a/minipro_standard/pages/workbench/workbench.vue
+++ b/minipro_standard/pages/workbench/workbench.vue
@@ -1,12 +1,12 @@
<template>
<view class="index">
<view class="menu">
- <view class="menu_list" v-for="(row, i) in 3" :key="i">
+ <!-- <view class="menu_list" v-for="(row, i) in Menu" :key="i">
<view class="menu_list_head">
- <span>甯哥敤鍔熻兘</span>
+ <span>{{row.label}}</span>
</view>
<div class="menu_list_list">
- <view class="menu_list_item" v-for="item in list" :key="item.id" @click="jump(item)">
+ <view class="menu_list_item" v-for="item in row.children" :key="item.id" @click="jump(item)">
<image :src="item.icon" mode="widthFix" />
<span>{{item.label}}</span>
</view>
@@ -14,19 +14,26 @@
<view class="menu_list_zw"></view>
<view class="menu_list_zw"></view>
</div>
- </view>
+ </view> -->
</view>
<myTabbar :index="1" />
</view>
</template>
<script>
- import myTabbar from "@/components/myTabber.vue"
+ import myTabbar from "@/components/myTabber.vue"
+ import { mapState } from 'vuex'
export default {
components: {
myTabbar
},
+ computed: mapState([
+ 'Menu'
+ ]),
+ onReady() {
+ console.log(this.Menu)
+ },
data() {
return {
list: [
diff --git a/minipro_standard/pages_adjust/components/user.vue b/minipro_standard/pages_adjust/components/user.vue
new file mode 100644
index 0000000..ad496c9
--- /dev/null
+++ b/minipro_standard/pages_adjust/components/user.vue
@@ -0,0 +1,127 @@
+<template>
+ <u-popup :show="show" mode="bottom" :closeable="true" :round="10" @open="open" @close="close">
+ <view class="title">
+ <text>閫夋嫨鐢熶骇浜哄憳</text>
+ </view>
+ <view class="content">
+ <view class="content_search">
+ <u-search :showAction="false" placeholder="鎼滅储濮撳悕" v-model="keyword"></u-search>
+ </view>
+ <div class="content_total">鍏眥{total}}鏉℃暟鎹�</div>
+ <scroll-view class="content_list" scroll-y>
+ <div class="content_list_item" v-for="(item, index) in indexList" :key="index" @click="getVal(item)">
+ <div class="content_list_item_name">
+ <span>{{item.name}}</span>
+ </div>
+ </div>
+ </scroll-view>
+ </view>
+ </u-popup>
+</template>
+
+<script>
+ export default {
+ props: {
+ show: Boolean
+ },
+ data() {
+ return {
+ keyword: '',
+ total: 0,
+ indexList: []
+ };
+ },
+ methods: {
+ getVal(item) {
+ this.$emit('value', item)
+ },
+ open() {
+ this.indexList = []
+ this.loadmore()
+ },
+ scrolltolower() {
+ this.loadmore()
+ },
+ loadmore() {
+ for (let i = 0; i < 20; i++) {
+ this.indexList.push({
+ id: i,
+ name: `鏉庝紵锝滅敓浜ч儴锝�${i}`
+ })
+ }
+ },
+ close() {
+ this.$emit('close')
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .title {
+ width: 100%;
+ height: 85rpx;
+ line-height: 85rpx;
+ text-align: center;
+ text {
+ font-size: 30rpx;
+ font-family: PingFangSC-Medium, PingFang SC;
+ font-weight: 500;
+ color: #222222;
+ }
+ }
+ .content {
+ width: 100%;
+ .content_search {
+ width: 100%;
+ padding: 0 30rpx 30rpx 30rpx;
+ background: white;
+ position: sticky;
+ top: 85rpx;
+ z-index: 9;
+ box-sizing: border-box;
+ }
+ .content_total {
+ padding: 24rpx 30rpx;
+ background: #F7F7F7;
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+ .content_list {
+ width: 100%;
+ height: 800rpx;
+ display: flex;
+ flex-direction: column;
+ .content_list_item {
+ padding: 30rpx;
+ display: flex;
+ border-bottom: 1rpx solid #ececec;
+ .serious {
+ color: $nav-stateColor4 !important;
+ }
+ .success {
+ color: $nav-stateColor2 !important;
+ }
+ .warning {
+ color: $nav-stateColor5 !important;
+ }
+ .content_list_item_status {
+ font-size: 28rpx;
+ margin-right: 10rpx;
+ }
+ .content_list_item_name {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ span {
+ font-size: 30rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/processPlan/processPlan.vue b/minipro_standard/pages_adjust/pages/processPlan/processPlan.vue
new file mode 100644
index 0000000..66b5a4c
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/processPlan/processPlan.vue
@@ -0,0 +1,404 @@
+<template>
+ <view class="content">
+ <view class="content_search">
+ <Search @searchInput="searchInput" @submit="submit" placeholder="鎼滅储鐗╂枡鍚嶇О/缂栫爜/宸ュ簭鍚嶇О" />
+ </view>
+ <view class="content_list">
+ <scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}">
+ <view class="content_list_item" v-for="(item, i) in listData" :key="i" @click="clickItem(item)">
+ <view class="content_list_item_title">
+ <text>{{item.materialName}}锝渰{item.produceName}}</text>
+ <view class="content_list_item_title_tips" v-if="item.urgent">浼樺厛{{ item.urgent }}</view>
+ </view>
+ <view class="content_list_item_nr">
+ <view class="content_list_item_nr_box">
+ <view class="label">鐗╂枡缂栫爜锛�</view>
+ <view class="cr">{{item.materialName}}涓▄{item.materialCode}}</view>
+ </view>
+ <view class="content_list_item_nr_box">
+ <view class="label">璁″垝鏁伴噺锛�</view>
+ <view class="cr">{{item.num}}{{item.umodel.name}}</view>
+ </view>
+ <view class="content_list_item_nr_box">
+ <view class="label">璁″垝鏃ユ湡锛�</view>
+ <view class="cr">{{item.workPlanStartDate}} ~ {{item.workPlanEndDate}}</view>
+ </view>
+ <view class="content_list_item_nr_box">
+ <view class="label">璁″垝鍛橈細</view>
+ <view class="cr">{{item.planUserName}}</view>
+ </view>
+ <view class="content_list_item_nr_box">
+ <view class="label">鐢熶骇鎵规锛�</view>
+ <view class="cr">{{item.batch}}</view>
+ </view>
+ <view class="content_list_item_nr_box" v-if="item.salesOrder">
+ <view class="label">閿�鍞鍗曪細</view>
+ <view class="cr">{{ item.salesOrder }}</view>
+ </view>
+ </view>
+ </view>
+ </scroll-view>
+ </view>
+ </view>
+</template>
+
+<script>
+ import Search from '@/components/Search.vue'
+ export default {
+ components: {
+ Search
+ },
+ data() {
+ return {
+ pageData: {
+ capacity: 10,
+ page: 0,
+ total: 0,
+ name: ''
+ },
+ loading: false,
+ finished: false,
+ refreshing: false,
+ height: '',
+ listData: []
+ };
+ },
+ onReady() {
+ var that = this
+ this.$nextTick(() => {
+ uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+ that.height = `calc(100vh - ${rect.height}px)`
+ }).exec()
+ })
+ },
+ methods: {
+ clickItem(obj) {
+ uni.navigateBack({ delta: 1 });
+ },
+ // 鑾峰彇澶撮儴缁勪欢楂樺害
+ getHeight(height) {
+ this.height = height
+ },
+ // 鎼滅储
+ searchInput(val) {
+ this.listData.mixParam = val
+ this.listData.page = 0
+ this.finished = false
+ this.lists = []
+ this.getLists()
+ },
+ // 鐐瑰嚮鏍囩鎼滅储
+ clickTag(ids) {
+ this.listData.cateIds = ids
+ this.listData.page = 0
+ this.finished = false
+ this.lists = []
+ // this.getLists()
+ },
+ // 鑾峰彇鍒楄〃缁熻
+ pageCounts() {
+ pageCount({
+ factoryId: this.listData.departIds,
+ procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [],
+ startDate: this.listData.startDate,
+ endDate: this.listData.endDate,
+ statusList: this.listData.cateIds
+ }).then(res => {
+ if (res.code === 200 && res.data) {
+ this.tagList[0].num = res.data.allNum.toString()
+ this.tagList[1].num = res.data.startNum.toString()
+ this.tagList[2].num = res.data.ingNum.toString()
+ this.tagList[3].num = res.data.endNum.toString()
+ }
+ })
+ },
+ // 鑾峰彇宸ュ巶鏁版嵁
+ getOrganizations() {
+ getOrganization({
+ type: 1
+ }).then(res => {
+ if (res.code === 200 && res.data && res.data.length !== 0) {
+ res.data.forEach((item, i) => {
+ item.isActive = i === 0;
+ })
+ if (res.data.length > 0) {
+ this.factoryList = res.data
+ this.listData.departIds = this.factoryList[0].id
+ this.listData.procedureIds = ''
+ this.finished = false
+ this.getWorkingProcedures(this.factoryList[0].id)
+ this.getLists()
+ this.pageCounts()
+ }
+ }
+ })
+ },
+ // 鑾峰彇宸ュ簭鏁版嵁
+ getWorkingProcedures(orgId) {
+ this.data = []
+ getWorkingProcedure({
+ orgId
+ })
+ .then(res => {
+ if (res.code === 200 && res.data && res.data.length !== 0) {
+ res.data.forEach((item, i) => {
+ item.isActive = false;
+ })
+ this.data = res.data
+ }
+ })
+ },
+ // 鎼滅储寮规鎻愪氦
+ submit() {
+ let pmodelOrgId = []
+ this.data.forEach((item) => {
+ if (item.isActive) {
+ pmodelOrgId.push(item.id)
+ }
+ })
+ this.listData.procedureIds = pmodelOrgId
+ this.listData.page = 0
+ this.finished = false
+ this.lists = []
+ // this.getLists()
+ // this.pageCounts()
+ },
+ // 鑾峰彇璁″垝鍒楄〃鏁版嵁
+ getLists() {
+ console.log('getLists')
+ if (!this.finished) {
+ this.pageData.page = this.pageData.page + 1
+ this.loading = true
+ getList({
+ capacity: this.pageData.capacity,
+ page: this.pageData.page,
+ model: {
+ mixParam: this.pageData.name,
+ statusList: [1, 4],
+ paused: 0
+ },
+ sorts: [
+ { direction: 'DESC', property: 'CREATE_TIME' }
+ ]
+ }).then(res => {
+ if (this.refreshing) {
+ this.listData = []
+ this.refreshing = false;
+ }
+ this.loading = false
+ if (res.code === 200 && res.data.records && res.data.records.length !== 0) {
+ this.pageData.total = res.data.total
+ this.listData.push(...res.data.records)
+ } else {
+ this.finished = true
+ }
+ }).catch(err => {
+ this.loading = false
+ this.finished = true
+ if (this.refreshing) {
+ this.listData = []
+ this.refreshing = false;
+ }
+ })
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .content {
+ .content_search {
+ width: 100%;
+ padding: 30rpx;
+ background: white;
+ position: sticky;
+ top: 0;
+ z-index: 999;
+ box-sizing: border-box;
+
+ .Search_item {
+ margin-bottom: 40rpx;
+
+ .Search_item_label {
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #222222;
+ }
+
+ .Search_item_content {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-top: 30rpx;
+
+ .tag {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+
+ .tag_active {
+ background: $nav-color !important;
+ color: #ffffff !important;
+ }
+
+ .tag_item {
+ padding: 22rpx 26rpx;
+ box-sizing: border-box;
+ background: #F2F2F2;
+ border-radius: 8rpx;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-right: 22rpx;
+ margin-bottom: 22rpx;
+ }
+ }
+
+ text {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ margin: 0 30rpx;
+ }
+
+ .Search_item_content_a {
+ padding: 20rpx 0;
+ flex: 1;
+ background: #F7F7F7;
+ border-radius: 8rpx;
+ border: 1rpx solid #EEEEEE;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #B2B2B2;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+ }
+
+ .content_search_x {
+ height: 24rpx;
+ }
+ }
+
+ .content_list {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+
+ .content_list_item {
+ width: 100%;
+ box-sizing: border-box;
+ padding: 30rpx;
+ background: #ffffff;
+ margin-bottom: 20rpx;
+ &:last-child {
+ margin-bottom: 0 !important;
+ }
+ .content_list_item_title {
+ display: flex;
+ align-items: center;
+ .content_list_item_title_tips {
+ padding: 4rpx 8rpx;
+ box-sizing: border-box;
+ background: #DE5243;
+ border-radius: 8rpx;
+ font-size: 22rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #FFFFFF;
+ margin-left: 16rpx;
+ }
+ .warning {
+ color: $nav-stateColor1 !important;
+ }
+ .green {
+ color: $nav-stateColor6 !important;
+ }
+ text {
+ font-size: 32rpx;
+ font-family: PingFangSC-Medium, PingFang SC;
+ font-weight: 500;
+ color: #333333;
+ }
+ }
+ .content_list_item_nr {
+ padding: 24rpx 30rpx;
+ background: #F7F7F7;
+ border-radius: 16rpx;
+ margin-top: 30rpx;
+ display: flex;
+ justify-content: space-between;
+ flex-wrap: wrap;
+ .content_list_item_nr_boxs {
+ width: 45%;
+ display: flex;
+ margin-top: 24rpx;
+ &:nth-child(1) {
+ margin-top: 0;
+ }
+ &:nth-child(2) {
+ margin-top: 0;
+ }
+ .warning {
+ color: $nav-stateColor4 !important;
+ }
+ .label {
+ flex-shrink: 0;
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+ .cr {
+ flex: 1;
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ -o-text-overflow:ellipsis;
+ }
+ }
+ .content_list_item_nr_box {
+ width: 100%;
+ display: flex;
+ margin-top: 24rpx;
+ &:nth-child(1) {
+ margin-top: 0;
+ }
+ .label {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #666666;
+ flex-shrink: 0;
+ }
+ .cr {
+ font-size: 24rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ }
+ }
+ }
+ }
+
+ .content_total {
+ width: 100%;
+ height: 80rpx;
+ padding: 24rpx 30rpx;
+ background: #F7F7F7;
+ font-size: 24rpx;
+ font-weight: 400;
+ box-sizing: border-box;
+ color: #666666;
+ position: sticky;
+ z-index: 99;
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/minipro_standard/pages_adjust/pages/reportingForWork/reportingForWork.vue b/minipro_standard/pages_adjust/pages/reportingForWork/reportingForWork.vue
new file mode 100644
index 0000000..b2445d8
--- /dev/null
+++ b/minipro_standard/pages_adjust/pages/reportingForWork/reportingForWork.vue
@@ -0,0 +1,1071 @@
+<template>
+ <view class="bg">
+ <view class="bg_plan" @click="selectPlan">
+ <view class="bg_plan_label" v-if="!from.processPlan">
+ <text><b>*</b>宸ュ簭鐢熶骇璁″垝</text>
+ </view>
+ <view class="bg_plan_nr" v-else>
+ <text>{{ from.processPlan.materialName }} | {{ from.processPlan.materialCode }} | {{ from.processPlan.produceName }}</text>
+ <text>{{ from.processPlan.batch }}{{ from.processPlan.salesOrder ? ` / ${from.processPlan.salesOrder}` : '' }}</text>
+ <text>璁″垝鏃堕棿锛歿{ from.processPlan.workPlanStartDate }} ~ {{ from.processPlan.workPlanEndDate }}</text>
+ <text>璁″垝杩涘害锛歿{from.processPlan.num}}/{{from.processPlan.workorderDistributNum}}{{ from.processPlan.unitName }}</text>
+ </view>
+ <view class="bg_plan_label_val">
+ <text v-if="!from.processPlan">璇烽�夋嫨</text>
+ <image src="@/static/ic_ar@2x.png" alt="" />
+ </view>
+ </view>
+ <view class="bg_list">
+ <view class="bg_list_item">
+ <view class="bg_list_item_top">
+ <view class="bg_list_item_top_left">
+ <view class="bg_list_item_top_left_x"></view>
+ <text>鐢熶骇淇℃伅</text>
+ </view>
+ </view>
+ <view class="bg_list_item_h">
+ <view class="bg_list_item_num" @click="openDev">
+ <view class="bg_list_item_num_item">
+ <text>鐢熶骇璁惧</text>
+ <view class="bg_list_item_num_item_sr">
+ <text :style="{color: from.deviceName ? '#333' : ''}">{{from.deviceName ? from.deviceName : '璇烽�夋嫨'}}</text>
+ <image src="@/static/ic_ar@2x.png" alt="" />
+ </view>
+ </view>
+ </view>
+ <view class="bg_list_item_num" @click="userShow = true">
+ <view class="bg_list_item_num_item">
+ <text>鐢熶骇浜哄憳</text>
+ <view class="bg_list_item_num_item_sr">
+ <text :style="{color: from.userName ? '#333' : ''}">{{from.userName ? from.userName : '璇烽�夋嫨'}}</text>
+ <image src="@/static/ic_ar@2x.png" alt="" />
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="bg_list_item">
+ <view class="bg_list_item_top">
+ <view class="bg_list_item_top_left">
+ <view class="bg_list_item_top_left_x"></view>
+ <text>鐢熶骇鎶曟枡</text>
+ </view>
+ <view class="bg_list_item_top_right" @click="openMaterial" v-if="(hasBom == 1 && bomType != 1) || hasBom == 0">
+ <image src="@/static/gongdan_ic_shoudong@2x.png" alt="" />
+ <text>鏂板鎶曟枡</text>
+ </view>
+ </view>
+ <template v-if="wuList.length > 0 && !(hasBom == 1 && bomType == 1)">
+ <van-swipe-cell v-for="(item, index) in wuList" :key="index">
+ <view class="bg_list_item_h">
+ <view class="bg_list_item_num">
+ <view class="bg_list_item_num_item">
+ <view class="bg_list_item_num_item_wl">
+ <text>{{ item.materialName }}{{ item.procedureName ? ` | ${item.procedureName}` : '' }}</text>
+ <view class="bg_list_item_num_item_wl_lx">
+ <text class="green" v-if="item.qualityType == 0">鍚堟牸 / </text>
+ <text class="yellow" v-if="item.qualityType == 1">涓嶈壇 / </text>
+ <text class="red" v-if="item.qualityType == 2">鎶ュ簾 / </text>
+ <text>{{ item.locationName }} / </text>
+ <text>{{ item.batch }}</text>
+ </view>
+ </view>
+ <view class="bg_list_item_num_item_sr">
+ <u--input
+ placeholder="璇疯緭鍏�"
+ border="surround"
+ type="number"
+ :customStyle="{width: '180rpx'}"
+ v-model="item.num"
+ @input="inputwl(index)"
+ ></u--input>
+ <!-- <input type="number" v-model="item.num" @input="inputwl(index)" /> -->
+ <text>{{ item.unitName }}</text>
+ </view>
+ </view>
+ </view>
+ </view>
+ <template #right>
+ <van-button style="height: 100%;" @click="deleItem(index)" square text="鍒犻櫎" type="danger" />
+ </template>
+ </van-swipe-cell>
+ </template>
+ <template v-else-if="wuList.length == 0 && !(hasBom == 1 && bomType == 1)">
+ <view class="kong">
+ <text>鏆傛棤鏁版嵁</text>
+ </view>
+ </template>
+ <view class="kong" v-if="hasBom == 1 && bomType == 1">
+ <text>褰撳墠宸ュ簭鏃犻渶鎶曟枡</text>
+ </view>
+ </view>
+ <view class="bg_list_item bottomval">
+ <view class="bg_list_item_top">
+ <view class="bg_list_item_top_left">
+ <view class="bg_list_item_top_left_x"></view>
+ <text>浜у嚭鏄庣粏</text>
+ </view>
+ </view>
+ <view class="bg_list_item_h">
+ <view class="bg_list_item_num">
+ <view class="bg_list_item_num_item">
+ <text><b>*</b>鑹搧鏁�</text>
+ <view class="bg_list_item_num_item_sr">
+ <u--input
+ placeholder="璇疯緭鍏�"
+ border="surround"
+ type="number"
+ :customStyle="{width: '180rpx'}"
+ v-model="from.qualified"
+ @input="changeNum(1)"
+ ></u--input>
+ <!-- <input type="number" v-model="from.qualified" @input="changeNum(1)" placeholder="璇疯緭鍏�" /> -->
+ <text v-if="from.processPlan">{{from.processPlan.unitName}}</text>
+ </view>
+ </view>
+ </view>
+ <view class="bg_list_item_num">
+ <view class="bg_list_item_num_item">
+ <text>涓嶈壇鏁�</text>
+ <view class="bg_list_item_num_item_sr">
+ <u--input
+ placeholder="璇疯緭鍏�"
+ border="surround"
+ type="number"
+ :customStyle="{width: '180rpx'}"
+ v-model="from.undesirable"
+ @input="changeNum(2)"
+ ></u--input>
+ <!-- <input type="number" v-model="from.undesirable" @input="changeNum(2)" placeholder="璇疯緭鍏�" /> -->
+ <text v-if="from.processPlan">{{from.processPlan.unitName}}</text>
+ </view>
+ </view>
+ </view>
+ <view class="bg_list_item_num" v-if="from.undesirable > 0">
+ <view class="bg_list_item_num_item" @click="openBL">
+ <text><b>*</b>涓嶈壇椤�</text>
+ <view class="bg_list_item_num_item_sr">
+ <text class="wulll" :style="{color: from.defectiveName ? '#305ED5' : ''}">{{from.defectiveName ? from.defectiveName : '璁剧疆'}}</text>
+ <image src="@/static/ic_ar@2x.png" alt="" />
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="bg_plan" @click="TimeShow = true">
+ <view class="bg_plan_label">
+ <text>鎶ュ伐鏃堕暱</text>
+ </view>
+ <view class="bg_plan_label_val">
+ <text :style="{color: from.durationName ? '#333' : ''}">{{from.durationName ? from.durationName : '璇烽�夋嫨'}}</text>
+ <image src="@/static/ic_ar@2x.png" alt="" />
+ </view>
+ </view>
+ <view class="bg_list_item" v-if="arrType && arrType.length > 0">
+ <view class="bg_list_item_top">
+ <view class="bg_list_item_top_left">
+ <view class="bg_list_item_top_left_x"></view>
+ <text>宸ヨ祫缁╂晥</text>
+ </view>
+ </view>
+ <view class="bg_list_item_h">
+ <view class="bg_list_item_num">
+ <view class="bg_list_item_num_item">
+ <text>璁′欢鏂瑰紡</text>
+ <view class="bg_list_item_num_item_list">
+ <view :class="item.active ? 'bg_list_item_num_item_list_item active' : 'bg_list_item_num_item_list_item'" v-for="(item, index) in arrType" :key="index" @click="clickPerformanceType(index)">{{ item.name }}</view>
+ </view>
+ </view>
+ </view>
+ <view class="bg_list_item_num">
+ <view class="bg_list_item_num_item">
+ <text>宸ヨ祫鍗曚环</text>
+ <view class="bg_list_item_num_item_sr">
+ <text class="color1">{{(arrType[from.index].salary / 10 / 10).toFixed(2)}}鍏�/{{arrType[from.index].type == 0 ? '浠�' : '鏃�'}}</text>
+ </view>
+ </view>
+ </view>
+ <view class="bg_list_item_num">
+ <view class="bg_list_item_num_item">
+ <text>棰勮宸ヨ祫</text>
+ <view class="bg_list_item_num_item_sr">
+ <text class="color1">{{expectedSalary}}鍏�</text>
+ </view>
+ </view>
+ </view>
+ <view class="bg_list_item_num">
+ <view class="bg_list_item_num_item">
+ <text>杈炬爣鐜�</text>
+ <view class="bg_list_item_num_item_sr">
+ <text class="color1">{{complianceRate}}%</text>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <!-- 鎶ュ伐鎸夐挳 -->
+ <view class="bh_zw"></view>
+ <view class="bg_footer">
+ <view class="bg_footer_submit1" @click="continueSubmit">缁х画鎶ュ伐</view>
+ <view class="bg_footer_submit" @click="submit">鎻愪氦</view>
+ </view>
+ <!-- 鐢熶骇浜哄憳 -->
+ <user :show="userShow" @close="userShow = false" @value="onConfirm1" />
+ <!-- 鐢熶骇璁惧 -->
+ <u-picker :show="deviceShow" :columns="deviceList" keyName="name" @confirm="onConfirm" @cancel="onCancel"></u-picker>
+ <!-- 鏃堕棿 -->
+ <u-picker :show="TimeShow" :columns="columns" @confirm="onConfirm2" @cancel="TimeShow = false"></u-picker>
+ <!-- 鐗╂枡 -->
+ <selectMaterial ref="selectMaterial" @selectAction="getValue" />
+ <!-- 涓嶈壇椤� -->
+ <u-popup :show="show" @close="show = false" :round="8" closeable zIndex="20000">
+ <view class="rp p40 contanir">
+ <view class="c2 b tc">涓嶈壇椤�</view>
+ <view class="content bl_list">
+ <div class="bl_list_item" v-for="(item, i) in cateList" :key="i" @click="changeChecked(i)">
+ <div class="bl_list_item_left">
+ <u-checkbox-group>
+ <u-checkbox :checked="item.active" :label="item.name" :name="item.name"></u-checkbox>
+ </u-checkbox-group>
+ </div>
+ <div class="bl_list_item_right">
+ <input type="number" @click.stop v-model="item.num" placeholder="0" />
+ </div>
+ </div>
+ </view>
+ <view class="flex ap tc bottom-view">
+ <view class="fx1 ml20 ptb20 sbtn_green" @click="onConfirm3">纭畾</view>
+ </view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+ import user from '../../components/user.vue'
+ import selectMaterial from '@/components/selectMaterial.vue'
+ export default {
+ components: {
+ user,
+ selectMaterial
+ },
+ data() {
+ return {
+ from: {
+ processPlan: null,
+ deviceId: '',
+ deviceName: '',
+ // userId: store.state.userInfo.id,
+ userId: '',
+ // userName: store.state.userInfo.companyUser.name,
+ userName: '',
+ qualified: '', // 鑹搧鏁�
+ undesirable: '', // 涓嶈壇鏁�
+ duration: '',
+ durationName: '0灏忔椂0鍒嗛挓',
+ time: '',
+ defective: [],
+ defectiveName: '',
+ type: '', // 缁╂晥绫诲瀷
+ index: 0
+ },
+ columns: [],
+ arrType: [],
+ bomType: '',
+ hasBom : '',
+ deviceShow: false,
+ userShow: false,
+ wuList: [],
+ deviceList: [],
+ cateList: [
+ {
+ active: false,
+ num: '',
+ name: '鏈夌憰鐤�'
+ }
+ ],
+ total: 0, // 鍙姇鏁伴噺
+ ids: '',
+ plansId: '',
+ deviceId: '',
+ TimeShow: '',
+ show1: '',
+ show: false
+ };
+ },
+ computed: {
+ // 棰勮宸ヨ祫
+ expectedSalary() {
+ if (this.arrType.length === 0) return 0;
+ if (this.arrType[from.index].type == 0) {
+ if (!this.from.qualified) return 0
+ if (this.arrType[from.index].unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝�
+ let total = Number(this.from.qualified) + Number(this.from.undesirable)
+ return (total * (this.arrType[from.index].salary / 10 / 10)).toFixed(2)
+ } else {
+ return (Number(this.from.qualified) * (this.arrType[from.index].salary / 10 / 10)).toFixed(2)
+ }
+ } else {
+ if (!this.from.duration) return 0;
+ let h = (this.from.duration / 60 / 60).toFixed(2)
+ return (Number(h) * (this.arrType[from.index].salary / 10 / 10)).toFixed(2)
+ }
+ },
+ // 杈炬爣鐜�
+ complianceRate() {
+ if (this.arrType.length === 0) return 0;
+ if (!this.from.qualified && !this.from.undesirable) return 0;
+ if (!this.from.duration) return 0;
+ if (!this.arrType[from.index].num) return 0;
+ if (this.arrType[from.index].unqualified == 1) { // 鏄惁璁″叆涓嶈壇鍝�
+ let a = ((Number(this.from.qualified) + Number(this.from.undesirable)) / (this.from.duration / 3600)).toFixed(2)
+ let b = (this.arrType[from.index].num / (this.arrType[from.index].times / 3600)).toFixed(2)
+ return ((Number(a) / Number(b)) * 100).toFixed(2)
+ } else {
+ let a = (this.from.qualified / (this.from.duration / 3600)).toFixed(2)
+ let b = (this.arrType[from.index].num / (this.arrType[from.index].times / 3600)).toFixed(2)
+ return ((Number(a) / Number(b)) * 100).toFixed(2)
+ }
+ }
+ },
+ onLoad() {
+ let arr = []
+ for(let i = 0; i < 60; i++) {
+ arr.push(i)
+ }
+ this.columns = [arr, arr]
+ },
+ methods: {
+ // 鍒囨崲缁╂晥绫诲瀷
+ clickPerformanceType(i) {
+ this.from.index = i
+ this.arrType.forEach((item, index) => {
+ if (i === index) {
+ from.type = item.id
+ }
+ item.active = index === i
+ })
+ },
+ // 閫夋嫨鐗╂枡
+ getValue(val) {
+ let obj = JSON.parse(JSON.stringify(val))
+ obj.total = val.num
+ this.wuList.unshift(obj)
+ let arr = this.wuList.map(item => item.id)
+ this.ids = arr.join(',')
+ },
+ // 鑾峰彇涓嶈壇椤圭洰
+ getData() {
+ categoryExtList({
+ cateType: "3"
+ }).then(res => {
+ if (res.code === 200) {
+ res.data.forEach(item => {
+ item.active = false
+ item.num = ''
+ })
+ this.cateList = res.data
+ }
+ })
+ },
+ // 閫夋嫨璁惧
+ onConfirm(e) {
+ this.from.deviceId = e.id
+ this.from.deviceName = e.name
+ this.deviceId = e.id
+ this.from.userId = ''
+ this.from.userName = ''
+ // getFindAll({
+ // deviceId: e.id,
+ // planId: from.processPlan.id
+ // }).then(res => {
+ // if (res.code === 200) {
+ // res.data.forEach((item: any) => {
+ // item.name = item.umodel.name + '-' + item.tmodel.name
+ // })
+ // userList.value = res.data
+ // }
+ // })
+ this.deviceShow = false
+ },
+ // 閫夋嫨涓嶈壇椤�
+ onConfirm3() {
+ let isOpen = false
+ this.cateList.forEach((item, index) => {
+ if (item.active) {
+ isOpen = true
+ }
+ })
+ if (!isOpen) return uni.showToast({ title: '璇烽�夋嫨涓嶈壇椤�', icon: 'none', duration: 2000 });
+ let arr = []
+ let total = 0
+ let name = ''
+ for (let i = 0; i < this.cateList.length; i++) {
+ if (this.cateList[i].active) {
+ if (this.cateList[i].num <= 0) {
+ return uni.showToast({ title: '涓嶈壇鏁伴噺蹇呴』澶т簬0', icon: 'none', duration: 2000 });
+ }
+ total = total += this.cateList[i].num
+ arr.push(this.cateList[i])
+ name += this.cateList[i].name + this.cateList[i].num + '锛�'
+ }
+ }
+ if (total !== this.from.undesirable) return uni.showToast({ title: '涓嶈壇鏁板繀椤荤瓑浜庝骇鍑轰笉鑹暟', icon: 'none', duration: 2000 });
+ this.from.defective = arr
+ this.from.defectiveName = name
+ this.show = false
+ },
+ changeChecked(i) {
+ this.cateList[i].active = !this.cateList[i].active
+ },
+ onConfirm2(e) {
+ let h = e.value[0]
+ let m = e.value[1]
+ let s = 0
+ if (h > 0) {
+ s += h * 60 * 60
+ }
+ if (m > 0) {
+ s += m * 60
+ }
+ this.from.duration = s
+ this.from.durationName = `${h}灏忔椂${m}鍒嗛挓`
+ this.TimeShow = false
+ },
+ onConfirm1(e) {
+ this.from.userId = e.userId
+ this.from.userName = e.name
+ this.userShow = false
+ },
+ selectPlan() {
+ uni.navigateTo({
+ url: '/pages_adjust/pages/processPlan/processPlan'
+ });
+ },
+ openDev() {
+ if (!this.from.processPlan) return uni.showToast({ title: '璇峰厛閫夋嫨宸ュ簭鐢熶骇璁″垝', icon: 'none', duration: 2000 });
+ this.deviceShow = true
+ },
+ openMaterial() {
+ if (!this.plansId) return uni.showToast({ title: '璇峰厛閫夋嫨宸ュ簭鐢熶骇璁″垝', icon: 'none', duration: 2000 });
+ if (!this.deviceId) return uni.showToast({ title: '璇峰厛閫夋嫨鐢熶骇璁惧', icon: 'none', duration: 2000 });
+ this.$refs.selectMaterial.open({})
+ },
+ inputwl(i) {
+ if (this.wuList[i].num > this.wuList[i].total) {
+ this.wuList[i].num = ''
+ uni.showToast({ title: '鎶曟枡鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺', icon: 'none', duration: 2000 });
+ }
+ },
+ deleItem(index) {
+ if (this.wuList.length === 1) return uni.showToast({ title: '鑷冲皯淇濈暀涓�椤瑰唴瀹�', icon: 'none', duration: 2000 });
+ this.wuList.splice(index, 1)
+ },
+ // 浜у嚭鏁伴噺楠岃瘉
+ changeNum(type) {
+ let num = this.total - (Number(this.from.qualified) + Number(this.from.undesirable))
+ if (type == 2) {
+ this.from.defective = []
+ this.from.defectiveName = ''
+ }
+ if (num < 0) {
+ uni.showToast({ title: '浜у嚭鏁伴噺涓嶈兘澶т簬鍙骇鍑烘暟閲忥紒', icon: 'none', duration: 2000 });
+ if (type == 1) {
+ this.from.qualified = ''
+ } else {
+ this.from.undesirable = ''
+ }
+ }
+ },
+ openBL() {
+ this.cateList.forEach(item => {
+ if (!item.active) {
+ item.num = ''
+ }
+ if (item.active && item.num <= 0) {
+ item.active = false
+ }
+ })
+ this.show = true
+ },
+ // 缁х画鎶ュ伐
+ continueSubmit() {
+ if (!this.from.processPlan) return uni.showToast({ title: '璁″垝涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+ if (!this.from.deviceId) return uni.showToast({ title: '璁惧涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+ if (!this.from.userId) return uni.showToast({ title: '鐢熶骇浜哄憳涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+ if (this.hasBom == 1 && this.bomType == 1) {
+ console.log('涓嶉渶瑕佹姇鏂�')
+ } else {
+ if (!this.wuList.length === 0) return uni.showToast({ title: '鎶曟枡涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+ }
+ if (!this.from.qualified && !this.from.undesirable) {
+ return uni.showToast({ title: '鑹搧鏁颁笌涓嶈壇鏁颁笉鑳藉悓鏃朵负绌�', icon: 'none', duration: 2000 });
+ }
+ if (this.from.qualified && this.from.qualified <= 0) {
+ return uni.showToast({ title: '鑹搧鏁板繀椤诲ぇ浜�0', icon: 'none', duration: 2000 });
+ }
+ if (this.from.undesirable && this.from.undesirable <= 0) {
+ return uni.showToast({ title: '涓嶈壇鍝佹暟蹇呴』澶т簬0', icon: 'none', duration: 2000 });
+ }
+ // 鏈変笉鑹暟
+ if (this.from.undesirable > 0) {
+ if (this.from.defective.length === 0) return uni.showToast({ title: '涓嶈壇椤逛笉鑳戒负绌�', icon: 'none', duration: 2000 });
+ }
+ let type = ''
+ this.arrType.forEach(item => {
+ if (item.active) {
+ type = item.id
+ }
+ })
+ autoWorkReport({
+ createWorkorderRecordDTO: {
+ type,
+ duration: this.from.duration,
+ qualifiedNum: this.from.qualified ? this.from.qualified : 0,
+ unQualifiedNum: this.from.undesirable ? this.from.undesirable : 0
+ },
+ plansId: this.from.processPlan.id,
+ proGroupId: this.deviceId,
+ proUserList: [this.from.userId],
+ recordList: this.wuList.map(item => {
+ return {
+ wstockId: item.id,
+ num: item.num
+ }
+ }),
+ createUnqualifiedDTOList: this.from.defective.map(item => {
+ return {
+ categoryId: item.id,
+ unQualifiedNum: item.num
+ }
+ })
+ }).then(res => {
+ if (res.code === 200) {
+ uni.showToast({ title: '鎶ュ伐鎴愬姛锛�', icon: 'success', duration: 2000 });
+ this.from.processPlan = null
+ this.from.deviceId = ''
+ this.from.deviceName = ''
+ this.from.userId = ''
+ this.from.userName = ''
+ this.from.qualified = ''
+ this.from.undesirable = ''
+ this.from.duration = ''
+ this.from.durationName = '0灏忔椂0鍒嗛挓'
+ this.from.time = ''
+ this.from.defective = []
+ this.from.defectiveName = ''
+ this.wuList = []
+ this.deviceId = ''
+ this.plansId = ''
+ this.ids = ''
+ this.total = ''
+ }
+ })
+ },
+ // 鎶ュ伐
+ submit() {
+ if (!this.from.processPlan) return uni.showToast({ title: '璁″垝涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+ if (!this.from.deviceId) return uni.showToast({ title: '璁惧涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+ if (!this.from.userId) return uni.showToast({ title: '鐢熶骇浜哄憳涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+ if (this.hasBom == 1 && this.bomType == 1) {
+ console.log('涓嶉渶瑕佹姇鏂�')
+ } else {
+ if (!this.wuList.length === 0) return uni.showToast({ title: '鎶曟枡涓嶈兘涓虹┖', icon: 'none', duration: 2000 });
+ }
+ if (!this.from.qualified && !this.from.undesirable) {
+ return uni.showToast({ title: '鑹搧鏁颁笌涓嶈壇鏁颁笉鑳藉悓鏃朵负绌�', icon: 'none', duration: 2000 });
+ }
+ // 鏈変笉鑹暟
+ if (this.from.undesirable > 0) {
+ if (this.from.defective.length === 0) return uni.showToast({ title: '涓嶈壇椤逛笉鑳戒负绌�', icon: 'none', duration: 2000 });
+ }
+ let type = ''
+ this.arrType.forEach(item => {
+ if (item.active) {
+ type = item.id
+ }
+ })
+ autoWorkReport({
+ createWorkorderRecordDTO: {
+ type,
+ duration: this.from.duration,
+ qualifiedNum: this.from.qualified ? this.from.qualified : 0,
+ unQualifiedNum: this.from.undesirable ? this.from.undesirable : 0
+ },
+ plansId: this.from.processPlan.id,
+ proGroupId: this.deviceId,
+ proUserList: [this.from.userId],
+ recordList: this.wuList.map(item => {
+ return {
+ wstockId: item.id,
+ num: item.num
+ }
+ }),
+ createUnqualifiedDTOList: this.from.defective.map(item => {
+ return {
+ categoryId: item.id,
+ unQualifiedNum: item.num
+ }
+ })
+ }).then(res => {
+ if (res.code === 200) {
+ uni.showToast({ title: '鎶ュ伐鎴愬姛锛�', icon: 'success', duration: 2000 });
+ setTimeout(() => {
+ uni.navigateBack({ delta: 1 });
+ }, 2000);
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .bg {
+ width: 100%;
+ position: absolute;
+ background: #F7F7F7;
+ .contanir {
+ height: calc(env(safe-area-inset-bottom) + 720rpx);
+ .content {
+ margin-top: 20rpx;
+ .type-style {
+ width: 325rpx;
+ margin-bottom: 20rpx;
+ }
+ }
+ }
+ .bg_plan {
+ width: 100%;
+ // height: 98rpx;
+ padding: 30rpx;
+ box-sizing: border-box;
+ background: #FFFFFF;
+ margin-bottom: 40rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ text {
+ font-size: 30rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #222222;
+ b {
+ color: red;
+ }
+ }
+ .bg_plan_nr {
+ display: flex;
+ flex-direction: column;
+ text {
+ font-size: 24rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #666666;
+ margin-top: 20rpx;
+ &:first-child {
+ font-size: 32rpx;
+ font-family: PingFangSC-Medium, PingFang SC;
+ font-weight: 500;
+ color: #333333;
+ margin-top: 0 !important;
+ }
+ }
+ }
+ .bg_plan_label_val {
+ display: flex;
+ align-items: center;
+ text {
+ font-size: 28rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #999999;
+ }
+ image {
+ width: 12rpx;
+ height: 24rpx;
+ margin-left: 20rpx;
+ }
+ }
+ }
+ .bg_list {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ .bottomval {
+ margin-bottom: 20rpx !important;
+ }
+ .bg_list_item {
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 40rpx;
+ .kong {
+ text-align: center;
+ padding: 30rpx 0;
+ background: #ffffff;
+ font-size: 25rpx;
+ text {
+ color: #474747;
+ }
+ }
+ .bg_list_item_top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding-left: 30rpx;
+ padding-right: 30rpx;
+ margin-bottom: 30rpx;
+ .bg_list_item_top_left {
+ display: flex;
+ align-items: center;
+ .left {
+ margin-left: 12rpx;
+ font-size: 28rpx;
+ }
+ .warning {
+ width: 8rpx;
+ height: 30rpx;
+ border-radius: 2rpx;
+ margin-right: 12rpx;
+ background: $nav-stateColor5 !important;
+ }
+ .error {
+ width: 8rpx;
+ height: 30rpx;
+ border-radius: 2rpx;
+ margin-right: 12rpx;
+ background: $nav-stateColor4 !important;
+ }
+ .bg_list_item_top_left_x {
+ width: 8rpx;
+ height: 30rpx;
+ background: $nav-color;
+ border-radius: 2rpx;
+ margin-right: 12rpx;
+ }
+ text {
+ font-size: 32rpx;
+ font-weight: 500;
+ color: #222222;
+ display: flex;
+ align-items: center;
+ }
+ }
+ .bg_list_item_top_right {
+ display: flex;
+ align-items: center;
+ image {
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 12rpx;
+ }
+ text {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: $nav-color;
+ }
+ }
+ }
+ .top {
+ margin-top: 20rpx !important;
+ }
+ .bg_list_item_h {
+ width: 100%;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ background: white;
+ .bg_list_item_num {
+ width: 100%;
+ min-height: 98rpx;
+ background: white;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-bottom: 1rpx solid #E5E5E5;
+ &:last-child {
+ border: none !important;
+ }
+ .kong {
+ text-align: center;
+ font-size: 25rpx;
+ padding: 30rpx 0;
+ background: #ffffff;
+ }
+ .bg_list_item_num_item {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ // height: 118rpx;
+ padding: 15rpx 0;
+ box-sizing: border-box;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #E5E5E5;
+ &:last-child {
+ border: none;
+ }
+ .bg_list_item_num_item_list {
+ display: flex;
+ align-items: center;
+ .active {
+ background: #305ED5 !important;
+ color: #FFFFFF !important;
+ }
+ .bg_list_item_num_item_list_item {
+ width: 116rpx;
+ height: 62rpx;
+ line-height: 62rpx;
+ text-align: center;
+ background: #F2F2F2;
+ border-radius: 8rpx;
+ font-size: 26rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #333333;
+ margin-right: 20rpx;
+ &:last-child {
+ margin: 0 !important;
+ }
+ }
+ }
+ .bg_list_item_num_item_wl {
+ flex-shrink: 0;
+ display: flex;
+ flex-direction: column;
+ text {
+ font-size: 34rpx;
+ color: #222222;
+ }
+ .bg_list_item_num_item_wl_lx {
+ margin-top: 10rpx;
+ text {
+ color: #222222;
+ font-size: 28rpx;
+ }
+ }
+ }
+ .warning {
+ color: $nav-stateColor5 !important;
+ }
+ .err {
+ color: $nav-stateColor4 !important;
+ }
+ image {
+ width: 12rpx;
+ height: 24rpx;
+ margin-left: 20rpx;
+ }
+ text {
+ flex-shrink: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ b {
+ font-size: 30rpx;
+ color: red;
+ margin-right: 5rpx;
+ }
+ .warning {
+ color: $nav-stateColor5 !important;
+ margin-right: 5rpx;
+ }
+ .err {
+ color: $nav-stateColor4 !important;
+ margin-right: 5rpx;
+ }
+ &:nth-child(1) {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ }
+ &:nth-child(2) {
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #333333;
+ flex-shrink: 0;
+ }
+ }
+ .bg_list_item_num_item_sr {
+ // flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ .color1 {
+ font-size: 28rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #333333;
+ }
+ input::-webkit-input-placeholder {
+ font-size: 28rpx;
+ }
+ input {
+ text-align: right;
+ width: 180rpx;
+ height: 60rpx;
+ border-radius: 8rpx;
+ border: 1rpx solid #E5E5E5;
+ margin-right: 20rpx;
+ font-size: 28rpx;
+ font-weight: 400;
+ color: #333333;
+ padding: 0 30rpx;
+ }
+ .wulll {
+ width: 400rpx;
+ text-align: right;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ }
+ text {
+ font-size: 28rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #999999;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ .bh_zw {
+ height: 160rpx;
+ }
+ .bg_footer {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ z-index: 9;
+ padding: 0 30rpx 60rpx 30rpx;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .bg_footer_submit1 {
+ width: 334rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ text-align: center;
+ background: #FFFFFF;
+ box-shadow: 0rpx 0rpx 12rpx 0rpx rgba(0,0,0,0.08);
+ border-radius: 8rpx;
+ font-size: 30rpx;
+ font-family: PingFangSC-Medium, PingFang SC;
+ font-weight: 500;
+ color: #305ED5;
+ }
+ .bg_footer_submit {
+ width: 334rpx;
+ height: 88rpx;
+ background: $nav-color;
+ box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
+ border-radius: 8rpx;
+ font-size: 30rpx;
+ font-weight: 500;
+ color: #FFFFFF;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+ .bl {
+ width: 100%;
+ height: 800rpx;
+ padding: 30rpx;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ .bl_head {
+ width: 100%;
+ height: 50rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ text {
+ font-size: 28rpx;
+ color: #222222;
+ &:nth-child(2) {
+ font-size: 32rpx !important;
+ }
+ }
+ image {
+ width: 28rpx;
+ height: 28rpx;
+ }
+ }
+ .bl_footer {
+ width: 100%;
+ height: 88rpx;
+ line-height: 88rpx;
+ text-align: center;
+ background: #305ED5;
+ border-radius: 8rpx;
+ font-size: 32rpx;
+ font-family: PingFangSC-Medium, PingFang SC;
+ font-weight: 500;
+ color: #FFFFFF;
+ margin-top: 30rpx;
+ }
+ .bl_list {
+ width: 100%;
+ height: calc(100% - 168rpx);
+ overflow-y: scroll;
+ margin-top: 30rpx;
+ .bl_list_item {
+ width: 100%;
+ height: 96rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1rpx solid #E5E5E5;
+ &:last-child {
+ border: none !important;
+ }
+ .bl_list_item_left {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ input {
+ width: 30rpx;
+ height: 30rpx;
+ border: 1rpx solid #CCCCCC;
+ margin: 0 !important;
+ }
+ text {
+ font-size: 30rpx;
+ color: #222222;
+ margin-left: 10rpx;
+ }
+ }
+ .bl_list_item_right {
+ flex: 1;
+ height: 50rpx;
+ text-align: right;
+ input {
+ padding-left: 5rpx;
+ width: 160rpx;
+ height: 100%;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ text-align: right;
+ font-size: 28rpx;
+ color: #333333;
+ border-radius: 10rpx;
+ border: 1rpx solid #CCCCCC;
+ &::-webkit-input-placeholder {
+ font-size: 28rpx;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #999999;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+</style>
diff --git a/minipro_standard/store/index.js b/minipro_standard/store/index.js
index 0b3342b..c5561c5 100644
--- a/minipro_standard/store/index.js
+++ b/minipro_standard/store/index.js
@@ -9,7 +9,8 @@
const menuButtonWidth = uni.getStorageSync('menuButtonWidth');
const token = uni.getStorageSync('token');
const userInfo = uni.getStorageSync('userInfo');
-const Menu = uni.getStorageSync('MenuList');
+const Menu = uni.getStorageSync('MenuList');
+const session = uni.getStorageSync('session');
// Vuex.Store 鏋勯�犲櫒閫夐」
@@ -22,6 +23,7 @@
menuButtonWidth: menuButtonWidth || '0',
statusbarHeight: statusbarHeight || '0',
navHeight: navHeight || '0',
+ session: session ? session : '',
// 鑿滃崟鏉冮檺
Menu: Menu ? Menu : [],
// 寰呭姙鏁伴噺
@@ -54,6 +56,10 @@
SETMENU (state, data) {
state.Menu = data
uni.setStorageSync('MenuList', JSON.stringify(data));
+ },
+ SETSESSION (state, data) {
+ state.session = data;
+ uni.setStorageSync('session', data);
}
},
actions: {
diff --git a/minipro_standard/util/api/index.js b/minipro_standard/util/api/index.js
index d2e0fbc..a41a10f 100644
--- a/minipro_standard/util/api/index.js
+++ b/minipro_standard/util/api/index.js
@@ -24,7 +24,7 @@
return http.get(`/wechat/logout`)
}
-// 鐧诲綍
+// 寰俊鍏紬鍙风櫥褰�
export function wxAccountLogin(data) {
return http.post('/system/wxAccountLogin', data)
}
@@ -32,4 +32,14 @@
// 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅
export function getUserInfo(params) {
return http.get('/system/getUserInfo', {params})
+}
+
+// 鑾峰彇寰俊openId
+export function wxLogin(params) {
+ return http.get('/system/wxLogin', {params})
+}
+
+// 寰俊灏忕▼搴忕櫥褰�
+export function wxProgramLogin(params) {
+ return http.get('/system/wxProgramLogin', {params})
}
\ No newline at end of file
diff --git a/minipro_standard/util/request/index.js b/minipro_standard/util/request/index.js
index eb2f57a..9bd5596 100644
--- a/minipro_standard/util/request/index.js
+++ b/minipro_standard/util/request/index.js
@@ -5,7 +5,7 @@
/* defaultConfig 涓洪粯璁ゅ叏灞�閰嶇疆 */
defaultConfig.baseURL = baseUrl /* 鏍瑰煙鍚� */
defaultConfig.header = {
- 'content-type': 'application/x-www-form-urlencoded;charset=utf-8',
+ 'content-type': 'application/json;charset=utf-8',
}
defaultConfig.dataType = 'json'
return defaultConfig
diff --git a/minipro_standard/util/request/requestInterceptors.js b/minipro_standard/util/request/requestInterceptors.js
index bc693ee..8f37f89 100644
--- a/minipro_standard/util/request/requestInterceptors.js
+++ b/minipro_standard/util/request/requestInterceptors.js
@@ -2,20 +2,12 @@
* 璇锋眰鎷︽埅
* @param {Object} http
*/
-module.exports = (vm) => {
- // console.log(vm)
+module.exports = (vm) => {
uni.$u.http.interceptors.request.use((config) => { // 鍙娇鐢╝sync await 鍋氬紓姝ユ搷浣�
- // 鍒濆鍖栬姹傛嫤鎴櫒鏃讹紝浼氭墽琛屾鏂规硶锛屾鏃禿ata涓簎ndefined锛岃祴浜堥粯璁}
- console.log('璇锋眰鎷︽埅');
- config.data = config.data || {}
- const token = vm.$store.state.token
- if (token) {
- config.header.token = token
- }
- // 鍙互鍦ㄦ閫氳繃vm寮曠敤vuex涓殑鍙橀噺锛屽叿浣撳�煎湪vm.$store.state涓�
- // console.log(vm.$store.state);
-
- return config
- }, (config) => // 鍙娇鐢╝sync await 鍋氬紓姝ユ搷浣�
- Promise.reject(config))
+ console.log(config)
+ config.header['Cookie'] = 'eva-auth-token=' + vm.$store.state.session
+ uni.showLoading({ title: '璇锋眰涓�' });
+ config.data = config.data || {}
+ return config
+ }, (config) => Promise.reject(config)) // 鍙娇鐢╝sync await 鍋氬紓姝ユ搷浣�
}
diff --git a/minipro_standard/util/request/responseInterceptors.js b/minipro_standard/util/request/responseInterceptors.js
index a88ed54..16f08d8 100644
--- a/minipro_standard/util/request/responseInterceptors.js
+++ b/minipro_standard/util/request/responseInterceptors.js
@@ -4,25 +4,38 @@
*/
module.exports = (vm) => {
uni.$u.http.interceptors.response.use((response) => {
- /* 瀵瑰搷搴旀垚鍔熷仛鐐逛粈涔� 鍙娇鐢╝sync await 鍋氬紓姝ユ搷浣�*/
+ uni.hideLoading();
const data = response.data
- // 鑷畾涔夊弬鏁�
- // const custom = response.config?.custom
- // if (data.code !== 200) { // 鏈嶅姟绔繑鍥炵殑鐘舵�佺爜涓嶇瓑浜�200锛屽垯reject()
- // uni.$u.toast(data.message)
- // if (data.code === 401) {
- // // console.log('鏈櫥褰曘�佺櫥褰曞け鏁�');
- // // 鏈櫥褰曘�佺櫥褰曞け鏁�
- // uni.reLaunch({
- // url: '/pages/login/login'
- // })
- // }
- // return Promise.reject(data)
- // }
- // console.log(data.data);
- return data.data || {}
+ if (response.data.code === 401) { // 澶勭悊鐧诲綍杩囨湡
+ uni.showToast({ title: '鐧诲綍杩囨湡锛屽噯澶囪嚜鍔ㄩ噸鏂扮櫥褰�', icon: 'none', duration: 2000, mask: true });
+ setTimeout(() => {
+ uni.reLaunch({ url: '/pages/login/login' });
+ }, 2000)
+ return
+ }
+ if (response.data.code !== 200) { // 璇锋眰鎶ラ敊
+ uni.showToast({ title: response.data.message, icon: 'none', duration: 2000 });
+ }
+ return data || {}
}, (response) => {
- /* 瀵瑰搷搴旈敊璇仛鐐逛粈涔� 锛坰tatusCode !== 200锛�*/
+ uni.hideLoading();
+ let code;
+ if (error.code === "ECONNABORTED") {
+ code = 999
+ } else {
+ code = error.response.status
+ }
+ switch (code) {
+ case 404:
+ uni.showToast({ title: '璇锋眰璧勬簮涓嶅瓨鍦�', icon: 'none', duration: 2000 });
+ break;
+ case 500:
+ uni.showToast({ title: '鏈嶅姟鍣ㄨ祫婧愰敊璇�', icon: 'none', duration: 2000 });
+ break;
+ case 999:
+ uni.showToast({ title: '璇锋眰瓒呮椂', icon: 'none', duration: 2000 });
+ break;
+ }
return Promise.reject(response)
})
}
--
Gitblit v1.9.3